智能溫室控制器的開發(fā)
4、串口擴(kuò)展
由于控制器要分別與上位機(jī)和下位機(jī)進(jìn)行通信,而89c52只有一個(gè)串口,所以必須再擴(kuò)展一個(gè)串口滿足需要。8251是一個(gè)將并口擴(kuò)展為串口的芯片,用其作為串口擴(kuò)展芯片可以實(shí)現(xiàn)與485的通信。
8251是把并口p0擴(kuò)展為串口,所以將p0口接在8251的D0-D7上。用74LS373作為地址鎖存器,可以對(duì)8251進(jìn)行尋址。由于接收器準(zhǔn)備好信號(hào)RXRDY高電平有效,所以為了產(chǎn)生中斷,接了一個(gè)非門芯片7404。波特率發(fā)生器是電路中極其重要的部分,CD4040芯片的最低分頻數(shù)為1,也就是說可以把頻率分為1/2。晶振采用2.4576M有緣晶振。有緣晶振無需外圍電路,通電即可起振。把晶振產(chǎn)生的頻率輸入CD4040。將頻率分為1/2后接到工作時(shí)鐘CLK,分為1/27后變成19200hz作為輸入輸出時(shí)鐘。8251與89c52連接的硬件原理框圖如圖5所示:本文引用地址:http://m.butianyuan.cn/article/163655.htm
4 控制器軟件設(shè)計(jì)
在單片機(jī)軟件開發(fā)過程中, 編制的程序要合理使用各種中斷機(jī)制。本系統(tǒng)就控制算法來說,有實(shí)時(shí)性要求, 任務(wù)復(fù)雜:有中斷、定時(shí)任務(wù)、循環(huán)執(zhí)行任務(wù)等, 并且人機(jī)交互操作還通常會(huì)動(dòng)態(tài)地改變程序的運(yùn)行模式, 尤其是人機(jī)界面――液晶的顯示輸出需要占用大量CPU 時(shí)間, 與此同時(shí)又不允許丟失重要的數(shù)據(jù)。還要隨時(shí)準(zhǔn)備向上位機(jī)發(fā)送數(shù)據(jù)。因此,需要綜合采用消息機(jī)制與狀態(tài)轉(zhuǎn)移法來統(tǒng)一地處理好CPU 的任務(wù)安排。
在中斷服務(wù)程序中, 向主程序的消息隊(duì)列添加相應(yīng)的消息, 來達(dá)到將中斷服務(wù)程序中的數(shù)據(jù)處理部分分離出來的目的。本系統(tǒng)主要有兩個(gè)中斷:上位機(jī)中斷和鍵盤中斷。中斷服務(wù)程序返回主程序后, 主控程序只處理消息循環(huán), 判斷并為消息處理對(duì)象發(fā)送所需處理的消息, 而接受消息的對(duì)象則以消息響應(yīng)函數(shù)的方式出現(xiàn), 當(dāng)接收到主程序發(fā)來的消息后, 消息響應(yīng)函數(shù)獲得控制權(quán), 做完相應(yīng)的處理后將控制權(quán)交還給主程序繼續(xù)消息循環(huán)的處理。用戶的輸入及對(duì)象的請(qǐng)求僅是向消息隊(duì)列中添加相應(yīng)的消息。
主控程序還需要查詢消息隊(duì)列也就是時(shí)間,根據(jù)時(shí)間的不同, 調(diào)用相應(yīng)的消息處理函數(shù), 在本系統(tǒng)中, 時(shí)間表現(xiàn)為一個(gè)變量, 通過給該變量置不同值來反映不同的消息。對(duì)于由中斷觸發(fā)的消息, 由于消息處理函數(shù)已經(jīng)脫離了中斷處理過程, 所以系統(tǒng)對(duì)消息處理不再象中斷服務(wù)程序那樣, 在時(shí)間上有十分苛刻的要求; 同時(shí), 在消息處理過程中, 用戶仍可通過鍵盤中斷來與系統(tǒng)進(jìn)行交互。
5 結(jié)束語(yǔ)
本項(xiàng)目是一個(gè)自動(dòng)化技術(shù)與農(nóng)業(yè)結(jié)合的課題, 以89c52 單片機(jī)為核心的嵌入式控制器,通過8251擴(kuò)展一個(gè)串口后和單片機(jī)原有的串口一起分別和上位機(jī)和下位機(jī)通訊,從下位機(jī)收集到的數(shù)據(jù)先存入數(shù)據(jù)存儲(chǔ)器,在接收到上位機(jī)的命令后再把數(shù)據(jù)傳到上位機(jī)進(jìn)行管理。并在控制器上加入鍵盤和顯示的功能,能控制器能直接控制下位機(jī)。該控制器結(jié)構(gòu)合理, 經(jīng)濟(jì)實(shí)用, 具有較高的推廣價(jià)值。
評(píng)論