DS18B20特點
1.單線結構,只需一根信號線和CPU相連。
2. 不需要外部元件,直接輸出串行數據。
3. 可不需要外部電源,直接通過信號線供電,電源電壓范圍為3.3V~5V。
4.測溫精度高,測溫范圍為:一55℃~+125℃,在-10℃~+85℃范圍內,精度為±O.5℃。
5.測溫分辨率高,當選用12位轉換位數時,溫度分辨率可達0.0625℃。
6.數字量的轉換精度及轉換時間可通過簡單的編程來控制:9位精度的轉換時間為93.75 ms:10位精度的轉換時間187.5ms:12位精度的轉換時間750ms。
7.具有非易失性上、下限報警設定的功能,用戶可方便地通過編程修改上、下限的數值。
8.可通過報警搜索命令識別哪片DS18820采集的溫度超越上、下限。
DS18B20引腳及管腳功能介紹
DS18B20的常用封裝有3腳、8腳等幾種形式,如圖1所示。各腳含義如下:
DQ:數字信號輸入/輸出端。
GND:電源地端。
VDD:外接供電電源輸入端(在寄生電源接線時此腳應接地)。
DS18B20內部結構簡要介紹:
DS18820的內部結構如圖3所示:主要有64位光刻ROM、溫度傳感器、非易失性溫度報警觸發器TH和TL、配置寄存器等組成。
1.64位光刻ROM是生產廠家給每一個出廠的DS18820命名的產品序列號,可以看作為該器件的地址序列號。其作用是使每一個出廠的DS18820地址序列號都各不相同,這樣,就可以實現一根總線上掛接多個DS18820的目的。
2.DS18820中的溫度傳感器完成對溫度的測量,輸出格式為:16位符號擴展的二進制補碼。當測溫精度設置為12位時,分辨率為O.0625℃,即O.0625℃/LSB。其二進制補碼格式如圖2所示。
其中,S為符號位,S=1,表示溫度 為負值;S=0,表示溫度為正值。例如+125℃的數字輸出為07D0H,-55℃的數字輸出為FC90H。一些溫度值對應的數字輸出如圖4所示。
3.DS18820中的低溫觸發器TL、高溫觸發器TH,用于設置低溫、高溫的報警數值。DS18820完成一個周期的溫度測量后,將測得的溫度值和TL、TH相比較,如果小于TL,或大于TH,則表示溫度越限,將該器件內的告警標志位置位,并對主機發出的告警搜索命令作出響應。需要修改上、下限溫度值時,只需使用一個功能命令即可對TL、TH寫入,十分方便。
4.DS18820中的高速暫存器是一個9字節的存儲器,其含意如圖5所示。
開始兩個字節為被測溫度的數字量,其含義如圖2所示。第3、4、5字節分別為TH、TL、配置寄存器的復制,每一次上電復位時被重寫。配置寄存器有R0、R1組成,其值決定溫度轉換的精度位數、轉換時間等,含義如圖6所示。第7字節為測溫計數的剩余值。第8字節為測溫時每度的計數值。第9 字節讀出的是前8個字節的CRC校驗碼,通過此碼,可判斷通訊是否正確。
DS18B20的讀寫操作介紹
(一)ROM操作命令:
1.讀命令(33H):通過該命令主機可以讀出DS18820的ROM中的8位系列產品代碼、48位產品序列號和8位CRC校驗碼。該命令僅限于單個DS18B20在線的情況。
2.選擇定位命令(55H):當多片DS18820在線時,主機發出該命令和一個64位數,DS18820內部ROM與主機一致者,才響應命令。該命令也可用于單個DS18820的情況。
3.查詢命令(0F0H):該命令可查詢總線上DS18B20的數目及其64位序列號。
4.跳過ROM序列號檢測命令(OCCH):該命令允許主機跳過ROM序列號檢測而直接對寄存器操作,該命令僅限于單個DS18820在線的情況。
5. 報警查詢命令(0ECH):只有報警標志置位后,DS18B20才相應該命令。
(二)存儲器操作命令:
1.寫入命令(4EH):該命令可寫入寄存器的第2、3、4字節,即高低溫寄存器和配置寄存器。
復位信號發出之前,三個字節必須寫完。
2.讀出命令(0BEH):該命令可讀出寄存器中的內容,復位命令可終止讀出。
3.開始轉換命令(44H):該命令使DS18B20立即開始溫度轉換,當溫度轉換正在進行時,主機這時讀總線將收到O;當溫度轉換結束時,主機這時讀總線將收到1。若用信號線給DS18820供電,則主機發出轉換命令后,必須提供至少相應于分辨率的溫度轉換時間的上拉電平。
4.回調命令(088H):該命令把EEROM中的內容寫到寄存器TH、TL 及配置寄存器中。DS18820上電時能 自動寫入。
5.復制命令(48H):該命令把寄存器TH、TL及配置寄存器中的內容寫到EEROM中。
6讀電源標志命令(084H):主機 發出該命令后,DS18B20將進行響應, 發送電源標志,信號線供電發O,外接 電源發1。
(三)DS18820的復位及讀寫時序:
1.復位:對DS18B20操作之前,首先要將它復位。復位時序為:
(1)主機將信號線置為低電平,時間為480~960μ S。
(2)主機將信號線置為高電平,時間為15~60 μS。
(3)DS18B20發出60~240μS 的低電平作為應答信號。主機收到此信 號后,才能對DS18820作其它操作。
2.寫操作:主機將信號線從高電平 拉至低電平,產生寫起始信號。從信號 線的下降沿開始,在15~60 μS的時 間內DS18820對信號線檢測,如信號 線為高電平,則寫1,如信號線為O,則 寫0,從而完成了一個寫周期。在開始 另一個寫周期前,必須有1 μ S以上的 高電平恢復期。
3.讀操作:主機將信號線從高電平 拉低至低電平1 μ S以上,再使數據線 升為高電平,產生讀起始信號。從主機 將信號線從高電平拉低至低電平起15~60 μS的時間內,DS18820將數據放到信號線上,供主機讀取。從而完成了一個讀周期。在開始另一個讀周期前,必須有1 μ S以上的高電平恢復期。
DS18B20和單片機AT89C2051的接口電路如處圖所示
用單片機AT89C2051的P1.7口線經上拉后接至DS18820的引腳2數據端,引腳1接電源地端,引腳3接+5V電源端。
下面給出對DS18820的操作用匯編語言編寫的具體程序。程序已在某產品中得到應用。應該說明的是,程序對應于單片機的時鐘頻率為6MHz,如改用其它時鐘頻率,程序中的延時應重新調整。