單片機·DS18B20溫度傳感器
1.“一線總線”數字化溫度傳感器。(一線掌握好時序,比較簡單)
2. 3~5V寬電壓工作范圍
3. 分辨9-12位可調
二、DS18B20的正確接線


面對著扁平的那一面,左負右正,一旦接反就有可能燒毀,也是溫度顯示85°C的原因。
且只有一根I/O線,注意讀寫時序 。
三、DS18B20時序介紹
1)復位

輸入
t0-t1時刻:復位脈沖 480-960us ;
t1-t2時刻:釋放總線 15-60us ;
檢測
t2-t3時刻:虛線部分由DS18B20控制,60-240us低電平則表示復位成功,否則失敗 ;
t3-t4時刻:釋放總線
2)寫操作

寫0時序
輸入
t0-15us:保持低電平,輸入0;
檢測
15-60us:檢測i/o是否為低電平 ;
輸入間隔>1us
寫1時序
輸入
t0-15us:拉高電平,輸入1;
檢測
15-60us:檢測i/o是否為高電平
輸入間隔>1us
3)讀操作

t0-t1:保持4us低電平
t1-15us:DS18B20或者上拉電阻起作用,低電平或者高電平讀出
15us-60us:釋放總線
三、DS18B20的溫度
1.DS18B20的溫度格式表

一共是16位,我們用前5位表示符號位,后11位表示數值
2.DS18B20的溫度數據表

125℃/2000 = 0.0625
當符號位為0時,表示正數,0.0625*hex得到溫度的值 ;
當符號位為1時,表示負數,將所得到的(數值取反+1)*0.0625得到溫度的值;
四、程序
1.啟動溫度轉換
1)復位DS18B20;
2)發出Skip Rom命令(CCH)【僅適用于只有一個DS18B20】 ;
3)發出convert命令(44H)
2.讀取溫度
1)復位DS18B20;
2)發出Skip Rom命令(CCH);
3)發出convert命令(BEH);
4)讀2字節的溫度 ;
5)溫度格式轉換 ;
程序
main.h
# ifndef _MAIN_H_
# define _MAIN_H_
# include
# include
sbit DQ = P3^2 ;
sbit RS = P1^0 ;
sbit RW = P1^1 ;
sbit EN = P1^5 ;
sbit BUSY = P0^7;
typedef unsigned char uint8 ;
typedef unsigned int uint16 ;
typedef int int16 ;
#define nops() {_nop_();_nop_();_nop_();_nop_();}
#endif
main.c
主站蜘蛛池模板:
彭泽县|
原平市|
响水县|
丰镇市|
崇阳县|
普兰店市|
台前县|
寻甸|
冀州市|
饶平县|
峨眉山市|
青铜峡市|
涪陵区|
冷水江市|
泾源县|
玉门市|
达孜县|
仲巴县|
大竹县|
嵊州市|
澳门|
治多县|
会昌县|
广德县|
左权县|
澄迈县|
如皋市|
宁强县|
巩义市|
会宁县|
栾川县|
吉木乃县|
通州市|
惠来县|
弥勒县|
柞水县|
深水埗区|
大同市|
苗栗市|
贵南县|
山西省|
評論