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和单片机接口的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输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上.