基于USB接口的通用测试仪的设计与实现
3 系统软件设计[5-7]
本文引用地址:https://www.eepw.com.cn/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.
评论