(中國船舶重工集團(tuán)公司第七一○研究所,湖北 宜昌 443003) 梁中明,徐 陽
梁中明(1978—)
男,南京航空航天大學(xué)碩士畢業(yè),現(xiàn)從事系統(tǒng)仿真研究工作,助理工程師。
溫度是一個很重要的環(huán)境參數(shù),人們的生活與環(huán)境的溫度息息相關(guān),工業(yè)生產(chǎn)過程中需要實(shí)時測量溫度,在農(nóng)業(yè)生產(chǎn)中也離不開溫度測量。因此,研究溫度測量裝置很有實(shí)際意義與實(shí)用價(jià)值。本文介紹了數(shù)字溫度傳感器DS18B20的內(nèi)部結(jié)構(gòu)與工作時序,虛擬 總線的溫度顯示方式,以及它們與單片機(jī)P89C51RD2的應(yīng)用接口。該溫度測量裝置適用于人們的日常生活和工業(yè)、農(nóng)業(yè)生產(chǎn)用于溫度測量。
DS18B20是一種單線式數(shù)字溫度傳感器,具有3引腳TO-92小體積封裝形式;測溫范圍為-55℃~+125℃,可編程為9~12位A/D轉(zhuǎn)換精度,被測溫度用符號擴(kuò)展的16位數(shù)字量方式串行輸出,工作電源為+3V~+5.5V,可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生。
1.1 DS18B20的內(nèi)部結(jié)構(gòu)
DS18B20內(nèi)部結(jié)構(gòu)如圖1所示,主要由4部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。其中DQ為數(shù)字信號輸入/輸出端;VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。
圖1 DS18B20內(nèi)部結(jié)構(gòu)
DS18B20用12位存貯溫度值,最高位為符號位,圖2為DS18B20的溫度存儲方式,負(fù)溫度S=1,正溫度S=0,如0550H為+85℃,F(xiàn)C90H為-55℃。
圖2 DS18B20溫度寄存器存儲方式
DS18B20的單線式工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數(shù)據(jù)傳輸。其工作時序包括初始化時序、寫時序和讀時序,如圖3所示。
(a) 初始化時序
(b)寫時序
(c)寫時序
圖3 DS18B20工作時序圖
2 虛擬總線顯示方式
溫度顯示采用LED數(shù)碼管,其驅(qū)動芯片是ZLG7290。ZLG7290是接口的鍵盤及LED驅(qū)動器,可驅(qū)動8位共陰數(shù)碼管,無需外接元件即直接驅(qū)動LED,可擴(kuò)展驅(qū)動電流及驅(qū)動電壓。在每個顯示刷新周期,ZLG7290按照掃描位數(shù)寄存器指定的顯示位數(shù)N,把顯示緩存DpRam0~DpRamN的內(nèi)容先后順序送入LED驅(qū)動器實(shí)現(xiàn)動態(tài)顯示,減少N值可提高每位顯示掃描時間的占空比,以提高LED亮度,顯示緩存中的內(nèi)容不受影響。修改閃爍控制寄存器(FlashOnOff)可改變閃爍頻率和占空比(亮與滅的時間)。
總線是PHILIPS公司推出的芯片間串行數(shù)據(jù)傳輸總線,2根線(SCL、SDA)即可實(shí)現(xiàn)完善的全雙工同步數(shù)據(jù)傳送,能夠十分方便地構(gòu)成多機(jī)系統(tǒng)和外圍器件擴(kuò)展系統(tǒng)。
ZLG7290的接口傳輸速率可達(dá)32Kbit/s,容易與處理器接口,本文采用單主
總線形式,硬件接口是SCL、SDA。本文設(shè)計(jì)的硬件電路圖如圖4所示,采用P89C51RD2的P1.6與P1.7模擬
的SCL與SDA,構(gòu)成虛擬的
總線顯示方式。
溫度測量裝置的主程序流程,如圖5所示。P89C51RD2控制DS18B20完成溫度讀取必須經(jīng)過三個步驟:初始化、ROM操作指令、存儲器操作指令。程序必須先啟動DS18B20開始轉(zhuǎn)換,再讀出溫度值,其中包括讀DS18B20,寫DS18B20以及延時子函數(shù)。

/*DS18B20初始化程序*/
INIT_1820:
SETB DQ
NOP
CLR DQ
MOV R0,#80H
TSR1: DJNZ R0,TSR1 ; /*延時*/
SETB DQ
MOV R0,#25H
TSR2: DJNZ R0,TSR2
JNB DQ,TSR3
LJMP TSR4 ;/*延時*/
TSR3: SETB FLAG1 ; /*置標(biāo)志位*/
LJMP TSR5
TSR4: CLR FLAG1 ;/*清標(biāo)志位*/
LJMP TSR7
TSR5: MOV R0,#06BH ;/*200μs*/
TSR6: DJNZ R0,TSR6 ; /*延時*/
TSR7: SETB DQ
RET
void Start_I2c() /*啟動總線*/
{
SDA=1; /*發(fā)送起始條件的數(shù)據(jù)信號*/
_Nop();
SCL=1;
_Nop(); /*起始建立時間大于4.7μs*/
_Nop();
_Nop();
_Nop();
_Nop();
SDA=0; /*發(fā)送起始信號*/
_Nop(); /*起始鎖定時間大于4μs*/
_Nop();
_Nop();
_Nop();
_Nop();
SCL=0; /*鉗住總線*/
_Nop();
_Nop();
}
圖5 主程序流程圖
void Stop_I2c() /*結(jié)束總線*/
{
SDA=0; /*發(fā)送結(jié)束條件的數(shù)據(jù)信號*/
_Nop(); /*發(fā)送結(jié)束條件的時鐘信號*/
SCL=1; /*結(jié)束時建立時間大于4μs*/
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SDA=1; /*發(fā)送總線結(jié)束信號*/
_Nop();
_Nop();
_Nop();
_Nop();
}
圖4 硬件電路原理圖
數(shù)字式溫度傳感器DS18B20集溫度測量、A/D轉(zhuǎn)換于一體,具有單總線結(jié)構(gòu),數(shù)字量輸出,直接與微機(jī)接口等優(yōu)點(diǎn);虛擬

參考文獻(xiàn):
[1] DallasCorp.DS18B20[EB/OL].http://www.dalsem.com,2003.
[2] 馬云峰等.數(shù)字溫度傳感器DS18B20原理與應(yīng)[EB/OL].http://www.chinacd.com/dzkw//2002-1/9.htm,2002-01-12/2003-09-26.
[3] 呂元穎等.總線概述及有關(guān)例程.科技情報(bào)開發(fā)與經(jīng)濟(jì),2005,No15.P177~180.
[4] P89c51RA2xx/RB2xx/RC2xx/RD2xx.datasheet. Philips Semiconductors .2002.