標(biāo)題: DS18b20溫度怎么計(jì)算? [打印本頁(yè)]

作者: nan1325738369    時(shí)間: 2018-5-15 11:39
標(biāo)題: DS18b20溫度怎么計(jì)算?
uint retemp(){
        uint a,b,tt;
        uint t;
        init_ds18b20();
        writebyte(0xcc);
        writebyte(0x44);
        init_ds18b20();
        writebyte(0xcc);
        writebyte(0xbe);
        a = readbyte();
        b = readbyte();
        t = b;
        t <<= 8;
        t = t|a;
        if((t<=0xfc90)&&(t>=0x00)){                                 //當(dāng)溫度大于-55° 小于0°
                num = 0;
    tt = t*0.0625*10;
                return(tt);
        }else if((t>0x00)&&(t<=0xffff)){                             //當(dāng)溫度大于0°小于127°時(shí)
                num = 1;
    tt = (~t+2)*0.0625*10;
                return(tt);
        }
}


作者: 老田8310    時(shí)間: 2018-5-15 15:05
你從18D20讀到的16位數(shù)據(jù),中間八位就是溫度的整數(shù)位值?梢詤⒖枷旅娴某绦颍
work_temp(uint tem)
{
uchar n=0;
if(tem>6348)                        // 溫度值正負(fù)判斷
     {tem=65536-tem;n=1;}            // 負(fù)溫度求補(bǔ)碼,標(biāo)志位置1
      display[4]=tem&0x0f;           // 取小數(shù)部分的值
  display[0]=ditab[display[4]];  // 存入小數(shù)部分顯示值
      display[4]=tem>>4;             // 取中間八位,即整數(shù)部分的值
  display[3]=display[4]/100;     // 取百位數(shù)據(jù)暫存
  display[1]=display[4]%100;     // 取后兩位數(shù)據(jù)暫存
  display[2]=display[1]/10;      // 取十位數(shù)據(jù)暫存
  display[1]=display[1]%10;  

作者: zl2168    時(shí)間: 2018-5-15 21:16
本帖最后由 zl2168 于 2018-5-15 21:17 編輯

實(shí)例97  一線式DS18B20測(cè)溫
Proteus仿真一下,確認(rèn)有效。
實(shí)例97 DS18B20測(cè)溫.rar (51.78 KB, 下載次數(shù): 19)

以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實(shí)驗(yàn)操作,電路與程序真實(shí)可靠可信可行。





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1