温度报警器如何让LCD实时读取温度数值??求教 2C

本人小白一只 ,近日学校留了个课设,题目是温度报警器,报警部分写完后发现LCD部分一点都不会啊 我还作死的往上加了个GSM模块 有没有大神救救我。。
#include
#include
unsigned char code seg7code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff} ;
sbit DQ=P3^2;
bit fg=1;
sbit fmq=P1^5;
unsigned int sdata;
void delay(unsigned char t)
{
do{
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
}while(--t);

}
void delay50ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<200;j++);
}
void Init_DS18B20()
{
unsigned char x=0;
EA=0;
DQ=0;
delay(50);
DQ=1;
delay(6);
while(!DQ);
EA=1;

}
ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat=0;
for(i=0;i {
DQ=1;
delay(1);
DQ=0;
dat>>=1;

DQ=1;
if(DQ)
dat|=0x80;
delay(4);

}
return dat;

}
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for(i=0;i {
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(4);
}
void ReadTemperature(void)
{
unsigned char tempL=0;
unsigned char tempH=0;
float f_sdata;
Init_DS18B20();
WriteOneChar(0xcc);
WriteOneChar(0x44);
delay(125) ;
Init_DS18B20();
WriteOneChar(0xcc);
WriteOneChar(0xbe);
tempL=ReadOneChar();
tempH=ReadOneChar();
sdata=tempH;
sdata=sdata *256|tempL;
if(tempH>>7==0x01);
{
f_sdata=((~sdata)+1)*0.0625;
fg=0;

}
if(tempH>>7==0x00)
{
    f_sdata=sdata*0.0625;
    fg=1;


}
sdata=f_sdata*10+0.5;

}
void Led(unsigned int temp)
{
P1=0xfd;
P0=seg7code[temp/100] ;
delay50ms();
P0=0xff;

P1=0xfb;
P0=seg7code[(temp-temp/100*100)/10]&0x7f ;
delay50ms();
P0=0xff;

P1=0xf7;
P0=seg7code[temp%10] ;
delay50ms();
P0=0xff;

if(fg==0)
{
    P1=0xfe;
    P0=0xbf;
    delay50ms();
    P0=0xff;
}
if((temp/100)>=3){
fmq=0;
}

}
main()
{
while (1)
{
ReadTemperature();
Led(sdata);
}
}

2个回答

如果可以有代码的话 真是谢谢了 过两天就交了。。。。。
要是没有告诉我咋做也行啊,,,,,
大佬们缺大腿挂件么。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐