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

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

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