ADC0809与单片机的控制接口
ADC0809的引脚
IN0~IN7:8路模拟量输入端
D0~D7:8位数字量输出端
ADDA、ADDB、ADDC:3位地址输入线,用于选择8路模拟通道中的一路。
ADDC | ADDB | ADDA | 选择通道 |
---|---|---|---|
0 | 0 | 0 | IN0 |
0 | 0 | 1 | IN1 |
0 | 1 | 0 | IN2 |
0 | 1 | 1 | IN3 |
1 | 0 | 0 | IN4 |
1 | 0 | 1 | IN5 |
1 | 1 | 0 | IN6 |
1 | 1 | 1 | IN7 |
ALE:地址锁存允许信号,输入,由低电平变高电平锁存。
START:A/D转换启动信号,输入,由高电平变低电平启动。
EOC:A/D转换结束信号,输出。当启动转换是,该引脚为低电平,当A/D转换结束时,该引脚输出高电平。
OE:数据输出允许信号,输入,高电平有效。当转换结束后,如果从该引脚输入高电平,则打开输出三态门,输出锁存器的数据从D0~D7送出。
CLK:时钟脉冲输入端。要求时钟频率不高于640kHZ。
REF+、REF-:基准电压输入端。
VCC:电源,接+5V电源。
GND:地。
ADC0809的工作流程809的引脚
转换输出过程
- 输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器译码从8路模拟通道中选通一路模拟量送到比较器。
- 送START一高脉冲,START的上升沿使逐次逼近寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。
- 当转换结束时,转换的结果送入到输出三态锁存器,并使EOC信号回到高电平,通知CPU已转换结束。
- 当CPU执行一读数据指令使OE为高电平,则从输出端D0~D1读出数据。
ADC0809与MCS-51单片机的接口
向地址满足A15=0的端口进行写操作时,即可产生ALS/START信号所需要的上升沿,写操作结束后,即可产下降沿
软件编程
设系统为一个8路模拟量输入的巡回检测系统,使中断方式采样数据,把采样转换所得的数字量按序存于片内RAM中。采样完一遍后停止采集。
#include <reg51.h>
#include <absacc.h> //定义绝对地址访问
#define uchar unsigned char
uchar data x[8]; //定义8个单元的数组,存放结果
uchar xdata *ADadr; //定义指向通道的执政
uchai i = 0;
void main(void){
ITO = 1; //初始化
EXO = 1;
EA = 1;
i = 0;
Adadr = 0x7FF8; //指针指向通道0
*ADadr = i; //启动通道0转换
for(;;){;} //等待中断
}
void int_adc(void) interrupt 0{ //中断函数
x[i] = *ADadr; //接受当前通道转换结果
i++;
ADadr++; //指向下一个通道
if(i<8){
*ADadr = i; //8个通道未转换完,启动下一个通道返回
}else{
EA = 0;
Ex0 = 0; //8个通道转换完,关中断返回
}
}