当前位置:文档之家› 51单片机数据采集系统

51单片机数据采集系统

课程设计报告书设计任务书一、设计任务1一秒钟采集一次。

2把INO口采集的电压值放入30H单元中。

3做出原理图。

4画出流程图并写出所要运行的程序。

二、设计方案及工作原理方案: 1. 采用8051和ADC0809构成一个8通道数据采集系统。

2. 能够顺序采集各个通道的信号。

3. 采集信号的动态范围:0~5V。

4. 每个通道的采样速率:100 SPS。

5.在面包板上完成电路,将采样数据送入单片机20h~27h存储单元。

6.编写相应的单片机采集程序,到达规定的性能。

工作原理:通过一个A/D转换器循环采样模拟电压,每隔一定时间去采样一次,一次按顺序采样信号。

A/D转换器芯片AD0809将采样到的模拟信号转换为数字信号,转换完成后,CPU读取数据转换结果,并将结果送入外设即CRT/LED显示,显示电压路数和数据值。

目录第一章系统设计要求和解决方案第二章硬件系统第三章软件系统第四章实现的功能第五章缺点及可能的解决方法第六章心得体会附录一参考文献附录二硬件原理图附录三程序流程图第一章系统设计要求和解决方案根据系统基本要求,将本系统划分为如下几个部分:●信号调理电路●8路模拟信号的产生与A/D转换器●发送端的数据采集与传输控制器●人机通道的接口电路●数据传输接口电路数据采集与传输系统一般由信号调理电路,多路开关,采样保持电路,A/D,单片机,电平转换接口,接收端(单片机、PC或其它设备)组成。

系统框图如图1-1所示1.1 信号采集分析被测电压为0~5V 直流电压,可通过电位器调节产生。

1.1.1 信号采集多路数据采集系统多采用共享数据采集通道的结构形式。

数据采集方式选择程序控制数据采集。

程序控制数据采集,由硬件和软件两部分组成。

,据不同的采集需要,在程序存储器中,存放若干种信号采集程序,选择相应的采集程序进行采集工作,还可通过编新的程序,以满足不同采样任务的要求。

如图1-3所示。

程序控制数据采集的采样通道地址可随意选择,控制多路传输门开启的通道地址码由存储器中读出的指令确定。

即改变存储器中的指令内容便可改变通道地址。

由于顺序控制数据采集方式缺乏通用性和灵活性,所以本设计中选用程序控制数据采集方式。

采集多路模拟信号时,一般用多路模拟开关巡回检测的方式,即一种数据采集的方式。

利用多路开关(MUX )让多个被测对象共用同一个采集通道,这就是多通道数据采集系统的实质。

当采集高速信号时,A/D 转换器前端还需加采样/保持(S/H)电路。

待测量一般不能直接被转换成数字量,通常要进行放大、特性补偿、滤波等环节的预处理。

被测信号往往因为幅值较小,而且可能还含有多余的高频分量等原因,不能直接送给A/D 转换器,需对其进行必要的处理,即信号调理。

如对信号进行放大、衰减、滤波等。

通常希望输入到A/D 转换器的信号能接近A/D 转换器的满量程以保证转换精度,因此在直流电流电源输出端与A/D 转换器之间应接入放大器以满足要求。

本题要求中的被测量为0~5V 直流信号,由于输出电压比较大,满足A/D 转换输入的要求,故可省去放大器,而将电源输出直接连接至A/D 转换器输入端。

多路数据采集输入通道的结构图1-4所示。

图1-3 程序控制数据采集原理 图1-1 一般系统框图图1-4 多路数据采集输入通道结构ADC0809是TI公司生产的8位逐次逼近式模数转换器,包括一个8位的逼近型的ADC部分,并提供一个8通道的模拟多路开关和联合寻址逻辑,为模拟通道的设计提供了很大的方便。

用它可直接将8个单端模拟信号输入,分时进行A/D转换,在多点巡回监测、过程控制等领域中使用非常广泛,所以本设计中选用该芯片作为A/D转换电路的核心。

1.2.1 单片机系统分析1.复位电路单片机在开机时都需要复位,以便中央处理器CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。

51的RST引脚是复位信号的输入端。

复位电平是高电平有效,持续时间要有24个时钟周期以上。

本系统中单片机时钟频率为6MHz则复位脉冲至少应为4us。

在MCS-51单片机系列芯片中,用8051或8751芯片可以构成最小系统。

因为8051和8751是片内有ROM/EPROM的单片机,用这种芯片构成的单片及最小系统简单、可靠。

8051构成的最小系统特点:●受集成度所限,只能用于小型控制单元。

●有可供用户使用的大量的I/O口线。

●仅有芯片内部的存储器,故存储器的容量有限。

●8051的应用软件要依靠半导体掩膜技术植入,适于在大批量生产的应用系统中使用。

第二章硬件系统2.1 信号调理电路信号调理的任务将被测对象的输出信号变换成计算机要求的输入信号。

对于多通道数据采集系统的输入通道,设置多路选择开关,可降低硬件开销。

如图2-1所示。

为避免小信号通过模拟开关造成较大的附加误差,在传感器输出信号过小时,每个通道应设前置放大环节(本文可不加以考虑)。

图2-1 信号调理过程2.2 数据采集电路把连续变化量变成离散量的过程称为量化,也可理解为信号的采样。

把以一定时间间隔T 逐点采集连续的模拟信号,并保持一个时间t ,使被采集的信号变成时间上离散、幅值等于采样时刻该信号瞬时值的一组方波序列信号,即采样信号。

2 ADC0809内部功能与引脚介绍分辨率和精度在第一章中已作了相应的计算和分析。

ADC0809八位逐次逼近式A /D 转换器是一种单片CMOS 器件,包括8位模拟转换器、8通道转换开关和与微处理器兼容的控制逻辑。

8路转换开关能直接连通8个单端模拟信号中的任何一个。

其内部结构如图2-2所示。

1.ADC0809主要性能◆ 逐次比较型◆ CMOS 工艺制造◆ 单电源供电◆ 无需零点和满刻度调整◆ 具有三态锁存输出缓冲器,输出与TTL 兼容◆ 易与各种微控制器接口◆ 具有锁存控制的8路模拟开关◆ 分辨率:8位◆ 功耗:15mW◆ 最大不可调误差小于±1LSB (最低有效位)◆ 转换时间(500CLK f KHz =)128us◆ 转换精度:0.4%±◆ ADC0809没有内部时钟,必须由外部提供,其范围为10~1280kHz 。

典型时钟频率为640kHz2.引脚排列及各引脚的功能,引脚排列如图2-3所示。

图2-2 ADC0809内部结构各引脚的功能如下:IN0~IN7:8D0~D7:8位转三态输出,D7是最高位,D0是最低位。

A、B、C:通道CBA=000时,CBA=111时,ALE:地址锁存信号在上升沿处把A、B、C 的状态锁存到内部的多路开关的地址锁存器中,从而选通8路模拟信号中的某一路。

START:启动转换信号输入端。

从START端输入一个正脉冲,其下降沿启动ADC0809开始转换。

脉冲宽度应不小于100~200ns。

EOC:转换结束信号输出端。

启动A/D转换时它自动变为低电平。

OE:输出允许端。

CLK:时钟输入端。

ADC0809的典型时钟频率为640kHz,转换时间约为100μs。

REF(-)、REF(+):参考电压输入端。

ADC0809的参考电压为+5V。

VCC、GND:供电电源端。

ADC0809使用+5V单一电源供电。

当ALE为高电平时,通道地址输入到地址锁存器中,下降沿将地址锁存,并译码。

在START上升沿时,所有的内部寄存器清零,在下降沿时,开始进行A/D转换,此期间START应保持低电平。

在START下降沿后10us左右,转换结束信号变为低电平,EOC为低电平时,表示正在转换,为高电平时,表示转换结束。

OE为低电平时,D0~D7为高阻状态,OE为高电平时,允许转换结果输出。

2.2.3 ADC0809与MCS-51系列单片机的接口方法ADC0809与8051单片机的硬件接口有3种形式,分别是查询方式、中断方式和延时等待方式,本题中选用中断接口方式。

由于ADC0809无片内时钟,时钟信号可由单片机的ALE信号经D触发器二分频后获得。

ALE引脚得脉冲频率是8051时钟频率的1/6。

该题目中单片机时钟频率采用6MHz,则ALE输出的频率是1MHz,二分频后为500Hz,符合ADC0809对频率的要求。

由于ADC0809内部设有地址锁存器,所以通道地址由P0口的低3位直接与ADC0809的A、B、C相连。

通道基本地址为0000H~0007H。

其对应关系如表2-1所示。

表2-1 0809输入通道地址1 0 1 IN51 1 0 IN61 1 1 IN7控制信号:将P2.7作为片选信号,在启动A/D转换时,由单片机的写信号和P2.7控制ADC的地址锁存和启动转换。

由于ALE和START连在一起,因此ADC0809在锁存通道地址的同时也启动转换。

在读取转换结果时,用单片机的读信号RD和P2.7引脚经或非门后,产生正脉冲作为OE信号,用一打开三态输出锁存器。

START信号和OE信号的逻辑表达式为当8051通过对0000H~0007H(基本地址)中的某个口地址进行一次写操作,即可启动相应通道的A/D转换;当转换结束后,ADC0809的EOC端向8051发出中断申请信号;8051通过对0000H~0007H中的某个口地址进行一次读操作,即可得到转换结果。

第3章软件系统ORG 0000hMOV r1,#20h ;取数20h送 r1中MOV r2,#8h ; channel number! ;取数8h送r2中MOV TL0,#0h ;启动 TL0MOV TH0,#0b8h ;设置定时初值THO;MOV tmod,#1h ;选择工作方式1clr et0 ;清零setb tr0 ;启动T0工作MOV scon,#40h ;设置串口工作方式1MOV dptr,#78ffh ;取源数据地址送dptr loop: MOV a,r2 ;将r2中的数据送累加器a中SUBB a,r1 ;将r1中的数据与a中数据进位减法运算jnz loop2 ;结果不为零则转loop2MOV r1,#0h ;对r1清零MOV dptr,#78ffh ;取源数据地址送dptrMOV r1,#0h ;对r1清零MOV dptr,#78ffh ;取源数据地址送dptrloop1: jnb tf0,loop1 ;定时器无溢出则转入loop1clr tf0 ;对tf0清零MOV TL0,#0h ;对tlo清零MOV TH0,#0b8h ;设置定时初值TH0loop2: MOVx @dptr,a ;start A/D ;启动模数转换器loop3: jb p1.0,loop3 ;p1.0为1则转loop3loop4: jnb p1.0,loop4 ;check flag ;p1.0为0则转loop4MOVx a,@dptr ;读取结果MOV @r1,a ;保存结果inc dph ; ;选取下一个inc r1 ;计数器减1ljmp loop ;返回到loopend整个系统软件设计分为两个部分,作为主控的PC端的软件设计及作为数据采集器的单片机终端节点的软件设计。

相关主题