AC-DC/DC-DC转换
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。目前仅在单片机初学应用设计中较为常见。
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640KHz时),130μs(时钟为500KHz时)。
4)单个+5V电源供电。
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度。
7)低功耗,约15mW。
下图是一个ADC0809与8051的一个接口电路图。
由图可知
0809 ADDA、ADDB、ADDC引脚与单片机P1.O-P1.2引脚相连; 0809 D0~D7引脚与单片机P1引脚相连;
0809 CLK引脚与单片机ALE引脚通过分频期连接;
0809 ALE与START引脚与单片机/WR、P2.7引脚逻辑相连; 0809 OE 引脚与单片机/RD、P2.7引脚逻辑相连; 0809 EOC引脚与单片机INTO引脚逻辑相连;
0809 REF+引脚接+5V电压REF-接地。表示转化范围为(0-5V)
设接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内RAM的30H~37H单元中。采样完一遍后停止采集。 汇编语言编程:
ORG 0003H
LJMP INT0
ORG 0100H ;主程序
MOV R0,#30H ;设立数据存储区指针
MOV R2,#08H ;设置8路采样计数值
SETB IT0 ;设置外部中断0为边沿触发方式
SETB EA ;CPU开放中断
SETB EX0 ;允许外部中断0中断
MOV DPTR,#0000H ;送入口地址并指向IN0
LOOP: MOVX @DPTR,A ;启动A/D转换,A的值无意义
HERE: SJMP HERE ;等待中断
ORG 0200H ;中断服务程序
INT0: MOVX A,@DPTR ;读取转换后的数字量
MOV @R0,A ;存入片内RAM单元
INC DPTR ;指向下一模拟通道
INC R0 ;指向下一个数据存储单元
DJNZ R2,NEXT ;8路未转换完,则继续
CLR EA ;已转换完,则关中断
CLR EX0 ;禁止外部中断0中断
RETI ;中断返回
NEXT: MOVX @DPTR,A ;再次启动A/D转换
RETI ;中断返回
C语言编程:
#include 《reg51.h》
#include 《absacc.h》 //定义绝对地址访问
#define uchar unsigned char
#define IN0 XBYTE[0x0000] //定义IN0为通道0的地址
static uchar data x[8]; //定义8个单元的数组,存放结果
uchar xdata *ad_adr; //定义指向通道的指针
uchar i=0;
void main(void)
{
IT0=1; //初始化
EX0=1;
EA=1;
i=0;
ad_adr=&IN0; //指针指向通道0
*ad_adr=i; //启动通道0转换
for (;;) {;} //等待中断 }
void int_adc(void) interrupt 0 //中断函数
{
x[0]=*ad_adr; //接收当前通道转换结果
i++;
ad_adr++; //指向下一个通道 if (i《8)
{
*ad_adr=i; //8个通道未转换完,启动下一个通道返回
}
else
{
EA=0;EX0=0; //8个通道转换完,关中断返回
}
}
全部0条评论
快来发表一下你的评论吧 !