基于單片機(jī)AT89C52的溫度實(shí)時(shí)監(jiān)控系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
本文介紹了一種溫度實(shí)時(shí)監(jiān)控系統(tǒng)的設(shè)計(jì)。該系統(tǒng)通過單片機(jī)實(shí)現(xiàn)實(shí)時(shí)控制,并通過串口連接單片機(jī)與上位計(jì)算機(jī),在計(jì)算機(jī)中實(shí)現(xiàn)實(shí)時(shí)監(jiān)控、大容量的數(shù)據(jù)存儲(chǔ)及數(shù)據(jù)分析等功能,解決了常規(guī)溫度測量方法在溫度測量實(shí)時(shí)性差、不能儲(chǔ)存數(shù)據(jù)及缺乏數(shù)據(jù)分析功能等方面的缺陷。
溫度監(jiān)控系統(tǒng)在農(nóng)業(yè)、工業(yè)和生活中有著廣泛的應(yīng)用,但隨著監(jiān)控的面積擴(kuò)大,監(jiān)控點(diǎn)的增加及控制處理趨于智能化等新的應(yīng)用要求出現(xiàn),傳統(tǒng)的溫度控制系統(tǒng)已經(jīng)逐漸不適用,首先是不便于觀察而且不能及時(shí)地對(duì)異常溫度變化做出迅速反應(yīng),其次是傳統(tǒng)的溫度控制系統(tǒng)不能儲(chǔ)存大量數(shù)據(jù),不能對(duì)監(jiān)控的數(shù)據(jù)進(jìn)行分析,不便于對(duì)溫度情況進(jìn)行長期的監(jiān)測和科學(xué)的分析,為了解決以上問題,本文設(shè)計(jì)了一個(gè)能實(shí)時(shí)響應(yīng)溫度并進(jìn)行控制的溫度實(shí)時(shí)控制系統(tǒng),并且采用與計(jì)算機(jī)串口通信結(jié)合的方式通過計(jì)算機(jī)增大了系統(tǒng)儲(chǔ)存量,而且在計(jì)算機(jī)系統(tǒng)中收集和處理溫度控制系統(tǒng)的數(shù)據(jù),大幅度的增強(qiáng)了該系統(tǒng)的功能,并具備較強(qiáng)的擴(kuò)展性。
隨著計(jì)算機(jī)技術(shù)特別是單片機(jī)技術(shù)的發(fā)展,串口通信在諸多領(lǐng)域上得到了廣泛的應(yīng)用,計(jì)算機(jī)可以通過串口來獲取單片機(jī)的各種數(shù)據(jù),然后利用計(jì)算機(jī)強(qiáng)大的功能進(jìn)行處理,再根據(jù)處理的結(jié)果發(fā)送數(shù)據(jù)到單片機(jī),實(shí)現(xiàn)遠(yuǎn)程控制設(shè)備。本設(shè)計(jì)采用上位機(jī)和下位機(jī)的互聯(lián)工作,而計(jì)算機(jī)的分析處理能力較強(qiáng),有很好的人機(jī)界面和大容量的多種存儲(chǔ)方式,所以上位機(jī)一般采用計(jì)算機(jī),單片機(jī)具有價(jià)格低,功能強(qiáng),較好的抗干擾能力和面向控制等特點(diǎn),所以下位機(jī)采用單片機(jī)來構(gòu)成互聯(lián)工作模式。由于串行通信具有高效可靠、價(jià)格便宜,遵循統(tǒng)一的標(biāo)準(zhǔn)等特點(diǎn),適用于本設(shè)計(jì)的通信要求。
1 硬件設(shè)計(jì)
1.1 電路設(shè)計(jì)
溫度實(shí)時(shí)控制系統(tǒng)的下位機(jī)由7個(gè)部分組成(詳見圖1),其中測量環(huán)境溫度使用DS18B20數(shù)字溫度傳感器,它將溫度傳感器、A/D傳感器、寄存器、接口電路集成在一個(gè)芯片中,采用1-Wire總線協(xié)議,可實(shí)現(xiàn)直接數(shù)字化輸出。DS18B20數(shù)字溫度傳感器溫度測量范圍為-55~+125℃,測溫分辨率可達(dá)0.062 5℃,被測溫度用符號(hào)擴(kuò)展的16位數(shù)字量進(jìn)行串行輸出,適配各種單片機(jī)或系統(tǒng)機(jī)。使用這種傳感器不需要A/D轉(zhuǎn)換電路,可以大大簡化電路,溫度測量精度和速度都大幅提高。
本設(shè)計(jì)利用MAX232進(jìn)行電平轉(zhuǎn)換,實(shí)現(xiàn)計(jì)算機(jī)和單片機(jī)的互聯(lián)通信。MAX232是低功耗、單電源雙RS 232發(fā)送/接收器,適用于各種EIA-232 E和V.28/V.24的通信接口。MAX232芯片內(nèi)部有一個(gè)電源電壓變換器,可以把輸入的+5 V電源變換成RS 232C輸出電平所需±10 V電壓,所以采用此芯片接口的串行通信系統(tǒng)只要單一的+5 V電源就可以。在MAX232芯片上,選用其中一路發(fā)送/接收,R2OUT接89C52的RXD(P3.0),T2IN接89C52的TXD(P3.1),T2OUT接PC機(jī)的RD,R2IN接PC機(jī)的TD,這樣就能通過P3.0和P3.1I/O口就實(shí)現(xiàn)單片機(jī)與計(jì)算機(jī)互聯(lián)通信。本設(shè)計(jì)的信號(hào)燈部分一共使用6只LED燈,其中Start燈亮表示單片機(jī)上電工作,RX2(P3.0)燈亮表示接受從PC機(jī)傳來的數(shù)據(jù),TX2(P3.1)燈亮表示向PC機(jī)發(fā)送數(shù)據(jù)。m1,m2,m3三顆燈分別對(duì)應(yīng)的接口為P2.5,P2.6,P2.7,當(dāng)3個(gè)溫度傳感器探測的溫度大于設(shè)定值則變亮。
總體電路設(shè)計(jì)是以單片機(jī)為中心,整合和控制各部分。本設(shè)計(jì)的單片機(jī)是STC89C52,它通過XTAL1,XTAL2引腳外接晶振和電容實(shí)現(xiàn)11.0 59 2 MHz的時(shí)鐘周期,這能產(chǎn)生準(zhǔn)確的波特率,有利于串行通信。它的RESET引腳外接電路實(shí)現(xiàn)上電自動(dòng)復(fù)位和按鍵電平復(fù)位,P1.4~P1.7引腳接有4個(gè)按鍵,實(shí)現(xiàn)時(shí)間和溫度的設(shè)定。單片機(jī)通過P1.0,P1.1,P1.2引腳讀出3個(gè)溫度傳感器的溫度值,然后通過P0端口和P2.0,P2.1,P2.2控制液晶板,在液晶上顯示時(shí)間和溫度值。同時(shí)經(jīng)過單片機(jī)內(nèi)部程序,控制信號(hào)燈的亮滅,發(fā)送和接受計(jì)算機(jī)的數(shù)據(jù)。
1.2 單片機(jī)程序設(shè)計(jì)
基于上節(jié)所述的硬件設(shè)計(jì),編寫程序以實(shí)現(xiàn)期望的功能,其中主程序不斷刷新LCD顯示的內(nèi)容,定時(shí)器T0中斷程序用于時(shí)鐘的功能,定時(shí)器T1作為波特率發(fā)生器,串口中斷實(shí)現(xiàn)與PC機(jī)的通信。
單片機(jī)剛啟動(dòng),首先進(jìn)行數(shù)據(jù)的初始化,初始化結(jié)束后,開始進(jìn)入工作狀態(tài),若沒有到結(jié)束時(shí)間,就進(jìn)行溫度測量并在液晶板上顯示當(dāng)前溫度值,同時(shí)按鍵掃描程序不斷監(jiān)測是否有按鍵啟動(dòng),若S1被按,則進(jìn)入設(shè)定狀態(tài),定時(shí)器T0中斷關(guān)閉,當(dāng)前時(shí)間停止,液晶板上顯示溫度設(shè)定值和當(dāng)前時(shí)間,可以通過S2,S3按鍵做修改(如圖2)。
在工作的過程中,當(dāng)單片機(jī)接收一個(gè)數(shù)據(jù)會(huì)全部儲(chǔ)存在BUF變量里面,同時(shí)產(chǎn)生一個(gè)串口中斷,需要軟件去清除中斷標(biāo)志。然后取出BUF的值,儲(chǔ)存到對(duì)應(yīng)的數(shù)組中。由于傳送的數(shù)據(jù)簡單,采用了無校驗(yàn)的8位數(shù)據(jù)直接傳送模式(如圖3所示)。
2上位機(jī)的程序設(shè)計(jì)
在串口的幾種編程方式中,利用MICroSOFt公司提供了MSComm控件,可以使開發(fā)串口通信程序變得十分簡單。VisualBasic是近年來發(fā)展最快的一種計(jì)算機(jī)語言,其簡潔和實(shí)用性已經(jīng)受到了眾多計(jì)算機(jī)用戶和程序員的歡迎,尤其是6.0版本,功能強(qiáng)大且易于掌握,是一種優(yōu)秀的可視化開發(fā)環(huán)境,在VB應(yīng)用程序中調(diào)用MSComm控件也十分容易。采用VB標(biāo)準(zhǔn)控件MSComm來實(shí)現(xiàn)通信功能,實(shí)際上是調(diào)用了API函數(shù),而API函數(shù)是由Commdry解釋并傳給設(shè)備驅(qū)動(dòng)程序執(zhí)行的,對(duì)于VB程序開發(fā)者只需知道MSComm控件的屬性和事件的用法即可以實(shí)現(xiàn)串口的操作。本溫度實(shí)時(shí)控制系統(tǒng)的上位機(jī)操作界面正是基于VB的MSComm控件為核心,完成接收和保存數(shù)據(jù),以及修改單片機(jī)上的參數(shù)。
系統(tǒng)操作界面啟動(dòng)后,在串口端口和波特率選擇2個(gè)參數(shù)設(shè)置正確后,打開串口,這時(shí)計(jì)算機(jī)會(huì)接收從單片機(jī)發(fā)送過來的數(shù)據(jù),這些數(shù)據(jù)是一連串的字符,所以對(duì)接收過來的數(shù)據(jù)的處理,關(guān)鍵是字符串的處理。通過設(shè)定參數(shù)的位數(shù),準(zhǔn)確分離開出每一個(gè)參數(shù)的值,然后存入對(duì)應(yīng)的數(shù)組中,并實(shí)時(shí)地顯示在屏幕上,還可以按需把數(shù)據(jù)保存到記事本。同時(shí)在操作界面上修改的數(shù)據(jù)也能通過串口傳送到單片機(jī),遠(yuǎn)程控制單片機(jī)。在發(fā)送的數(shù)據(jù)也要嚴(yán)格按照一定的格式進(jìn)行發(fā)送,這樣單片機(jī)才能正確接收,操作界面程序流程如圖4所示。
本設(shè)計(jì)定義的接收和發(fā)送數(shù)據(jù)格式如表1所示。
3 系統(tǒng)實(shí)際運(yùn)行
打開設(shè)計(jì)好的上位機(jī)軟件后,首先選擇正確的串口,實(shí)現(xiàn)與單片機(jī)通信,然后通過圖5所示的操作界面可以實(shí)時(shí)觀測到這個(gè)溫度實(shí)時(shí)控制系統(tǒng)所測量的溫度值和對(duì)應(yīng)的時(shí)間點(diǎn),如有需要可以設(shè)置時(shí)間的起始點(diǎn)和結(jié)束點(diǎn),通過軟件繪畫出溫度值的變化曲線,也可以通過實(shí)時(shí)曲線觀查溫度的變化情況,這個(gè)設(shè)置方便于長時(shí)間地觀察溫度的變化,還可以將數(shù)據(jù)全部保存到軟件里,在需要的時(shí)候進(jìn)行必要的數(shù)據(jù)分析;而在操作界面上可以很方便對(duì)溫度實(shí)時(shí)控制系統(tǒng)中的監(jiān)控時(shí)間段和溫度限制值作修改,當(dāng)測量的溫度值超過溫度限制值,設(shè)置好的報(bào)警燈會(huì)閃爍,提醒我們注意。
4 結(jié)語
本文設(shè)計(jì)了基于單片機(jī)AT89C52的溫度實(shí)時(shí)監(jiān)控系統(tǒng)并通過串口通信實(shí)現(xiàn)了單片機(jī)與計(jì)算機(jī)互聯(lián),實(shí)現(xiàn)了多點(diǎn)溫度實(shí)時(shí)遠(yuǎn)程控制,計(jì)算機(jī)的實(shí)時(shí)數(shù)據(jù)分析,長期數(shù)據(jù)的圖表式保存,該系統(tǒng)已經(jīng)在硬件平臺(tái)和軟件平臺(tái)上成功運(yùn)行。整個(gè)設(shè)計(jì)具有成本低,測量范圍廣,實(shí)時(shí)操作方便快捷,顯示和儲(chǔ)存的信息量大,可擴(kuò)展功能強(qiáng)等優(yōu)點(diǎn),可以應(yīng)用在倉庫、溫室大棚、機(jī)房等進(jìn)行溫度實(shí)時(shí)控制。另外設(shè)計(jì)方案可以擴(kuò)展為網(wǎng)絡(luò)連接,可以突破串口傳送的距離限制,廣泛用于溫度在DS18B20測溫范圍之內(nèi)的場合,實(shí)現(xiàn)隨時(shí)隨地通過網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)控制,將具有更大的應(yīng)用價(jià)值。