当前位置:文档之家› 10通道数据采集系统设计(单片机应用)课案

10通道数据采集系统设计(单片机应用)课案

10通道数据采集系统设计
10通道数据采集系统设计
一、设计任务
实现10通道模拟信号的采集
二、设计要求
1、采样频率200HZ,位数12位
2、设计实现模拟/数字转换的方法,给出转换速度
三、设计原理
1、AD574A芯片介绍
AD574A 是单片高速12 位逐次比较型A/D 转换器,内置双极性电路构成的混合集成转换显片,具有外接元件少,功耗低,精度高等特点,并且具有自动校零和自动极性转换功能,只需外接少量的阻容件即可构成一个完整的A/D 转换器,其主要功能特性如下:
分辨率:12 位
非线性误差:小于±1/2LBS 或±1LBS
转换速率:25us
模拟电压输入范围:0—10V 和0—20V,0—±5V 和0—±10V 两档四种
电源电压:±15V 和5V
数据输出格式:12 位/8 位
芯片工作模式:全速工作模式和单一工作模式
主要功能引脚介绍如下:
AC:模拟地
DC:数字地
CS:片选信号,低电平有效
CE:片使能,高电平有效
R/C:读/启动信号,高电平读数据,低转换
12/8:数据格式选择,高电平12位数据同时
有效,低电平时第一次输出高8位,第二次输出
低四位有效,中四位为零。

A0:内部寄存器控制输入端,在12/8接地的情况下,高电平时高8位数据有效,低电平时低4位有效,中间4位为零,高4位为高阻态;在R/C为低的情况下,高电平启动12位转换,低电平启动8为转换。

STS:工作状态输出端,高电平表示正在转换,低电平表示转换完毕
AD574和单片机的接口
在设计硬件电路时要十分注意的一点就是AD574的数据输出线与单片机数据总线的连接方式:应该将高8位DB4~DB11接到数据总线的D0~D7,低4位DB0~DB3接到数据总线的高4位D4~D7。

如果接错的话就不能读取正确的转换结果,而且还很容易烧坏芯片。

AD574A 的工作模式:如果需AD574A 工作于单一模式,只需将CE、12/8端接至
+5V 电源端, CS和A0接至0V,仅用R/C端来控制A/D 转换的启动和数据输出。

当RC=0 时,启动A/D 转换器,经25us 后STS=1,表明A/D 转换结束,此时将R/C置1,即可从
数据端读取数据。

AD574控制端标志意义:
AD574的接口电路
下图是8051 单片机与AD574A 的接口电路,其中还使用了三态锁存器74LS373 和
74LS00 与非门电路,逻辑控制信号由(CS、R/C和A0)有8051 的数据口P0 发出,并由三态锁存器74LS373 锁存到输出端Q0、Q1 和Q2 上,用于控制AD574A 的工作过程。

AD 转换器的数据输出也通过P0 数据总线连至8051,由于我们只使用了8 位数据口,12 位数据分两次读进8051,所以R/C接地。

当8051 的p3.0 查询到STS 端转换结束信号后,先将转换后的12 位A/D 数据的高8 位读进8051,然后再将低4 位读进8051。

这里不管AD574A 是处在启动、转换和输出结果,使能端CE 都必须为1,因此将8051 的写控制线WR和读控制线RD通过与非门74LS00 与AD574A 的使能端CE 相连。

2、74LS150芯片介绍
74LS150是一个16选1数据选择器(有选通输入端,反码输出)。

数据选择端(ABCD)按二进制译码,以从16个数据(E0---E15)中选取1个所需的数据。

只有在选通端STROBE为低电平时才可选择数据。

输出端W为反码数据。

引脚图:
引出端符号:
A、B、C、D 选择输入端
E0---E15 数据输入端
STROBE 选通输入端(低电平有效)
W 反码数据输出端
Y 数据输出端
功能图:
H=高电平;L=低电平;X=任意;E0—E15=对应的E端电平
3、74HC573芯片简介
74HC573是八进制3 态非反转透明锁存器为高性能硅门CMOS 器件。

SL74HC573 跟LS/AL573 的管脚一样。

器件的输入是和标准CMOS 输出兼容的;加上拉电阻,他们能和LS/ALSTTL 输出兼容。

当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。

当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。

×输出能直接接到CMOS,NMOS 和TTL 接口上
×操作电压范围:2.0V~6.0V
×低输入电流:1.0uA
×CMOS 器件的高噪声抵抗特性
管腿安排:见右图
功能表:
X=不用关心
Z=高阻抗
*最大值范围是指超过这个值,将损害器件。

操作最好在下面的推荐操作条件下:
额定功率的下降——PDIP:-10mW/℃,65℃~125℃
SOIC:-7 mW/℃,65℃~125℃
四、设计过程
1、本系统需要的控制比较简单,选用80c51单片机芯片进行控制。

2、由于输入是10通道模拟输入,12位精度数字输出。

所以选用的AD转换芯片必须至少有10个模拟输入通道,而且数字输出为12位。

考虑到芯片的价格与芯片结构复杂程度要便于设计的因素,本设计选用一通道模拟输入、12精度数字输出的AD574模数转换芯片,与16选1数据选择器74LS150搭配使用。

使用74LS150的16个输入通道中的10个通道即可,然后把选择的通道中的模拟输入量送到AD574。

3、由于12位数字输出需要分两次送到单片机,因此需要在AD574与单片机之间加数据锁存器,本设计选用74HC573锁存器。

4、74LS150的通道选择由单片机的P1口的P1.0-P1.3控制,0000对应0通道,0001对应1通道,……,1001对应9通道。

共使用10个通道。

具体原理见设计原理的74LS150芯片介绍部分。

5、软件流程图
主程序:
AD转换子程序:
6、软件程序
#include<absacc.h>
#include<intrins.h>
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define ADCOM XBYTE[0xff7c] //控制寄存器地址
#define ADLO XBYTE[0xff7f] //数据字节低4位地址
#define ADHI XBYTE[0xff7d] //数据字节高8位地址
sbit r = P3^7; //p3.7口
sbit x = P3^6; //p3.6口
sbit adbusy = P3^0; //p3.0口
uint ad574(void) //AD转换子程序
{
r = 0;
x = 0;
ADCOM = 0; //启动转换
while(adbusy == 0);
return((uint)(ADHI<<4)+(ADLO&0x0f)); //返回转换数据
}
main() //主程序
{
uint idata result[10]; //定义数据存储数组
uchar ad_now = 0; //通道号
while(1)
{
P1 = ad_now; //通过p1选择通道
_nop_();
result[ad_now] = ad574(); //取转换数据
ad_now++; //通道号加一
if(ad_now == 11) ad_now = 0; //返回0通道
}
//数据通过10通道选择器进入AD574(AD574是一个12位数模转换期间,内置采样保持电路,无需附加外围电路),通过单片机控制数据选择器的控制端口,选择进行AD转换的通道,进行循环采集转换,并存入数组result[10]
五、系统误差分析与补充说明
1、AD574采样频率大于200HZ,且满足12位精度转换,达到本实验要求。

由于先高8位送入锁存器锁存,再传送低4位,因此会对转换速度有一定的影响。

2、AD574转换速率为25us,一个采样周期延迟25us。

故每个采样数据转化后比原信号延迟25us。

3、本设计AD574采用10V IN口,模拟信号输入电压幅值小于10V,1LBS<2.44mv。

故转化误差小于2.44mv。

4、由于单片机80C51的存储单元非常少,采集转化后的数据量很大,因此用80C51来存储采集转化后的数据没有实用性。

本设计程序中仅保存了当前采集的一个数据。

因此在数据存储这部分设计中,只是给出了一种方法。

若要把本系统应用于实际时,可以给单片机添加扩展存储单元,把采集的数据存放在该扩展存储器中。

但现在一般更多的应用是把本系统与PC机相连接使用,应用PC机的存储与显示系统,此时本问题就不用单独考虑了。

六、参考文献
1、刘乐善等《微型计算机接口技术及应用》华中科技大学出版社;
2、李广弟等《单片机基础》北京航空航天大学出版社;
3、80C51单片机技术资料、
AD574模数转换芯片技术资料、
74LS150十六选一数据选择器技术资料、
74HC573锁存器技术资料。

相关主题