摘 要:MAXIM公司的MAX6577是一種將溫度轉(zhuǎn)換為頻率的溫度傳感器,通過(guò)AT89C2051單片機(jī)對(duì)輸出信號(hào)頻率進(jìn)行計(jì)算處理,設(shè)計(jì)實(shí)用的溫度測(cè)控系統(tǒng),可以實(shí)現(xiàn)包括溫度測(cè)量、顯示、控制與報(bào)警等功能。介紹了硬件電路和軟件編寫,提供完整的電路圖,給出了軟件的總體設(shè)計(jì),特別是對(duì)數(shù)據(jù)計(jì)算處理部分的程序編寫做了詳細(xì)分析。
關(guān)鍵詞:溫度傳感器;單片機(jī);MX6577;AT89C2051
中圖分類號(hào):TP277 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004373X(2008)0112103
Design and Analysis of Temperature Measuring and Contorlling System Based on AT89C2051
LIU Jingbo
(Nanjing Institute of Technology,Nanjing,211167,China)
Abstract:The MAX6577 of MAXIM Company is a temperature sensor which converts the temperature to frequency,calculates and processes the output signal frequency by the single chip microcomputer AT89C2051,designing practical temperature measure and control system,can realize the function including temperature measure,display,control,alarm and so on.This articleintroduces hardware circuit and software,provides complete circuit,gives the design of software,detailed analyses the data calculation and processing especially.
Keywords:temperature sensor;single chip microcomputer;MAX6577;AT89C2051
溫度是單片機(jī)應(yīng)用系統(tǒng)中常見(jiàn)的一個(gè)測(cè)控參數(shù),根據(jù)溫度傳感器的不同,其測(cè)控系統(tǒng)亦有較大差別。在滿足應(yīng)用場(chǎng)合需求的前提下,選擇合適的溫度傳感器,同時(shí)兼顧測(cè)量溫度誤差小、電路簡(jiǎn)潔可靠是本設(shè)計(jì)考慮的主要內(nèi)容。
1 硬件電路設(shè)計(jì)
1.1 溫度傳感器
采用MAXIM公司的MAX6577作為溫度傳感芯片,這是一種將溫度轉(zhuǎn)換為均衡頻率方波的傳感器(溫度→頻率)[1],其主要特點(diǎn)如下:
(1) 方波輸出,無(wú)需A/D轉(zhuǎn)換與單片機(jī)計(jì)數(shù)端直接相連。
(2) 溫度測(cè)量范圍-40~+125 ℃。
(3) 較低的測(cè)量誤差。測(cè)量溫度是+25 ℃時(shí),誤差范圍為±0.8 ℃;測(cè)量溫度是+125 ℃時(shí),誤差范圍為±0.5 ℃。
(4) 不需外接元件,體積小(最大3 mm×3 mm),適合用作溫度測(cè)量探頭。需要注意的是,該傳感芯片將溫度轉(zhuǎn)換為頻率是以絕對(duì)溫度(K)為前提,因此對(duì)頻率的計(jì)數(shù)結(jié)果應(yīng)減去273才能得到攝氏度℃,這當(dāng)然可以在軟件編寫時(shí)方便地做運(yùn)算處理。MAX6577采用SOT23-6腳封裝,圖1可見(jiàn)其管腳分布,表1是各管腳功能描述。
圖1中TS0,TS1分別接在VDD和GND上,設(shè)置比例關(guān)系為1 Hz/K,因此換算為攝氏溫度時(shí),只需將計(jì)數(shù)的數(shù)值減去273。
1.2 電路設(shè)計(jì)
圖2是硬件電路設(shè)計(jì)示意圖[2]。按照?qǐng)D1預(yù)先設(shè)計(jì)完成傳感部分,并與圖2的J1連接實(shí)現(xiàn)信號(hào)輸入。MAX6577輸出的方波信號(hào)連接到AT89C2051[3]的P3.4(T0計(jì)數(shù)端),在軟件中統(tǒng)計(jì)信號(hào)頻率數(shù)值,并減去273就是當(dāng)前測(cè)量出的攝氏溫度(℃)。四位共陰數(shù)碼管用于顯示測(cè)量溫度值,根據(jù)MAX6577的測(cè)量范圍與特點(diǎn),DS2~DS4用來(lái)顯示溫度,DS1是符號(hào)顯示,如顯示負(fù)號(hào)“—”時(shí),表示當(dāng)前溫度是負(fù)溫度。輸出段碼由P1口輸出,P3.0~P3.3是DS1~DS4的選通信號(hào)。P3.7連接有蜂鳴器LS1,當(dāng)測(cè)量的溫度超過(guò)“預(yù)設(shè)報(bào)警溫度”時(shí),發(fā)出提示音,以P3.7為低電平有效,使PNP型三極管9012導(dǎo)通[4]。由于省略A/D轉(zhuǎn)換,因此電路簡(jiǎn)潔,提高可靠性,降低成本。
2 軟件設(shè)計(jì)
總體思路是采用單片機(jī)的T0為計(jì)數(shù)器工作方式,T1為定時(shí)工作方式的模式設(shè)計(jì)軟件,即設(shè)計(jì)每1 s定時(shí)時(shí)間到達(dá)后,統(tǒng)計(jì)出T0計(jì)數(shù)的數(shù)值,這就是當(dāng)前MAX6577將溫度轉(zhuǎn)換的頻率數(shù)值,并在軟件中把統(tǒng)計(jì)的計(jì)數(shù)值減去273就是攝氏溫度,送到P1端口顯示出溫度值。圖3是程序總流程框圖。整體來(lái)看,這是一個(gè)不斷調(diào)用顯示處理子程序的循環(huán),或者說(shuō)是一個(gè)等待刷新顯示溫度的狀態(tài)。其中當(dāng)報(bào)警標(biāo)志00H(位尋址)[1]為0時(shí),軟件只要把溫度值顯示出來(lái),這當(dāng)然是由T1定時(shí)中斷服務(wù)子程序在每1 s時(shí)間達(dá)到后提供刷新的溫度顯示數(shù)值。當(dāng)報(bào)警標(biāo)志00H為1時(shí),則發(fā)出報(bào)警信號(hào),并返回繼續(xù)等待刷新。不難看出,當(dāng)被測(cè)溫度超過(guò)“預(yù)設(shè)報(bào)警溫度”后,每次在主循環(huán)中,報(bào)警標(biāo)志00H被清零,而在T1中斷服務(wù)子程序中被置1,因此這樣的設(shè)計(jì)可以實(shí)現(xiàn)報(bào)警和顯示閃爍的效果,這從圖3的程序總流程不難理解。這樣的設(shè)計(jì)在下文的2.2.4節(jié)中也可以體現(xiàn)出其特點(diǎn)。
2.1 T0,T1初始設(shè)置
設(shè)置T0為外部計(jì)數(shù)方式,T1為50 ms定時(shí)方式,并設(shè)有20次的軟件計(jì)數(shù)存儲(chǔ)單元,實(shí)現(xiàn)1 s定時(shí)。以下是對(duì)相應(yīng)寄存器進(jìn)行設(shè)置,并預(yù)設(shè)T1定時(shí)器的初值[1,5]。
2.2 中斷服務(wù)子程序
T1中斷服務(wù)子程序是軟件設(shè)計(jì)的重要部分,實(shí)現(xiàn)的功能如下:取出計(jì)數(shù)器T0的計(jì)數(shù)值;判斷正、負(fù)溫度;分別對(duì)正、負(fù)溫度進(jìn)行運(yùn)算處理,即應(yīng)減去273,得到攝氏溫度;把攝氏溫度通過(guò)除以100,10而分離得出百、十、個(gè)位;與“預(yù)設(shè)報(bào)警溫度”參數(shù)進(jìn)行比較,超過(guò)設(shè)定值后將報(bào)警標(biāo)志00H置為1;把百、十、個(gè)位數(shù)值加上段碼起始地址,得到相對(duì)應(yīng)的段碼,送至P1口顯示溫度。
[BT4]2.2.1 T1中斷服務(wù)子程序總體設(shè)計(jì)
進(jìn)入中端服務(wù)子程序后,通常是保護(hù)現(xiàn)場(chǎng)、重置T1初值,然后判斷是否為20次50 ms中斷結(jié)束(1 s時(shí)間到)?如未到,則恢復(fù)現(xiàn)場(chǎng),重新啟動(dòng)T1定時(shí)并返回。若1 s時(shí)間到,則先取出TH0,TL0的計(jì)數(shù)數(shù)值,并保存到自定義好的存儲(chǔ)單元TEMPH和TEMPL,注意接下來(lái)應(yīng)把T0計(jì)數(shù)器的TH0,TL0單元清零,為下次計(jì)數(shù)做準(zhǔn)備。最后對(duì)保存在TEMPH和TEMPL中的數(shù)據(jù)進(jìn)行處理、計(jì)算。圖4是T1中斷子程序流程,其中的“計(jì)算程序”如何對(duì)數(shù)據(jù)進(jìn)行計(jì)算處理,是軟件設(shè)計(jì)的重點(diǎn)。
[BT4]2.2.2 數(shù)據(jù)處理、計(jì)算分析
T1中斷服務(wù)子程序?qū)崿F(xiàn)的功能均由該部分程序完成。首先判斷正、負(fù)溫度后,送出符號(hào)位并保存在存儲(chǔ)單元40H中,然后分別對(duì)其進(jìn)行減273計(jì)算處理,并分離得到百、十、個(gè)位。可以利用R1作為設(shè)置“預(yù)設(shè)報(bào)警溫度”參數(shù),并在程序中預(yù)設(shè)正、負(fù)的報(bào)警參數(shù)。BAIWEI,SHIWEI,GEWEI是定義的3個(gè)存儲(chǔ)單元用作保存分離的百、十、個(gè)位數(shù)。存儲(chǔ)單元40H~41H作為顯示緩沖單元,其中40H是保存符號(hào)位的顯示狀態(tài),41H~43H分別保存百、十、個(gè)位顯示用的段碼數(shù)據(jù)。最后顯示時(shí)依次把40H~43H送到P1口就可以實(shí)現(xiàn)溫度數(shù)值的動(dòng)態(tài)顯示。
2.2.3 關(guān)于減去273計(jì)算
首先說(shuō)明的是,正、負(fù)溫度的判斷以273為基準(zhǔn)判斷,軟件中必須有存儲(chǔ)單元(TEMPH,TEMPL)保存T0計(jì)數(shù)得到的數(shù)據(jù)。因?yàn)樽罱K應(yīng)將數(shù)值分離出百、十、個(gè)位而送出顯示,因此判斷是正溫度或是負(fù)溫度,然后區(qū)別對(duì)待計(jì)算,這也是2.2.2節(jié)中“減273運(yùn)算”各自獨(dú)立計(jì)算的原因。減去273(0111H)實(shí)際上就是把TEMPH和TEMPL分別減去01H和11H,判斷正、負(fù)溫度也是同樣的道理,只不過(guò)此時(shí)是通過(guò)測(cè)試借位標(biāo)志CY來(lái)實(shí)現(xiàn)的,這是不難實(shí)現(xiàn)的。以下的介紹中主要考慮在當(dāng)前的測(cè)量范圍,如何對(duì)TEMPL在減去11H后作出恰當(dāng)?shù)奶幚?,保證通過(guò)除法運(yùn)算而分離出正確的百、十、個(gè)位數(shù),并正確地顯示出來(lái)。[JP]
負(fù)溫度條件下的減273計(jì)算是這樣考慮的:
第一步:TEMPL減去11H后的數(shù)值先保留;
第二步:用FFH減去第一步的結(jié)果;
第三步,把第二步的結(jié)果加1。接下來(lái)再分別除以100,10而分離出百、十、個(gè)位,從而達(dá)到預(yù)想的目的。
正溫度計(jì)算程序中考慮了TEMPH減01H的情況,并且是帶借位的減法。在實(shí)際調(diào)試時(shí),采用信號(hào)發(fā)生器輸出信號(hào)驗(yàn)證程序顯示和報(bào)警的正確性,結(jié)果表明,采用以下程序計(jì)算時(shí),可以正確地顯示到255 ℃(即信號(hào)發(fā)生器的輸出頻率可達(dá)528 Hz),當(dāng)顯示溫度超過(guò)+50 ℃時(shí),發(fā)出報(bào)警。這對(duì)于MAX6577的測(cè)溫范圍是足夠的。
2.2.4 關(guān)于控制
圖2中AT89C2051的P3.5可以接驅(qū)動(dòng)電路驅(qū)動(dòng)繼電器,當(dāng)溫度超過(guò)“預(yù)設(shè)報(bào)警溫度”參數(shù)時(shí)驅(qū)動(dòng)繼電器切斷被控制對(duì)象。圖2中沒(méi)有給出具體電路,考慮有兩種方法:第一是把P3.5分別安置在主程序和T1中斷服務(wù)子程序中,與報(bào)警標(biāo)志00H同樣對(duì)待,這種方法前面已經(jīng)已有闡述,顯然在系統(tǒng)報(bào)警時(shí),P3.5是以脈沖形式出現(xiàn),那么接下來(lái)可以設(shè)計(jì)一個(gè)小電路,例如當(dāng)連續(xù)檢測(cè)P3.5有超過(guò)n個(gè)脈沖后再驅(qū)動(dòng)繼電器切斷被控制對(duì)象,避免測(cè)量溫度在“預(yù)設(shè)報(bào)警溫度”參數(shù)左右變化時(shí)繼電器頻繁動(dòng)作,只有超過(guò)n個(gè)脈沖(確認(rèn)有效報(bào)警)時(shí)再使繼電器動(dòng)作。第二是P3.5直接接驅(qū)動(dòng)電路,則在軟件中考慮設(shè)置存儲(chǔ)單元,統(tǒng)計(jì)“報(bào)警標(biāo)志00H”出現(xiàn)n次變化后,再使P3.5電位發(fā)生變化后驅(qū)動(dòng)繼電器切斷被控對(duì)象。第二種方法節(jié)省硬件開(kāi)銷,是值得考慮的。
3 結(jié) 語(yǔ)
本文的創(chuàng)新在于遵循硬件電路簡(jiǎn)潔可靠,充分利用軟件編程的便利,實(shí)現(xiàn)溫度測(cè)控的目的,文中較詳細(xì)地闡述了整體方案與計(jì)算程序單元,對(duì)正、負(fù)溫度的數(shù)據(jù)處理提出了明確方法,對(duì)于報(bào)警與控制的設(shè)計(jì)則表現(xiàn)出主程序結(jié)構(gòu)的特點(diǎn)。溫度測(cè)量的精度主要取決于傳感器的測(cè)量誤差,而1 s定時(shí)時(shí)間的精度是可以保證的。相比于其他溫度傳感器件更高的測(cè)量精度,MAX6577的優(yōu)勢(shì)在于節(jié)省A/D轉(zhuǎn)換,并且與單片機(jī)接口處理上更簡(jiǎn)潔,因此在電信裝置、醫(yī)療裝置、汽車等方面的溫度測(cè)量、監(jiān)測(cè)等方面有一定實(shí)用價(jià)值。
參 考 文 獻(xiàn)
[1][JP3]Maxim.MAX6576-MAX6577.pdf[EB/OL].http://www.max[CD*3]
im-ic.com.cn/pdfserv/en/ds/MAX6576-MAX6577.pdf.[JP]
[2]江思明.電路工程設(shè)計(jì)——Protel 99實(shí)例演練[M].北京:人民郵電出版社,2000.
[3]趙娜,趙剛,于珍珠,等.基于51單片機(jī)的溫度測(cè)量系統(tǒng)[J].微計(jì)算機(jī)信息,2007,23(2):146-148.
[4]康華光.電子技術(shù)基礎(chǔ)(模擬部分)[M].北京:高等教育出版社,2001.
[5]胡漢才.單片機(jī)原理及其接口技術(shù)[M].北京:清華大學(xué)出版社,2004.
作者簡(jiǎn)介
劉靜波 男,1969年出生,江蘇靖江人,學(xué)士,實(shí)驗(yàn)師。研究方向?yàn)殡娮蛹夹g(shù)應(yīng)用。
注:“本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文?!?/p>