摘 要:文章在介紹MATLAB串口通信技術的基礎上,以ANALOG公司的ADμC812作為數(shù)據(jù)采集系統(tǒng)的微處理器,通過計算機的RS-232串口將數(shù)據(jù)采集系統(tǒng)與計算機組成為一個具有極強數(shù)據(jù)處理能力的系統(tǒng)。利用MATLAB6.X自帶的通信類(SERIAL)和GUI編程技術,方便地開發(fā)出通信與數(shù)據(jù)采集軟件,通過人機界面能夠完成對數(shù)據(jù)采集系統(tǒng)的控制與通信,而且系統(tǒng)軟硬件的實現(xiàn)方法比較簡單,具有一定的實用性。
關鍵詞:MATLAB、串口通信、數(shù)據(jù)采集、快速處理
MATLAB具有超強的數(shù)據(jù)處理能力,被廣泛的應用于信號處理、自動控制等領域,而且它的圖形用戶界面編程技術(GUIDE)簡單易學,即使非專業(yè)人員也能編制出界面友好、功能強大的應用程序。對于一般的微轉換器,實現(xiàn)數(shù)據(jù)的采集過程較為簡單,但要對采集的結果進行快速的實時處理就比較困難,因為絕大多數(shù)MCU只提供簡單的8位無符號數(shù)的四則運算指令系統(tǒng),對于有符號數(shù)的乘方、開方等運算軟件實現(xiàn)起來比較困難。本文介紹利用MATLAB的串口通信技術實現(xiàn)數(shù)據(jù)采集系統(tǒng)與PC機的通信,使采集系統(tǒng)的數(shù)據(jù)獲得快速、準確的處理,而且實現(xiàn)方法簡單,有一定的實用性。
一. MATLAB串口通信技術
對于WINDOWS系統(tǒng)而言,硬件系統(tǒng)的驅動程序有著十分嚴格的規(guī)范,可以用C或匯編語言進行開發(fā),而MATLAB本身是一個跨平臺的軟件,并不具備直接訪問硬件的能力。即使安裝了驅動程序并能正常工作的硬件設備,MATLAB也沒有統(tǒng)一的形式對其進行訪問。對于系統(tǒng)的串口,在MATLAB6.X中以類(SERIAL)的形式提供了支持。當用指令建立了一個串口對象(句柄)以后,對串口的硬件操作可以文件操作的軟件形式來完成,方法比較簡單。常用的串口操作命令及其含義如下表(1)所示,這些命令既可在MATLAB命令窗口實現(xiàn),也可以M文件的形式出現(xiàn),使用起來十分方便。
表1 MATLAB串口操作命令表
二. 數(shù)據(jù)采集系統(tǒng)與PC機通信的硬件電路
為了簡化系統(tǒng)的硬件設計,數(shù)據(jù)采集系統(tǒng)的微轉換器選用AD公司的全集成芯片ADuC812,該芯片包含有12位高性能的自校準8通道ADC,兩個12位的DAC,與8051兼容的內核使用戶無須學習新的指令系統(tǒng)。片內8K閃速/電摖除程序存儲器使數(shù)據(jù)采集系統(tǒng)具有在線下載編程能力,利用AD公司提供的免費SERIAL WINDOW DOWNLOAD就可以將HEX文件下載到ADuC812內,對于不同的應用場所可以方便的修改系統(tǒng)的參數(shù),既不需要昂貴的編程器,也不需打開機殼插撥芯片,只需將一條電纜連接到計算機的COM1或COM2即可。另外該轉換器還支持看門狗定時器、電源監(jiān)視器及ADC的DMA等功能,可編程的I/O口具有三種類型的串口UART、SPI、I2C,價格也比較便宜,是一種理想的轉換器。系統(tǒng)的硬件組成如下圖(1)所示。
[align=center]
圖1 ADUC812與PC機串口通信的硬件電路圖[/align]
其中ADM202及P3.0\P3.1構成了與計算機通信的RS232接口,它有兩個功能,一是實現(xiàn)計算機與數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)通信。另一功能是與JP1配合使用,完成將程序從計算機下載到ADuC812片內的閃速/電摖除程序存儲器中。當下載程序時,需將單片機系統(tǒng)的電源關掉,用屏蔽帽屏蔽JP1,單片機系統(tǒng)再上電,ADuC812進入程序下載狀態(tài),運行SERIAL WINDOW DOWNLOAD可以將HEX文件下載到芯片內。ADM812組成了系統(tǒng)的復位電路。
三. 應用程序的軟件流程圖
PC機與單片機的串口通信技術可以說已經比較成熟,但在工程實際中應用較多的是VC、VB通信控件,一般人員開發(fā)具有一定的困難。本文的PC機應用程序是運用MATLAB的類(SERIAL)和M語言開發(fā),輔以MATLAB的GUIDE工具箱,程序開發(fā)相對簡單。單片機的程序應用MCS—51匯編,只需在程序的第一行加$MOD812標識符即可。整個傳輸過程是:由單片機發(fā)送握手信號,PC機接到握手信號后發(fā)應答信號,并準備接收信號,單片機接收到應答信號后準備發(fā)送數(shù)據(jù),并說明通信過程掛鉤成功,總的測量次數(shù)和鍵值作為第0組發(fā)送,發(fā)送完畢累加校驗和,發(fā)現(xiàn)傳輸錯誤時重發(fā),程序的流程圖如圖2所示
[align=center]
圖2 單片機與微機的通信流程圖[/align]
MATLAB的SERIAL類核心是用JAVA語言編寫的,與VC等高級語言相比存在許多不足,如不能以中斷的方式訪問該串口類,但是對一般的應用要求該類還是可以滿足要求的,同時由于該類的使用方法極其簡單,故而也有一定的實用性。
參考文獻:
[1] 先鋒工作室.單片機程序設計實例[M].清華大學出版社. 2003.1
[2] 何英,何強.MATLAB擴展編程[M].清華大學出版社.2003
[3] 李剛.[M].ADuC8XX使用指南。北京航空航天大學出版社.
[4] 仲兆楠.基于ADuC812的一種儀表開發(fā)平臺[J].電測與儀表.2001.11
[5] 趙云鵬.實現(xiàn)WORD與MATLAB互相調用的方法[J]計算機時代.2003.11