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