欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

DS18B20輸出值為什么那么單調

查看數: 2667 | 評論數: 13 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2022-1-21 13:12

正文摘要:

本帖最后由 新新科技 于 2022-1-21 13:20 編輯   幾年前從T寶上購買的不銹鋼封裝防水型DS18b20溫度探頭,近期拿出來用用。  我設置的有效數字是到到小數點后一位的,即:從18B20讀出十二位數 ...

回復

ID:378108 發表于 2022-1-29 00:08
18b20可以設置不同的采樣位數,比如7位,9位,你初始化的時候,估計把它忘了。
ID:625730 發表于 2022-1-22 18:58
新新科技 發表于 2022-1-21 18:19
精度0.5℃的意思是說,如果正確溫度是20℃,那么18b20測得的結果最低可能是19.5℃,而最高可能是20.5℃, ...

精度正負0.5度,應該這么理解:如果測量值是20度,那么實際的溫度在-19.5到20.5之間。
ID:71233 發表于 2022-1-22 16:47
再次看看手冊,終于弄明白了,是配置寄存器的問題。DS18B20一般出廠是設置為12位的,但本人手頭的18b20是設置為9位精度的,所以只能測量到整數度數或0.5度數。謝謝大家的關注!

評分

參與人數 1黑幣 +10 收起 理由
TEC + 10 贊一個!

查看全部評分

ID:71233 發表于 2022-1-22 10:22
wc86110 發表于 2022-1-22 00:06
塑封的小數點后的數字能連續變化,金屬封裝對溫度就沒那么敏感了。關鍵還是看程序怎樣

關鍵程序:
void readtemp_ds18b20() //讀取溫度
{
        uint  temp32;
        uchar templ,temph;
        EA=0;
        rest_ds18b20();//復位
        write_ds18b20(0xcc); //跳過讀序列號的操作
        write_ds18b20(0x44); //啟動溫度轉換
        delay_50us(15);
        rest_ds18b20();//復位
        write_ds18b20(0xcc); //跳過讀序列號的操作
        write_ds18b20(0xbe); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
        templ=read_ds18b20();//低八位
        temph=read_ds18b20();//高八位

        temp32=(temph<<8)|templ;//合并為十六位
        if((temph&0xf0))//判斷溫度的正負性
        {
                temp32=~temp32+1;
                temp32=temp32*0.625;//溫度值擴大10倍
                temp=-temp32;//溫度為負數
        }
        else//為正數
        {        
                temp=temp32*0.625;        //溫度值擴大10倍
        }
EA=1;

}

void show_18B20()//顯示18B20的溫度
{
        uchar i;
        LcdSetCursor(2,7); //顯示位置
        i=temp/100;
        write_LCD_data(tex[ i]);// //顯示百位,即溫度十位
        i=temp/10%10;
        write_LCD_data(tex[i ]);// //顯示十位,即溫度個位
        write_LCD_data('.');//顯示小數點
        i=temp%10;
        write_LCD_data(tex[i ]);//顯示個位,即溫度小數部分
}
ID:71233 發表于 2022-1-22 10:14
zlj20181110 發表于 2022-1-21 19:59
你不是不漏了一個“0”?應該是0.0625吧?

沒錯,乘0.0625得到的是浮點準確數值,我乘0.625是將這個數值擴大10倍,以便于顯示到LCD1602上,上面的問題敘述有提及。
ID:96682 發表于 2022-1-22 00:06
塑封的小數點后的數字能連續變化,金屬封裝對溫度就沒那么敏感了。關鍵還是看程序怎樣
ID:160500 發表于 2022-1-21 20:42
看看這個表

51hei圖片20220121204133.png (59.02 KB, 下載次數: 53)

51hei圖片20220121204133.png
ID:160500 發表于 2022-1-21 20:31
精度和分辨率不是一回事,仔細看看手冊就知道了
ID:624769 發表于 2022-1-21 20:00
我不知道你的 * 0.625 是用什么方式計算的, 但是, 一般用18B20的話,通常的做法是把得到的值左移4位,高8位就是溫度的整數值,低8位為0的話就是整數溫度,非0就是 0.5 的溫度。18B20 一般也就測一下室溫,沒有什么好期待的。
ID:423911 發表于 2022-1-21 19:59
你不是不漏了一個“0”?應該是0.0625吧?

評分

參與人數 2黑幣 +15 收起 理由
TEC + 10 贊一個!
名字不是重點 + 5 很給力!你是對的,多謝提醒!

查看全部評分

ID:71233 發表于 2022-1-21 18:19
本帖最后由 新新科技 于 2022-1-21 18:23 編輯
壓著我頭發啦 發表于 2022-1-21 15:46
沒用過ds18b20,但是查了一下,該器件精度是±0.5℃的,所以數值每次變化最小范圍應該就是0.5℃吧。PTC\NTC ...

精度0.5℃的意思是說,如果正確溫度是20℃,那么18b20測得的結果最低可能是19.5℃,而最高可能是20.5℃,那么,如果正確的溫度是20.2℃呢?
ID:824490 發表于 2022-1-21 16:06
精度與分辯率的問題。。。 18B20的精度是0.5度,也就是說其測到的數值與實際溫度的誤差在0.5之內。 分辯率是0.625度,就是說測到的數值是0.625的倍數。
ID:716656 發表于 2022-1-21 15:46
沒用過ds18b20,但是查了一下,該器件精度是±0.5℃的,所以數值每次變化最小范圍應該就是0.5℃吧。PTC\NTC精度會高點吧

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表