




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录摘要 2Abstract 21. 引言 32. 系统总体设计简介 33. 系统的硬件体系结构 33.1 UART转USB接口的设计 4芯片的功能及工作电路图 4的外围接口电路 6电平转换电路 63.2 数据采集系统的设计 7 7 8 84.系统软件体系结构 94.1 处理系统的设计 9处理系统的功能 9处理系统界面设计 9数据处理系统用户界面控件回调程序设计 9环境下PC机与单片机通信的设计 11对串行口的编程控制 114.2 USB设备驱动程序设计 124.3 数据采集系统的软件设计 13系统的通信协议 13转换子程序设计 145. 应用实例 155.1 实例(一) 155.2 实例(
2、二) 156. 总结 167. 致谢 178. 参考文献 179. 附录 189.1 数据处理子系统程序 189.2 单片机端程序 279.3 数据采集子系统电路图 29基于USB传输的数据采集及处理系统作者:张炳未指导老师:李方洲(温州大学 物理与电子信息学院 325027)摘要:本文介绍了一种基于USB传输的数据采集及处理系统的设计和实现,主要包括USB接口的工作原理、接口芯片的应用方法、单片机端的数据采集以及PC机端接口程序的设计与数据处理的方法。系统实现了PC机对数据采集子系统采样速率的控制,并实时地将采集到的数据传输到基于Matlab-GUI界面设计的数据处理子系统中进行实时分析、处
3、理、显示和储存。与一般的数据采集系统相比,本系统数据传输快、误码率低、上位机处理功能强大等特点。且该套方案实施容易,稳定可靠,为研究数据采集与数据处理提供了方便。关键词: USB AT89C51单片机 图形用户界面(GUI)Data Acquisition and Process System Based on USB TransmittingAuthor: Zhang Bingwei Tutor: Li Fangzhou (Physics and Electricment Information Department of WenZhou University 325027Abstract:
4、 this paper discuss how to design data acquisition and process system based on USB Transmitting. We further introduce some systems structure such as Operationprinciple of USB、application method of Interface chip、the method of data collected by MCU、 design of the interface procedure and the method of
5、 data processed in PC. The function of thissystem is that , by Matlab programming ,computer can control of the Sampling rate of data acquisition system through USB interface. Then, by USBs interface ,the data is sent to the process system based on Matlab-GUI Interface to analyze、operate、display and
6、store. To compare with general data acquisition system, it has the characters of fast speed、low bit error rate and powerful to process data in PC. This method is reliable and easy to implement. And it brings a lot of convenience for the research of data acquisition and process system.Key words: USB
7、AT89C51 GUI1. 引言通用串行总线USB(Universal Serial Bus)作为一种新型的数据通信接口在越来越广阔的领域得到应用。而基于USB接口的数据采集与传统的串口数据采集相比具有即插即用、热插拔、传输速度快、通用性强、易扩展和性价比高等优点。数据采集的后端数据处理一般采用Visual C+编写,较为复杂,花费的时间较长。由美国Mathworks公司开发的Matlab语言是面向理论分析研究、工程计算数据处理和作图的一套具有强大功能的软件系统。其中Matlab语言是一种以矩阵为基本运算单元的解释执行的高级语言,只要几条语句就能实现诸如FFT变换、FIR/IIR滤波等数据分析
8、处理,易于调试、理解和维护,而且程序编程简单、直观。因此它特别适用于数据采集处理系统。利用它编制USB接口程序,把Matalb语言和USB总线紧密结合起来的数据采集及处理系统将集成两者的优点。USB总线可以实现对外部数据实时高速的采集,把采集的数据传送到主机后再通过Matlab的功能模块顺利实现数据分析、处理、显示和存储。2. 系统总体设计简介本设计以Atmel公司的AT89C51单片机为下位机,PC机为上位机组成的实时数据采集及处理系统,介绍了基于USB传输的Matlab环境下,PC机与单片机通信的实时数据处理方法的实现。数据采集系统的结构框图,如图1所示。PC机USB接口与单片机UART口
9、通过MAX232电平转换芯片相连,系统工作时,Matlab通过调用设备控制工具箱中的serial类及相关函数,来创建串口设备对象,得到设备的文件句柄,从而以操作文件的方式实现对PC机USB接口的读写操作。因而PC机可以通过Matlab向USB接口发送特殊指令,单片机应用系统对此作出相应的反应,将A/D采样数据通过USB串口回送给PC机。此时,Matlab通过查询的方式,实时接收单片机发送的数据,并完成对数据的分析处理、文件存储、傅立叶变换及图形显示。图1 基于USB传输的数据采集及处理系统的原理框图3. 系统的硬件体系结构基于USB传输的数据采集及处理系统硬件模块主要由微控制器、A/D转换器、
10、USB通信接口芯片、MAX232电平转换芯片和分频器等模块组成。整个硬件系统按功能分则由USB接口电路和数据采集电路两部分组成。数据采集电路部分完成前端采样信号的采集、模数转换以及处理、采样速率控制和传输控制;USB接口电路则完成单片机与PC机之间的通信。 系统的A/D转换、数字I/O的设计沿用了传统的设计方法。根据采集的精度、速率、通道数等诸元素选择合适的芯片,设计时充分注意了抗干扰的性能,尤其对A/D采集更是如此。在微控制器和USB接口的选择上有两种方式:一种方案是采用具备USB通信功能的单片机,如Intel、SGS-Tomson、Cypress、Philips等芯片厂商都推出了具备USB
11、通信接口的单片机;另一种方案是采用普通单片机加上专用的USB通信芯片,现在的专用芯片中较流行的有Silicon Laboratories公司的CP2101、National Semiconductor公司的USBN9602、ScanLogic公司的SL11等。本设计的微控制器和USB接口的选择采用了第二个方案,选用ATLMEL公司的AT89C51单片机和Silicon Laboratories公司的CP2101桥接器构成系统。CP2101桥接器抛开了USB协议问题,使开发人员基本专注在硬件方面就行了。它可以把USB当成一个普通的串口来使用,将它与单片机中的串口相连,就可以把单片机的串口变成一个
12、USB接口。这种方案的设计和调试比较简便,成本相对而言也比较低。下面将分点介绍系统硬件体系中几个重要的模块。3.1 UART转USB接口的设计通用串行总线USB是用来连接外围设备与计算机之间的新式标准接口总线。它是一种快速、双向、同步传输、廉价的并可以实现热拔插的串行接口。它自20世纪90年代末出现以来,USB(通用串行总线)简化了键盘及鼠标等计算机外部设备的连接与安装。现在,随着USB的应用越来越广泛,开发电子系统的工程师们也充分利用USB即插即用的好处,开发USB数据采集设备。那么USB为什么能成为最受欢迎的计算机外部设备总线呢?首先,其传输速度快。USB有高速和低速两种方式,主模式为高速
13、模式,速率为12Mbps,另外为了适应一些不需要很大吞吐量和很高实时性的设备,如鼠标等,USB还提供低速方式,速率为1.5Mbps。其次,其易于扩展。虽然每条USB总线只能有一台主机(一般是您的计算机),但是它可以同时连接多达127台设备。主机初始化并控制所有总线通信,所以它拥有大多数协议信息。根据USB规格的规定,总线信号在一对数据线(D+和D-)上产生。再次,其使用灵活。USB共有种传输模式:控制传输(control、同步传输(Synchronization、中断传输(interrupt、批量传输(bulk,以适应不同设备的需要。最后,设备安装和配置容易。USB的易用性来自于设备的自动识别
14、和安装性能。在将任何一台设备插入到USB端口上之后,它的默认地址为0。在连接完毕后,设备将D+线拉到3.3 V的“高”状态。主机检测到此变化,给设备重新分配一个新地址,然后启动一个安装任务,在此任务中,它要求获得设备的各种信息,例如它的类型(集线器或具有特定功能的终端设备)等。当主机安装好了总线上的设备之后,操作系统将立即接管并安装所有需要的驱动程序,从而用户可以与该设备进行交流。PCI等内部总线要求用户关机并重新开启计算机后才能安装硬件,而即插即用USB连接功能为需要频繁断开,然后重新连接。由于USB通信的以上优点,使数据基于USB传输的采集设备带来极大的高速性、便携性等诸多益处。RS232
15、是单个设备接入计算机时常采用的一种接入方式,其硬件和软件协议比较简单,有很多传统设备采用了这种通信方式。本系统是将USB转UART技术应用于单片机与PC机之间的数据通信,在计算机上产生一个虚拟的COM口,用户只需按照通用串行口一样使用USB口即可。这样不仅能使单片机具备USB通信的诸多优点,简化了USB编程,同时还可以利用USB对单片机提供5V的电源(500mA以下。本系统采用Cygnal公司出的CP2101-UART转USB桥接器。芯片CP2101是一种高度集成的USB转UART桥接器,它包含有USB2.0全速功能控制器、USB收发器振荡器和异步串行接口(UART。该芯片的全部功能集成在一个
16、5mm×5mm的MLP28封装的IC中。CP2101内置有与计算机通信的USB协议,工作时,会在计算机上产生一个虚拟COM口,用户就可以按照通用串行口的控制方式来使用这个COM口。CP2101内集成有多个模块,各自完成不同的功能,如图2所示。1 USB功能控制器是一个符合USB 2.0的全速器件,集成了收发器和片内相应的上拉电阻,USB功能控制器管理 USB和 UART间所有的数据传输和由 USB主控制器发出的命令请求以及用于控制 UART功能的命令,USB接口的信号描述如表1所列。图2 CP2101的功能框图表1 USB信号描述引脚描述1VBUS(+5V)2D-3D+4GND(地)
17、2 异步串行接口(UART包括TX (发送 、RX (接收 、数据信号以及RTS、 CTS、 DSR、 DTR、 DCD和 RI控制信号。UART支持 RTS/CTS、 DSR/DTR和 XOn/XOff握手协议,可以通过编程使UART支持各种数据格式和波特率,波特率的范围从300921600不等。从CP2101转换出来的UART信号不是标准的RS232电平,而是TTL电平,其信号描述如表2所列。表2 UART信号描述引脚序号信号名称符号流向功能1载波检测DCDDCE 到 DTE表示DCE接收到远程载波2接收数据RXDDCE 到 DTEDTE接收串行数据3发送数据TXDDTE 到 DCEDTE
18、发送串行数据4数据终端准备好DTRDTE 到 DCEDTE准备好5信号地GND信号公共地6数据设备准备好DSRDCE 到 DTEDCE准备好7请求发送RTSDTE 到 DCEDTE请求DCE将线路切换到发送方式8允许发送CTSDCE 到 DTEDCE告诉DTE线路已接通可以发送9振铃指示RIDCE 到 DTE表示DCE与线路接通,出现振铃3 内部 EEPROM可以用于存储由设备原始制造商定义的USB供应商ID、产品ID、产品说明、电源参数器件、版本号和器件序列号等信息。4 电压调节器是一个可以由USB总线驱动的器件电源,可在VDD引脚输出3.03.6 V电压,1100 mA电流。的外围接口电路
19、USB应用通常需要硅晶体和许多其它组件,虽然CP2101内置了EEPROM、稳压器、USB收发器和集成式内部振荡器,使其可以简化设计,降低成本。但作为和普通单片机串口相接的桥接器,它还需要设计外接USB接口电路和RS232接口电路。USB接口电路实现CP2101与计算机之间的通信;RS232接口电路实现CP2101和单片机之间的通信。接口电路如图3所示。其中RS232电平转换电路可根据需要选用MAX3243或MAX232。对于本设计来说,采用的CP2101评估板就是一个USB转RS232的转换器。虽然CP2101芯片的输入和输出信号均为TTL电平,但设计所采用的评估板已对CP2101输入输出的
20、信号进行了RS232电平转换,而本设计所采用的51单片机串行口输入输出的信号却还是TTL电平。因此,本设计在评估板与单片机之间又加上RS232电平转换电路,使其能进行正确地进行数据通信。 CP2101的使用与普通的USB外设相同,当第一次带电插入PC机USB接口时,系统会提示安装相应的驱动程序。驱动程序安装完后,系统会自动增加一个COM口,并更新计算机硬件设备管理中“端口”项的内容,添加进CP2101的名称:CP210X USB to UART Bridge Controller(COMX.而这个虚拟COM口的序号则要根据所用计算机上已存在的COM口数量而定,一般情况下是COM3。运行在 PC
21、机上的应用软件可以按照访问一个传统的标准的硬件COM口的方式访问基于 CP2101 的器件。但 PC 与 CP2101 器件间的数据传输却是通过 USB 完成的。因此,无需修改现有的 COM 口应用就可以实现通过 USB 向这个带有5 V和3.3 V供电的“COM口”传输数据。图3 CP2101的外围接口电路电平转换电路RS-232标准是由美国电子工业协会(Electronic Industry Association)的推荐标准。它是一种电压型总线标准,以不同极性的电压表示逻辑值:-3V-25V表示逻辑“1”;+3V+25V表示逻辑“0”。标准数据传送速率有50、75、110、150、300
22、、600、1200、2400、4800、9600、19200波特等。目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m,可以用电缆线直接连接标准RS232端口(RS422,RS485较远,若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连。本系统所设计的电平转换电路的芯片选用MAX232CPE。它是一个双9 芯的转换接头,具有2路RS-232 电平至TTL及2 路TTL至RS-232电平的转换。一般情况下,MAX232外加几个0.1uF的电容就可以轻松地完成TTL电平与RS-232电平相互转换的
23、功能。本设计RS-232串口通信的接线采用最为基本的接法:三线制,即接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接。本设计的RS-232电平转换电路图,如图4所示 。图4 RS232电平转换电路3.2 数据采集子系统的设计数据采集子系统的工作原理,如图5所示。由8051单片机、信号采样电路、A/D转换器、四分频电路和复位电路等部分组成。当上位机有采集指令时,单片机就开始接收上位机发来的采样速率,接着单片机启动A/D转换器采集信号采样电路输入的模拟量信号,并控制A/D转换器的采样速率。当上位机发来停止采集指令或处理系统关闭时,单片机就停止A/D转换器工作,并等待上位机的
24、新指令。A/D转换器的选择从精度和转换速率上考虑,AD574比ADC0809凡精度还是转换速率都要高,但价格昂贵。而从系统实用的设计要求上考虑,本系统选用ADC0809八位A/D转换器,它具有8路输入通道,转换速率为130s,基准电压为5V时,其分辨率为0.0196V,基本满足本系统的要求。数据采集子系统需要微处理器控制的器件不多,执行任务不复杂。ATMEL公司的89C51(Flash Rom型)微处理器,利用其自带的4K存储器、I/O口、定时器及串行通信口等内置功能,足以满足存储全部程序、读取A/D转换器和上位机的通信等功能。虽然系统需要采集大量的数据,但采取了即采即发的方法,无需外扩存储器
25、。因此,微处理器选用AT89C51。A/D转换电路连接主要解决两个问题:一是8路模拟信号通道选择;二是A/ D转换完成后转换数据的传送。如图6所示,模拟通道选择信号A、B、C分别接最低位地址A0、A1、A2(即P0.0、P0.1、P0.2),而地址锁存允许信号ALE由138的控制(138的A0、A1、A2分别接单片机的P2.5、P2.6、2.7),则8路模拟通道的地址为8000H8007H。此外,通道地址选择以/WR作写选通信号,这一部分电路连接如图6所示。从图中可以看到,把ALE信号与START信号连接在一起,这样使得在信号前沿写入(锁存)通道地址,紧接着在其后就启动转换,有关信号的时序配合
26、如图7所示。A/D转换完成的确认方法可以采用三种方式:定时传送方式、查询方式、中断方式。不管采用哪种确认方式,只要一旦确认转换完成,即可通过指令进行数据传送。首先送出口地址并以/RD作选通信号,当/RD信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接收。在图6中,AD转换完成的信号EOC与CPU的P3.2相接,采用查询方式连接;/WR、/RD分别接CPU的/WR(P3.6)和/RD(P3.7);/CSAD接138的。图6 A/D转换电路连接图图7 信号的时序配合ADC0809的内部没有时钟电路,所需时钟信号由外部提供,通常使用的频率为500kHz,其时钟信号输入为引脚10,即图6
27、中的CLKAD。本设计充分考虑了整个系统中已存在的条件,决定AD0809的时钟信号不外加500kHz晶振,而是对单片机的ALE信号进行分频来提供。由于本系统单片机晶振采用的是12MHz,所以其ALE输出信号的频率为2 MHz。因此,本系统设计了一四分频电路,对ALE进行四分频,以满足ADC0809转换器时钟信号的要求。本设计的分频器采用74LS161四位二进制同步计数器为主要器件,采用反馈方式构成四进制计数器。反馈式一般有两种形式:其一,利用预置端/LD构成。把计数器输入端D0D1D2D3全部接地。当计数器计数已满时,输出端等于输入端电平,以达到清零目的。其二,利用清除端/CR构成。即当Q3Q
28、2Q1Q0=0100时,通过反馈线强制计数器清零。本设计采用第二种接法,电路图如图8所示。图8 分频电路图4.系统软件体系结构4.1 数据处理子系统的设计本数据处理子系统需要实现的基本功能:a.随时启动或暂停数据采集子系统的采集工作;b.采用控制方式,便于该控制平台的扩展,现已完成采样速率控制、各种电压显示的选择控制、傅立叶变换和自动或手动保存数据文件等控制,实时、在线更改数据采集系统采样速率的设定值和数据保存的文件名;c.将采集所得的数据实时地以图形的方式显示在中央的图形显示区,便于观察前端信号变化以及走势;d.保存的数据文件更是可以在系统停止数据采集的时候,随时调出来进行综合分析和处理。随
29、着计算机技术的飞速发展,人与计算机之间的通信方式也发生了深刻变化。从传统的命令通信方式演变成了图形界面下的交互通信方式。在图形用户界面(GUI)下,用户可以通过鼠标等输入设备与计算机进行信息的交流,选择欲运行的计算机程序,并控制程序的运行。现在,绝大部分的程序设计工具如VB、VC+都可以进行图形用户界面(GUI)的设计与开发工作。作为强大的科学计算软件,MATLAB也提供了图形用户界面的设计与开发功能。MALAB中的基本图形用户界面对象分为3类:用户界面控件对象(uicontrol)、下拉式菜单对象(uimenu)和内容式菜单(uicontextmenu)。其中,uicontrol能建立按钮、
30、列表框、编辑框等图形用户界面对象,uimenu能建立下拉式菜单和子菜单等图形用户界面对象,uicontextmenu能建立内容式菜单用户界面对象。利用上述对象,进行周密的组织、设计,就可以设计出一个界面良好、操作简便、功能强大的图形用户界面。本设计的数据处理子系统就是应用MATLAB 语言的可视化图形界面(GUI 设计了人机交互界面. 通过鼠标点击的方式来选择或者激活某一控件对象, 运行所需的M 文件, 完成特定的功能,如图9所示。用户操作界面主要包括参数输入区、控制区、绘图区和观察对象选择区等四个部分。数据处理系统用户界面控件回调程序设计实现一个图形界面的动态和友好交互设计, 最终是要通过图
31、形界面中的控件对象的操作来完成, 而这些操作必定是通过MATLAB中函数代码的执行来完成的。这些函数代码的编制可以通过编写每个控件的回调函数来完成, 而编写时可以把该控件的函数代码直接书写在“CallBack”中, 也可以把函数代码放在一个自定义的M 文件中。 而在“CallBack”中只将其文件名写上,当操作该控件时,系统会自动执行“CallBack”中所要求执行的内容。无论是函数代码, 还是以文件方式的函数代码。观察对象选择区图9 数据处理系统界面本系统的软件设计就是将每个控件的回调函数代码直接写在了“allack”中,总共编写了个大小不等的回调程序。通过这些函数文件的调用实现了界面友好及
32、各个功能,现将几个主要回调函数介绍如下:1 “启动”键回调函数:数据处理系统软件的核心部分。包括GUI界面部分控件的初始化,相关文件的调用,控件的实现,与数据采集系统输入输出的控制,GUI作图等等。可以说,只要在GUI界面上存在事件触发,就会对该回调函数进行调用或与该回调函数发生关联。2 “修改”键回调函数:主要功能是输入修改后的采样速率值。为了更好地实现整个数据处理系统的人机交互性,采样速率的输入采用了弹出式对话框,并加入了两个信息提示框函数来引导,以便整个修改过程方便、明确。考虑到A/D的转换速度以及采集控制中心的控制精度,本系统在“修改”回调函数中设定了采样速率的步径:0.5KS/s,和
33、采样速率的范围:07KS/s。因此,若在修改对话框内输入超出7或递加的步径非0.5的值(例如8或2.3等等),则都被提示为无效输入;若输入的值在有效范围内,则被传递给“启动”回调函数,请求与下位机联系更改采样速率,并在数据处理系统界面的采样速率框内显示新的采样速率值,采样速率的默认值为1KS/s。3 “电压控制组合框”回调函数:主要功能实时显示所选种类的电压值。在取得下位机上传的数据后,处理系统会实时地处理数据,并将最新的电压变化传给相应的参数,如刚采得的瞬时电压,已采得的所有数据中最大电压、平均电压及最小电压。当在GUI界面上选中相应的单选按钮后,此按钮的回调函数就会将相应的数据处理结果显示
34、在其上面的电压值显示框内,并更改显示框的名称。其默认值为:瞬时电压单选按钮有效。4 “傅立叶变换”键回调函数:此回调函数先为“傅立叶变换”设立标志位,并将其传给“启动”回调函数。若此标志位为真,则停止数据采样,将已采得的数据进行傅立叶变换,绘出频谱图在主显示区。5 “清屏”键回调函数:本系统设计的主显示区清屏分为两种,一种是在实时显示时,当达到一千个采样点就自动清屏;另一种就是在任何采样点数时,根据观察需发按下“清屏”键来手动清屏。6 “停止”键回调函数:设立停止采样标志位。当采样子程序检测到此标志使能时,就停止处理平台部分程序,并向下位机发送停止采样命令,使其处于待命状态。7 “退出”键回调
35、函数:关闭平台的所有程序和GUI界面。总之, 以上是一些本数据处理子系统主要的函数执行文件, 还有一些M文件(如文件、操作、打印和帮助等等菜单下的回调文件 , 由于在其他编程中十分普遍, 这里就不一一列出了(程序详见附录)。前面已经介绍了USB转换芯片CP2101内置了USB与计算机通信的协议,当其插入计算机USB接口的时候,已安装的驱动程序把USB口转化为计算机上的一个虚拟COM口。对于这个COM口的序号,要看这台计算机上已经存在的COM口数量,一般是COM3。在Matlab6.0中新增的设备控制工具条(instrument control toolbox)用来负责上、下位机之间的通信。该设
36、备控制工具箱的特点如下:1 支持基于串行接口(RS-232、RS-422、RS-485)、GPIB总线(IEEE2488、HPIB标准)、VISA总线的通信;2 通信数据支持二进制和文本(ASCII)两种方式,文本方式支持SCPI(Standard Commands for Programmable Instruments)语言;3 支持异步通信和同步通信;4 支持基于事件驱动的通信。从以上Matlab设备控制工具箱的特点以及本系统所采用的UART转USB桥接器的特点可以看出:Matlab完全可以满足本系统实现基于传输的机与单片机之间通信的要求。1 创建串口设备对象并设置其属性scom=ser
37、ial('com3'%创建串口3的设备对象scomscom.Terminator='CR'%设置终止符为CR(回车符),缺省为LF(换行符)scom.InputBufferSize=1024;%输入缓冲区为256B,缺省值为512Bscom.OutputBufferSize=1024;%输出缓冲区为256B,缺省值为512Bscom.Timeout=0.5;%Y设置一次读或写操作的最大完成时间为0.5s,缺省值为10ss.ReadAsyncMode='continuous'(缺省方式;%在异步通信模式方式下,读取串口数据采用连续接收数据(cont
38、inuous的缺省方式,那么下位机返回的数据会自动地存入输入缓冲区中.注意:这些属性只有在对象没有被打开时才能改变其值,如InputBufferSize、OutputBufferSize属性等。对于一个RS-232/RS-422/RS-485串口设备对象,其属性的缺省值为波特率9 600b/s,异步方式,通信数据格式为8位数据位,无奇偶校验位,1位停止位。如果要设置的串口设置对象的属性值与缺省值的属性值相同,可以不用另行设置。另外,设置串口设置对象的属性也可以用一条指令完成,如:scom=serial('COM1','BaudRate',38400,'P
39、arity','none','DataBits',8,'StopBits',1。也可以用set命令,如set(scom,'BaudRate',19200,'Parity','even'。创建了对象后可以在Matlab命令窗口直接敲对象名并回车,看到其基本属性和当前状态。若需要知道其全部的属性,可以用get(scom命令。2 打开串口设备对象。fopen(scom;3 读写串口操作。初始化并打开串口调协对象之后,现在可以对串口设备对象进行读写操作,串口的读写操作支持二进制和文本(ASCII)两
40、种方式。当Matlab通信数据采用西方(ASCII)方式时,读写串口设备的命令分别是fscanf、fpritf;当Matlab通信数据采用二进制方式时,读写串口设备的命令分别是fread、fwrite。下面以二进制方式读写串口为例:a. 读串口:out=fread(scom,33,'uint8' %接收单片机发送的33个数据(8位),并存入out数组中.b. 写串口:fwrite(scom,255;%以二进制的方式发送握手信号0xFF,缺省为异步通信方式5 关闭并清除设备对象。fclose(scom;%关闭串口设备对象delete(scom;%删除内存中的串口设备对象clear
41、 scom; %清除工作空间中的串口设备对象当不再使用该串口设备对象时,顺序使用以上3条命令,可以将所创建的串口对象清除,以免占用系统资源。可以看出,在Matlab中进行串行通信是十分方便的,编程较为简单。而且,在Matlab中串行通信的失误率很低,通信较为可靠,也可以采用增加握手信号以及数据校验等的方式进一步增加通信的可靠性。在Matlab环境下,读取串口数据的方式可以分为两种查询和中断。以查询的方式进行串行通信时,如下位单片机有大量的数据分时分批传送给PC机,就需要不停查询串行口的缓冲区,有数据就读取,编程较容易。以中断的方式对串口进行控制实现串行通信,就可以实时处理下位机传送的数据,但编
42、程复杂的多,需要采用Matlab的事件和回调函数机制。从本系统数据传输的实时性和数量上来考虑,决定采用查询方式的通信模式(程序详见附录部分)。4.2 USB 设备驱动程序设计USB 系统驱动程序的设计是基于WDM(Windows driver model 驱动程序模型的。WDM 采用分层驱动程序模型(见图10 所示,分为较高级的USB设备驱动程序和较低级的USB 函数层。其中USB 函数层由两部分组成:较高级的通用串行总线模块(USBD和较低级的主控制器驱动程序模块(HCD。在上述USB 分层模块中,USB函数层由WindowsXP 提供,负责管理USB 设备驱动程序和USB 控制器之间的通信
43、,加载及卸载USB 驱动程序,与U S B 设备通用端点(endpoint建立通信来执行设备配置、数据与USB 协议框架和打包格式的双向转换任务。目前WindowsXP提供了多种USB 设备驱动程序,但并不针对数据采集设备,因此需用DDK 开发工具设计专用的USB 设备驱动程序。在本设计中由四个模块实现:初始化模块、即插即用管理模块、电源管理模块以及I/O功能实现模块。初始化模块提供一个入口函数DriverEntry(,所有对各种IRP(I/O Request Packet,IRP请求包的处理例程都在此入口函数中做出定义。即插即用管理模块实现USB设备的热拔插及动态配置。当硬件检测到USB 设
44、备接入时,WindowsXP查找响应的驱动程序,并调用它的DriverEntry例程,PnP(即插即用管理器调用驱动程序的AddDevice例程,告诉它添加了一个设备;在此处理过程中,驱动程序收到一个设备启动请求(IRP_MN_START_DEVICE的IRP。同理,当要拔除时,PnP管理器会发出一个设备删除请求(IRP_MN_REMOVE_DEVICE的IRP,由驱动程序进行处理。通过对这些PnP 请求的处理,可支持设备的热插拔和即插即用功能。电源管理模块负责设备的挂起与唤醒。I/O功能实现模块完成I/O请求的大部分工作。若应用程序想对设备进行I/O操作,它便使用WindowsAPI 函数,
45、 对WIN32 子系统进行WIN32 调用。此调用由I/O 系统服务接收并通知I/O管理器,I/O管理器将此请求构造成一个合适的I/O请求包(IRP并把它传递给USB 设备驱动程序,USB 设备驱动程序接收到这个IRP 以后,根据IRP 中包含的具体操作代码,构造相应的USB 请求块并把此URB(USB 请求块放到一个新的IRP中,然后把此IRP 传递到USB总线驱动程序,USB总线驱动程序根据IRP 中所含的URB 执行相应的操作(如从USB 设备读取数据等,并把操作结果通过IRP 返还给USB设备驱动程序。USB设备驱动程序接收到此IRP 后,将操作结果通过IRP 返还给I/O 管理器,最
46、后I/O管理器将此IRP中操作结果返还给应用程序,至此应用程序对USB设备的一次I/O操作完成。图10 USB系统驱动程序层次关系生4.3 数据采集系统的软件设计数据采集系统软件主要是与上位机的通信以及对A/D转换器的控制,其程序流程图如图11所示。本系统的通信协议规定的字符格式为:每一帧的数据占10位1位起始位,8位数据位,1位停止位,无奇偶校验位。中间的8位数据位即为有效的通信传输字节。双方的波特率设置为9600b/s,以较高速度进行通信。同时,为了增强通信的可靠性、减少通信的误码率,在通信过程中约定了双方的软件握手方法。为了不致使通信过于复杂,提高通信速度,可以直接将握手信号嵌入到数据包
47、中。软件握手协议规定如下:PC机发送符合握手信号0xFF给单片机,单片机接收到的上位机数据若为握手信号0xFF,则等待上位机继续发送采样速率;上位机发完采样速率后,发送握手结束信号0x01给单片机,单片机接收到握手结束信号时就给上位机发送数据传输开始信号0x00,并开始回送A/D采样数据包。每次发送数据的时间间隔由上位机所发来的采样速率所决定。单片机接收到的上位机数据若不是握手信号,则继续等待。若PC机接收到的数据包的第1个字节不是0x00,则屏弃该数据包;若是,则表示握手成功,经校验正确后将有效的A/D采样数据信息直接存储。(程序详见附录) 在实际工作中应考虑系统会受到外界的干扰,而导致采进
48、来的数据不真实。在非连续的数据采集系统中,可以对某一点实行多次采集,取平均值来消除干扰。但本系统设计的是一实时数据采集系统,前端信号变化的实时性很强,A/D的速率不可能实现对一点采集多次的任务。因此,无法在软件设计上来消除干扰,只能在硬件上加入消干扰的信号处理电路和加强整个系统运行的稳定性。A/D转换子程序框图如图12所示。图12 A/D转换子程序框图图11 数据采集系统程序流程图5.应用实例5.1 实例(一). 采集频率为1Hz的周期矩形脉冲信号如图13所示,其幅度为1V,脉冲宽度为20。经傅立叶变换后的频谱结果如图14所示。 图13 周期矩形脉冲信号采集结果图图14 周期矩形脉冲信号频谱图
49、5.2 实例(二) 采集频率为1Hz的周期正弦波信号如图15所示,其幅度为1V,偏置电压2V。由于正弦波是含有正负电压的信号,而对A/D转换器来说,小于零的信号其转换结果都为零。因此,若正弦波信号不加偏置电压,则系统只能采集正弦波的正半周;但加了适当的偏置电压后,使正弦波原来的负半周全提升为大于零,这样系统就能采集到正弦的全波图。经傅立叶变换后信号的频谱图,如图16所示。图15 周期正弦波信号采集结果图图16 周期正弦波信号频谱图6.总结本设计介绍的基于USB传输的数据采集及处理系统具有结构简单,界面友好,强大的功能可扩性等优点。本系统经过适当的扩展可应用于各种环境下的信号采集,例如前端信号采
50、样电路添加温度传感器及处理电路,就可将本系统应用于测温以及控温现场。本系统的缺点是选用的A/D转换器的转换速率还不够快,极大地限制了采样速率的可调范围与步径。还有,数据处理系统已经实现的分析与处理方法种类有限,还不能对采样数据进行更深入地分析和处理。最后,数据处理系统的采集数据保存缺少数据库对其进行更有效的管理。致谢首先,衷心地感谢指导老师李方洲副教授对本毕业设计所提供的巨大帮助和精心指导。其严谨的治学理念,渊博的学识,为我营造了一种良好的学习氛围。使我不仅接受了全新的思维方式,还掌握了一定的软硬件实际设计的能力和写作能力。同时,也将感谢送给宋元平老师及每一位帮助过我的老师和朋友们!8.参考文
51、献1. MindShar,Don Anderson,Dave Dzatko著 孟文译. USB系统体系(第二版).中国电力出版社.2003年2. 马伟 编著. 计算机USB系统原理及其主/从机设计 . 北京航空航天大学出版社. 2004年3. 许永和 编著. 8051单片机USB接口程序设计(上下册) . 北京航空航天大学出版社 . 2004年4. 阮沈勇,王永利,桑群芳 编. MATLAB程序设计 . 电子工业出版社 . 2004年5. Duane Hanselman ,Bruse Littlefield 著 李人厚,张平安等译校 . 精通MATLAB综合辅导与指南 西安交通大学出版社 .
52、1999年6. 梁虹,梁洁,陈跃斌等编著 .信号与系统分析及MATLAB实现 . 电子工业出版社 . 2002年7. 余永权,汪明慧,黄英 . 单片机在控制系统中的应用 . 电子工业出版社 . 2003年8. 李广弟,朱月秀,王秀山等编著 . 单片机基础 .北京航空航天大学出版社 . 2001年9. 胡汉才编著 . 单片机原理及其接口技术 . 清华大学出版社 . 2002年10. 华中理工大学电子学教研室编,陈大钦主编 . 电子技术基础实验-电子电路实验·设计·仿真(第二版) . 高等教育出版社 . 2000年11. 高传善,钱松荣,毛迪林编著 . 数据通信与计算机网络 .
53、 高等教育出版社 . 2001年9.附录9.1 数据处理子系统程序function varargout = chulisty(varargin% CHULISTY Application M-file for chulisty.fig% FIG = CHULISTY launch chulisty GUI.% CHULISTY('callback_name', . invoke the named callback.% Last Modified by GUIDE v2.0 23-May-2005 18:06:55if nargin = 0 % LAUNCH GUIfig =
54、openfig(mfilename,'reuse'% Generate a structure of handles to pass to callbacks, and store it. handles = guihandles(fig;guidata(fig, handles;if nargout > 0varargout1 = fig;endelseif ischar(varargin1 % INVOKE NAMED SUBFUNCTION OR CALLBACKtryif (nargoutvarargout1:nargout = feval(varargin:;
55、% FEVAL switchyardelsefeval(varargin:; % FEVAL switchyardendcatchdisp(lasterr;endend%| ABOUT CALLBACKS:%| GUIDE automatically appends subfunction prototypes to this file, and %| sets objects' callback properties to call them through the FEVAL %| switchyard above. This comment describes that mech
56、anism.%|%| Each callback subfunction declaration has the following form:%| (H, EVENTDATA, HANDLES, VARARGIN %|%| The subfunction name is composed using the object's Tag and the %| callback type separated by '_', e.g. 'slider2_Callback',%| 'figure1_CloseRequestFcn', 'a
57、xis1_ButtondownFcn'.%|%| H is the callback object's handle (obtained using GCBO.%|%| EVENTDATA is empty, but reserved for future use.%|%| HANDLES is a structure containing handles of components in GUI using%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This%| structure is crea
58、ted at GUI startup using GUIHANDLES and stored in%| the figure's application data using GUIDATA. A copy of the structure%| is passed to each callback. You can store additional information in%| this structure at GUI startup, and you can change the structure%| during callbacks. Call guidata(h, handles after changing your%| copy to replace the stor
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学教育教学反思与科技应用的有效结合试题及答案
- 2024年徐州市市属事业单位考试真题
- 家具行业在数字化转型中的设计策略研究试题及答案
- 数量与模式整合试题及答案
- 家具设计中的流行趋势对经典的挑战考题试题及答案
- 江西建院单招试题及答案
- 陕西省图书馆招聘考试真题2024
- 内江市市本级事业单位招聘工作人员笔试真题2024
- 2024年朝阳市融媒体中心招聘考试真题
- 建设焊工考试试题及答案
- (无线)门禁系统报价单
- 水电站水利工程施工组织设计毕业论文
- 联想EAP案例分析
- 社会工作介入老年社区教育的探索
- 国开电大-工程数学(本)-工程数学第4次作业-形考答案
- 高考倒计时30天冲刺家长会课件
- 施工项目现金流预算管理培训课件
- 时行疾病(中医儿科学课件)
- 街道计生办主任先进事迹材料-巾帼弄潮显风流
- GB/T 32616-2016纺织品色牢度试验试样变色的仪器评级方法
- 部编版小学语文三年级下册第七单元整体解读《奇妙的世界》课件
评论
0/150
提交评论