Home > other >  SCM small white posts, questions about mlx90614 temperature display, for big solutions, urgent urgen
SCM small white posts, questions about mlx90614 temperature display, for big solutions, urgent urgen

Time:11-16


Circuit diagram as shown above, using the stc15f2k60s2 chips, GY - 906 mlx90614ESF BAA, temperature sensor, using lcd12864 display, I want to be a temperature measuring device, can now normal burning, but the screen has been shows little squares in the middle there is a black line, other what all not show for bosses to help see
# include "stc15f2k60s2. H"
# include "intrins. H"
# define uint unsigned int
# define uchar unsigned char
# define Nack_counter 10
Uchar flag1;
Sbit RS=P2 ^ 5;
Sbit RW=P4 ^ 2;
Sbit LCDE=P2 ^ 7;
Sbit SCL=P4 ^ 1;
Sbit SDA=P3 ^ 7;
Sbit LED10=P2 ^ 4;
Sbit LED11=P2 ^ 3;
Sbit LED12=P2 ^ 2;
Sbit LED13=P2 ^ 1;
Sbit LED14=P2 ^ 0;
Sbit LED15=P2 ^ 6;
Sbit LED16=P4 ^ 4;
Sbit LED17=P4 ^ 5;
Bdata uchar flag;
Sbit bit_out=flag ^ 7;
Sbit bit_in=flag ^ 0;
Uchar DataH, DataL Pecreg;
Void start_bit ();
Void stop_bit ();
Uchar rx_byte (void);
Void send_bit (void);
Void tx_byte (uchar dat_byte);
Void receive_bit (void);
Void delay (uint N);
Uint memread (void);
Void init1602 (void);
Void chk_busy_flg (void);
Void dis_cmd_wrt uchar (CMD);
Void dis_dat_wrt uchar (dat);
Void the display (uint Tem);
Void LED_Warning (int number);
Void init_LED ();
Uint Tem;
Void LCD12864_Write_Com (uchar com)
{
LCDE=0;
RW=0;
RS=0;
Delay (10);
DataL=com;
Delay (10);
LCDE=1;
Delay (200);
}
Void LCD12864_Write_Data uchar (dat)
{
LCDE=0;
RW=0;
RS=1;
Delay (10);
DataL=dat;
Delay (10);
LCDE=1;
Delay (200);
}
Void LCD12864_Clear_Screen (uchar value)
{
Uchar I, j;
LCD12864_Write_Com x34 (0);
LCD12864_Write_Com x36 (0);
for(i=0; i<64; I++) {
If (i<32) {
LCD12864_Write_Com (0 x80 + I);
LCD12864_Write_Com (0 x80);
} else {
LCD12864_Write_Com (0 x80 + (I - 32));
X88 LCD12864_Write_Com (0);
}
for(j=0; j<16. J++)
LCD12864_Write_Data (value);
}
}
Uchar addresses []={0 x80, 0 x90, 0 x88, 0 x98};
Void LCD12864_Display_Char uchar x, uchar y, uchar (dat)
{
LCD12864_Write_Com (0 x30);
LCD12864_Write_Com x06 (0);
LCD12864_Write_Com (addresses [1] x + (y - 1));
LCD12864_Write_Data (dat);
}
Void LCD12864_Display_Chars (uchar x, uchar y, uchar * dat)
{
LCD12864_Write_Com (0 x30);
LCD12864_Write_Com x06 (0);
LCD12864_Write_Com (addresses [1] x + (y - 1));
While (* dat!='\ 0') {
Dat LCD12864_Write_Data (*);
Dat++;
}
}
Void main ()
{
Uchar * datas="LCD???? ";
Uint tem_warning=3700;
Init1602 ();
Init_LED ();
LCD12864_Clear_Screen (0 x00);
SCL=1;
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
delay(1000);
SCL=1;
While (1)
{
delay(1000);
Tem=memread ();
The display (Tem);
LCD12864_Display_Char (1, 2, 'A');
LCD12864_Display_Chars (2, 1, datas);
}
}
Void the display (uint Tem)
{
Uint T, a, b;
T=Tem * 2;
Dis_cmd_wrt (0 x01);
If (T>
=27315){
T=T - 27315.
T/a=100;
B=T - a * 100;
If (a>
=100){
Dis_dat_wrt (0 x30 + a/100);
A=a % 100;
Dis_dat_wrt (0 x30 + a/10);
A=a % 10;
Dis_dat_wrt (0 x30 + a);
}
Else if (a>=10)
{
Dis_dat_wrt (0 x30 + a/10);
A=a % 10;
Dis_dat_wrt (0 x30 + a);
}
The else
{
Dis_dat_wrt (0 x30 + a);
}
Dis_dat_wrt (0 x2e);
If (b>=10)
{
Dis_dat_wrt (0 x30 + b/10);
B=b % 10;
Dis_dat_wrt (0 x30 + b);
}
The else
{
Dis_dat_wrt (0 x30);
Dis_dat_wrt (0 x30 + b);
}
}
The else
{
T=27315 - T;
T/a=100;
B=T - a * 100;
X2d dis_dat_wrt (0);
If (a>=10)
{
Dis_dat_wrt (0 x30 + a/10);
A=a % 10;
Dis_dat_wrt (0 x30 + a);
}
The else
{
Dis_dat_wrt (0 x30 + a);
}
Dis_dat_wrt (0 x2e);
If (b>=10)
{
Dis_dat_wrt (0 x30 + b/10);
B=b % 10;
Dis_dat_wrt (0 x30 + b);
}
The else
{
Dis_dat_wrt (0 x30);
Dis_dat_wrt (0 x30 + b);
}
}
XDF dis_dat_wrt (0);
Dis_dat_wrt x43 (0);
}
Void start_bit (void)
{
SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

}
Void stop_bit (void)
{
SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_(); nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
  • Related