完整版基于USB数据采集系统毕业设计论文.docx

上传人:b****6 文档编号:13710706 上传时间:2023-06-16 格式:DOCX 页数:14 大小:188.02KB
下载 相关 举报
完整版基于USB数据采集系统毕业设计论文.docx_第1页
第1页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第2页
第2页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第3页
第3页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第4页
第4页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第5页
第5页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第6页
第6页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第7页
第7页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第8页
第8页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第9页
第9页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第10页
第10页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第11页
第11页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第12页
第12页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第13页
第13页 / 共14页
完整版基于USB数据采集系统毕业设计论文.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

完整版基于USB数据采集系统毕业设计论文.docx

《完整版基于USB数据采集系统毕业设计论文.docx》由会员分享,可在线阅读,更多相关《完整版基于USB数据采集系统毕业设计论文.docx(14页珍藏版)》请在冰点文库上搜索。

完整版基于USB数据采集系统毕业设计论文.docx

完整版基于USB数据采集系统毕业设计论文

基于USB的数据采集系统设计

摘要:

本文针对高速数据采集器的需要,设计了基于USB的数据采集器。

设计工作包括硬件设计和软件设计两部分,硬件部分本系统选用了ATMEL公司的单片机AT89C5131作为微控制器,负责接收由AD转换得到的数字量数据,并通过其内置的USB控制器实现单片机和PC机之间的USB数据通信。

AT89C5131是ATMEL公司推出一款新型带有USB微控制器的芯片。

有较快的处理速度和较大的存储容量,有在系统可编程的功能,是USB接口设计的理想选择。

关键词:

数据采集,USB,AD,AT89C5131,

Abstract:

Inthispaper,theneedforsystemdesignedUSB-baseddataacquisition.Design,includingandsoftwaredesignintwoparts,AT89C5131microcontrollermicrocontrollertoreceivetheADconversionbythedigitaldata,andthroughitsbuilt-inUSBControllerBetweenthemicrocontrollerandPC,USBdatacommunication.ATMELAT89C5131isanewcompanylaunchedwithaUSBmicro-controllerchip.Afasterprocessingspeedandlargestoragecapacity,thereisin-systemprogrammablefunctions,isidealforUSBinterfacedesign.

Keywords:

dataacquisition,USB,AD,AT89C51,LED

 

1前言……………………………………………………………………………………………1

2整体方案设计…………………………………………………………………………………2

2.1方案比较…………………………………………………………………………………2

2.2方案选择…………………………………………………………………………………3

3单元模块设计…………………………………………………………………………………3

3.1元器件选择………………………………………………………………………………3

3.2特殊元器件介绍…………………………………………………………………………3

3.2.1AT89C5131介绍……………………………………………………………………3

3.2.2ADC0809介绍………………………………………………………………………4

3.3单元模块功能介绍………………………………………………………………………5

3.3.1AT89C5131USB接口电路……………………………………………………………5

3.3.2AD转换接口电路……………………………………………………………………6

3.3.3外接存储器接口电路………………………………………………………………9

3.3.4系统外围电路模块…………………………………………………………………11

4软件设计………………………………………………………………………………………11

4.1固件程序设计…………………………………………………………………………11

4.2USB设备驱动程序设计………………………………………………………………13

5结论……………………………………………………………………………………………14

参考文献………………………………………………………………………………………15

附录1:

电路总图………………………………………………………………………………16

1前言

现代工业生产领域和科学研究中往往都需要采集数据,并对采集到的数据进行分析和处理。

随着科技的发展特别是计算机技术的逐渐成熟,数据采集器的应用已经非常广泛,同时对于数据采集的要求也越来越高,特别是在一些高实时性要求(如动态图像数据实时传输)的场合,往往需要进行高速数据采集才能保证数据传输的准确性。

在数据采集系统得到广泛运用中大多采用RS232接口,它不适合于便携式应用场合。

USB(通用串行总线,UniversalSerialBus)近年来开始在计算机外设中得到普及,并逐渐成为计算机标准外设,它的出现使传统数据采集的问题可以得到很好的解决。

相对于传统的串行、并行接口,USB的优势在于:

即插即用,支持热插拔;传输速度快,USB2.0提供最高达480Mbps的传输率;最多可连接127个设备;电源可从计算机或集线器获得,不需要外加电源。

USB设备在PC领域的应用目前已经非常普遍,如USB数码照相机、USB摄像头、USB打印机等;而考虑到USB的各种优势,基于USB总线的数据采集器也正逐渐成为工控领域的应用热点。

目前国内外都已开发出了一些成熟的USB数据采集设备产品,可见基于USB的数据采集器具有广阔的应用前景,因此本课题的研究具有现实意义。

本文针对高速数据采集器的需要,设计了基于USB的数据采集器。

设计工作包括硬件设计和软件设计两部分,硬件部分本系统选用了ATMEL公司的单片机AT89C5131作为微控制器,负责接收由AD转换得到的数字量数据,并通过其内置的USB控制器实现单片机和PC机之间的USB数据通信。

AT89C5131是ATMEL公司推出一款新型带有USB微控制器的芯片。

有较快的处理速度和较大的存储容量,有在系统可编程的功能,是USB接口设计的理想选择。

2整体方案设计

2.1方案比较

方案一:

USB传输的主要特点是传输速度快,因此USB数据采集系统主要是应用于大量数据的高速采集。

实际应用中,往往同时需要对多个外设的多路数据进行采集,因而对数据传输的实时性要求较高,USB2.0的出现使这种高速数据传输已成为可能。

本系统在实际应用中的硬件设计框图如图1所示。

系统中外设1~外设n具有多路数据需要进行同步采集(数据信号可能包括电压、电流、声音、图像等各种模拟信号),因而需要选用能对多路数据进行同步采样的AD转换器将这些模拟信号转换为数字信号。

该芯片能对最多8路模拟输入信号进行同步AD转换,且分辨率达到14位,完全能满足对多路数据同步采集的要求。

转换得到的数据送入主控制器,再通过USB控制器芯片使这些数据可通过USB2.0的高速传输送到PC机中。

控制器芯片可选择位数较高(16位32位)的MCUDSP,从而能满足多路并行数据的输入。

在此方案中USB控制芯片选用AT89C5131单片机芯片,它是ATMEL公司的。

AT89C5131为内置USB控制器的8位单片机,定位于计算机和工业USB系统中

图1硬件设计框图

方案二:

基于USB接口的数据采集系统硬件部分由多路开关、AD转换器、微控制器、USB接口芯片、主机组成。

运用的芯片为AT89C52。

系统中的多路开关和AD采用传统方法设计,微控制器和USB接口芯片分别采用ATMEL的AT89C52和Philips公司的PDUSBD12实现.AT89C52的ALE和D12的ALE相接,表示采用单独地址和数据总线配置。

USB设备固件程序采用单片机C语言来写,用户通过主机应用程序调用WindowsAPI函数,将请求下发到驱动程序,由驱动程序构造USB,通过USBD类,下发到微控制器。

微控制器根据USB接口芯片触发的中断类型和用户传来的命令,进入到相应的中断服务程序进行数据采集。

经过AD转换后再重新打包由USB接口芯片通过USB接口发送给主机,从而完成整个采集过程.。

2.2方案选择

两方案的不同在于方案一选用的USB控制芯片为AT89C5131,方案二选用的USB控制芯片为AT89C52。

方案一的软件设计包括固件设计、USB初始化、中断处理程序、请求处理程序、配置请求、AD转换数据程序、USBDI与USB驱动程序等模块组成。

方案二的软件设计流程图如图2所示。

图2方案二软件流程图

在本次课程设计中我们选用的是方案一,用AT89C5131为USB的控制芯片。

选用此方案主要是由于AT89C5131为一款我们不太熟悉的51系列单片机,我们可以通过这次课程设计来学习一下,接受更多的知识。

3单元模块设计

3.1元器件选择

在本次设计中我们选用的USB控制芯片为AT89C5131,除此之外还要用到ADC0809、74HC393、非门芯片74LS00、反相器芯片74LS04、AT28C64、74HC573这些器件。

3.2特殊元器件介绍

3.2.1AT89C5131介绍

AT89C5131是ATMEL公司的一款带USB控制器的8位闪存单片机。

下面对AT89C5131单片机的主要管脚进行介绍其引脚分布图如图3所示:

P0、P1、P2、P3和P4口是IO信号引脚。

P0口可作为地址数据复用总线,作为地址总线时,P0.0~P0.7上为低8位地址;P1.0~P1.7则与键盘接口信号KIN0~KIN7复用,同时P1.0和P1.1又与T2和T2EX复用,P1.2则与可编程计数器队列的外部时钟输入ECI复用,P1.3~P1.7与捕获外部信号输入或比较外部信号输出CEX0~CEX4复用。

P2口也可以作为地址线,此时P2.0~P2.7上输出高8位地址。

P3口各引脚均具有第二功能,P3.0和P3.1与串行信号接口RXD和TXD复用,P3.2和P3.3与外部触发脉冲和复用,P3.4和P3.5与定时器计数器T0和T1复用,P3.6和P3.7则与写信号和读信号复用;另外P3.3~P3.7还与驱动LED输出引脚LED0~LED3复用。

P4.0~P4.1分别与TWI串行时钟SCL和TWI串行数据SDA复用。

D+和D-分别是USB总线正信号IO引脚和负信号IO引脚。

本系统中利用D+和D-两个引脚与USB端口的两根数据线D+和D-相连,从而实现USB数据通信。

RST是单片机复位信号引脚,ALE是地址锁存使能信号引脚,只有当读写外部程序存储器和使用MOVX指令时该引脚信号有效。

引脚接高电平时芯片是从内部存储器寻址的,必须接低电平才能使芯片从外部程序存储器起始地址0000h开始寻址。

图3AT89C5131引脚分布图

3.2.2ADC0809介绍

ADC0809采用28脚双列直插式封装,其引脚功能说明如下:

IN0~IN7:

8路输入通道的模拟量输入端口。

START、ALE:

START为AD转换启动控制端口,ALE为地址锁存控制信号端口。

这两个端口可连在一起,通过软件输入一个正脉冲即可启动AD转换。

EOC、OE:

EOC为转换结束信号脉冲输出端口,OE为输出允许控制端口。

这两个端口也可连在一起,表示AD转换结束。

当OE端的电平由低变高,打开三态输出锁存器,将转换得到的数字量输出到数据总线上。

VREF(+)、VREF(-)、VCC、GND:

VREF(+)和VREF(-)为参考电压输入端;VCC为主电源输入端,GND为接地端。

一般VREF(+)与VCC连接在一起,VREF(-)与GND连接在一起。

CLK:

时钟输入端。

ADDA、ADDB、ADDC:

8路模拟开关的3位地址选通输入端,用来选择对应的输入通道。

ADC0809的工作时序如图8所示。

其中tWE为最小ALE脉宽,典型值100ns;tD为模拟开关延时,典型值:

1μs;tWS为最小启动脉宽,典型值:

100ns;tEOC为转换结束延时,最大为8个时钟周期:

+2μs;tC为转换时间,典型值:

100μs。

图4ADC0809工作时序

由图4可看出,当送入启动信号START后,EOC有一段时间保持高电平,表示上一次AD转换结束,在实际应用中容易引起误控。

因此,启动转换后在软件上应延迟一段时间(大于tEOC)之后再进行查询或开中断。

3.3单元模块功能介绍

此系统设计包括的单元模块有AT89C5131USB接口电路、AD转换电路、外接存储接口电路、系统外围电路等。

3.3.1AT89C5131USB接口电路

AT89C5131单片机具有USB接口功能,因而可直接与USB端口连接,通过USB总线与PC机通信。

具体USB接口电路如图5所示。

AT89C5131的USB总线正信号IO引脚D+和负信号IO引脚D-分别与USB端口J1的两根数据线D+和D-相连(电阻R2和R3为可选电阻),再通过USB连接线即可与PC机的USB接口相连进行通信。

USB总线参考电压引脚VREF通过1.5KΩ的电阻R1与D+相连,从而可以实现软件断开功能。

本系统中PC机作为USB主机,而AT89C5131作为USB设备,因而D+和D-无需连接下拉电阻。

单片机的模拟地引脚AVSS和数字地引脚VSS均接地;而模拟电源引脚AVDD和数字电源引脚则连接正电源VCC,给单片机提供工作所需电源。

图5中还给出了一些其他相关引脚的连接:

UCAP引脚与一个外部电容连接来给USB提供电源。

PLLF引脚作为PLL(锁相环)低通滤波器的输入引脚,需要与一个RC网络(图中为R5和C3)构成的低通滤波器相连。

XTAL1和XTAL2则分别作为反馈元件的片外石英晶体Y1及电容C4和C5一起构成一个自激振荡器,产生单片机工作所需的时钟信号。

图5

3.3.2AD转换接口电路

多路输入信号需通过AD转换器转换为数字信号才能进入单片机,本系统选择的AD转换器是8位逐次逼近式AD转换器ADC0809。

该AD转换器是一种单片CMOS器件,包括8位模数转换器、8通道多路转换器和与微处理器兼容的控制逻辑。

ADC0809片内带有锁存功能的8路模拟多路开关,可对8路0~5V输入模拟电压信号分时进行转换。

AD转换接口电路如图6所示。

单片机的P0口可分时输出低8位地址和数据,为了把地址信息分离出来保存,需外加地址锁存器(图中为74HC373),并由单片机的地址锁存允许信号ALE的下降沿将地址信息锁存到地址锁存器中。

经锁存器锁存后的低三位地址Q0~Q2分别与ADC0809的地址译码引脚ADDA~ADDC连接,以选通IN0~IN7中的一个通道。

ADC0809与单片机数据总线P0.0~P0.7相连。

ADC0809片内无时钟,图6中利用双4位二进制计数器74HC393给ADC080929提供时钟输入。

单片机的ALE引脚与74HC393的时钟输入端CLK相连,计数器的一路输出Q1与ADC0809的时钟输入端CLOCK相连,ALE引脚的时钟频率经74HC393二分频后提供给ADC0809作为时钟信号。

单片机P2.7引脚作为ADC0809的片选信号。

图6中使用了4与非门芯片74ALS00和6反相器芯片74ALS04来控制ADC0809的启动和输出转换数据。

当P2.7=1,(P3.6)=0时,74ALS04的6号脚输出为高电平,将其与ADC0809的转换启动端口START和地址锁存端口ALE连接,在锁存通道地址的同时启动AD转换。

当P2.7=1,(P3.7)=0时,74ALS04的8号脚输出为高电平,将其与ADC0809的输出允许引脚OE相连,从而允许将转换得到的数字量数据输出到数据总线上。

ADC0809的正参考电压输入端VREF(+)和主电源输入端VCC都接+5V电源,而负参考电压输入端VREF(-)和接地端GND均接地。

图6

3.3.3外接存储器接口电路

AT28C64与单片机AT89C5131的连接电如图7所示。

单片机P0口输出的地址信息经地址锁存器74HC373锁存后送入存储器AT28C64的低8位地址线A0~A7;同时P0口又AT28C64的数据线IO0~IO7相连,可分时输出存储的数据。

单片机的P2口作为高位地址线,由于P2口输出具有锁存的功能,因此不必加地址锁存器,可直接与AT28C64的高5位地址线A8~A12相连。

单片机引脚与AT28C64的片选端和输出允许端相连,从而选中外部存储器并允许从中读取程序指令。

单片机的接低电平,使单片机执行外部程序程序存储器中的程序。

换图7外接存储器接口电路

3.3.4系统外围电路模块

系统的外围电路包括:

电源电路、复位电路、时钟产生电路、PLL配置电路。

(1)电源电路。

本系统中所有器件均可使用+5V电源电压,本系统未使用外部电源,直接利用USB总线供电。

(2)复位电路。

单片机AT89C5131的引脚是复位信号输入引脚,本设计采用手动复位方式,通过按键S1来进行复位操作,复位电路如图8所示。

(3)时钟产生电路。

单片机AT89C5131的时钟发生器包括一个内部振荡器和一个锁相环(PLL),所有外部设备以及CPU的内核工作所需的时钟信号都是由时钟发生器产生的。

外接晶振的频率本系统选择12MHz;两个电容则通常选择20pF~30pF左右。

(4)PLL配置电路。

AT89C5131的锁相环(PLL)是用来产生和外部低频时钟(外围设备时钟)同步的内部高频时钟(USB时钟)的,即USB接口所需的时钟信号是由PLL产生的。

PLL的内部结构如图6所示,可以看出是一个闭环结构。

其中N3:

0和R3:

0均位于PLLDIV寄存器,各为4位。

内部振荡器的参考时钟经过N分频和反馈回来的USB时钟经过R分频进入PFLD进行比较并产生合适的输出信号。

PLLCON寄存器的PLLEN位用来使能时钟信号的产生;而当PLL被锁定时,PLLCON寄存器的PLOCK位则会被置位,此时输出的时钟信号才是稳定的信号。

PLLF是PLL的低通滤波器连接引脚,需要与一个RC网络相连接,电路连接如图8所示。

图8PLL结构内部结构框图

4软件设计

本系统在软件设计上主要包括两部分:

固件程序设计、USB设备驱动程序设计,以下将分别进行介绍。

4.1固件程序设计

固件是整个USB数据采集系统中设备程序设计的重要部分,固件程序的主要功能是让主机(PC机)可以检测和识别USB设备,一般包括两项任务:

(1)实现设备配置并将配置信息告知主机,为主机和设备之间的通信做好准备;

(2)根据用户的特定需求,实现对外围设备的具体控制。

固件程序设计流程图如图9所示

图9固件程序流程图

由图可知固件设计包括以下几个方面:

(1)系统上电复位和初始化。

首先通过调用USB初始化函数usbtask_init()完成USB控制器的使能、PLL时钟的配置、控制端点0的复位以及其它状态变量的初始化;再通过调用端点使能函数usb_ep_init()完成系统使用的USB端点的配置和复位。

(2)USB设备的枚举。

USB控制器和USB端点完成初始化工作后,固件就会开始对设备的枚举过程;当端点0收到SETUP包后,就可以调用枚举函数usb_enumeration_process()完成对USB设备的枚举,从而主机可获得设备的配置信息并对设备进行配置和分配地址。

(3)数据采集过程。

当配置的OUT端点收到主机发出的数据采集指令后,先设置好采样频率并选择采样通道,然后即可对选中通道的数据进行AD转换;转换完成后将数据送入配置的IN端点,当收到主机发出的SETUP包后,即可将数据发送给主机。

本系统固件设计使用了定时器中断。

通过固件程序的执行,当USB设备(AT89C5131)连接到主机上时,主机能发现并识别新设备,然后建立连接并完成主机与设备间的数据传输任务。

4.2USB设备驱动程序设计

驱动程序是操作系统中控制和连接硬件的关键模块,它给连接到计算机的硬件设备提供软件接口。

本系统中主机通过USB接口与设备的通信也需要通过USB驱动程序来实现,Windows虽然提供了多种USB设备的驱动程序,但并没有具体针对数据采集系统的驱动程序,因此本系统需要针对特定的设备(AT89C5131)来编制USB设备驱动程序。

Microsoft为Windows定义了设备驱动程序的模型,USB设备驱动程序也必须遵循该驱动程序模型,即WDM分层驱动程序模型。

USB驱动程序也分为USB总线驱动程序和USB功能(设备)驱动程序,前者由操作系统提供,负责与实际硬件打交道;后者需要设备开发者编写,不对实际的硬件进行操作。

USB功能驱动程序通过创建和发送URB(USBRequestBlock)的方式,把命令传递给Windows操作系统所提供的USB总线驱动程序,由总线驱动来完成与硬件的直接交互。

USB设备驱动程序使用USB驱动程序接口(USBDI)将URB提交到总线驱动程序就可完成硬件操作。

USBDI位于USB设备驱动程序与USB驱动程序栈之间,为开发人员提供实现两者之间通信的接口函数。

USB驱动程序接口与USB驱动程序栈的结构如图10所示。

图10USBDI与USB驱动程序栈

Windows的驱动程序开发软件有很多,通常采用的是WindowsDDK(DeviceDevelopmentKit)。

DDK是Microsoft公司提供的驱动程序开发工具,使用DDK直接开发驱动程序属于从底层开发做起,开发难度较大。

为了方便驱动程序开发,目前许多第三方软件厂商提供了各种各样的生成工具,如Compuware公司的DriverStudio就是其中效率较高的开发工具,它能够在几分钟之内生成高质量的USB驱动程序。

本系统的USB驱动程序使用DriverWorks开发,DriverWorks本身包含在DriverStudio软件中,它只是对DDK例程函数调用的C++封装。

因此使用DriverWorks开发驱动程序需要安装DDK和VisualC++6.0,并在VisualC++6.0的开发环境中进行驱动的编写和编译。

在进行USB驱动程序开发之前首先要明确USB设备的配置和驱动程序实现的功能。

在本系统中,共用到三个USB端点:

控制端点0、BULKIN端点1和BULKOUT端点2;而驱动程序的主要功能是实现对输入和输出端点的读写操作。

明确以上信息后,就可通过DriverWorks的程序向导生成可以完成对USB设备BULK类型端点进行读写的驱动程序工程文件了。

然后需要在VisualC++6.0的环境中对生成的驱动程序进行编译生成.sys文件,并且对自动生成的INF安装文件进行适当的修改即可完成驱动程序的安装使用。

5结论

本文实现了基于USB的数据采集,USB作为一种传输速率高、即插即用、支持热插拔的通用串行总线,其应用领域正变得越来越广泛。

本系统选用的单片机AT89C5131及其内置USB控制器;然后分别对USB接口电路、AD转换电路、外接存储器接口电路、以及系统外围电路作了详细的说明。

本系统硬件电路原理图见附录1并且在硬件设计的基础上进行软件设计,使系统可以进行正常的数据采集。

本文针对传统数据采集系统的缺点,充分利用USB总线的优越性,设计了基于USB的数据采集系统。

系统软件设计部分包括固件程序设计、USB驱动程序设计和应用程序设计三大部分。

固件程序设计使用C51编写,文中给出了固件程序的主要代码和流程图,通过固件程序实现了USB设备的枚举以及数据的采集。

USB驱动程序由DriverWorks生成框架,并经过适当的修改形成本系统中USB设备的驱动程序,PC机安装驱动程序后USB设备能正常与主机通信。

应用程序使用VC++开发,并使用MFC可制作USB数据采集系统的界面。

不过使用ADC0809芯片仅仅是为了样机实现的方便,由于该AD转换器只能对最多8路数据进行分时AD转换,因此还不能达到真正意义上高速采集的要求。

为了提高采集速度和采样精度,在实际应用系统中应该使用能对多路数据进行同步转换并且分辨率更高的AD转换器,即需要选择与USB高速传输相匹配的高速器件。

参考文献

[1]谢兰英.基于USB数据采集系统的研究与设计[D].

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2