本文采用臺(tái)灣華邦公司生產(chǎn)的高性能Turbo-51系列單片機(jī) W77E58,實(shí)現(xiàn)了一種基于單片機(jī)的通用數(shù)據(jù)采集和通訊儀的研制,具有較高的實(shí)用價(jià)值。為了使設(shè)計(jì)的數(shù)據(jù)采集儀應(yīng)用方便,,系統(tǒng)利用PTR2000無(wú)線數(shù)據(jù)傳輸模塊與上位機(jī)進(jìn)行通訊,以便能隨時(shí)響應(yīng)控制中心的PC機(jī)的數(shù)據(jù)上傳命令,,將采集到的數(shù)據(jù)實(shí)時(shí)上傳給控制中心,。
1 系統(tǒng)硬件設(shè)計(jì)
本文設(shè)計(jì)的通用數(shù)據(jù)采集和通訊儀能夠?qū)Ω鞣N現(xiàn)場(chǎng)設(shè)備的標(biāo)準(zhǔn)輸出信號(hào)進(jìn)行采集,包括傳感器輸出的0-5V/4-20mA模擬信號(hào);開關(guān)量信號(hào);頻率量信號(hào);此外系統(tǒng)還具有RS-485接口,,以便能夠與現(xiàn)場(chǎng)具有485接口的智能儀表相連接。為了實(shí)現(xiàn)良好的人機(jī)交互,,系統(tǒng)擴(kuò)展了鍵盤輸入,,液晶顯示,實(shí)時(shí)時(shí)鐘以及現(xiàn)場(chǎng)故障報(bào)警指示電路等模塊,。系統(tǒng)總體框圖如圖1所示,。
1.1 電源模塊電路設(shè)計(jì)
在單片機(jī)數(shù)據(jù)采集系統(tǒng)中,電源的設(shè)計(jì)是非常關(guān)鍵的,。本儀表設(shè)計(jì)采用電網(wǎng)和充電電池雙電源供電,。電源設(shè)計(jì)如圖2所示,。
當(dāng)電網(wǎng)電壓正常時(shí),220V交流電經(jīng)過(guò)24V穩(wěn)壓電源,,電解電容器C1濾波后的電壓經(jīng)二極管D1后分成兩路,,一路通過(guò)三極管Q1到7805三端穩(wěn)壓芯片,完成穩(wěn)壓輸出+5V電壓,,供單片機(jī)W77E58等芯片所需的電源;另一路通過(guò)電阻R1對(duì)鎳鎘電池9V進(jìn)行充電,,充電電流選擇約40mA。如果電網(wǎng)停電,, C1放電為0V,,這時(shí),電池通過(guò)D2,、Q1到7805向電路供電,,使輸出端仍有+5V電壓,從而完成電網(wǎng)短時(shí)停電時(shí),,單片機(jī)后備電源的功能,。
二極管D1起隔離作用,使得當(dāng)電網(wǎng)偶爾停電時(shí),,能夠阻止電池電流流向24V穩(wěn)壓電源,。穩(wěn)壓管D3(5.6V)的作用,是防止電池(+9V)過(guò)放電,,即當(dāng)電池放電下降到約6V時(shí),,因D3作用,三極管Q1截止,,電池放電停止,,此時(shí)單片機(jī)將停電。
1.2 實(shí)時(shí)時(shí)鐘芯片DS12887
為了能夠?qū)崟r(shí)顯示系統(tǒng)時(shí)間以及實(shí)現(xiàn)按時(shí)間日期保存采集到的數(shù)據(jù)的功能,,系統(tǒng)擴(kuò)展了一片并行實(shí)時(shí)時(shí)鐘日歷芯片DS12887,。DS12887是DALLAS半導(dǎo)體公司推出的實(shí)時(shí)時(shí)鐘芯片,采用CMOS技術(shù)制成,,把時(shí)鐘芯片所需的晶振和外部鋰電池相關(guān)電路集成于芯片內(nèi)部,。DS12887芯片具有微功耗、外圍接口簡(jiǎn)單,、精度高,、工作穩(wěn)定可靠等優(yōu)點(diǎn),在現(xiàn)代工業(yè)控制及智能儀器儀表中有著廣泛的用途,。
1.3 鍵盤接口電路
為便于人機(jī)交互,,采用專用鍵盤接口芯片8279,配合74LS138譯碼器,系統(tǒng)擴(kuò)展了3×8=24鍵的鍵盤,。鍵盤上設(shè)置有0~9數(shù)字鍵,,以便輸入各種信息。同時(shí)還設(shè)有各種控制按鍵,。通過(guò)鍵盤能夠控制對(duì)各種類型數(shù)據(jù)進(jìn)行采集,。為提高CPU的效率,鍵盤采用中斷方式,。
1.4 LCD液晶顯示模塊
為便于實(shí)時(shí)顯示采集的數(shù)據(jù)及人機(jī)交互,,系統(tǒng)擴(kuò)展了圖文液晶顯示模塊MGLS-12032,MGLS-12032是由香港精電公司生產(chǎn)的內(nèi)置SED1520控制驅(qū)動(dòng)器的LCD模塊,,使用簡(jiǎn)單方便,。液晶顯示模塊MGLS-12032與W77E58的硬件接口。
其中D0~D7與單片機(jī)的數(shù)據(jù)總線相連,,A0,、A1為單片機(jī)的P0口經(jīng)74LS373地址鎖存器后產(chǎn)生的低兩位地址線,系統(tǒng)用74LS138譯碼器產(chǎn)生的Y5,、Y6作為MGLS12032兩個(gè)控制驅(qū)動(dòng)器工作的選通信號(hào),。
1.5 模擬信號(hào)采集電路
系統(tǒng)采用12位并行A/D轉(zhuǎn)換器MAX197對(duì)傳感器輸出的0-5v/4-20mA 模擬電信號(hào)進(jìn)行采集。MAX197是美國(guó)Maxim公司推出的多量程(本系統(tǒng)采用0-5V量程),、8通道,、12位快速A/D轉(zhuǎn)換器,采用逐次逼近工作方式,,片內(nèi)含有高精度的參考電壓源和時(shí)鐘電路,,使它可以在不需要任何外部電路和時(shí)鐘的情況下完成一切A/D轉(zhuǎn)換功能,應(yīng)用非常方便,。并且MAX197內(nèi)部具有輸入跟蹤/采樣保持電路,,其并行輸出口很容易與單片機(jī)連接,僅需外接幾個(gè)電容即可,。
MAX197與單片機(jī)的典型接口電路如圖4所示,。設(shè)計(jì)采用MAX197的CH0-CH6通道采集7路0-5V電壓信號(hào)。而4-20mA電流信號(hào)則經(jīng)過(guò)8選 1模擬開關(guān)CD4051輪流選通,,再經(jīng)靈敏電阻,,放大器轉(zhuǎn)化為0-5V電壓信號(hào)后,進(jìn)入MAX197的CH7通道進(jìn)行模數(shù)轉(zhuǎn)換,,從而系統(tǒng)可以采集8路電流信號(hào),。
1.6 開關(guān)量采集電路設(shè)計(jì)
系統(tǒng)通過(guò)一片8255芯片來(lái)擴(kuò)展并行口。編程使8255的A口為輸入,,用于采集8路開關(guān)信號(hào)。B口為輸出,用于8路開關(guān)量的輸出,。為了增強(qiáng)系統(tǒng)抗干擾能力,,開關(guān)量輸入/輸出通道都采用光電隔離。開關(guān)量采集電路圖略,。
1.7 頻率信號(hào)測(cè)量電路設(shè)計(jì)
本系統(tǒng)利用8253芯片的定時(shí)器/計(jì)數(shù)器1和2對(duì)兩路待測(cè)脈沖個(gè)數(shù)進(jìn)行記數(shù),,8253的定時(shí)器/計(jì)數(shù)器0用來(lái)定時(shí),利用W77E58有多個(gè)中斷源的特性,,定時(shí)結(jié)束產(chǎn)生中斷,,在中斷服務(wù)程序中,讀取8253定時(shí)器/計(jì)數(shù)器1和2的當(dāng)前記數(shù)值,,通過(guò)計(jì)算便可得到待測(cè)頻率量,。
頻率信號(hào)測(cè)量電路如圖5所示。其中D0-D7與W77E58數(shù)據(jù)總線相連,,單片機(jī)P2口高三位經(jīng)138譯碼器譯出的Y0與8253的CS引腳相連,,用來(lái)選通8253芯片,8253的A0,、A1直接與低二位地址線相連,,因此8253的端口地址為1FFCH~1FFFH。
1.8 串行通訊設(shè)計(jì)
利用MAX485芯片,,W77E58單片機(jī)的增強(qiáng)串口用來(lái)擴(kuò)展485接口,,以便能夠與工業(yè)現(xiàn)場(chǎng)具有485接口的智能儀表相連接。單片機(jī)與MAX485芯片的連接只需要外加幾個(gè)電阻,,非常簡(jiǎn)便,,在此不再詳述。
為了使設(shè)計(jì)的數(shù)據(jù)采集儀應(yīng)用方便,,系統(tǒng)利用PTR2000無(wú)線數(shù)據(jù)傳輸模塊與上位機(jī)進(jìn)行通訊,,以便能隨時(shí)響應(yīng)控制中心的PC機(jī)的數(shù)據(jù)上傳命令,將采集到的數(shù)據(jù)實(shí)時(shí)上傳給控制中心,。PTR2000是一種超小型,、低功耗、高速率的無(wú)線收發(fā)數(shù)據(jù)傳輸模塊,。其通訊速率最高可達(dá)20Mbit/s,,也可工作在其他速率,如4800bit/s,、9600bit/s,。系統(tǒng)無(wú)線數(shù)據(jù)傳輸原理圖如圖6所示。
PTR2000可直接與單片機(jī)的串口TXD,、RXD相連接,。PTR2000無(wú)線MODEM的DO和DI引腳分別連接單片機(jī)串口的RXD和TXD,這樣單片機(jī)就可以和無(wú)線數(shù)據(jù)傳輸模塊進(jìn)行串行通信。PTR2000的PWR腳和單片機(jī)的P1.0腳相連,,以便對(duì)無(wú)線數(shù)據(jù)傳輸模塊的電源進(jìn)行管理,,TXEN與單片機(jī)的P1.1腳連接,控制PTR2000無(wú)線收發(fā)模塊的收發(fā)狀態(tài)轉(zhuǎn)換,。上位機(jī)通過(guò)PTR2000與單片機(jī)進(jìn)行實(shí)時(shí)通訊,。由于上位機(jī)串口通常采用RS-232 電平,而單片機(jī)串口使用的是TTL電平,,故PTR2000與上位機(jī)連接時(shí)必須將TTL電平轉(zhuǎn)換成RS-232電平,,系統(tǒng)采用MAXM公司的MAX232芯片進(jìn)行轉(zhuǎn)換。上位機(jī)用串口的RTS與PTR2000的TXEN連接來(lái)控制PTR2000無(wú)線收發(fā)模塊的收發(fā)狀態(tài)轉(zhuǎn)換,。
2 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件采用模塊化設(shè)計(jì),,主程序首先對(duì)各接口芯片進(jìn)行初始化,然后分別調(diào)用各個(gè)子程序模塊以進(jìn)入各個(gè)數(shù)據(jù)采集子系統(tǒng),,并將采集到的數(shù)據(jù)存儲(chǔ)在32K字節(jié)的串行E2PROM AT24C256中,,以備控制中心查詢,同時(shí)將對(duì)應(yīng)的數(shù)據(jù)在液晶顯示器上顯示,。如果系統(tǒng)接收到上位機(jī)的數(shù)據(jù)上傳命令,,就將存儲(chǔ)在E2PROM中的數(shù)據(jù)通過(guò) PTR2000發(fā)送給PC機(jī)。系統(tǒng)主程序流程如圖7所示,。
串口通信程序中雙方通信協(xié)議是至關(guān)重要的,,這關(guān)系到無(wú)線數(shù)據(jù)傳輸?shù)目煽啃裕鞠到y(tǒng)約定雙方的通信協(xié)議格式如下:串行通信使用單片機(jī)的內(nèi)部定時(shí)器/計(jì)數(shù)器1 作為波特率發(fā)生器,,本系統(tǒng)波特率設(shè)定為4800 bit/s;幀格式為1位起始位,,8位數(shù)據(jù)位,1位停止位,,無(wú)奇偶校驗(yàn);通信采用中斷方式;上位機(jī)采用COM 1通信,。在設(shè)計(jì)時(shí),數(shù)據(jù)傳輸通道也采用光電隔離來(lái)提高系統(tǒng)的抗干擾能力,,并且采用了CRC校驗(yàn)以確保數(shù)據(jù)傳輸?shù)臏?zhǔn)確,。單片機(jī)系統(tǒng)初始化時(shí),將單片機(jī)的 P1.1腳設(shè)置為低電平,,這就可使得在默認(rèn)狀態(tài)下,,PTR2000處于接收狀態(tài),以便時(shí)刻監(jiān)聽上位機(jī)的數(shù)據(jù)上傳命令,。當(dāng)接收到上位機(jī)的命令后,,中斷服務(wù)程序?qū)?shù)據(jù)從單片機(jī)數(shù)據(jù)緩沖區(qū)取出,同時(shí)將模塊的接收狀態(tài)切換為發(fā)射狀態(tài),,轉(zhuǎn)換過(guò)程所需時(shí)間約5ms,,然后將這些數(shù)據(jù)以FSK的調(diào)制形式發(fā)射出去,, PTR2000模塊隨后恢復(fù)為接收狀態(tài)。從單片機(jī)系統(tǒng)發(fā)射的數(shù)據(jù)經(jīng)上位機(jī)系統(tǒng)中的PTR2000接收,,由RS232接口進(jìn)行電平轉(zhuǎn)換,,送進(jìn)上位機(jī),上位機(jī)對(duì)數(shù)據(jù)進(jìn)行分析和處理后,,向單片機(jī)系統(tǒng)發(fā)送一個(gè)確認(rèn)數(shù)據(jù)包,以確認(rèn)單片機(jī)系統(tǒng)數(shù)據(jù)包的正確性,。上位機(jī)接收完數(shù)據(jù)后,,它的PTR2000模塊又恢復(fù)為常發(fā)射狀態(tài)。如果數(shù)據(jù)在傳輸?shù)倪^(guò)程中有數(shù)據(jù)丟失,,上位機(jī)將要求單片機(jī)系統(tǒng)重新發(fā)送數(shù)據(jù),,直到數(shù)據(jù)全部正確為止,串行中斷服務(wù)程序如圖8所示,。
3 結(jié)束語(yǔ)
本文利用8位單片機(jī)設(shè)計(jì)的通用數(shù)據(jù)采集系統(tǒng),,可以作為工業(yè)現(xiàn)場(chǎng)的遠(yuǎn)程監(jiān)控終端來(lái)使用,也可以方便的設(shè)計(jì)成便攜式智能數(shù)據(jù)采集和通訊儀表,,由于數(shù)據(jù)傳輸采用了無(wú)線方式,,使其能夠非常廣泛的應(yīng)用于工業(yè)上需要數(shù)據(jù)采集的場(chǎng)合,具有比較高的實(shí)際應(yīng)用價(jià)值,。