單片機控制的多參數(shù)實時采集與處理系統(tǒng)設(shè)計
摘要:本文以AT89C52單片機為核心,采用A/D轉(zhuǎn)換芯片ADC0809,設(shè)計了兩路直流電壓信號實時采集系統(tǒng),對信號進行采集、轉(zhuǎn)換、處理、存儲,通過單片機串行口送給PC機,在STC_ISP_V394開發(fā)環(huán)境的串行調(diào)試窗口下實時顯示。文中詳細論述了系統(tǒng)的硬件設(shè)計和程序流程圖的結(jié)構(gòu),此采集和處理系統(tǒng)具有較強的移植性和通用性。
關(guān)鍵詞:單片機:A/D轉(zhuǎn)換;數(shù)據(jù)采集
0 引言
在現(xiàn)代工業(yè)控制系統(tǒng)中,多參數(shù)實時采集對監(jiān)控設(shè)備正常運行有著十分重要的作用。多參數(shù)信號采集是將監(jiān)控現(xiàn)場的物理量、化學量或生物量通過相應(yīng)的傳感器和調(diào)理電路把模擬量轉(zhuǎn)換為易于采集、處理的電壓信號,經(jīng)過單片機的處理,一方面反饋給控制部件對監(jiān)控對象進行控制調(diào)整,另一方面送給顯示單元,實時顯示采集的信號數(shù)據(jù)。在航空、汽車、通信、園林等控制領(lǐng)域,多參數(shù)實時采集與處理是自動控制系統(tǒng)的核心。但是專用的數(shù)據(jù)采集設(shè)備價格動輒上萬,高速數(shù)據(jù)采集卡的價格也在千元以上,而且這類設(shè)備大多有固定的接口,無法適應(yīng)千差萬別的被測對象的需求,不具有通用性。本文從應(yīng)用角度出發(fā),設(shè)計分辨率為8位的實時數(shù)據(jù)采集系統(tǒng),在STC_ISP_V394軟件環(huán)境的支持下,通過PC機實時顯示采集的參數(shù)。下位機以AT89C52單片機為控制單元,8路A/D轉(zhuǎn)換芯片ADC0809采集兩路電壓信號:通道0每隔1s采樣一次,共采集10次;通道l每隔5s采樣一次,共采集20次。采集的數(shù)據(jù)通過串行通信方式發(fā)送到上位機實現(xiàn)實時顯示。本系統(tǒng)利用不同的傳感器取代兩路電壓信號的采集,適用于各種控制電路,具有較強的通用性。
1 系統(tǒng)硬件設(shè)計
數(shù)據(jù)采集與處理系統(tǒng)分為單片機主控模塊、A/D轉(zhuǎn)換模塊、數(shù)碼管顯示模塊、鍵盤控制模塊和串行通訊模塊等五個單元,系統(tǒng)組成框圖如圖1所示。
1.1 A/D轉(zhuǎn)換模塊
模數(shù)轉(zhuǎn)換采用常用芯片ADC0809,其內(nèi)部有一個8通道多路開關(guān),由于內(nèi)部進行轉(zhuǎn)換的轉(zhuǎn)換器只有一個,所以只能對8路模擬量信號進行分時轉(zhuǎn)換,根據(jù)鎖存地址線譯碼后的信號,某一時刻只選通8路模擬輸入信號中的一路,以逐次逼近原理進行模一數(shù)轉(zhuǎn)換,轉(zhuǎn)換時間為100μs,轉(zhuǎn)換精度為8位。
ADC0809內(nèi)部結(jié)構(gòu)如圖2所示。啟動ADC0809進行A/D轉(zhuǎn)換,首先輸入3位地址信號,并使ALE為高電平,將地址存入地址鎖存器中,經(jīng)譯碼器譯碼選通8路模擬輸入之一到比較器;START上升沿將逐次逼近寄存器復(fù)位,下降沿啟動A/D轉(zhuǎn)換,EOC輸出信號變低,指示轉(zhuǎn)換正在進行。直到EOC變?yōu)楦唠娖?,表示A/D轉(zhuǎn)換結(jié)束,轉(zhuǎn)換結(jié)果存入鎖存器。當OE輸入高電平時,輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。
1.2 鍵盤及顯示模塊
參數(shù)采集與處理系統(tǒng)的人機交互采用2×8矩陣鍵盤和靜態(tài)數(shù)碼管顯示,如圖3所示。設(shè)計上為節(jié)省單片機I/O口線,人機交互采用兩條線控制,利用模擬開關(guān)CD4052切換,控制鍵盤和數(shù)碼管的數(shù)據(jù)信號。
1.3 串行通信模塊
由于單片機和PC機使用不同的邏輯電平,在設(shè)計串行接口電路時,必須考慮電平的匹配、驅(qū)動能力的匹配、元器件的選擇以及其它電氣特性。PC機通常有兩個標準的RS232串行口,為了提高抗干擾能力,這種接口采用EIA電平邏輯,如表1所示。
為實現(xiàn)單片機與PC機電平兼容,單片機與PC機通訊時,必須經(jīng)過電平轉(zhuǎn)換。通常使用MCl488租MCl489芯片實現(xiàn)電平轉(zhuǎn)換,但這兩種轉(zhuǎn)換芯片組成電路結(jié)構(gòu)復(fù)雜,電源需±12V電源供電,工作不穩(wěn)定,易燒壞芯片。本設(shè)計使用MAX232集成電路芯片,僅用+5V供電,其內(nèi)部有兩組電壓轉(zhuǎn)換電路,外圍電路配上4個升壓電容,實現(xiàn)在EIA電平和TTL電平之間互相轉(zhuǎn)換,具有電路結(jié)構(gòu)簡單、元器件數(shù)量少、電源單一、功耗低等特點,MAX232芯片組成的串行接口電路如圖4所示。
AT89C52單片機內(nèi)有一個可編程、全雙工的串行口,串行收發(fā)的數(shù)據(jù)在通訊時,通過特殊功能寄存器SFR的串行數(shù)據(jù)緩沖器SUBF實現(xiàn)數(shù)據(jù)交換,故可做多機通訊,特別適合于終端和系統(tǒng)主機間的通訊。
1.4 單片機與A/D接口模塊
單片機采用ATMEL公司生產(chǎn)的AT89C52單片機。它采用先進工藝制造,具有高性能的MCS51內(nèi)核設(shè)計,帶有非易失性Flash程序存儲器,是一種高性能、低功耗的8位CMOS微處理芯片,市場應(yīng)用廣泛,在實現(xiàn)信號采集、數(shù)據(jù)處理、串行傳輸、實時控制等有較大優(yōu)勢。
本設(shè)計采用查詢法采集數(shù)據(jù),合理分配單片機的資源,大部分時間單片機用來運行控制程序,只有在采集時間到來時單片機才用來執(zhí)行采集程序。圖5所示為ADC0809與單片機的接口電路,需要采集數(shù)據(jù)時,單片機首先輸出地址信號,指定采集的通道,接著使ALE和START為高電平,啟動A/D轉(zhuǎn)換,然后單片機處理其它事務(wù),稍后查詢EOC是否為高電平,若為高電平,轉(zhuǎn)換結(jié)束,需要讀取轉(zhuǎn)換結(jié)果時,發(fā)送讀取命令使OE為高電平讀取轉(zhuǎn)換結(jié)果,存入指定單元,供數(shù)碼管顯示和上傳給PC機。
2 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件主要包括:系統(tǒng)初始化、判鍵程序、AD轉(zhuǎn)換程序、數(shù)碼管顯示程序和串行通信程序,圖6為程序結(jié)構(gòu)框圖。
單片機采用11.0592MHz晶振、定時器選擇工作方式2、串口工作在方式l,波特率設(shè)為9600。上位PC機在STC_ISP_V394開發(fā)環(huán)境下,使用“串行調(diào)試助手”功能,接收串行數(shù)據(jù)并顯示采集結(jié)果,圖7為STC_ISP_V394數(shù)據(jù)采集界面,顯示出兩路電壓信號的實時采集結(jié)果。
單片機串行通信初始化設(shè)置:
MOV TMOD,#20H:T1工作方式2
MOV THl,#0FDH:波特率9600
MOV SCON,#40H:串口工作方式1
SETB TR1:打開定時器1
單片機發(fā)送數(shù)據(jù):
MOV SBUF,A:將接收的數(shù)據(jù)傳送給PC機
JNBTI,S
CLR TI
3 結(jié)束語
本文介紹了一種基于A/D轉(zhuǎn)換芯片ADC0809和AT89C52單片機的數(shù)據(jù)采集和串行通信接口的實現(xiàn)方法。本設(shè)計在自制開發(fā)機上完成調(diào)試,自制開發(fā)機采用STC89C54單片機,具有ISP在線編程功能,在STC_ISP_V394開發(fā)環(huán)境下完成程序下載以及數(shù)據(jù)通信。通過實踐驗證在短距離傳輸中有很好的效果,傳輸中未出現(xiàn)數(shù)據(jù)丟失和錯誤。數(shù)據(jù)采集和串行數(shù)據(jù)傳輸在工業(yè)控制中十分重要,本設(shè)計具有一般通用性,讀者可根據(jù)自己的實際需要進行改進,以滿足工程設(shè)計需要。