DS18B20,是一款強大的測溫傳感器,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點,所以是開發中必不可少的一個芯片,為了方便大家上手
DS18B20溫度傳感器是DALLAS公司生產的1-wire式單總線器件,具有線路簡單,體積小的特點,用它組成的溫度測量系統線路非常簡單,只要求一個端口即可實現通信。溫度測量范圍在-55℃~+125℃之間,分辨率可以從9~12位選擇,內部還有溫度上、下限報警設置。每個DS18B20芯片都有唯一的序列號,所以可以利用多個DS18B20同時連接在同一條總線上,組成多點測溫系統。但最多只能連接8個,如果數量過多,會使供電電源電壓過低,從而造成信號傳輸的不穩定。
DS18B20 的初始化:
根據 DS18B20 的通訊協議,主機(單片機)控制 DS18B20 完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對 DS18B20 進行復位操作,復位成功后發送一條 ROM 指令,最后發送 RAM 指令,這樣才能對 DS18B20 進行預定的操作。復位要求主 CPU 將數據線下拉 500 微秒,然后釋放,當 DS18B20 收到信號后等待 16~60 微秒左右,后發出 60~240 微秒的存在低脈沖,主 CPU 收到此信號表示復位成功。
(1) 先將數據線 DQ 置高電平“1”。
(2) 延時(該時間要求的不是很嚴格,但是盡可能的短一點)
(3) 數據線拉到低電平“0”。
(4) 延時 750 微秒(該時間的時間范圍可以從 480 到 960 微秒)。
(5) 數據線拉到高電平“1”。
(6) 延時等待(如果初始化成功則在 15 到 60 微妙時間之內產生一個由 DS18B20 所返回的低電平“0”。據該狀態可以來確定它的存在,但是應注意不能無限的進行等待,不然會使程序進入死循環,所以要進行超時控制)。
(7) 若 CPU 讀到了數據線上的低電平“0”后,還要做延時,其延時的時間從發出的高電平算起(第(5)步的時間算起)最少要 480 微秒。
(8) 將數據線再次拉高到高電平“1”后結束。
初始化程序如下:
uchar Init_DS18B20()
{
uchar status; //status 為 DS18B20 返回的狀態
DQ = 1;
Delay(8);
DQ = 0;
Delay(90);
DQ = 1;
Delay(8);
status=DQ;
Delay(100);
DQ = 1;
return status;
}
DS18B20 應用舉例(一)
如下圖所示:DQ 通過 4.7K 上拉電阻外接正電源(由于單總線為開漏所以需要外接一個 4.7K 的上拉電阻),并連接單片機 P3.3 口。
本例中,1602LCD 顯示 DS18B20 所測量的外部溫度,調節 DS18B20 模擬改變外界溫度時,新的溫度將刷新顯示在 LCD 上