基于USB接口的通用測試儀的設計與實現
3 系統軟件設計[5-7]
本文引用地址:http://www.104case.com/article/82648.htmF020有8通道100Kbps、12位精度的ADC0以及8通道500Kbps、8位精度的ADC1。考慮到系統靈活性,我們編程使得通道選擇,采樣時間,采樣周期,開關量的狀態由用戶在上位機上指定,然后以命令字傳給下位機,具體為:用兩個字節分別表示該通道是否被選中,每個字節位上為1表示該通道被選中,否則不被選中。用3個字節存放采樣周期,其最小單位為50微妙(即最大采樣速率為20K bps),5個字節存放采樣時間,一個字節用于開關量的通斷狀態,為1則接通,反之為切斷。
3.1 下位機軟件
為減輕下位機的任務,其采集的原始數據直接送給上位機進行處理,下位機的任務就是進行數據采集,并把所采集的數據通過USB100傳給上位機,以保證下位機有高的采樣速率。下位機的工作流程見圖4。
3.1.1 下位機發送數據子程序
函數: Send_AD_Result();
參數: 無
功能: 將AD轉換結果組成幀后,以幀格式發送給上位機
void Send_AD_Result (void){
if(txe==0){
wr="0";
for(i=0;i
wr="1";
PORT4=MyData[i];/*數據順序存放在內存MyData中*/
wr="0";
}
}
}
3.1.2 下位機接收數據子程序
同理,當MCU檢測到USB100 模塊RXF 為低時,表示內部接收緩沖區有來自USB100端口的數據,可以通過八位數據總線D0~D7 將數據讀出。
函數: ReceiveData()
參數: 無
功能: 查看PC端是否有數據送來,如有,則置收到數據標志
void ReceiveData (void){
rd="1";
if(rxf==0){/*數據緩沖區有數據*/
DataNumber+=0x01;//接收數據長度加1
rd="0"; //讀操作,低電平有效
Receive_Data=PINB;//接收數據
rd="1";
}
3.2 上位機軟件
用戶在PC機上安裝USB100模塊驅動程序之后,該USB100默認成該PC的一個虛擬串口,因此在上位機可以將它當作一個串口進行處理。上位機軟件開發是用VB完成的,與下位機的通信使用串口控件MSComm。上位機的主要功能有:
1) 采樣通道以及開關量的設置,輸入模擬量的選擇(電壓、電流,電阻),變換器輸出的單位選擇。
2) 對下位機傳來的原始數據進行處理,并根據傳感器參數轉換為對應的實際測量值。
3) 實時在計算機屏幕上顯示采樣曲線,并把所采集的數據存入數據庫,以便能夠隨時查閱。
4) 對采集的數據進行頻譜分析,并將分析結果以曲線形式顯示在屏幕上。
4 結束語
我們采用USB100 專用模塊和C8051F020高速嵌入式MCU設計的測試儀,不僅滿足現場數據采集以及相應的控制,而且方便與筆記本電腦或臺式機構建虛擬儀器系統。我們在上位機軟件設計時考慮到其通用性,根據實際需求選用不同的傳感器,在上位機上進行相應的選擇,就能得到所需的測量數據及曲線,因而該測試儀有較強的通用性。本測試儀經過兩年多來的實際運行,系統運行穩定可靠,滿足用戶需求。
參考文獻:
[1] 潘琢金,施國君. C8051FXXX高速SOC單片機原理及應用. 北京:北京航空航天大學出版社,2002.
[2] 迅通科技. USB100數據手冊[M]. 哈爾濱:迅通科技有限公,2002.
[3] 馮國飛,宋蘊興. 基于USB數據采集卡的設計與實現[J]. 微計算機信息,2005.11:75-76
[4] 張厚武,姚凱學. 基于C8051F020微控制器的動態測試儀的設計[J]. 機械與電子,2006(8):12-14.
[5] 陳建平,姚凱學,等. 通用動態測試系統的設計與實現. 貴州大學學報(自然科學版), 2004,21(1):79-82.
[6] 謝瑞和.串行技術大全.北京:清華大學出版社,2003.4
[7] 鄭阿奇,曹戈.Visual Basic實用教程 北京:電子工業出版社,2003.
評論