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

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

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