1樓:科強小米
tem_data_l=read_byte(); //讀低8位資料,低8位資料格式(2^3,2^2,2^1,2^0,2
tem_data_h=read_byte(); //讀高8位資料,高8位資料格式(s,s,s,s,s,2^6,2^5
temp_data=tem_data_h*256+tem_data_l;
sign_flag = 0;
sign_flag = temp_data;
sign_flag = (sign_flag & 0xf000) ; // 只保留符號位
if ( sign_flag > 0 ) // fuhao>0 是負數
else
temp_data ^= sign_flag;
if ( sign_flag>0 )// 負數求反加1
temp_data=(temp_data*625)/1000;
哪 來的數,看看我上面的處理就ok啦。
2樓:
其實不一定要大於6348
根據手冊,要是溫度為負值,則暫存器的高八位的高五位全為1,加入你把採集到的資料合成一個unsigned int 型,位tem,則temp為 1 1 1 1 1 x x x x x x x x x x x,必定大於 0 0 0 0 0 1 1 1
1 1 1 1 1 1 1 1 (11個1),為2047,所以你只要判斷temp>(2047~~63489(二進位制數為 11111 000 00000001))
不明白的可以看下圖
我在使用ds18b20檢測溫度,溫度20時,是正常的,溫度20時,返回值是0xff,0xff,請教高手為什麼
應該是你的程式上出來還存在小問題。 近期通過ds18b20再加lcd1602加序列輸出除錯成功,的lcddata埠p0 包括 包括 stc12c5a.h 定義xtal 11059200 杯晶振頻率 定義波特率9600 通訊波特率 定義uchar無符號字元型 定義的uint無符號整數 br p sbi...
我編寫ds18b20程式想顯示溫度在led燈上但
include reg52.h include include 要用到取絕對值函式abs define uchar unsigned char define uint unsigned int sbit ds p2 1 sbit ds p3 2 ds18b20 sbit duan p2 6 sbit...
ds18b20與其他溫度感測器有什麼優缺點
優點 1 與微控制器的介面簡單 2 單隻使用比較簡單 3 有體積小,硬體開銷低,抗干擾能力強 缺點 1 多隻單匯流排使用涉及到rom搜尋的程式,比較難懂點2 精度0.5度。ds18b20數字溫度感測器接線方便,封裝成後可應用於多種場合,如管道式,螺紋式,磁鐵吸附式,不鏽鋼封裝式,型號多種多樣,有lt...