1-Wire總線與DS18B20應(yīng)用仿真
1 DS18B20的基本特性
本文引用地址:http://www.ex-cimer.com/article/84508.htm ● 采用1-Wire總線接口,可以方便實(shí)現(xiàn)多點(diǎn)測溫。
● 與主機(jī)連接方便,除5kΩ的總線上拉電阻外無須其他額外器件。
● 電源電壓范圍為3.0~5.5V,與3.3V和5V數(shù)字系統(tǒng)均可很好地兼容。
● 測量范圍為-55~+125℃,分辨率為9~12位可編程。
● 通過編程可設(shè)置溫度報警上下限,設(shè)置值掉電不丟失。
● 內(nèi)部集成了用于器件尋址的64bit光刻ROM編碼。
2 DS18B20中的存儲器
在DS18B20中共有三種存儲器,分別是ROM、RAM、EEPROM,每種存儲器都有其特定的功能,可查閱相關(guān)資料。
3 1-Wire總線ROM功能命令
在DS18B20內(nèi)部光刻了一個長度為64bit的ROM編碼,這個編碼是器件的身份識別標(biāo)志。當(dāng)總線上掛接著多個DS18B20時可以通過ROM編碼對特定器件進(jìn)行操作。ROM功能命令是針對器件的ROM編碼進(jìn)行操作的命令,共有5個,長度均為8bit(1Byte)。
①讀ROM(33H)
當(dāng)掛接在總線上的1-Wire總線器件接收到此命令時,會在主機(jī)讀操作的配合下將自身的ROM編碼按由低位到高位的順序依次發(fā)送給主機(jī)??偩€上掛接有多個DS18B20時,此命令會使所有器件同時向主機(jī)傳送自身的ROM編碼,這將導(dǎo)致數(shù)據(jù)的沖突。
②匹配ROM(55H)
主機(jī)在發(fā)送完此命令后,必須緊接著發(fā)送一個64bit的ROM編碼,與此ROM編碼匹配的從器件會響應(yīng)主機(jī)的后續(xù)命令,而其他從器件則處于等待狀態(tài)。該命令主要用于選擇總線上的特定器件進(jìn)行訪問。
③跳過ROM(CCH)
發(fā)送此命令后,主機(jī)不必提供ROM編碼即可對從器件進(jìn)行訪問。與讀ROM命令類似,該命令同樣只適用于單節(jié)點(diǎn)的1-Wire總線系統(tǒng),當(dāng)總線上有多個器件掛接時會引起數(shù)據(jù)的沖突。
④查找ROM(F0H)
當(dāng)主機(jī)不知道總線上器件的ROM編碼時,可以使用此命令并配合特定的算法查找出總線上從器件的數(shù)量和各個從器件的ROM編碼。
⑤報警查找(ECH)
此命令用于查找總線上滿足報警條件的DS18B20,通過報警查找命令并配合特定的查找算法,可以查找出總線上滿足報警條件的器件數(shù)目和各個器件的ROM編碼。
4 DS18B20器件功能命令
與1-Wire總線相關(guān)的命令分為ROM功能命令和器件功能命令兩種,ROM功能命令具有通用性,不僅適用于DS18B20也適用于其他具有1-Wire總線接口的器件,主要用于器件的識別與尋址;器件功能命令具有專用性,它們與器件的具體功能緊密相關(guān)。下面是DS18B20的器件功能命令。
?、賳訙囟绒D(zhuǎn)換(44H)
該命令發(fā)送完成后,主機(jī)可以通過調(diào)用Readbit()函數(shù)判斷溫度轉(zhuǎn)換是否完成,若Readbit()的返回值為0則表示轉(zhuǎn)換正在進(jìn)行,若Readbit()的返回值為1則表示轉(zhuǎn)換完成。
②讀RAM(BEH)
該命令發(fā)送完成后,主機(jī)可以通過調(diào)用Readbit()函數(shù)將DS18B20中RAM的內(nèi)容從低位到高位依次讀出。
③寫RAM(4EH)
該命令發(fā)出后,主機(jī)隨后寫入1-Wire總線的3字節(jié)將依次被存儲到DS18B20的報警上限、報警下限和配置寄存器中。
?、軓?fù)制RAM(48H)
該命令會將DS18B20的報警上限、報警下限和配置寄存器中的內(nèi)容復(fù)制到EEPROM中。該命令發(fā)出后,主機(jī)可以通過調(diào)用Readbit()函數(shù)判斷復(fù)制操作是否完成,若Readbit()的返回值為1,則表示復(fù)制操作完成。
⑤回讀EEPROM(B8H)
該命令會將存儲在EEPROM中的報警上限、報警下限和配置寄器的內(nèi)容回讀到RAM中,主機(jī)可以通過調(diào)用Readbit()函數(shù)判斷回讀操作是否完成,若Readbit()的返回值為1則表示回讀操作完成。DS18B20在上電時會自動進(jìn)行一次回讀操作。
圖1 主機(jī)與DS18B20的通信流程圖
5 主機(jī)與DS18B20的通信流程
如圖1所示,主機(jī)通過1-Wire總線接口對DS18B20的每次訪問都以復(fù)位信號和ROM功能命令開始,訪問的結(jié)束位置是不確定的,這與具體的功能命令相關(guān)。圖中圓角矩形中的操作與主機(jī)發(fā)送的功能命令相對應(yīng),隨著功能命令的不同圓角矩形中的操作有時可以被省略。對總線上的DS18B20來說,復(fù)位信號意味著又一次通信的開始,器件對此的響應(yīng)是拉低總線以告知主機(jī)自身的存在,然后準(zhǔn)備接收ROM功能命令。
多點(diǎn)測溫系統(tǒng)仿真實(shí)例
DS18B20是一種比較廉價的溫度傳感器,其封封裝形式如圖2所示。在Proteus中包含有DS18B20的仿真模型,這使得相關(guān)程序的調(diào)試變得簡單方便。下面以一個實(shí)例介紹用Proteus仿真多點(diǎn)測溫系統(tǒng)的步驟。
圖2 DS18B20封裝形式
① 繪制仿真原理圖
如圖3所示,在本實(shí)例中以單片機(jī)AT89C52和8個DS18B20構(gòu)成了一個多點(diǎn)測溫系統(tǒng)。為了有足夠的空間存儲各個DS18B20的ROM編碼和溫度值,在實(shí)例中用一片8KB的SRAM芯片6116對單片機(jī)的RAM進(jìn)行了擴(kuò)展。
②設(shè)置DS18B20仿真模型的屬性
評論