摘 要:文章在介紹MATLAB串口通信技術(shù)的基礎(chǔ)上,以ANALOG公司的ADμC812作為數(shù)據(jù)采集系統(tǒng)的微處理器,通過計算機的RS-232串口將數(shù)據(jù)采集系統(tǒng)與計算機組成為一個具有極強數(shù)據(jù)處理能力的系統(tǒng)。利用MATLAB6.X自帶的通信類(SERIAL)和GUI編程技術(shù),方便地開發(fā)出通信與數(shù)據(jù)采集軟件,通過人機界面能夠完成對數(shù)據(jù)采集系統(tǒng)的控制與通信,而且系統(tǒng)軟硬件的實現(xiàn)方法比較簡單,具有一定的實用性。
關(guān)鍵詞:MATLAB、串口通信、數(shù)據(jù)采集、快速處理
MATLAB具有超強的數(shù)據(jù)處理能力,被廣泛的應(yīng)用于信號處理、自動控制等領(lǐng)域,而且它的圖形用戶界面編程技術(shù)(GUIDE)簡單易學(xué),即使非專業(yè)人員也能編制出界面友好、功能強大的應(yīng)用程序。對于一般的微轉(zhuǎn)換器,實現(xiàn)數(shù)據(jù)的采集過程較為簡單,但要對采集的結(jié)果進(jìn)行快速的實時處理就比較困難,因為絕大多數(shù)MCU只提供簡單的8位無符號數(shù)的四則運算指令系統(tǒng),對于有符號數(shù)的乘方、開方等運算軟件實現(xiàn)起來比較困難。本文介紹利用MATLAB的串口通信技術(shù)實現(xiàn)數(shù)據(jù)采集系統(tǒng)與PC機的通信,使采集系統(tǒng)的數(shù)據(jù)獲得快速、準(zhǔn)確的處理,而且實現(xiàn)方法簡單,有一定的實用性。
一. MATLAB串口通信技術(shù)
對于WINDOWS系統(tǒng)而言,硬件系統(tǒng)的驅(qū)動程序有著十分嚴(yán)格的規(guī)范,可以用C或匯編語言進(jìn)行開發(fā),而MATLAB本身是一個跨平臺的軟件,并不具備直接訪問硬件的能力。即使安裝了驅(qū)動程序并能正常工作的硬件設(shè)備,MATLAB也沒有統(tǒng)一的形式對其進(jìn)行訪問。對于系統(tǒng)的串口,在MATLAB6.X中以類(SERIAL)的形式提供了支持。當(dāng)用指令建立了一個串口對象(句柄)以后,對串口的硬件操作可以文件操作的軟件形式來完成,方法比較簡單。常用的串口操作命令及其含義如下表(1)所示,這些命令既可在MATLAB命令窗口實現(xiàn),也可以M文件的形式出現(xiàn),使用起來十分方便。
表1 MATLAB串口操作命令表
二. 數(shù)據(jù)采集系統(tǒng)與PC機通信的硬件電路
為了簡化系統(tǒng)的硬件設(shè)計,數(shù)據(jù)采集系統(tǒng)的微轉(zhuǎn)換器選用AD公司的全集成芯片ADuC812,該芯片包含有12位高性能的自校準(zhǔn)8通道ADC,兩個12位的DAC,與8051兼容的內(nèi)核使用戶無須學(xué)習(xí)新的指令系統(tǒng)。片內(nèi)8K閃速/電摖除程序存儲器使數(shù)據(jù)采集系統(tǒng)具有在線下載編程能力,利用AD公司提供的免費SERIAL WINDOW DOWNLOAD就可以將HEX文件下載到ADuC812內(nèi),對于不同的應(yīng)用場所可以方便的修改系統(tǒng)的參數(shù),既不需要昂貴的編程器,也不需打開機殼插撥芯片,只需將一條電纜連接到計算機的COM1或COM2即可。另外該轉(zhuǎn)換器還支持看門狗定時器、電源監(jiān)視器及ADC的DMA等功能,可編程的I/O口具有三種類型的串口UART、SPI、I2C,價格也比較便宜,是一種理想的轉(zhuǎn)換器。系統(tǒng)的硬件組成如下圖(1)所示。
[align=center]

圖1 ADUC812與PC機串口通信的硬件電路圖[/align]
其中ADM202及P3.0\P3.1構(gòu)成了與計算機通信的RS232接口,它有兩個功能,一是實現(xiàn)計算機與數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)通信。另一功能是與JP1配合使用,完成將程序從計算機下載到ADuC812片內(nèi)的閃速/電摖除程序存儲器中。當(dāng)下載程序時,需將單片機系統(tǒng)的電源關(guān)掉,用屏蔽帽屏蔽JP1,單片機系統(tǒng)再上電,ADuC812進(jìn)入程序下載狀態(tài),運行SERIAL WINDOW DOWNLOAD可以將HEX文件下載到芯片內(nèi)。ADM812組成了系統(tǒng)的復(fù)位電路。
三. 應(yīng)用程序的軟件流程圖
PC機與單片機的串口通信技術(shù)可以說已經(jīng)比較成熟,但在工程實際中應(yīng)用較多的是VC、VB通信控件,一般人員開發(fā)具有一定的困難。本文的PC機應(yīng)用程序是運用MATLAB的類(SERIAL)和M語言開發(fā),輔以MATLAB的GUIDE工具箱,程序開發(fā)相對簡單。單片機的程序應(yīng)用MCS—51匯編,只需在程序的第一行加$MOD812標(biāo)識符即可。整個傳輸過程是:由單片機發(fā)送握手信號,PC機接到握手信號后發(fā)應(yīng)答信號,并準(zhǔn)備接收信號,單片機接收到應(yīng)答信號后準(zhǔn)備發(fā)送數(shù)據(jù),并說明通信過程掛鉤成功,總的測量次數(shù)和鍵值作為第0組發(fā)送,發(fā)送完畢累加校驗和,發(fā)現(xiàn)傳輸錯誤時重發(fā),程序的流程圖如圖2所示
[align=center]

圖2 單片機與微機的通信流程圖[/align]
MATLAB的SERIAL類核心是用JAVA語言編寫的,與VC等高級語言相比存在許多不足,如不能以中斷的方式訪問該串口類,但是對一般的應(yīng)用要求該類還是可以滿足要求的,同時由于該類的使用方法極其簡單,故而也有一定的實用性。
參考文獻(xiàn):
[1] 先鋒工作室.單片機程序設(shè)計實例[M].清華大學(xué)出版社. 2003.1
[2] 何英,何強.MATLAB擴展編程[M].清華大學(xué)出版社.2003
[3] 李剛.[M].ADuC8XX使用指南。北京航空航天大學(xué)出版社.
[4] 仲兆楠.基于ADuC812的一種儀表開發(fā)平臺[J].電測與儀表.2001.11
[5] 趙云鵬.實現(xiàn)WORD與MATLAB互相調(diào)用的方法[J]計算機時代.2003.11