AT89C2051雙向溫度監(jiān)控系統(tǒng)的設(shè)計
1 引言
某些應(yīng)用場合需要監(jiān)測溫度,要求溫度保持在一定范圍內(nèi)。例如農(nóng)作物溫床育苗在20℃~30℃,家禽孵化在37℃~40℃,菌種培育在23℃~28℃。而普通單向超溫報警難以滿足要求,因此,提出一種利用溫度傳感器與單片機(jī)應(yīng)用系統(tǒng)的雙向超溫控溫系統(tǒng)設(shè)計方案。該系統(tǒng)設(shè)計能顯示超下限或超上限溫度,且可預(yù)置超溫點(diǎn)。
2 系統(tǒng)設(shè)計原理
圖l所示為系統(tǒng)設(shè)計框圖。首先通過鍵盤輸入溫度允許變化的上下限值,在正常情況下,應(yīng)保持溫度介于上下限值之間,當(dāng)溫度高于上限值時,則降溫并報警;當(dāng)溫度低于下限值時,則升溫并報警。
單片機(jī)控制器內(nèi)部定時器每隔一定時間溫度值采樣一次,并產(chǎn)生一次定時中斷。定時器中斷服務(wù)程序主要對所采樣的溫度值與設(shè)定的溫度上、下限值分別比較,判斷是否達(dá)到溫度上、下限值,從而決定是升溫還是降溫并報警,實現(xiàn)溫度的雙向自動控制,還可實現(xiàn)故障報警及通過鍵盤改變設(shè)定溫度的上、下限值。
熱敏電阻采用半導(dǎo)體感溫元件,它具有負(fù)電阻溫度特性,當(dāng)溫度升高時,電阻值減小。為此向熱敏電阻施加恒定電流,測量電阻兩端電壓,然后通過測溫公式求得溫度:T=T0-KUT,其中T為被測溫度,T0為與熱敏電阻特性有關(guān)的溫度參數(shù),K為與熱敏電阻特性有關(guān)的系數(shù),UT為熱敏電阻兩端的電壓。K和T0為常數(shù)測得熱敏電阻兩端的電壓,可計算熱敏電阻的環(huán)境溫度。這樣就將電阻隨溫度的變化轉(zhuǎn)換為電壓隨溫度的變化,該電壓再經(jīng)A/D轉(zhuǎn)換器轉(zhuǎn)換變成數(shù)字量,通過軟件計算出溫度值。
3 硬件電路
本系統(tǒng)設(shè)計是由AT89C2051單片機(jī)、AD574A、可編程鍵盤與接口器件8279、溫度傳感器、LED顯示器、看門狗電路等組成。
3.1 AT89C2051單片機(jī)
AT89C205l是ATMEL公司生產(chǎn)的高性價比的8位單片機(jī),該器件采用80C3l內(nèi)核指令系統(tǒng),與MCS一51完全兼容;內(nèi)含2 KB的Flash可作為用戶程序存儲器和128字節(jié)的隨機(jī)存取數(shù)據(jù)存儲器(RAM);內(nèi)含2個程序加密位,可防止程序非法讀出,安全性好;其低壓、高性能CMOS的8位機(jī)與MCS一5l指令和輸出引腳相兼容,構(gòu)成一個最小的測量系統(tǒng);有20個引腳,15個雙向輸入/輸出(I/O)端口,其中Pl是一個完整的8位雙向I/O口,2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,1個模擬比較放大器;AT89C2051的時鐘頻率可為零,即具備可用軟件設(shè)置的睡眠省電功能,系統(tǒng)的喚醒方式有RAM、定時/計數(shù)器、串行口和外中斷口,系統(tǒng)喚醒后即進(jìn)入繼續(xù)工作狀態(tài);省電模式中,凍結(jié)片內(nèi)RAM,時鐘停止振蕩,所有功能停止,直至系統(tǒng)被硬件復(fù)位才可繼續(xù)運(yùn)行?;贏T89C2051具有諸多性能,因此,本系統(tǒng)設(shè)計采用AT89C205l作為控制器。
3.2 A/D轉(zhuǎn)換器AD574A
本系統(tǒng)設(shè)計采用ADI公司生產(chǎn)的12位逐次逼近式A/D轉(zhuǎn)換器AD574A。AD574A片內(nèi)包含高精度的參考電壓和時鐘電路,具有外接元件數(shù)目少,功耗低等,以及具有自動校零和自動極性轉(zhuǎn)換等功能,使其在無需任何外部電路和時鐘信號的條件下,完成A/D轉(zhuǎn)換,其轉(zhuǎn)換時間為35μs。
3.3 掉電保護(hù)電路與看門狗電路
為了使系統(tǒng)工作可靠并保存設(shè)定數(shù)據(jù),系統(tǒng)需要具有復(fù)位功能。掉電保護(hù)電路與系統(tǒng)復(fù)位電路利用MAX813L監(jiān)控電路,在軟件的配合下監(jiān)控電源電壓、CPU的工作狀態(tài)。一旦出現(xiàn)死機(jī)、程序“跑飛”死循環(huán)或電源電壓降到系統(tǒng)設(shè)定位值等故障時,就需要系統(tǒng)復(fù)位。MAX813L與AT89C205l的連接如圖2所示。MR經(jīng)過一個復(fù)位按鈕接地。該監(jiān)控電路的主要功能為:系統(tǒng)上電復(fù)位,電源上電時,當(dāng)電源電壓超過復(fù)位門限電壓4.65 V時,復(fù)位端可輸出200 ms的復(fù)位信號,系統(tǒng)復(fù)位;監(jiān)測+5 V的電源:當(dāng)+5 V電源正常時,RESET輸出低電平,單片機(jī)正常工作;當(dāng)+5 V電源電壓降至+4.65 V以下時,RESET輸出高電平,單片機(jī)復(fù)位;看門狗定時器被清零,WDO維持高電平:當(dāng)程序“跑飛”或死機(jī)時,CPU不能在1.6s內(nèi)給出“喂狗”信號,WDO跳變?yōu)榈碗娖?,由于MR端有一個內(nèi)部250 mA的上拉電流,D導(dǎo)通,MR獲得有效低電平,RESET輸出復(fù)位脈沖,單片機(jī)復(fù)位,看門狗定時器被清零,WDO又恢復(fù)為高電平。手動復(fù)位:如果需要對系統(tǒng)進(jìn)行手動復(fù)位,只要按下手動復(fù)位按鈕,就能對系統(tǒng)進(jìn)行有效復(fù)位。
3.4 HD7279簡介
HD7279可支持64鍵盤和8位數(shù)碼管動態(tài)顯示,與傳統(tǒng)的鍵盤顯示器件8279相比,外圍元件數(shù)目少,HD7279的CS、CLK、DATA、KEY信號線分別與AT89C205l的P1.O~P1-3端口相連,分時復(fù)用P1.0~P1.3端口線,大大節(jié)省CPU I/0端口資源;HD7279內(nèi)部含有譯碼器,可直接接收BCD碼或十六進(jìn)制碼,并具有兩種譯碼方式。此外,還具有多種控制指令,如左移、右移、閃爍、消隱、段尋址等;具有自動消除按鍵抖動并識別按鍵代碼的功能,軟件編程時無需鍵盤的消抖動程序,而且HD7279A的控制指令使得軟件編程更簡單。故選用HD7279A作為驅(qū)動鍵盤矩陣。掃描鍵盤時,如果有按鍵按下,直接通過讀鍵盤數(shù)據(jù)指令即可在LED上顯示鍵入的鍵值,而無需通過AT89C205l端口線控制鍵盤輸入。單片機(jī)接收鍵入的鍵值以控制所采樣量。HD7279可廣泛應(yīng)用于微型控制器、智能儀表、控制面板和家用電器等。
3.5 系統(tǒng)硬件設(shè)計
圖3中AT89C205l的Pl與AD574A的高8位數(shù)據(jù)線直接相連,AD574A的低4位數(shù)據(jù)線與單片機(jī)的高半4位P1.4~P1.7直接相連,讀取數(shù)據(jù)是依據(jù)單片機(jī)的控制線分時選通。P3.4接AD574A的字節(jié)短周期控制線(A0),P3.5接讀轉(zhuǎn)換數(shù)據(jù)控制引腳(R/C)。這樣只能輸出8位,故12/8的數(shù)據(jù)模式選擇端直接接地,輸出的控制信號通過單片機(jī)的串口P3.1驅(qū)動升溫或降溫控制電路。采用10 V量程的輸入模式,故AD574A的10 VIN為被測電壓的輸入端,AT89C205l的P3.6接AD574A的片選CS,轉(zhuǎn)換器使用±12 V電源電壓供電,工作電壓為+5 V。P3.7輸出報警信號,驅(qū)動一只發(fā)光二極管報警。工作狀態(tài)指示信號端STS與AT89C2051的P3.2相連,當(dāng)STS=l時,轉(zhuǎn)換器處于轉(zhuǎn)換狀態(tài);當(dāng)STS=0時,表明轉(zhuǎn)換結(jié)束。因此,通過該信號判斷A/D轉(zhuǎn)換器的工作狀態(tài),用于單片機(jī)的中斷或查詢信號。當(dāng)AT89C205l的P3.2查詢到STS端轉(zhuǎn)換結(jié)束信號后,先將轉(zhuǎn)換的12位A/D數(shù)據(jù)的高8位寫入AT89C205l,然后再寫入低4位。無論AD574A處于啟動、轉(zhuǎn)換和輸出結(jié)果的何種狀態(tài),其使能端CE都必須為1,因此CE端接+5 V。上述為AD574A的全控狀態(tài)時,AD574A的CE、12/8、CS、R/C和A0對其工作狀態(tài)的控制過程如下:
當(dāng)CE=l、CS=0時,AD574A則正常工作;當(dāng)AD574A處于工作模式,R/C=0時A/D轉(zhuǎn)換;R/C=1時讀取數(shù)據(jù)。12/8和AO用于控制啟動轉(zhuǎn)換方式和數(shù)據(jù)輸出格式。A0=0時,按完整12位數(shù)據(jù)方式啟動;當(dāng)AO=1時,則按8位A/D轉(zhuǎn)換方式啟動。當(dāng)R/C=l,即當(dāng)AD574A處于數(shù)據(jù)狀態(tài)時,A0和12/8控制數(shù)據(jù)輸出狀態(tài)的格式。當(dāng)12/8=l時,數(shù)據(jù)以12位并行方式輸出;當(dāng)l2/8=0時,數(shù)據(jù)以8位分兩次輸出。當(dāng)AO=O時,輸出轉(zhuǎn)換數(shù)據(jù)的高8位,AO=l時輸出A/D轉(zhuǎn)換數(shù)據(jù)的低4位,這4位占1個字節(jié)的高半字節(jié),低半字節(jié)補(bǔ)零。如果需AD574A工作于單一模式,只需將CE、12/8端接+5 V電源,CS和A0接至O V,僅用R/C控制A/D轉(zhuǎn)換的啟動和數(shù)據(jù)輸出。當(dāng)R/C=O時,啟動A/D轉(zhuǎn)換器。經(jīng)35μs后,STS=1,表明A/D轉(zhuǎn)換結(jié)束,此時R/C置1,即可從數(shù)據(jù)端讀取數(shù)據(jù)。
4 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件設(shè)計采用模塊化結(jié)構(gòu)。整個溫度測控過程由主程序、溫度測量子程序、定時中斷子程序、A/D轉(zhuǎn)換程序、顯示子程序等組成。各模塊分別只有一個入口和出口,各模塊間相互獨(dú)立,避免因某功能模塊出現(xiàn)異常而導(dǎo)致整個系統(tǒng)癱瘓。這里僅給出主程序流程圖(圖4)和溫度測量子程序的流程圖(圖5)。
5 結(jié)語
該系統(tǒng)設(shè)計的創(chuàng)新點(diǎn)是采用溫度范圍為+10℃~+1.50℃的熱敏電阻。該電阻具有靈敏度高,體積小、重量輕,熱慣性小,壽命長及價格便宜等優(yōu)點(diǎn),而AT89C205l是一個功能強(qiáng)大的單片機(jī).適用于節(jié)能減排的電器控制,應(yīng)用廣泛。