各位大侠,请问下,我用ds18b20采集温度到单片机,利用LCD1602来显示,可是为什么每次运行时,第一次显示的都是85度,然后再恢复正常,可能是什么原因导致的?以下是主函数部分,我觉得可能出错这这部分,
void main(void)
{
uchar TL; //储存暂存器的温度低位
uchar TH; //储存暂存器的温度高位
uchar TN; //储存温度的整数部分
uchar TD; //储存温度的小数部分
uint j;
Relay=0;
LcdInitiate(); //将液晶初始化
delayms(5);
if(Init_DS18B20()==1)
display_error();
display_explain();
display_symbol(); //显示温度说明
display_dot(); //显示温度的小数点
display_cent(); //显示温度的单位
while(1) //不断检测并显示温度
{
flag=0;
ReadyReadTemp(); //读温度准备
TL=ReadOneChar(); //先读的是温度值低位
TH=ReadOneChar(); //接着读的是温度值高位
TN=TH*16+TL/16; //实际温度值=(TH*256+TL)/16,即:TH*16+TL/16
//这样得出的是温度的整数部分,小数部分被丢弃了
TD=(TL%16)*10/16; //计算温度的小数部分,将余数乘以10再除以16取整,
//这样得到的是温度小数部分的第一位数字(保留1位小数)
display_temp1(TN); //显示温度的整数部分
display_temp2(TD); //显示温度的小数部分
delayms(50);
请大侠帮忙指点指点!!!谢谢!
|