找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4493|回復(fù): 4
收起左側(cè)

[求助] DS18b20+LCD1602的顯示問題

[復(fù)制鏈接]
ID:48440 發(fā)表于 2013-3-5 21:13 | 顯示全部樓層 |閱讀模式

各位大俠,請問下,我用ds18b20采集溫度到單片機,利用LCD1602來顯示,可是為什么每次運行時,第一次顯示的都是85度,然后再恢復(fù)正常,可能是什么原因?qū)е碌模恳韵率侵骱瘮?shù)部分,我覺得可能出錯這這部分,

void main(void)
 {   
   uchar TL;     //儲存暫存器的溫度低位
      uchar TH;    //儲存暫存器的溫度高位
      uchar TN;      //儲存溫度的整數(shù)部分
   uchar TD;       //儲存溫度的小數(shù)部分
      uint j;
   Relay=0;
   LcdInitiate();         //將液晶初始化
    delayms(5);       

  if(Init_DS18B20()==1)
     display_error();
  display_explain();
     display_symbol();    //顯示溫度說明
        display_dot();       //顯示溫度的小數(shù)點
        display_cent();      //顯示溫度的單位
   while(1)                //不斷檢測并顯示溫度
  { 
    flag=0;
    ReadyReadTemp();     //讀溫度準備
    TL=ReadOneChar();    //先讀的是溫度值低位
    TH=ReadOneChar();    //接著讀的是溫度值高位

     TN=TH*16+TL/16;      //實際溫度值=(TH*256+TL)/16,即:TH*16+TL/16
                     //這樣得出的是溫度的整數(shù)部分,小數(shù)部分被丟棄了
     TD=(TL%16)*10/16;    //計算溫度的小數(shù)部分,將余數(shù)乘以10再除以16取整,
                     //這樣得到的是溫度小數(shù)部分的第一位數(shù)字(保留1位小數(shù))
  display_temp1(TN);    //顯示溫度的整數(shù)部分
     display_temp2(TD);    //顯示溫度的小數(shù)部分
  delayms(50);

請大俠幫忙指點指點。!謝謝!
回復(fù)

使用道具 舉報

ID:7485 發(fā)表于 2013-3-6 09:02 | 顯示全部樓層
18b20上電時啟動的稍慢,是不是這個原因?你加一點延時試試?
[此貼子已經(jīng)被作者于2013-3-6 9:03:34編輯過]
回復(fù)

使用道具 舉報

ID:48440 發(fā)表于 2013-3-6 15:35 | 顯示全部樓層

好的,我試試,謝謝了。

回復(fù)

使用道具 舉報

ID:96006 發(fā)表于 2015-12-3 07:13 | 顯示全部樓層

成功了嘛
回復(fù)

使用道具 舉報

ID:121694 發(fā)表于 2016-5-18 14:31 | 顯示全部樓層
應(yīng)該是芯片本身默認吧,我的也是
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表