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