李輝
(晉城市城市管理監(jiān)督指揮中心 山西 晉城 048000)
隨著信息技術(shù)的發(fā)展和普及,數(shù)據(jù)采集技術(shù)已在通信、測(cè)控儀器、航空航天、工業(yè)自動(dòng)控制等領(lǐng)域得到了廣泛的應(yīng)用,同時(shí)C8051F060微控制器體積非常小、功能很強(qiáng)、可靠性也比較好,非常適合應(yīng)用于計(jì)算機(jī)控制系統(tǒng)中用于對(duì)現(xiàn)場(chǎng)傳感器進(jìn)行采集以及實(shí)現(xiàn)現(xiàn)場(chǎng)設(shè)備控制的場(chǎng)合。
美國(guó)Silicon Laboratories公司于前幾年推出了一款具有集成混合信號(hào)的片上智能系統(tǒng)型的單片機(jī)C8051F060,具有與80C51兼容的CIP-51內(nèi)核,指令集與MCS-51完全兼容。具有59個(gè)數(shù)I/O管腳;它采用的是具有高速、流水線結(jié)構(gòu)等特點(diǎn)的CIP-51內(nèi)核(最快可達(dá)25MIPS),其內(nèi)部指令的執(zhí)行速度于MCS-51相比,有了極大的提高。C8051F060的內(nèi)部功能部件主要包括了兩個(gè)16位、采集速率達(dá)到1 Msps的ADC模塊、具備尋址功能的64 kB的XRAM、控制器局域網(wǎng)(CAN2.0B)控制器、兩個(gè)具有可編程數(shù)據(jù)更新方式12位DAC、SPI接口、此外還有SMBus/I2C接口以及兩個(gè)UART串接、一個(gè)具有八通道多路開(kāi)關(guān)的十位、200 ksps的ADC、集成在芯片內(nèi)部的看門(mén)狗定時(shí)器、片內(nèi)VDD監(jiān)視器以及溫度傳感器等。
系統(tǒng)以C8051F060為核心,采用I/O口采集外部的模擬信號(hào),使用微控制器內(nèi)部集成的的AD轉(zhuǎn)換器,將模擬量轉(zhuǎn)換成數(shù)字量,并通過(guò)計(jì)算機(jī)UART口上傳至電腦上。計(jì)算機(jī)端編寫(xiě)接收軟件把數(shù)據(jù)接收上來(lái),并通過(guò)軟件內(nèi)部控件將傳感器數(shù)據(jù)還原成原始波形曲線,這樣就實(shí)現(xiàn)了將傳感器數(shù)據(jù)采集、波形復(fù)原功能。本系統(tǒng)的傳感器數(shù)據(jù)采集模塊部分的結(jié)構(gòu)圖如圖1所示。

圖1 傳感器數(shù)據(jù)采集模塊結(jié)構(gòu)圖Fig.1 Sensor data acquisition module structure diagram
傳感器采集模塊采用單片機(jī)內(nèi)部的AD轉(zhuǎn)換器,在輸入端采用電阻分壓方式對(duì)信號(hào)幅度進(jìn)行調(diào)節(jié),可以增大傳感器信號(hào)的輸入范圍。
本系統(tǒng)進(jìn)行電平轉(zhuǎn)換功能的芯片采用的是MAX232,之所以需要轉(zhuǎn)換,是因?yàn)镃8051F060輸出的信號(hào)是TTL電平,而電腦上具有的是標(biāo)準(zhǔn)串口;因此必須要轉(zhuǎn)換二者之間的電氣參數(shù),所以要對(duì)單片機(jī)輸出的TTL信號(hào)電平進(jìn)行一定的信號(hào)轉(zhuǎn)換才能完成單片機(jī)與PC機(jī)的數(shù)據(jù)通訊。進(jìn)行電壓轉(zhuǎn)換的芯片是MAX1658,因?yàn)橥饨拥墓╇婋娫词? V,但是C8051F060采用的是3.3 V進(jìn)行供電,所以需要電壓轉(zhuǎn)換。傳感器數(shù)據(jù)采集模塊圖如圖2所示。

圖2 傳感器數(shù)據(jù)采集模塊電路圖Fig.2 Sensor data acquisition module circuit
傳感器數(shù)據(jù)采集模塊軟件設(shè)計(jì)部分主要由單片機(jī)c8051f060端和以及電腦上位機(jī)端兩個(gè)部分組成。單片機(jī)c8051f060端主要功能是實(shí)現(xiàn)內(nèi)部ADC采集多個(gè)傳感器數(shù)據(jù),存入數(shù)組后并通過(guò)UART口向電腦上位機(jī)端實(shí)時(shí)上傳。電腦上位機(jī)端軟件主要功能是實(shí)現(xiàn)設(shè)置單片機(jī)c8051f060的通信波特率、接收單片機(jī)C8051F060采集的傳感器數(shù)據(jù)以及將波形進(jìn)行還原等功能。
傳感器數(shù)據(jù)采集模塊以單片機(jī)為核心控制單元,最多可采集外部八路傳感器信號(hào)。本模塊使用的是單片機(jī)c8051f060內(nèi)部的數(shù)字模擬轉(zhuǎn)換器ADC2。啟動(dòng)ADC2開(kāi)始轉(zhuǎn)換所用的方法為為采用定時(shí)器2溢出的方式。單片機(jī)c8051f060將8個(gè)信號(hào)通道采集上來(lái)的傳感器信號(hào)統(tǒng)統(tǒng)轉(zhuǎn)換成為數(shù)字信號(hào),再向單片機(jī)UART口發(fā)送數(shù)據(jù)之前,關(guān)閉單片機(jī)的所有中斷。等待數(shù)據(jù)全部發(fā)送結(jié)束后,打開(kāi)單片機(jī)所有的中斷,開(kāi)始準(zhǔn)備下一次對(duì)傳感器進(jìn)行數(shù)據(jù)采集。傳感器數(shù)據(jù)采集模塊的程序流程情況圖如圖3所示。

圖3 傳感器數(shù)據(jù)采集模塊程序流程圖Fig.3 Sensor data acquisition module program flow chart
C8051f060單片機(jī)的內(nèi)部定時(shí)器2的中斷應(yīng)用程序:
void TIMER2_ISR (void) interrupt 5//單片機(jī) c8051f060的內(nèi)部定時(shí)器2中斷
{
SFRPAGE=TMR2_PAGE;
TF2=0; //去掉中斷標(biāo)志TF2
tongdao_input++; //切換至下一路輸入
if(tongdao_input==moni_input) //當(dāng)最后一路數(shù)據(jù)采集完成后轉(zhuǎn)到第一通道
{
tongdao_input=0;
}
SFRPAGE=ADC2_PAGE;
AMX2SL=tongdao_input;
}
C8051f060單片機(jī)的內(nèi)部ADC2轉(zhuǎn)換結(jié)束中斷應(yīng)用程序:
void ADC2_ISR (void)interrupt 18//單片機(jī) c8051f060的內(nèi)部ADC2轉(zhuǎn)換結(jié)束中斷
{
static long jishuqi[10]={0L};
unsigned char i;
char SFRPAGE_SAVE=SFRPAGE;//保存目前的 SFR配置頁(yè)
SFRPAGE=ADC2_PAGE;//切換到 ADC2的配置頁(yè)AD2INT=0; //去掉ADC2的轉(zhuǎn)換完成標(biāo)志
jishuqi[amux_convert]=ADC2; //讀取ADC2內(nèi)的數(shù)值
if(tongdao_convert== (moni_input-1))
{
for(i=0; i result[i]=jishuqi[i]; jishuqi[i]=0L; } SFRPAGE=UART1_PAGE;//切換到串口配置頁(yè) EA=0;//關(guān)閉所有中斷 for(j=0; j { SBUF1=244+j; while(!TI1); TI1=0; celiangzhi=result[j]*243/1023;//將測(cè)量值經(jīng)過(guò)計(jì)算轉(zhuǎn)換為實(shí)際值 SBUF1=measurement; while(!TI1);//等待串口發(fā)送成功標(biāo)志變化 TI1=0; } EA=1;//重新開(kāi)全局中斷 } tongdao_convert= 通 道 _input;//當(dāng) 前 轉(zhuǎn) 換 路 變 為tongdao_input SFRPAGE=SFRPAGE_SAVE; //保存當(dāng)前的SFR配置頁(yè) } 上位機(jī)端采用Visual Basic程序語(yǔ)言進(jìn)行數(shù)據(jù)接收與波形還原。以下為串口配置初始化函數(shù)程序代碼: Main.ctrMSComm.InputLen=1 Main.ctrMSComm.InputMode=1'接受方式為二進(jìn)制數(shù)組 Main.ctrMSComm.InBufferSize=1024'接受緩沖區(qū)為1大小 Main.ctrMSComm.RThreshold=1'接收緩沖區(qū)為一個(gè)字節(jié)就觸發(fā)事件 intPort=1 strSet="115200,n,8,1" blnAutoSendFlag=False blnReceiveFlag=False intReceiveLen=0'接收初始化 繪圖部分主要調(diào)用兩條語(yǔ)句:Line語(yǔ)句和PSet語(yǔ)句。Line語(yǔ)句表示在圖中畫(huà)一個(gè)線段:起點(diǎn)和終點(diǎn)分別是語(yǔ)句中的兩個(gè)坐標(biāo)點(diǎn)。PSet語(yǔ)句的作用是在制定容器內(nèi)畫(huà)一個(gè)點(diǎn),此容器的位置就是語(yǔ)句內(nèi)的坐標(biāo)點(diǎn)。 Line語(yǔ)句與PSet語(yǔ)句如下: drawline.Line(X0,Y0)-(X,Y) drawline.PSet(X,Y) 圖4與圖5為用Visual Basic程序編寫(xiě)的多路數(shù)據(jù)采集系統(tǒng)數(shù)據(jù)接收界面以及波形還原界面。 圖4 多路數(shù)據(jù)采集系統(tǒng)數(shù)據(jù)接收界面Fig.4 The data receiving interface of multi-channel data acquisition system 圖5 多路數(shù)據(jù)采集系統(tǒng)波形還原界面Fig.5 Multi channel data acquisition system to restore the waveform interface 在多路數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)完成后,對(duì)系統(tǒng)進(jìn)行了測(cè)試。在任意一路模擬信號(hào)端連接信號(hào)發(fā)生器,對(duì)數(shù)據(jù)進(jìn)行采集,并波形還原,再與用示波器捕捉到的信號(hào)發(fā)生器的波形進(jìn)行比較,看是否吻合。圖6與圖8為示波器捕捉到的頻率為30 Hz的三角波與正弦波截圖。圖7與圖9為用多路數(shù)據(jù)采集系統(tǒng)采集到數(shù)據(jù)后進(jìn)行波形還原后,在計(jì)算機(jī)上看到的波形圖。 可以從圖6~圖9中看到:多路數(shù)據(jù)采集系統(tǒng)采集到的波形發(fā)生器的波形與示波器捕捉到的信號(hào)發(fā)生器的波形基本一致。 圖6 三角波30 Hz(示波器)Fig.6 Triangle wave 30 Hz(DSO) 圖7 三角波30 Hz(上位機(jī))Fig.7 Triangle wave 30 Hz(PC) 圖8 三角波30 Hz(示波器)Fig.8 Triangle wave 30 Hz(DSO) 圖9 三角波30 Hz(上位機(jī))Fig.9 Triangle wave 30 Hz(PC) 文中設(shè)計(jì)的基于C8051F060的多路數(shù)據(jù)采集系統(tǒng)可對(duì)8路模擬量數(shù)據(jù)進(jìn)行采集,并能實(shí)時(shí)傳輸?shù)絇C機(jī),并能實(shí)時(shí)顯示所采集的數(shù)據(jù)及模擬量的波形。且成本低廉,結(jié)構(gòu)簡(jiǎn)單,可廣泛應(yīng)用于各種工業(yè)場(chǎng)合中。 [1]潘琢金.C8051F060/1/2/3/4/5/6/7混合信號(hào)ISP FLASH微控制器[M].新華龍電子有限公司,2004. [2]張培仁.基于C語(yǔ)言C8051F系列微控制器原理與應(yīng)用[M].北京:清華大學(xué)出版社,2007. [3]李雁翎.Visual Basic程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2004. [4]康健,武彬.基于單片的變頻調(diào)速恒壓給水控制系統(tǒng)設(shè)計(jì)[J].煤炭技術(shù).2012(5):23-26.KANG Jian,WU Bin.The design of control system of based on chip VVVF constant pressure watersupply[J].Coal technology,2012,(5):23-26. [5]田澤.嵌入式系統(tǒng)與應(yīng)用[M].北京:航空航天大學(xué)出版,2005. [6]李洪科,吳漢松.基于RTW的無(wú)刷直流電機(jī)控制系統(tǒng)仿真的新方法.微計(jì)算機(jī)信息,2005:67-69.LI Hong-ke,WU Han-song.Based on RTW brushless DCmotor control system simulation the new method[J].Microcomputer Information,2005(6):67-69.2.2 電腦端系統(tǒng)的上位機(jī)軟件設(shè)計(jì)


3 系統(tǒng)測(cè)試




4 結(jié) 論