AD数模转化AD0809

数模转化 AD0809

AD转换就是模数转换,就是把模拟信号转换成数字信号。D/A转换是把数字量转变成模拟的器件。模拟信号只有通过A/D转化为数字信号后才能用软件进行处理,这一切都是通过A/D转换器(ADC)来实现的。与模数转换相对应的是数模转换,数模转换是模数转换的逆过程。
一、ad0809实例图
AD数模转化AD0809_第1张图片
(1)ADC0809 的内部逻辑结构
由下图可知,ADC0809 由一个 8 路模拟开关、一个地址锁存与译码器、一个 A/D 转换器和一
个三态输出锁存器组成。多路开关可选通 8 个模拟通道,允许 8 路模拟量分时输入,共用
A/D 转换器进行转换。三态输出锁器用于锁存 A/D 转换完的数字量,当 OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。

AD数模转化AD0809_第2张图片

AD性能指标:分辨率
分辨率是指输入数字量的最低有效位(LSB)发生变化时,所对应的输出模拟量(电压或电流)的变化量。它反映了输出模拟量的最小变化值。
分辨率与输入数字量的位数有确定的关系,可以表示成FS /(2^n)。FS表示满量程输入值,n为二进制位数。对于5V的满量程,采用8位的DAC时,分辨率为5V/256=19.5mV;当采用12位的DAC时,分辨率则为5V/4096=1.22mV。显然,位数越多分辨率就越高
二、AD各个引脚结构:

D7-D0:8 位数字量输出引脚。
IN0-IN7:8 位模拟量输入引脚。
VCC:+5V 工作电压。
GND:地。
REF(+):参考电压正端。
REF(-):参考电压负端。
START:A/D 转换启动信号输入端。
ALE:地址锁存允许信号输入端。
(以上两种信号用于启动 A/D 转换).
EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:输出允许控制端,用以打开三态数据输出锁存器。
CLK:时钟信号输入端(一般为 500KHz)。
AD数模转化AD0809_第3张图片

ALE 为地址锁存允许输入线,高电平有效。当 ALE 线为高电平时,地址锁存与译码器将 A, B,C 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。
A,B 和 C 为地址输入线,用于选通 IN0-IN7 上的一路模拟量输入。
AD数模转化AD0809_第4张图片

ST 为转换启动信号。当 ST 上跳沿时,所有内部寄存器清零;下跳沿时,开始进行 A/D 转换;在转换期间,ST 应保持低电平。EOC 为转换结束信号。当 EOC 为高电平时,表明转换结束;
否则,表明正在进行 A/D 转换。OE 为输出允许信号,用于控制三条输出锁存器向单片机输出
转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0 为
数字量输出线。
CLK 为时钟输入信号线。因 ADC0809 的内部没有时钟电路,所需时钟信号必须由外界提供,通常
使用频率为 500KHZ,
VREF(+),VREF(-)为参考电压输入
ADC0809 应用说明:
(1). ADC0809 内部带有输出锁存器,可以与 AT89S51 单片机直接相连。
(2). 初始化时,使 ST 和 OE 信号全为低电平。
(3). 送要转换的哪一通道的地址到 A,B,C 端口上。
(4). 在 ST 端给出一个至少有 100ns 宽的正脉冲信号。
(5). 是否转换完毕,我们根据 EOC 信号来判断。
(6). 当 EOC 变为高电平时,这时给 OE 为高电平,转换的数据就输出给单片机了。
程序示例:

//ADC0809读取信息
uchar ADC0809()
{
 uchar temp_=0x00;
 //初始化高阻太
 TMOD=0X01;     //定时器中断0
 CLK=0;      //脉冲信号初始值为0
 TH0=(65536-2)/256;   //定时时间高八位初值
 TL0=(65536-2)%256;   //定时时间低八位初值
 EA=1;      //开CPU中断
 ET0=1;      //开T/C0中断
 TR0=1;
 OE=0;
 //转化初始化
 ST=0;
 //开始转换
 ST=1;
 ST=0;
 //外部中断等待AD转换结束
 while(EOC==0)
 {
 //读取转换的AD值
 OE=1; 
 }
 temp_=Data_ADC0809;   //将P1的数据读出到temp_
 OE=0; 
 return temp_;    //将数据返回
}
/*************************************************************************
                                CLK振荡信号 
**************************************************************************/
void timer0( ) interrupt 1 //定时器0工作方式1
{
TH0=(65536-2)/256;   //重装计数初值
TL0=(65536-2)%256;   //重装计数初值
CLK=!CLK;     //取反
}

你可能感兴趣的:(51单片机,AD数模转化,AD0809,单片机,嵌入式)