引言
DS18B20是DALLAS公司生產的一線式數字溫度傳感器,具有3引腳TO-92小體積封裝形式;溫度測量范圍為-55℃~+125℃,可編程為9位~12位A/D轉換精度,測溫分辨率可達0.0625℃,被測溫度用符號擴展的16位數字量方式串行輸出;其工作電源既可在遠端引入,也可采用寄生電源方式產生;多個DS18B20可以并聯到3根或2根線上,CPU只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少,可節省大量的引線和邏輯電路。以上特點使DS18B20非常適用于遠距離多點溫度檢測系統。
2DS18B20的內部結構
DS18B20內部結構如圖1所示,主要由4部分組成:64位ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。DS18B20的管腳排列如圖2所示,DQ為數字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線方式時接地,見圖4)。
ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,每個DS18B20的64位序列號均不相同。64位ROM的排的循環冗余校驗碼(CRC=X8+X5+X4+1)。ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。

圖1DS18B20的內部結構

圖2DS18B20的管腳排列

(a)初始化時序

(b)寫時序

(c)讀時序
圖3DS18B20的工作時序圖
DS18B20中的溫度傳感器完成對溫度的測量,用16位符號擴展的二進制補碼讀數形式提供,以0.0625℃/LSB形式表達,其中S為符號位。例如+125℃的數字輸出為07D0H,+25.0625℃的數字輸出為0191H,-25.0625℃的數字輸出為FF6FH,-55℃的數字輸出為FC90H。
23
22
21
20
2-1
2-2
2-3
2-4
溫度值低字節
MSBLSB
S
S
S
S
S
22
25
24
溫度值高字節
高低溫報警觸發器TH和TL、配置寄存器均由一個字節的EEPROM組成,使用一個存儲器功能命令可對TH、TL或配置寄存器寫入。其中配置寄存器的格式如下:
0
R1
R0
1
1
1
1
1
MSBLSB
R1、R0決定溫度轉換的精度位數:R1R0=“00”,9位精度,最大轉換時間為93.75ms;R1R0=“01”,10位精度,最大轉換時間為187.5ms;R1R0=“10”,11位精度,最大轉換時間為375ms;R1R0=“11”,12位精度,最大轉換時間為750ms;未編程時默認為12位精度。
高速暫存器是一個9字節的存儲器。開始兩個字節包含被測溫度的數字量信息;第3、4、5字節分別是TH、TL、配置寄存器的臨時拷貝,每一次上電復位時被刷新;第6、7、8字節未用,表現為全邏輯1;第9字節讀出的是前面所有8個字節的CRC碼,可用來保證通信正確。
3DS18B20的工作時序
DS18B20的一線工作協議流程是:初始化→ROM操作指令→存儲器操作指令→數據傳輸。其工作時序包括初始化時序、寫時序和讀時序,如圖3(a)(b)(c)所示。
4DS18B20與單片機的典型接口設計
圖4以MCS-51系列單片機為例,畫出了DS18B20與微處理器的典型連接。圖4(a)中DS18B20采用寄生電源方式,其VDD和GND端均接地,圖4(b)中DS18B20采用外接電源方式,其VDD端用3V~5.5V電源供電。
假設單片機系統所用的晶振頻率為12MHz,根據DS18B20的初始化時序、寫時序和讀時序,分別編寫了3個子程序:INIT為初始化子程序,WRITE為寫(命令或數據)子程序,READ為讀數據子程序,所有的數據讀寫均由最低位開始。
DATEQUP1.0
……
INIT:CLREA
INI10:SETBDAT
MOVR2,#200





