标题: [求助] DS18b20+LCD1602的显示问题 [打印本页]

作者: chengzss    时间: 2013-3-5 21:13
标题: [求助] DS18b20+LCD1602的显示问题

各位大侠,请问下,我用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);

请大侠帮忙指点指点!!!谢谢!

作者: ahshmj    时间: 2013-3-6 09:02
18b20上电时启动的稍慢,是不是这个原因?你加一点延时试试?
[此贴子已经被作者于2013-3-6 9:03:34编辑过]

作者: chengzss    时间: 2013-3-6 15:35

好的,我试试,谢谢了。


作者: 1466709776    时间: 2015-12-3 07:13

成功了嘛
作者: 朱小虎    时间: 2016-5-18 14:31
应该是芯片本身默认吧,我的也是





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1