六通道數(shù)據(jù)采集及處理系統(tǒng)的研制
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)主程序框圖如圖8所示。
系統(tǒng)主程序設(shè)計(jì)為一個(gè)循環(huán)程序,在一個(gè)循環(huán)中完成以下工作:①向A/D轉(zhuǎn)換器發(fā)送命令字,讀取A/D轉(zhuǎn)換器的轉(zhuǎn)換結(jié)果,并根據(jù)來(lái)自PC機(jī)的指令,將讀取的轉(zhuǎn)換結(jié)果進(jìn)行初步處理;②將數(shù)據(jù)發(fā)送給PC機(jī);③接收來(lái)自PC機(jī)的命令,并對(duì)命令做出反應(yīng)。
本系統(tǒng)中,TLC2543輸出結(jié)果設(shè)置成12位無(wú)符號(hào)整型數(shù),輸出順序?yàn)楦呶辉谇?。為了使采樣結(jié)果更準(zhǔn)確,采取如下采樣方式:在每一個(gè)主程序循環(huán)中,由單片計(jì)算機(jī)依次讀取AIN0~AIN5六個(gè)通道的采樣數(shù)據(jù),并將各通道的數(shù)據(jù)依次存放到單片機(jī)的RAM中,六個(gè)通道讀完一次之后,再依次讀取 AIN0~AIN5六個(gè)通道的采樣數(shù)據(jù),并將新讀取的各通道的數(shù)據(jù)分別加入到前面讀取的結(jié)果中,這樣連續(xù)讀取8次,得到各通道8次采樣結(jié)果之和,然后將這些結(jié)果分別除以8,得到各通道8次采樣結(jié)果的平均值,并把它們作為各通道的采樣結(jié)果傳送給PC機(jī)。由于A/D轉(zhuǎn)換器輸出的結(jié)果并不直接表示電壓的大?。?00H表示0V,F(xiàn)FFH表示3.0V),單片機(jī)可根據(jù)來(lái)自PC機(jī)的命令,將這些結(jié)果轉(zhuǎn)換成電壓值(如將FFFH轉(zhuǎn)換成003H),結(jié)果的轉(zhuǎn)換通過(guò)調(diào)用子程序完成。
圖8 系統(tǒng)主程序框圖
系統(tǒng)主程序每循環(huán)一次,單片機(jī)向PC機(jī)發(fā)送一組數(shù)據(jù),這一組數(shù)據(jù)包含三個(gè)部分:①三個(gè)同步字節(jié)#55H、#0AAH、#01H(供PC機(jī)識(shí)別發(fā)送內(nèi)容用);②AIN0~AIN5六個(gè)通道的采樣結(jié)果;③采樣結(jié)果的累加和(供PC機(jī)校驗(yàn)發(fā)送數(shù)據(jù)的正確性用)。數(shù)據(jù)的發(fā)送通過(guò)調(diào)用發(fā)送子程序?qū)崿F(xiàn)。循環(huán)程序中有一個(gè)延時(shí)程序, PC機(jī)通過(guò)傳送延時(shí)參數(shù)控制單片機(jī)完成一次循環(huán)所需的時(shí)間,從而控制單片機(jī)向PC機(jī)發(fā)送數(shù)據(jù)的頻率。來(lái)自PC機(jī)的命令通過(guò)中斷方式讀入,每當(dāng)PC機(jī)有信號(hào)傳入,就引起單片機(jī)的串行口中斷,單片機(jī)在中斷服務(wù)程序中讀入命令,并執(zhí)行收到的命令。
單片機(jī)串行口的工作方式設(shè)置成方式1,串行通信的波特率設(shè)計(jì)為4800。設(shè)波特率發(fā)生器T1的初值為x,則[4]
即 x=250(十)=#0FAH(十六)
所以 TL1=#0FAH,TH1=#0FAH.
評(píng)論