<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AT89C2051雙向溫度監(jiān)控系統(tǒng)的設(shè)計(jì)

          AT89C2051雙向溫度監(jiān)控系統(tǒng)的設(shè)計(jì)

          作者: 時(shí)間:2008-11-10 來源:網(wǎng)絡(luò) 收藏

          1 引言
          某些應(yīng)用場合需要監(jiān)測溫度,要求溫度保持在一定范圍內(nèi)。例如農(nóng)作物溫床育苗在20℃~30℃,家禽孵化在37℃~40℃,菌種培育在23℃~28℃。而普通單向超溫報(bào)警難以滿足要求,因此,提出一種利用溫度傳感器與單片機(jī)應(yīng)用系統(tǒng)的雙向超溫控溫系統(tǒng)設(shè)計(jì)方案。該系統(tǒng)設(shè)計(jì)能顯示超下限或超上限溫度,且可預(yù)置超溫點(diǎn)。

          2 系統(tǒng)設(shè)計(jì)原理
          圖l所示為系統(tǒng)設(shè)計(jì)框圖。首先通過鍵盤輸入溫度允許變化的上下限值,在正常情況下,應(yīng)保持溫度介于上下限值之間,當(dāng)溫度高于上限值時(shí),則降溫并報(bào)警;當(dāng)溫度低于下限值時(shí),則升溫并報(bào)警。

          單片機(jī)控制器內(nèi)部定時(shí)器每隔一定時(shí)間溫度值采樣一次,并產(chǎn)生一次定時(shí)中斷。定時(shí)器中斷服務(wù)程序主要對所采樣的溫度值與設(shè)定的溫度上、下限值分別比較,判斷是否達(dá)到溫度上、下限值,從而決定是升溫還是降溫并報(bào)警,實(shí)現(xiàn)溫度的雙向自動控制,還可實(shí)現(xiàn)故障報(bào)警及通過鍵盤改變設(shè)定溫度的上、下限值。
          熱敏電阻采用半導(dǎo)體感溫元件,它具有負(fù)電阻溫度特性,當(dāng)溫度升高時(shí),電阻值減小。為此向熱敏電阻施加恒定電流,測量電阻兩端電壓,然后通過測溫公式求得溫度:T=T0-KUT,其中T為被測溫度,T0為與熱敏電阻特性有關(guān)的溫度參數(shù),K為與熱敏電阻特性有關(guān)的系數(shù),UT為熱敏電阻兩端的電壓。K和T0為常數(shù)測得熱敏電阻兩端的電壓,可計(jì)算熱敏電阻的環(huán)境溫度。這樣就將電阻隨溫度的變化轉(zhuǎn)換為電壓隨溫度的變化,該電壓再經(jīng)A/D轉(zhuǎn)換器轉(zhuǎn)換變成數(shù)字量,通過軟件計(jì)算出溫度值。

          3 硬件電路
          本系統(tǒng)設(shè)計(jì)是由AT89C2051單片機(jī)、AD574A、可編程鍵盤與接口器件8279、溫度傳感器、LED顯示器、看門狗電路等組成。
          3.1 AT89C2051單片機(jī)
          AT89C205l是ATMEL公司生產(chǎn)的高性價(jià)比的8位單片機(jī),該器件采用80C3l內(nèi)核指令系統(tǒng),與MCS一51完全兼容;內(nèi)含2 KB的Flash可作為用戶程序存儲器和128字節(jié)的隨機(jī)存取數(shù)據(jù)存儲器(RAM);內(nèi)含2個(gè)程序加密位,可防止程序非法讀出,安全性好;其低壓、高性能CMOS的8位機(jī)與MCS一5l指令和輸出引腳相兼容,構(gòu)成一個(gè)最小的測量系統(tǒng);有20個(gè)引腳,15個(gè)雙向輸入/輸出(I/O)端口,其中Pl是一個(gè)完整的8位雙向I/O口,2個(gè)外中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,1個(gè)模擬比較放大器;AT89C2051的時(shí)鐘頻率可為零,即具備可用軟件設(shè)置的睡眠省電功能,系統(tǒng)的喚醒方式有RAM、定時(shí)/計(jì)數(shù)器、串行口和外中斷口,系統(tǒng)喚醒后即進(jìn)入繼續(xù)工作狀態(tài);省電模式中,凍結(jié)片內(nèi)RAM,時(shí)鐘停止振蕩,所有功能停止,直至系統(tǒng)被硬件復(fù)位才可繼續(xù)運(yùn)行?;贏T89C2051具有諸多性能,因此,本系統(tǒng)設(shè)計(jì)采用AT89C205l作為控制器。
          3.2 A/D轉(zhuǎn)換器AD574A
          本系統(tǒng)設(shè)計(jì)采用ADI公司生產(chǎn)的12位逐次逼近式A/D轉(zhuǎn)換器AD574A。AD574A片內(nèi)包含高精度的參考電壓和時(shí)鐘電路,具有外接元件數(shù)目少,功耗低等,以及具有自動校零和自動極性轉(zhuǎn)換等功能,使其在無需任何外部電路和時(shí)鐘信號的條件下,完成A/D轉(zhuǎn)換,其轉(zhuǎn)換時(shí)間為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è)定位值等故障時(shí),就需要系統(tǒng)復(fù)位。MAX813L與AT89C205l的連接如圖2所示。MR經(jīng)過一個(gè)復(fù)位按鈕接地。該監(jiān)控電路的主要功能為:系統(tǒng)上電復(fù)位,電源上電時(shí),當(dāng)電源電壓超過復(fù)位門限電壓4.65 V時(shí),復(fù)位端可輸出200 ms的復(fù)位信號,系統(tǒng)復(fù)位;監(jiān)測+5 V的電源:當(dāng)+5 V電源正常時(shí),RESET輸出低電平,單片機(jī)正常工作;當(dāng)+5 V電源電壓降至+4.65 V以下時(shí),RESET輸出高電平,單片機(jī)復(fù)位;看門狗定時(shí)器被清零,WDO維持高電平:當(dāng)程序“跑飛”或死機(jī)時(shí),CPU不能在1.6s內(nèi)給出“喂狗”信號,WDO跳變?yōu)榈碗娖?,由于MR端有一個(gè)內(nèi)部250 mA的上拉電流,D導(dǎo)通,MR獲得有效低電平,RESET輸出復(fù)位脈沖,單片機(jī)復(fù)位,看門狗定時(shí)器被清零,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端口相連,分時(shí)復(fù)用P1.0~P1.3端口線,大大節(jié)省CPU I/0端口資源;HD7279內(nèi)部含有譯碼器,可直接接收BCD碼或十六進(jìn)制碼,并具有兩種譯碼方式。此外,還具有多種控制指令,如左移、右移、閃爍、消隱、段尋址等;具有自動消除按鍵抖動并識別按鍵代碼的功能,軟件編程時(shí)無需鍵盤的消抖動程序,而且HD7279A的控制指令使得軟件編程更簡單。故選用HD7279A作為驅(qū)動鍵盤矩陣。掃描鍵盤時(shí),如果有按鍵按下,直接通過讀鍵盤數(shù)據(jù)指令即可在LED上顯示鍵入的鍵值,而無需通過AT89C205l端口線控制鍵盤輸入。單片機(jī)接收鍵入的鍵值以控制所采樣量。HD7279可廣泛應(yīng)用于微型控制器、智能儀表、控制面板和家用電器等。
          3.5 系統(tǒng)硬件設(shè)計(jì)
          圖3中AT89C205l的Pl與AD574A的高8位數(shù)據(jù)線直接相連,AD574A的低4位數(shù)據(jù)線與單片機(jī)的高半4位P1.4~P1.7直接相連,讀取數(shù)據(jù)是依據(jù)單片機(jī)的控制線分時(shí)選通。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輸出報(bào)警信號,驅(qū)動一只發(fā)光二極管報(bào)警。工作狀態(tài)指示信號端STS與AT89C2051的P3.2相連,當(dāng)STS=l時(shí),轉(zhuǎn)換器處于轉(zhuǎn)換狀態(tài);當(dāng)STS=0時(shí),表明轉(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)時(shí),AD574A的CE、12/8、CS、R/C和A0對其工作狀態(tài)的控制過程如下:
          當(dāng)CE=l、CS=0時(shí),AD574A則正常工作;當(dāng)AD574A處于工作模式,R/C=0時(shí)A/D轉(zhuǎn)換;R/C=1時(shí)讀取數(shù)據(jù)。12/8和AO用于控制啟動轉(zhuǎn)換方式和數(shù)據(jù)輸出格式。A0=0時(shí),按完整12位數(shù)據(jù)方式啟動;當(dāng)AO=1時(shí),則按8位A/D轉(zhuǎn)換方式啟動。當(dāng)R/C=l,即當(dāng)AD574A處于數(shù)據(jù)狀態(tài)時(shí),A0和12/8控制數(shù)據(jù)輸出狀態(tài)的格式。當(dāng)12/8=l時(shí),數(shù)據(jù)以12位并行方式輸出;當(dāng)l2/8=0時(shí),數(shù)據(jù)以8位分兩次輸出。當(dāng)AO=O時(shí),輸出轉(zhuǎn)換數(shù)據(jù)的高8位,AO=l時(shí)輸出A/D轉(zhuǎn)換數(shù)據(jù)的低4位,這4位占1個(gè)字節(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時(shí),啟動A/D轉(zhuǎn)換器。經(jīng)35μs后,STS=1,表明A/D轉(zhuǎn)換結(jié)束,此時(shí)R/C置1,即可從數(shù)據(jù)端讀取數(shù)據(jù)。

          4 系統(tǒng)軟件設(shè)計(jì)
          系統(tǒng)軟件設(shè)計(jì)采用模塊化結(jié)構(gòu)。整個(gè)溫度測控過程由主程序、溫度測量子程序、定時(shí)中斷子程序、A/D轉(zhuǎn)換程序、顯示子程序等組成。各模塊分別只有一個(gè)入口和出口,各模塊間相互獨(dú)立,避免因某功能模塊出現(xiàn)異常而導(dǎo)致整個(gè)系統(tǒng)癱瘓。這里僅給出主程序流程圖(圖4)和溫度測量子程序的流程圖(圖5)。

          5 結(jié)語
          該系統(tǒng)設(shè)計(jì)的創(chuàng)新點(diǎn)是采用溫度范圍為+10℃~+1.50℃的熱敏電阻。該電阻具有靈敏度高,體積小、重量輕,熱慣性小,壽命長及價(jià)格便宜等優(yōu)點(diǎn),而AT89C205l是一個(gè)功能強(qiáng)大的單片機(jī).適用于節(jié)能減排的電器控制,應(yīng)用廣泛。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();