摘 要:探討工業(yè)場(chǎng)合溫度測(cè)量處理方法及系統(tǒng)構(gòu)成。根據(jù)數(shù)字溫度傳感器DS18B20的特點(diǎn),構(gòu)成溫度測(cè)量系統(tǒng)。利用簡(jiǎn)單的接口與單片機(jī)組成一個(gè)溫度測(cè)量系統(tǒng),通過(guò)鍵盤和LED顯示數(shù)碼管對(duì)系統(tǒng)進(jìn)行控制和顯示,給出用DS18B20和AT89C51單片機(jī)構(gòu)成的溫度測(cè)量系統(tǒng)的應(yīng)用電路和參考程序。利用DS18B20的單總線結(jié)構(gòu),占用系統(tǒng)的端口少,非常適合遠(yuǎn)距離多點(diǎn)溫度檢測(cè)系統(tǒng)。
關(guān)鍵詞:DS18B20;AT89C51;溫度;測(cè)量
中圖分類號(hào):TP212 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2008)10-157-03
Temperature Measurement System Based on DS18B20
ZHAO Yongjie1,XU Yuan2
(1.Nanyang Radio and TV University,Nanyang,473066,China;2.Nanyang Institute of Technology,Nanyang,473004,China)
Abstract:Exploring the methods and system structure of temperature measurement in industrial situation.Methods Forming temperature measurement system by means of digital temperature sensor DS18B20.Creating a temperature measurement system by using simple I/O port and single chip microcomputer which has keyboard and LED,and providing the applied circuit and reference program by means of DS18B20 and AT89C51.According to the structure characteristics of DS18B20,which occupy less system ports.This temperature measurement system is appropriate to temperature test system based on long-distance and multi-ports.
Keywords:DS18B20;AT89C51;temperature;measurement
在許多工業(yè)場(chǎng)合中都要進(jìn)行溫度檢測(cè)和溫度控制,常用方法是采用溫度傳感進(jìn)行檢測(cè),配合單片機(jī)進(jìn)行控制。DS18B20是美國(guó)DALLAS公司生產(chǎn)的“一線總線”接口的數(shù)字化傳感器,他具有微型化、低功耗、抗干擾能力強(qiáng)、易與微處理器接口等優(yōu)點(diǎn),可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)供微處理器接收處理。利用這種溫度傳感器構(gòu)成的溫度測(cè)量系統(tǒng)電路非常簡(jiǎn)單、易于實(shí)現(xiàn),并且適用于幾乎所有類型的單片機(jī)。
1 DS18B20介紹
1.1 DS18B20功能特點(diǎn)
DS18B20功能特點(diǎn):3.0~5.5 V單電源供電;微型化、低功耗、抗干擾能力強(qiáng)、易與微處理器接口;溫度測(cè)量范圍為-55~+125 ℃,測(cè)溫分辨率可達(dá)0.5 ℃;3引腳TO-92小體積封裝或8引腳μSOP封裝;可編程為9~12位A/D轉(zhuǎn)換精度;只需一根端口線就能與微處理器通訊;每只DS18B20有惟一的序列號(hào)并可存入其ROM中,便于實(shí)現(xiàn)多芯片多點(diǎn)測(cè)量;在使用中不需要任何外圍元件;用戶可自設(shè)定非易失性的報(bào)警上下限值。
1.2 DS18B20引腳功能
DS18B20引腳分布如圖1所示。
1.3 DS18B20內(nèi)部結(jié)構(gòu)
DS18B20內(nèi)部由64位閃速ROM、觸發(fā)器TH和TL、高速暫存存儲(chǔ)器、配置寄存器和8位CRC發(fā)生器等組成。
圖1DS18B20引腳
(1) 64位閃速ROM的結(jié)構(gòu)如下:
8位檢驗(yàn)CRC48位序列號(hào)8位工廠代碼
開(kāi)始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前56位的CRC校驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。
(2) 非易失性溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫入用戶報(bào)警上下限。
(3) 高速暫存存儲(chǔ)器:
DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的E2PROM。后者用于存儲(chǔ)TH,TL值,數(shù)據(jù)先寫入RAM,經(jīng)校驗(yàn)后再傳給E2PROM。而配置寄存器為高速暫存器中的第5個(gè)字節(jié),他的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。
1.4 DS18B20的初始化
由于DS18B20單線通信功能是分時(shí)完成的,他有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。
2 單片機(jī)溫度測(cè)量系統(tǒng)硬件設(shè)計(jì)
2.1 系統(tǒng)的硬件結(jié)構(gòu)
系統(tǒng)的硬件結(jié)構(gòu)如圖2所示。以單片機(jī)AT89C51為核心,由溫度傳感器DS18B20、鍵盤和LED顯示電路、電源電路及時(shí)鐘電路等組成。
圖2 系統(tǒng)硬件結(jié)構(gòu)
2.2 電源電路
電源電路中主要使用的是由交流220 V,50 Hz的市電轉(zhuǎn)換成直流電,該部分電路由降壓、整流、濾波、穩(wěn)壓4部分組成,穩(wěn)壓集成塊采用7805。
2.3 數(shù)據(jù)采集
數(shù)據(jù)采集電路如圖3所示。 Atmel的AT89C51單片機(jī),內(nèi)有4 kB閃爍可編程可擦除只讀存儲(chǔ)器,128 B的數(shù)據(jù)存儲(chǔ)器空間,可直接推動(dòng)LED。由溫度傳感器DS18B20采集被控對(duì)象的實(shí)時(shí)溫度,提供給AT89C51的P3.7口作為數(shù)據(jù)輸入。
圖3 單片機(jī)89C51與溫度傳感器DS18B20的連接圖
2.4 接口電路
P1口接4×4行列鍵盤,P1.0~P1.3與行線相連,每條行線接10 kB的電阻到電源,P1.4~P1.7與列線相連。P0口用作7段數(shù)碼管的字段選擇信號(hào),控制數(shù)碼管的字段LED發(fā)光,P2口的P2.0~P2.3用于產(chǎn)生4位數(shù)碼管的位選擇信號(hào),控制應(yīng)該顯示的7段數(shù)碼管發(fā)光。
3 軟件設(shè)計(jì)
3.1 系統(tǒng)程序流程圖
系統(tǒng)程序流程圖如圖4所示。
圖4 系統(tǒng)程序流程圖
3.2 溫度部分軟件設(shè)計(jì)
DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲(chǔ)器操作指令→數(shù)據(jù)傳輸。其工作時(shí)序包括初始化時(shí)序、寫時(shí)序和讀時(shí)序。故主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)3個(gè)步驟:每一次讀寫之前都要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求CPU將數(shù)據(jù)線下拉500 μs,然后釋放,DS18B20收到信號(hào)后等待16~60 μs左右,發(fā)出60~240 μs的低脈沖,CPU收到此信號(hào)表示復(fù)位成功。部分函數(shù)如下:
3.2.1 初始化函數(shù)
初始化函數(shù):
void TxReset(void)
{ uint i;
DQ = 0;
i = 100;
while (i>0) i--;
DQ = 1; // 產(chǎn)生上升沿
i = 4;
while (i>0) i--;}
3.2.2 等待應(yīng)答函數(shù)
等待應(yīng)答函數(shù):
void RxWait(void)
{ uint i;
while(DQ);
while(~DQ); // 檢測(cè)到應(yīng)答脈沖
i = 4;
while (i>0) i--; }
3.2.3 讀數(shù)據(jù)函數(shù)
讀數(shù)據(jù)函數(shù):
uchar RdByte(void)
{ uchar i,j,b;
b = 0;
for (i=1;i<=8;i++)
{ j = RdBit();
b = (j<<7)|(b>>1);
}
return(b);}
3.2.4 寫數(shù)據(jù)函數(shù)
寫數(shù)據(jù)函數(shù):
void WrByte(uchar b)
{ uint i;
uchar j;
bit btmp;
for(j=1;j<=8;j++)
{ btmp = b0x01;
b = b>>1; // 取下一位(由低位向高位)
if (btmp)
{ /* 寫1 */
DQ = 0;
i++;i++; // 延時(shí),使得15 μs以內(nèi)拉高
DQ = 1;
i = 8;
while(i>0) i-; // 整個(gè)寫1時(shí)隙不低于60 μs
}
else
{ /* 寫0 */
DQ = 0;
i = 8;
while(i>0) i--; // 保持低在60~120 μs之間
DQ = 1;
i++;
i++; } } }
[BT4+*3]3.2.5 啟動(dòng)溫度轉(zhuǎn)換函數(shù)
啟動(dòng)溫度轉(zhuǎn)換函數(shù):
void convert(void)
{ TxReset(); // 產(chǎn)生復(fù)位脈沖,初始化DS18B20
RxWait(); // 等待DS18B20給出應(yīng)答脈沖
delay(1); // 延時(shí)
WrByte(0xcc); // skip rom 命令
WrByte(0x44); // convert T 命令
}
3.2.6 讀取溫度值函數(shù)
讀取溫度值函數(shù):
void RdTemp(void)
{ TxReset(); // 產(chǎn)生復(fù)位脈沖,初始化DS18B20
RxWait(); // 等待DS18B20給出應(yīng)答脈沖
delay(1); // 延時(shí)
WrByte(0xcc); // skip rom 命令
WrByte(0xbe); // read scratchpad 命令
tplsb = RdByte(); // 溫度值低位字節(jié)(其中低4位為二進(jìn)制的“小數(shù)”部分)
tpmsb = RdByte(); // 高位值高位字節(jié)(其中高5位為符號(hào)位)
}
4 結(jié) 語(yǔ)
溫度傳感器DS18B20轉(zhuǎn)化溫度的方法非常簡(jiǎn)潔且精度高、測(cè)試范圍較廣。單片機(jī)體積小、重量輕、抗干擾能力強(qiáng)、對(duì)環(huán)境要求不高、價(jià)格低廉、可靠性高、靈活性好。因此這種溫度測(cè)量系統(tǒng)能應(yīng)用于各種場(chǎng)合,具有很大的應(yīng)用價(jià)值。
參 考 文 獻(xiàn)
[1]田俊英.基于51單片機(jī)的溫度測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),2007,30(10):15-17.
[2]MAXIM公司.MAXIM產(chǎn)品資料全集[M/CD].2000.
[3]吉雷.Protel 99從入門到精通[M].西安:西安電子科技大學(xué)出版社,2000.
[4]林伸茂.8051單片機(jī)徹底研究基礎(chǔ)篇[M].北京:中國(guó)電力出版社,2007.
作者簡(jiǎn)介 趙永杰 男,1975年出生,南陽(yáng)廣播電視大學(xué),講師,在讀碩士研究生。研究方向?yàn)榍度胧较到y(tǒng)。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。