毕业设计论文Word格式.docx
- 文档编号:16992381
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:28
- 大小:1.62MB
毕业设计论文Word格式.docx
《毕业设计论文Word格式.docx》由会员分享,可在线阅读,更多相关《毕业设计论文Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
数据采集系统的结构形式有两种一种是微型计算机数据采集系统,一种是集散型数据采集系统。
无论是那种数据采集系统,都有一个将模拟信号转换为数字信号的数据采集卡,它的精度与速度直接影响到整个数据采集系统的性能,是整个系统的核心。
根据不同的应用条件和被采集数据的不同特点,数据采集卡的种类数不胜数。
按与计算机通信的方式不同可以有串口的、USB的、PCI的和ISA的数据采集卡;
按采集速度分可以分为低速的和高速的;
按精度可以分为8位、16位和24位的;
按应用环境可以分为通用型、隔离型等。
这篇文章介绍了一款自己开发制作的小型数据采集卡,采用串口与计算机通信,是一个低速、8位的通用型数据采集卡。
虽然速度低、精度低,但是微型计算机数据采集系统的各个要素均完整,可以在要求不高的场所使用,也可以作为实验和学习之用。
这款数据采集卡均采用市场上十分常见的芯片,A/D转换器采用ADC0809,8位转换精度,可以转换8路0—5V的模拟电压信号。
单片机采用AT89S52,可以实现在线编程,缩短开发时间。
与计算机的通信采用串口,由于只作为实验用不需要远距离传输,所以采用RS-232C标准。
在计算机上应用MSComm控件接收串口数据,MSComm控件全称为MicrosoftCommunicationsControl,是Microsoft公司提供的用于简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
为了配合此数据采集卡,在VC++平台上开发了一款上位机虚拟示波器软件。
仿照真实示波器的外观,制作了示波器的面板,将从串口接收到的数据经过坐标变换成为示波器面板上对应的点显示出来。
根据具体应用的环境,扩展适当的前置调理电路,这款数据采集卡就可以配合传感器进行实际应用了。
第1章系统规划
1.1课题分析
本设计要求最终设计制作一个基于单片机的小型数据采集卡,并且利用C++语言编写上位机的虚拟示波器软件。
这就要求必须掌握单片机的主要功能和其外围电路的设计方法;
要求能正确设计和使用模数转换电路、正确设计采集电路和串行通信电路;
还要求熟悉C++语言的编程方法。
1.2系统整体规划
整个系统分为两个部分:
硬件电路部分和上位机软件部分。
(1)硬件电路部分
硬件电路部分要完成的功能有模数转换、采集和串行口传送。
模数转换需要A/D转换器,串行口传输必须满足标准协议,整个硬件电路部分围绕单片机构成。
硬件电路部分的结构如图1-1所示,由A/D转换器转换外部信号为数据,然后由单片机采集并处理,最后通过串行口传送给计算机。
图1-1硬件电路结构图
(2)上位机软件部分
上位机软件部分要完成的功能是接收串行口的数据,并把这些数据转化为对应的坐标,最后显示在示波器软件的面板上形成完整的波形,整个流程如图1-2所示。
图1-2上位机软件部分的流程图
清楚了整个系统的组成后,就分别完成硬件电路部分和上位机软件部分,分别实现各自的功能,最后做好两部分的接口,完成整个系统。
第2章硬件电路设计与仿真
2.1仿真软件简介
(1)Keil
Keil软件是目前最流行的开发MCS-51系列单片机的软件,近年来各仿真器厂商纷纷宣布全面支持Keil。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
(2)Proteus
Proteus是目前非常好的模拟单片机及其外围器件的工具。
可以仿真51系列、AVR,PIC等常用的单片机及其外围电路(如LCD,RAM,ROM,键盘,马达,LED,AD/DA,部分SPI器件,部分IIC器件,...)其实proteus与multisim
比较类似,只不过它可以仿真MCU。
在仿真和程序调试时,不再和Keil一样关心某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。
对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。
这两款软件配合使用可以把软件和硬件一起仿真,缩短开发时间。
2.2数据采集电路设计与仿真
2.2.1模数转换
(1)A/D转换器与D/A转换器
在微机的各种接口中,完成外设信号到微机所需数字信号转换的,称为模拟∕数字转换(A/D转换)器;
完成微机输出数字信号到外设所需信号转换的,称为数字∕模拟转换(D/A转换)器。
D/A转换器(DigitaltoAnalogConverter)是一种能把数字量转换成模拟量的电子器件;
A/D转换器(AnalogtoDigitalConverter)则相反,它能把模拟量转换成相应的数字量。
在微机控制系统中,经常要用到A/D和D/A转换器,如图2-1所示。
图2-1微机测控系统框图
(2)A/D转换器概述
AD转换器用于实现模拟量→数字量的转换,按转换原理可分为4种,即:
计数式A/D转换器、双积分式A/D转换器、逐次逼近式A/D转换器和并行式A/D转换器。
目前最常用的是双积分式A/D转换器和逐次逼近式A/D转换器。
双积分式A/D转换器的主要优点是转换精度高,抗干扰性能好,价格便宜。
其缺点是转换速度较慢,因此,这种转换器主要用于速度要求不高的场合。
常用的产品有ICL7106/ICL7107/ICL7126系列、MC1443以及ICL7135等。
另一种常用的A/D转换器是逐次逼近式的,逐次逼近式A/D转换器是一种速度较快,精度较高的转换器,其转换时间大约在几μs到几百μs之间。
通常使用的逐次逼近式典型A/D转换器芯片有:
(a)ADC0801--ADC0805型8位MOS型A/D转换器(美国国家半导体公司产品)。
(b)ADC0808/0809型8位MOS型A/D转换器。
(c)ADC0816/0817。
这类产品除输入通道数增加至16个以外,其它性能与ADC0808/0809型基本相同。
(3)典型A/D转换器芯片ADC0809
我采用的是ADC0809,主要原因在于ADC0809十分常见,资料比较多,所以应用起来方便。
ADC0809是典型的8位8通道逐次逼近式A/D转换器,采用CMOS工艺制造。
(a)内部结构
ADC0809由8路模拟开关、地址锁存与译码器、比较器、256电阻阶梯、树状开关、逐次逼近式寄存器SAR、控制电路和三态输出锁存器等组成,如图2-2所示。
图2-2ADC0809的内部逻辑结构图
(b)引脚定义
ADC0809有28个引脚,各引脚定义如图2-3所示。
对ADC0809主要信号引脚的功能说明如下:
IN0~IN7:
模拟量输入通道。
ADC0809对输入模拟量的要求主要有:
信号单极性,电压范围0~5V,若信号过小还需进行放大。
另外,在A/D转换过程中,模拟量输入的值不应变化太快,因此,对变化速度快的模拟量,在输入前应增加采样保持电路。
A、B、C:
地址线。
A为低位地址,C为高位地址,用于对模拟通道进行选择。
图2-3中的ADDA、ADDB和ADDC,其地址状态与通道相对应的关系见图2-4。
ALE:
地址锁存允许信号。
ALE上跳沿时,A、B、C地址状态送入地址锁存器中。
START:
转换启动信号。
START上跳沿时,所有内部寄存器清0;
START下降沿时,开始进行A/D转换;
在A/D转换期间,START应保持低电平。
D0~D7:
数据输出线。
为三态缓冲输出形式,可以和单片机的数据线直接相连。
OE:
输出允许信号。
用于控制三态输出锁存器向单片机输出转换得到的数据。
OE=0,输出数据线呈高电阻;
OE=1,输出转换得到的数据。
CLK:
时钟信号。
ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。
通常使用频率为500kHz的时钟信号。
EOC:
转换结束状态信号。
EOC=0,正在进行转换;
EOC=1,转换结束。
该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。
VCC:
+5V电源。
Vref:
参考电源。
参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。
其典型值为+5V(Vref(+)=+5V,Vref(-)=0V)
图2-3ADC0809的引脚图图2-4ADC0809通道选择表
(c)性能指标
A/D的性能指标是正确选择A/D芯片的基本依据,也是衡量A/D质量的关键问题。
A/D的性能指标很多,如分辨率、线性度、偏移误差、温度灵敏度和功耗等等。
ADC0809的分辨率:
8位,增益温度系数:
0.02%,功耗电量:
约为20Mw,单电源+5V供电,转换速度:
约100us。
2.2.2数据采集电路设计
数据采集电路部分主要是ADC0809和单片机AT89S52的接口,ADC0809内部有一个8位“三态输出锁存器”可以锁存A/D转换后的数字量,故它本身既可看作一种输入设备,也可以认为是并行I/O接口芯片。
因此,ADC0809可以直接和MCS-51接口,也可以通过像8255这样的其他接口芯片连接,在大多数情况下,都是直接相连的。
图2-5为ADC0809工作于查询方式的连接图。
可以查到ADC0809的工作时序图,见图2-6。
START和ALE互连可使ADC0809在接收模拟量路数地
图2-5ADC0809查询方式硬件接口
图2-6ADC0809工作时序图
址时启动工作。
START启动信号由单片机/WR和P2.7经或非门产生。
平时,START因P2.7上的高电平而封锁,当给START一个正脉冲(此时P2.7和/WR线上皆为低电平)启动ADC0809工作,ALE上正脉冲使ADDA、ADDB和ADDC上的地址得到锁存,以选中IN0—IN7中的一路模拟电压送入比较器。
显然单片机此时是把ADDA、ADDB和ADDC上的地址作为数据来处理的。
如果ADDA、ADDB和ADDC分别和P2.0、P2.1和P2.2相连,则是作为地址来处理的。
EOC虽然和/INT1连接,但是仍然是采用查询方式,EOC可以和其他任意未被使用的可以位寻址的引脚相连。
为了给OE线分配一个地址,图中把单片机/RD和P2.7经或非门后和OE相连。
平时让P2.7处于高电平,从而使OE处于低电平封锁状态。
当查询到EOC为高电平时,马上命令P2.7为低电平,从而使EOC变为高电平,打开三态输出锁存器,让CPU提取A/D转换后的数字量。
图中或非门采用74HC02,另外ALE端输出的时钟为单片机时钟的1/6,我采用的晶振为11.0592MHz,ALE端时钟为1843.2kHz,而ADC0809所需的时钟一般为500kHz,所以必须分频。
为了方便,我用D触发器74HC74给ALE进行4分频。
电路连接见图2-7。
由于Proteus软件里没有ADC0809的仿真库,所以我采用ADC0808,DAC0808和DAC0809相同,区别仅在于精度不同,前者为±
1/2LSB,后者为±
1LSB。
图2-7ADC0809与单片机的电路连接图
2.2.3数据采集电路仿真
为了能仿真图2-7的电路,必须给单片机中写入程序,这个工作我在Keil软件中完成。
打开Keil,建立一个新工程,选择单片机AT89S52。
将程序写入,并且要编译通过。
仿真前必须先设置晶振频率为11.0592,再将DEBUG选项设置为“USEPROTEUSDEBUG”,见图2-8。
Keil中本来没有这个选项,在安装Proteus后,可以通过查找资料,正确添加动态连接库,就可以实现这个功能。
这样Keil和Proteus就可以联机使用了,相当于将Keil中的程序写入到了Proteus里的单片机中。
图2-8设置DEBUG属性
图2-9Proteus下观察窗口显示的仿真结果
ADC0809可以采集8路信号,我设计了一个循环采集8路模拟信号的小程序来验证硬件电路连接的正确性。
我给ADC0809的8路分别施加不同的电压信号,IN0为0V,IN1为1V,IN2为2V,IN3为0V,IN4为0V,IN5为0V,IN6为5V,IN7为5V,进行测试。
运行之后,Proteus提供了观察存储器、各个寄存器和指定变量的观察窗口,可以在图2-9中看到画圈部分的值:
003366000000FFFF。
为什么会出现这样的结果呢?
ADC0809将REF(-)和REF(+)引脚电压之差分为256等分,REF(-)引脚电压对应为十六进制00,REF(+)引脚电压对应为十六进制FF,其他电压依次推算。
在电路中,REF(-)接地,REF(+)接+5V,所以0V对应00,1V对应33,2V对应66,5V对应FF。
所以可以看出,仿真的结果完全符合期望,这就验证了这个硬件连接电路的正确性。
2.3串行通信电路设计与仿真
2.3.1单片机串行通信
(1)串行通信的基本概念
单片机与外界进行信息交换称之为通信。
8051单片机的通信方式有两种,并行通信:
数据的各位同时发送或接收。
串行通信:
数据一位一位顺序发送或接收。
参看图2-10:
图2-10单片机通信
(a)串行通信的方式:
异步通信:
它用一个起始位表示字符的开始,用停止位表示字符的结束。
其每帧的格式如下:
在一个帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。
用这种格式表示字符,则字符可以一个接一个地传送。
在异步通信中,CPU与外设之间必须有两项规定,即字符格式和波特率。
字符格式的规定是双方能够在对同一种0和1的字符串理解成同一种意义。
原则上字符格式可以由通信的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII标准。
波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。
例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。
同步通信:
在同步通信中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间,所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。
由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。
(b)串行通信的制式:
在串行通信中,把通信接口只能发送或接收的单向传送方法叫单工传送;
而把数据在甲乙两机之间的双向传递,称之为双工传送。
在双工传送方式中又分为半双工传送和全双工传送。
半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。
(2)8051单片机的串行接口结构
8051串行接口是一个可编程的全双工串行通信接口。
它可用作异步通信方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工的8051多机系统也可以通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口。
8051单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界通信。
SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。
它们有相同名字和地址空间,但不会出现冲突,因为它们一个只能被CPU读出数据,一个只能被CPU写入数据。
(a)串行口控制寄存器SCON
它用于定义串行口的工作方式及实施接收和发送控制。
字节地址为98H,其各位定义如表2-1:
表2-1
D7
D6
D5
D4
D3
D2
D1
D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
(b)电源控制寄存器PCON
PCON是为了在CHMOS的80C51单片机上实现电源控制而附加的。
其中最高位是SMOD,有些工作方式中SMOD用于加倍波特率。
(c)串行口的工作方式
8051单片机的全双工串行口有4种工作方式,分别是方式0、方式1、方式2和方式3。
我所采用的是方式3,所以在这里只介绍方式3。
方式3为可设定波特率的11位UART方式。
它比方式1增加了一位可控为1或0的第9位数据。
输出:
发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。
它可作为多机通信中地址/数据信息的标志位,也可以作为数据的奇偶校验位。
当CPU执行一条数据写入SUBF的指令时,就启动发送器发送,发送一帧信息后,置位中断标志TI。
输入:
在REN=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。
在接收到附加的第9位数据后,当RI=0或者SM2=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;
否则信息丢失。
且不置位RI。
再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。
(3)串行口的通信波特率
因为定时器方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。
当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个频率的晶振就是这个道理。
表2-2列出了定时器T1工作于方式2常用波特率及初值。
表2-2
常用波特率
Fosc(MHZ)
SMOD
TH1初值
19200
11.0592
1
FDH
9600
4800
FAH
2400
11.0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文