专注电子技术学习与研究
当前位置:单片机教程网 >> 常用芯片 >> 浏览文章

A/D转换器adc0809与单片机接口功能电路程序

作者:佚名   来源:不详   点击数:  更新时间:2008年02月20日   【字体:

adc0809芯片管脚功能介绍如下图,两种形式的封装均有:

adc0809管脚图

 


 adc0809内部功能电路

 ADC0809是CMOS单片型逐次逼近式A/D转换器,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近
        寄存器、三态输出锁存器等其它一些电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作。输入输出与TTL兼容。

ADC0809A/D转换芯片引脚功能
ADC0809芯片有28条引脚,采用双列直插式封装
IN0~IN7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路.
ALE:地址锁存允许信号,输入,高电平有效。
START: A/D转换启动信号,输入,高电平有效。
EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。
REF(+)、REF(-):基准电压。
Vcc:电源,单一+5V。
GND:地。
 



   ADC0809内部电路原理图及引脚图 

下面介绍一个ADC0809和单片机接口的c51程序:
#include <reg51.h>
#include <absacc.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
#define ADC0809 XBYTE[0x0B000] //P2.6选通   
float sum=0,fjg;
uint i,j,*q,*p,sd=5;
sbit p1_0=P1^0;
void wait(uint n);
void main(void)  ------adc0809程序开始
{ j=0;
    TMOD=0X01;//设置定时器0
    TH0=0XFC;//定时时间设为1ms
    TL0=0X18;
      EA=0;//先关中断
      EA=1;//开总中断
      ET0=1;
      //TR0=1;
    for(; ;)
    {
      if(j=20){
do{}while(!TF0);
q=0x30;
for(i=0;i<20;i++) //转化后的数值求均方根
{sum=sum+(*q)*(*q);
q++;
}
    sum=sum/20;
fjg=sqrt(sum);
if(fjg>sd)          //判断是否跳闸
p1_0=1;
j=0;
}}
}
void power(void)
{ uchar x;
for(;;)
        {ADC0809=0x01;
        wait(1000);
        x=ADC0809;
        P2=x;
        }
}

void wait(uint n)
{ uint i,j;
    for(i=0;i<n;i++)
    for(j=0;j<100;j++);
}
timer0()interrupt 1 using 1
{*p=ADC0809;
p++;
TH0=0XFC;
TL0=0X18;
TR0=1;
j++;
}        

  ADC0809A/D转换芯片的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上.

关闭窗口