ADC08098位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换相对于TLC549的精度要高些。本设计采用单路信号输入,将所测的电压值通过4联数码管显示出来。此设计电路涉及单片机最小系统,ADC0809,4联数码管,反相器,仿真电路图奉上:
当调节输入电压时,会相应动作
单片机程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, };
uchar Tcount;
uint wei3,wei2,wei1,wei0,num;
bit timerflag,ADflag;
sbit AD_end =P3^2;
sbit OE=P1^5;
sbit ST=P1^6;
sbit mc=P3^0;
void AD_INT() interrupt 0
{
ADflag=1;
//AD_end=1;
OE=1;
num=P2*19.61;
OE=0;
}
void T0_int()interrupt 1
{
TL0=0xb0;
TH0=0x3c;
if(--Tcount==0)
{
Tcount=20;
timerflag=1;
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
Tcount=20;
TMOD=0x01;
TL0=0xb0;
TH0=0x3c;
IT0=1;//
TR0=1;//start t0
ET0=1;//t0 enable
EX0=1;//int0 enable
EA=1;
while(1)
{
P1=P1&0xf0|0x07;
P0=table[wei0];
delay(1);
P1=P1&0xf0|0x0b;
P0=table[wei1];
delay(1);
P1=P1&0xf0|0x0d;
P0=table[wei2];
delay(1);
P1=P1&0xf0|0x0e;
P0=table[wei3]|0x80;
delay(1);
if(timerflag==1)
{
timerflag=0;
ADflag=0;
ST=1;
ST=0;
}
mc=1;
mc=0;
if(ADflag == 1)
{
wei3=num/1000;
wei2=num%1000/100;
wei1=num%100/10;
wei0=num%10;
ADflag=0;
}
}
}
全部资料51hei下载地址:
ADC0809-volt.zip
(150.97 KB, 下载次数: 69)
|