鄒樹泉
國家新聞出版廣電總局641臺,福建泉州 362000
庫房溫濕度監(jiān)控系統(tǒng)設(shè)計與仿真過程
鄒樹泉
國家新聞出版廣電總局641臺,福建泉州362000
通過軟件進行設(shè)計和仿真,可以節(jié)省成本并提高開發(fā)效率。本文介紹了庫房溫濕度監(jiān)控系統(tǒng)的整個設(shè)計與仿真過程,對用到的各個軟件進行了分析。
溫濕度;單片機;DDE;組態(tài)王
倉庫的日常管理直接影響到備件的使用壽命和工作的可靠性,其管理的首要問題是要使器件儲存在一個合適的環(huán)境中。我?guī)旆楷F(xiàn)配備有一臺抽濕機、一個電子溫濕度計。工作人員每天到庫房記錄一次庫房的濕度,當(dāng)濕度大于60%RH時,手動開啟抽濕機。待除濕一段時間后,再手動關(guān)閉抽濕機。這樣手動操作實時性差。本文就是在無硬件的條件下,根據(jù)軟件的仿真,設(shè)計庫房溫濕度監(jiān)控系統(tǒng),降低設(shè)計的成本,減少開發(fā)的周期。下面具體介紹整個系統(tǒng)設(shè)計與仿真過程。
如圖1所示,采用SHT10溫濕傳感器檢測庫房的溫度和濕度,并把數(shù)據(jù)傳遞給AT89C52單片機。單片機通過數(shù)碼管顯示溫度和濕度的值,根據(jù)設(shè)定的濕度上下限值自動開啟和關(guān)閉抽濕機。同時單片機還把溫度、濕度、抽濕機的狀態(tài)通過串口傳遞給上位機。上位機采用VB編寫程序。VB程序既能實現(xiàn)在上位機上實時的顯示溫濕度值和抽濕機的狀態(tài),同時可以通過VB設(shè)計的界面輸入濕度的上下限值,并通過串口傳遞給單片機。組態(tài)軟件“組態(tài)王”具有設(shè)計簡便、操作簡單、易學(xué)易用的優(yōu)點,可大大縮短開發(fā)上位機所需時間,增強界面的功能。因此,可以采用組態(tài)王軟件進行監(jiān)控系統(tǒng)界面和數(shù)據(jù)庫的設(shè)計。單片機的數(shù)據(jù)通過串口通信傳遞給VB編寫的界面,而VB與組態(tài)王的通信采用DDE技術(shù),這樣通過VB程序這個“中介”,實現(xiàn)了單片機中的數(shù)據(jù)與組態(tài)王程序的交換。
2.1單片機的功能仿真
單片機的仿真需要用到兩個軟件,分別是Keil、Proteus。Keil軟件提供了豐富的庫函數(shù),在Keil軟件中可用C語言來編寫單片機程序,同時也可以用來燒錄程序到單片機中;Proteus用來繪制和仿真電路,其最出色的地方就是實現(xiàn)了單片機仿真中與Keil編寫程序的方便結(jié)合。
1)在proteus中繪制監(jiān)控系統(tǒng)電路圖,如圖2所示。
開關(guān)SW1用來切換數(shù)碼管溫度和濕度顯示;發(fā)光二極管D1用來指示抽濕機的工作狀態(tài)。串口COMPIM P1用來模擬上位機的串口,本身強合了MAX232的功能,因此在仿真時不需要加MAX232來轉(zhuǎn)換單片機與上位機串口的電平。虛擬終端VIRTUAL TERMIANL可以在仿真時用來觀察串口和單片機發(fā)送與接收的數(shù)據(jù)。
2)在KEIL軟件中編寫單片機程序
設(shè)計程序時,先要根據(jù)SHT10溫濕傳感器工作時序圖,編寫SHT10的測量程序,并存為.h文件,如SHT10.h。再根據(jù)Proteus中繪制的電路圖和電路要實現(xiàn)的功能編寫主程序,并在主程序中引用SHT10.h頭文件,讀取溫度和濕度值。在KEIL中把AT89C52的晶振頻率設(shè)為11.0592MHz,編譯生成.hex可執(zhí)行文件。
3)Proteus單片機仿真
在Proteus中,把單片機的晶振設(shè)為11.0592MHz,程序選擇KEIL編譯生成的.hex文件。通過器件SHT10的加減和選擇按鈕,模擬溫度和濕度的改變,觀察發(fā)光二極管和數(shù)碼管顯示是否正確。
2.2單片機的通信仿真
1)在KEIL中繼續(xù)編寫單片機的通信程序,設(shè)置單片機串口為工作方式1,簡寫為9600-N-8-1,代表波特率是9600,每個字節(jié)是8位數(shù)據(jù)位,無校驗,1位停止位。在Proteus中重新加載編譯過.hex文件,把虛擬終端Virtual Terminal的RXD腳與單片機P3_1 TXD腳連接,此時就可以從Virtual Terminal中觀察單片機發(fā)送的數(shù)據(jù)與數(shù)碼管顯示、抽濕機的工作狀態(tài)是否一致。
2)在實際硬件連接過程中,單片機通過串口線連接到上位機串口。在無硬件的仿真中,要模擬上位機的串口已連接,這就要用到虛擬串口軟件,建立一對串口的虛擬連接。在這里采用了Virtual Serial Port Driver 軟件。假設(shè)把COM1和COM2進行虛擬連接,即使COM1和COM2是實際存在的物理端口,已經(jīng)連接了外圍電路,軟件也可以把這些端口虛擬化,不受實際電路的限制。利用串口調(diào)試助手軟件,把COM1和COM2的通信方式都設(shè)為9600-N-8-1,打開串口,可以驗證COM1和COM2是否是一對連接,通信是否正常。
3)在Proteus中把仿真串口COMPIM P1設(shè)置為COM1,通信方式設(shè)為9600-N-8-1。運行Proteus進行仿真,用串口調(diào)試助手觀察COM2接收數(shù)據(jù)是否與Proteus中Virtual Terminal接收的是否一致。
把Virtual Terminal的RXD腳改為與單片機的P3_0 RXD腳連接,觀察單片機接收數(shù)據(jù)情況。
2.3VB程序仿真
利用VB編寫界面,讀取單片機采集到的溫度、濕度和抽濕機的狀態(tài),且能夠通過界面設(shè)置濕度的高限、低限傳遞給單片機。VB編寫程序中,使用了串口通信組件MSCOmm,由于在前面已設(shè)置COM1和COM2是一對虛擬連接,在VB中應(yīng)使用COM2串口,通信方式定義為9600-N-8-1。
在仿真時,可以先利用串口調(diào)試助手試驗VB編寫的界面能否正確的進行發(fā)送與接收數(shù)據(jù)。待成功后,再和Proteus進行聯(lián)調(diào)。單片機中的數(shù)據(jù)需能正確的顯示在VB界面,VB界面輸入的濕度上下限值,Proteus中Virtual Terminal可以正常接收,并可以根據(jù)上下限值控制抽濕機的開啟與關(guān)閉。
2.4組態(tài)王與VB的DDE通信連接
AT89C52單片機與監(jiān)控軟件組態(tài)王之間的通信,可以按照組態(tài)王提供的AT89C52通訊協(xié)議,此時單片機的通信程序要嚴格按照通信協(xié)議來編寫,增加了程序編寫的復(fù)雜性。因此,本系統(tǒng)中采用通用數(shù)據(jù)交換DDE方式實現(xiàn)單片機與組態(tài)王之間的通信。設(shè)計時,先用組態(tài)王制作監(jiān)控系統(tǒng)的畫面,如圖3。再分別在組態(tài)王和VB程序中定義DDE內(nèi)容。其中,組態(tài)王的DDE對話的內(nèi)容是通過3個標識名來約定的:應(yīng)用程序名、主題、項目。VB中的DDE是通過控件的屬性和方法來實現(xiàn)的。當(dāng)VB擔(dān)任客戶端時,需要設(shè)置LinkTopic、LinkItem、LinkMode三個屬性;當(dāng)VB擔(dān)任服務(wù)器端時,只需設(shè)置LinkTopic、LinkMode屬性。
2.5組態(tài)王與單片機的聯(lián)合仿真
完成了單片機作為下位機從SHT10溫濕傳感器采集數(shù)據(jù)、根據(jù)濕度上下限值控制抽濕機的開啟與關(guān)閉,單片機與VB的串口通信,VB與組態(tài)王的DDE通信程序后,就可以進行最終的組態(tài)王與單片機的聯(lián)合仿真,檢驗整個系統(tǒng)的功能。先運行Proteus文件,再運行組態(tài)王畫面,最后運行VB生成的程序。在組態(tài)王中可以正確顯示溫濕度值,輸入濕度的上下限值,單片機可以按照上下限值開啟關(guān)閉抽濕機,這樣便完成了整個系統(tǒng)的功能設(shè)計。
通過軟件的仿真,驗證了編寫程序和設(shè)計的正確性,降低了開發(fā)的成本和開發(fā)的周期。以上是本人在設(shè)計庫房監(jiān)控系統(tǒng)時一些實踐總結(jié),有不當(dāng)之處懇請指正。
[1]徐愛鈞.單片機高級語言C51 Windows環(huán)境編程與應(yīng)用[M].北京:電子工業(yè)出版社,2001.
[2]北京亞控科技發(fā)展有限公司.組態(tài)王KingView6.5中文手冊[Z],2003.
TP27
A
1674-6708(2016)166-0164-02
鄒樹泉,國家新聞出版廣電總局641臺。