|
数据采集子程序在主程序接收到启动数据采集过程命令字后运行。当单片机接收到上位机通过USB发送过来的命令字后,启动数据采集过程。它利用片内的定时器设定采集时间间隔,利用片内的ADC进行数据采集。在定时中断子程序中,单片机将采集两个通道的数据,将它们按一定的顺序存放到缓冲区中,然后检查缓冲区是否满,如果缓冲区不满,定时中断子程序结束,否则将缓冲区中的数据通过CH375发送给上位机,清空缓冲区,定时中断子程序结束。
USB驱动程序
本系统的一大优点就是开发容易。南京沁恒公司已经为用户提供了通用的USB驱动程序。只需要安装现有的USB驱动安装程序,它为应用程序的开发提供了很多接口函数。由于主要采用批量上传和批量下载方式,所以主要用到CH375ReadData,CH375WriteData等函数。这一部分不需编写程序。
上位机程序
上位机程序可以采有多种软件开发工具,本系统在Visual Studio2005开发环境下,用C#语言编写了应用程序。主要完成读取、显示、保存、打开和打印数据等工作。
数据读取过程是上位机程序的关键部分。为了在从下位机读取数据时不影响数据采集界面响应的流畅,在程序设计中利用多线程实现数据读取。数据采集工作在单独的子线程中完成,而主线程则负责完成鼠标、键盘等对用户的响应。在数据采集子线程中,通过DLL 提供API 应用层接口直接访问USB驱动程序中的缓冲区。成功打开设备后,利用CH375WriteData接口函数向缓冲区中写命令字,向单片机发送命令;利用CH375ReadData接口函数读取缓冲区中的数据,获得采集到的数据。
在Visual Studio2005开发环境下,编写上位机程序开发难度相对较低。数据实时显示增加了数据采集过程的直观性。将采集到的数据通过GDI+在PictureBox控件上绘图,设置一个软件定时器,每隔一定的时间将图形重绘一次,由于时间间隔小于0.1s,视觉上是连续变化的曲线。数据的保存和打开功能主要是利用C#中的StreamWriter类和StreamReader类完成。打印数据和图形主要使用PrintDocument类,调用Print方法后,在PrintDocument_PrintPage事件中将需要打印的文字和图形输出或重绘即可打印。
结语
利用单片机和USB接口芯片的简单连接即可扩展出一个USB接口的数据采集模块,而且无需外扩数据存储器,同时,该采集系统还可充分利用ADuC841丰富的片上外设和I/O资源进行功能上的扩展。在XFT-1型开放式傅立叶变换光谱仪系统中,利用了ADuC841通过同步电机控制麦克尔逊干涉仪动镜位置。经过测试,该系统采样数据精度较高,传输速率较快,性能稳定,通过与PC机相连后,不仅使得数据存储量大,而且更易于进行数据处理,经济简单,在XFT-1型开放式傅立叶变换光谱仪系统中性能稳定。
参考文献:
247905996157419352262670829ADuC841_2_3_0.pdf
2. Universal Serial Bus Specification Reversion 1.1. www.usb.org, 1998
|