久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 9951|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

DS18B20如何正確顯示負(fù)溫度

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
從論壇找到了一個(gè)LCD1602萬(wàn)年歷制作的資料,有溫度顯示功能。源程序里,負(fù)溫度原來(lái)是顯示亂碼,而且小數(shù)顯示并不正確,于是自己動(dòng)手修改了一下程序。PS:C語(yǔ)言渣渣,剛剛自學(xué)。
修改了之后出現(xiàn)了以下些許問題:1、負(fù)號(hào)顯示不出來(lái),總是顯示為0。
                                                2、溫度值總是要比實(shí)際值小1攝氏度。
                                                3、C語(yǔ)言子函數(shù)返回值調(diào)用問題,f值的調(diào)用。
現(xiàn)將溫度計(jì)算與溫度顯示函數(shù)附上,希望各位論壇的朋友能幫著出出主意。

溫度讀取與計(jì)算:
unsigned int ReadTemperature(void)//讀取溫度
{
        unsigned char a=0;
        unsigned char b=0;
        unsigned int t=0;
        int f;  //正負(fù)標(biāo)志位
        float tt=0;
        Init_DS18B20();
        WriteOneChar(0xCC); // 跳過(guò)讀序號(hào)列號(hào)的操作
        WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
        Init_DS18B20();
        WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列號(hào)的操作
        WriteOneChar(0xBE); //讀取溫度寄存器
        a=ReadOneChar();  //讀低8位
        b=ReadOneChar(); //讀高8位
        
        t=b;
        t<<=8;
        t=t|a;
        if((b&0x80)!=0)    // 高八位的第一位為1,表示為負(fù)
         {
        tt=(~t+1)*0.0625 ;
           f=1;                //溫度為負(fù),f=1;
          }
        else  
         {
        tt=t*0.0625;
        f=0           ;           //溫度為正,f=0;
                   }
        t=tt*10+0.5;
return(t);
return(f);

        
}


溫度顯示函數(shù)
void write_temp(uchar add,uint dat)//向LCD寫溫度數(shù)據(jù),并指定顯示位置
{
        uint gw,sw,bw;
        int f;                     //這個(gè)f值需要特殊的調(diào)用語(yǔ)句么?
          switch(f)
          {
          case 1:
        bw="-";// 溫度為負(fù)時(shí),百位顯示負(fù)號(hào),這里有問題
        sw=(dat%1000)/100;//取得十位數(shù)字
        gw=(dat%1000)%100/10;//取得個(gè)位數(shù)字
        write_1602com(er+add);//er是頭文件規(guī)定的值0x80+0x40
        write_1602dat(bw+0x30);
        write_1602dat(0x30+sw);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼          shi=((const) temp%1000)/100
        write_1602dat(0x30+gw);
        break;
        case 0:
        bw=dat/1000;//取得百位
        sw=(dat%1000)/100;//取得十位數(shù)字
        gw=(dat%1000)%100/10;//取得個(gè)位數(shù)字
        write_1602com(er+add);//er是頭文件規(guī)定的值0x80+0x40
        write_1602dat(0x30+bw);
        write_1602dat(0x30+sw);//數(shù)字+30得到該數(shù)字的LCD1602顯示碼          shi=((const) temp%1000)/100
        write_1602dat(0x30+gw);
        break;
        }

QQ圖片20180726155202.png (83.06 KB, 下載次數(shù): 63)

QQ圖片20180726155202.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:111634 發(fā)表于 2018-7-26 17:23 | 只看該作者
實(shí)例97  一線式DS18B20測(cè)溫
回復(fù)

使用道具 舉報(bào)

板凳
ID:308437 發(fā)表于 2018-7-26 17:39 | 只看該作者

  bw="-";// 溫度為負(fù)時(shí),百位顯示負(fù)號(hào),這里有問題

      write_1602dat(bw+0x30);

應(yīng)該是你碼表轉(zhuǎn)換問題了。要你1602上顯示“-”,你看下ASCII碼對(duì)照表要多少才是,我估計(jì)你的一出來(lái)

回復(fù)

使用道具 舉報(bào)

地板
ID:379569 發(fā)表于 2018-7-26 18:12 | 只看該作者
實(shí)例97  一線式DS18B20測(cè)溫
回復(fù)

使用道具 舉報(bào)

5#
ID:111634 發(fā)表于 2018-7-27 10:10 | 只看該作者
3073084142 發(fā)表于 2018-7-26 18:12
實(shí)例97  一線式DS18B20測(cè)溫

實(shí)例97  一線式DS18B20測(cè)溫

Proteus仿真一下,確認(rèn)有效。 實(shí)例97 DS18B20測(cè)溫.rar (51.78 KB, 下載次數(shù): 152)
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實(shí)驗(yàn)操作,電路與程序真實(shí)可靠可信可行。

回復(fù)

使用道具 舉報(bào)

6#
ID:688993 發(fā)表于 2021-1-30 23:57 | 只看該作者
顯示正溫度值會(huì)錯(cuò)誤正常嗎
回復(fù)

使用道具 舉報(bào)

7#
ID:40039 發(fā)表于 2023-8-31 19:42 | 只看該作者
我也出現(xiàn)了這樣的問題,正溫度正常顯示,負(fù)溫度不能正常顯示。不知道問題出現(xiàn)在哪里?
回復(fù)

使用道具 舉報(bào)

8#
ID:883242 發(fā)表于 2023-8-31 20:15 | 只看該作者
1、負(fù)號(hào)顯示不出來(lái),總是顯示為0。
你自己看看bw這個(gè)變量,賦值“-”之后又被你下面的語(yǔ)句改了。

2、溫度值總是要比實(shí)際值小1攝氏度。
這是個(gè)向哪個(gè)方向取整的問題,你可以不管,簡(jiǎn)單+1就可以了。

3、C語(yǔ)言子函數(shù)返回值調(diào)用問題,f值的調(diào)用。
這里f就是個(gè)局部變量,使用就可以了,不需要調(diào)用。
回復(fù)

使用道具 舉報(bào)

9#
ID:399179 發(fā)表于 2023-8-31 20:30 來(lái)自手機(jī) | 只看該作者
樓主的問題解決了嗎?如果解決了能不能分享一下?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产自产 | 一区二区三区视频在线免费观看 | 日本精品视频在线观看 | 中文字幕亚洲无线 | 国产黄视频在线播放 | 欧美一级黄带 | 亚洲+变态+欧美+另类+精品 | 午夜精品网站 | 一区二区三区日韩精品 | 亚洲欧美一区二区三区在线 | 欧美一级欧美一级在线播放 | 国产精品久久久久久久久久久久 | 久久久成人网 | 精品综合 | 欧美成人第一页 | 久久草在线视频 | 欧美国产在线一区 | 成年人在线观看 | 日韩一区二区三区在线播放 | 国产一区2区| 国产99久久精品一区二区永久免费 | 成人免费视频网站在线观看 | 麻豆av网 | 国产一区二区三区免费 | 视频一区在线 | 亚洲国产精品va在线看黑人 | 亚洲a在线观看 | 久久久成人免费视频 | 999热精品 | 中文字幕一区二区三区在线观看 | 久久亚洲经典 | 中国一级特黄毛片大片 | 国产中文字幕在线 | 一区二区免费视频 | 欧美在线视频一区二区 | 午夜视频在线 | 国产成人免费 | 日本一本视频 | 国产成人精品综合 | 人人鲁人人莫人人爱精品 | 日本久久网 |