各位大侠,请问下,我用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); 请大侠帮忙指点指点!!!谢谢!
好的,我试试,谢谢了。
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |