This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

【原创】ADC0808

ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0808是ADC0809的简化版本,功能基本相同。一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。

(1)IN0~IN7——8路模拟输入,通过3根地址译码线ADDA、ADDB、ADDC来选通一路。 
(2)D7~D0——A/D转换后的数据输出端,为三态可控输出,故可直接和微处理器数据线连接。8位排列顺序是D7为最高位,D0为最低位。 
(3)ADDA、ADDB、ADDC——模拟通道选择地址信号,ADDA为低位,ADDC为高位。地址信号与选中通道对应关系如表11.3所示。 
(4)VR(+)、VR(-)——正、负参考电压输入端,用于提供片内DAC电阻网络的基准电压。在单极性输入时,VR(+)=5V,VR(-)=0V;双极性输入时,VR(+)、VR(-)分别接正、负极性的参考电压。 

工作时序

以前做的仿真

sbit START=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLOCK=P3^3;
void delayms(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=50;j>0;j--);
}
void init_interrupt() //初始化定时计数器
{
TMOD=0x02;
TH0=0xfb;
TL0=0xfb;
EA=1;
ET0=1;
TR0=1;
}
void timer_T0() interrupt 1 //定时器0中断函数,产生100KHz时钟频率
{
CLOCK=~CLOCK;
}