李輝
(晉城市城市管理監(jiān)督指揮中心 山西 晉城 048000)
隨著信息技術(shù)的發(fā)展和普及,數(shù)據(jù)采集技術(shù)已在通信、測控儀器、航空航天、工業(yè)自動控制等領(lǐng)域得到了廣泛的應(yīng)用,同時C8051F060微控制器體積非常小、功能很強、可靠性也比較好,非常適合應(yīng)用于計算機控制系統(tǒng)中用于對現(xiàn)場傳感器進行采集以及實現(xiàn)現(xiàn)場設(shè)備控制的場合。
美國Silicon Laboratories公司于前幾年推出了一款具有集成混合信號的片上智能系統(tǒng)型的單片機C8051F060,具有與80C51兼容的CIP-51內(nèi)核,指令集與MCS-51完全兼容。具有59個數(shù)I/O管腳;它采用的是具有高速、流水線結(jié)構(gòu)等特點的CIP-51內(nèi)核(最快可達25MIPS),其內(nèi)部指令的執(zhí)行速度于MCS-51相比,有了極大的提高。C8051F060的內(nèi)部功能部件主要包括了兩個16位、采集速率達到1 Msps的ADC模塊、具備尋址功能的64 kB的XRAM、控制器局域網(wǎng)(CAN2.0B)控制器、兩個具有可編程數(shù)據(jù)更新方式12位DAC、SPI接口、此外還有SMBus/I2C接口以及兩個UART串接、一個具有八通道多路開關(guān)的十位、200 ksps的ADC、集成在芯片內(nèi)部的看門狗定時器、片內(nèi)VDD監(jiān)視器以及溫度傳感器等。
系統(tǒng)以C8051F060為核心,采用I/O口采集外部的模擬信號,使用微控制器內(nèi)部集成的的AD轉(zhuǎn)換器,將模擬量轉(zhuǎn)換成數(shù)字量,并通過計算機UART口上傳至電腦上。計算機端編寫接收軟件把數(shù)據(jù)接收上來,并通過軟件內(nèi)部控件將傳感器數(shù)據(jù)還原成原始波形曲線,這樣就實現(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
傳感器采集模塊采用單片機內(nèi)部的AD轉(zhuǎn)換器,在輸入端采用電阻分壓方式對信號幅度進行調(diào)節(jié),可以增大傳感器信號的輸入范圍。
本系統(tǒng)進行電平轉(zhuǎn)換功能的芯片采用的是MAX232,之所以需要轉(zhuǎn)換,是因為C8051F060輸出的信號是TTL電平,而電腦上具有的是標準串口;因此必須要轉(zhuǎn)換二者之間的電氣參數(shù),所以要對單片機輸出的TTL信號電平進行一定的信號轉(zhuǎn)換才能完成單片機與PC機的數(shù)據(jù)通訊。進行電壓轉(zhuǎn)換的芯片是MAX1658,因為外接的供電電源是5 V,但是C8051F060采用的是3.3 V進行供電,所以需要電壓轉(zhuǎn)換。傳感器數(shù)據(jù)采集模塊圖如圖2所示。
圖2 傳感器數(shù)據(jù)采集模塊電路圖Fig.2 Sensor data acquisition module circuit
傳感器數(shù)據(jù)采集模塊軟件設(shè)計部分主要由單片機c8051f060端和以及電腦上位機端兩個部分組成。單片機c8051f060端主要功能是實現(xiàn)內(nèi)部ADC采集多個傳感器數(shù)據(jù),存入數(shù)組后并通過UART口向電腦上位機端實時上傳。電腦上位機端軟件主要功能是實現(xiàn)設(shè)置單片機c8051f060的通信波特率、接收單片機C8051F060采集的傳感器數(shù)據(jù)以及將波形進行還原等功能。
傳感器數(shù)據(jù)采集模塊以單片機為核心控制單元,最多可采集外部八路傳感器信號。本模塊使用的是單片機c8051f060內(nèi)部的數(shù)字模擬轉(zhuǎn)換器ADC2。啟動ADC2開始轉(zhuǎn)換所用的方法為為采用定時器2溢出的方式。單片機c8051f060將8個信號通道采集上來的傳感器信號統(tǒng)統(tǒng)轉(zhuǎn)換成為數(shù)字信號,再向單片機UART口發(fā)送數(shù)據(jù)之前,關(guān)閉單片機的所有中斷。等待數(shù)據(jù)全部發(fā)送結(jié)束后,打開單片機所有的中斷,開始準備下一次對傳感器進行數(shù)據(jù)采集。傳感器數(shù)據(jù)采集模塊的程序流程情況圖如圖3所示。
圖3 傳感器數(shù)據(jù)采集模塊程序流程圖Fig.3 Sensor data acquisition module program flow chart
C8051f060單片機的內(nèi)部定時器2的中斷應(yīng)用程序:
void TIMER2_ISR (void) interrupt 5//單片機 c8051f060的內(nèi)部定時器2中斷
{
SFRPAGE=TMR2_PAGE;
TF2=0; //去掉中斷標志TF2
tongdao_input++; //切換至下一路輸入
if(tongdao_input==moni_input) //當最后一路數(shù)據(jù)采集完成后轉(zhuǎn)到第一通道
{
tongdao_input=0;
}
SFRPAGE=ADC2_PAGE;
AMX2SL=tongdao_input;
}
C8051f060單片機的內(nèi)部ADC2轉(zhuǎn)換結(jié)束中斷應(yīng)用程序:
void ADC2_ISR (void)interrupt 18//單片機 c8051f060的內(nèi)部ADC2轉(zhuǎn)換結(jié)束中斷
{
static long jishuqi[10]={0L};
unsigned char i;
char SFRPAGE_SAVE=SFRPAGE;//保存目前的 SFR配置頁
SFRPAGE=ADC2_PAGE;//切換到 ADC2的配置頁AD2INT=0; //去掉ADC2的轉(zhuǎn)換完成標志
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;//切換到串口配置頁 EA=0;//關(guān)閉所有中斷 for(j=0; j { SBUF1=244+j; while(!TI1); TI1=0; celiangzhi=result[j]*243/1023;//將測量值經(jīng)過計算轉(zhuǎn)換為實際值 SBUF1=measurement; while(!TI1);//等待串口發(fā)送成功標志變化 TI1=0; } EA=1;//重新開全局中斷 } tongdao_convert= 通 道 _input;//當 前 轉(zhuǎn) 換 路 變 為tongdao_input SFRPAGE=SFRPAGE_SAVE; //保存當前的SFR配置頁 } 上位機端采用Visual Basic程序語言進行數(shù)據(jù)接收與波形還原。以下為串口配置初始化函數(shù)程序代碼: Main.ctrMSComm.InputLen=1 Main.ctrMSComm.InputMode=1'接受方式為二進制數(shù)組 Main.ctrMSComm.InBufferSize=1024'接受緩沖區(qū)為1大小 Main.ctrMSComm.RThreshold=1'接收緩沖區(qū)為一個字節(jié)就觸發(fā)事件 intPort=1 strSet="115200,n,8,1" blnAutoSendFlag=False blnReceiveFlag=False intReceiveLen=0'接收初始化 繪圖部分主要調(diào)用兩條語句:Line語句和PSet語句。Line語句表示在圖中畫一個線段:起點和終點分別是語句中的兩個坐標點。PSet語句的作用是在制定容器內(nèi)畫一個點,此容器的位置就是語句內(nèi)的坐標點。 Line語句與PSet語句如下: drawline.Line(X0,Y0)-(X,Y) drawline.PSet(X,Y) 圖4與圖5為用Visual Basic程序編寫的多路數(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è)計完成后,對系統(tǒng)進行了測試。在任意一路模擬信號端連接信號發(fā)生器,對數(shù)據(jù)進行采集,并波形還原,再與用示波器捕捉到的信號發(fā)生器的波形進行比較,看是否吻合。圖6與圖8為示波器捕捉到的頻率為30 Hz的三角波與正弦波截圖。圖7與圖9為用多路數(shù)據(jù)采集系統(tǒng)采集到數(shù)據(jù)后進行波形還原后,在計算機上看到的波形圖。 可以從圖6~圖9中看到:多路數(shù)據(jù)采集系統(tǒng)采集到的波形發(fā)生器的波形與示波器捕捉到的信號發(fā)生器的波形基本一致。 圖6 三角波30 Hz(示波器)Fig.6 Triangle wave 30 Hz(DSO) 圖7 三角波30 Hz(上位機)Fig.7 Triangle wave 30 Hz(PC) 圖8 三角波30 Hz(示波器)Fig.8 Triangle wave 30 Hz(DSO) 圖9 三角波30 Hz(上位機)Fig.9 Triangle wave 30 Hz(PC) 文中設(shè)計的基于C8051F060的多路數(shù)據(jù)采集系統(tǒng)可對8路模擬量數(shù)據(jù)進行采集,并能實時傳輸?shù)絇C機,并能實時顯示所采集的數(shù)據(jù)及模擬量的波形。且成本低廉,結(jié)構(gòu)簡單,可廣泛應(yīng)用于各種工業(yè)場合中。 [1]潘琢金.C8051F060/1/2/3/4/5/6/7混合信號ISP FLASH微控制器[M].新華龍電子有限公司,2004. [2]張培仁.基于C語言C8051F系列微控制器原理與應(yīng)用[M].北京:清華大學(xué)出版社,2007. [3]李雁翎.Visual Basic程序設(shè)計[M].北京:清華大學(xué)出版社,2004. [4]康健,武彬.基于單片的變頻調(diào)速恒壓給水控制系統(tǒng)設(shè)計[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的無刷直流電機控制系統(tǒng)仿真的新方法.微計算機信息,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)的上位機軟件設(shè)計
3 系統(tǒng)測試
4 結(jié) 論