proteus中 基于STC89C51的ADC0809模数转换仿真

芯片介绍与分析

***ADC0809 是采用CMOS 工艺制造的双列直插式单片8 位A/D 转换器。(分辨率) 分辨率8 位,精度7 位,带8 个模拟量输入通道,有通道地址译码锁存器,输出带三态数据锁存器。启动信号为脉冲启动方式,最大可调节误差为±1LSB。(转换精度)
ADC0809 内部没有时钟电路,故CLK 时钟需由外部输入,fclk允许范围为500kHz1MHz,典型值为640kHz。每通道的转换需6673 个时钟脉冲,大约100110μs。(转换时间)工作温度范围为-40℃+85℃。功耗为15mW,输入电压范围为0~5V,单一+5V 电源供电。(量程)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
芯片技术手册在此:
链接:https://pan.baidu.com/s/12TranI_RCz2MKPWw_-D72A
提取码:f47i
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Analyze:


1. 芯片总特征


proteus中 基于STC89C51的ADC0809模数转换仿真_第1张图片


2. 芯片引脚结构


proteus中 基于STC89C51的ADC0809模数转换仿真_第2张图片
IN0~IN7:8路模拟量输入端。
D0~D7:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选择8路模拟通道中的一路。
ALE:地址锁存允许信号,输入,高电平有效。
START:A/D转换启动信号,输入,高电平有效。
EOC:A/D转换结束信号,输出。当启动转换时,该引脚为低电平,当A/D转换结束时,该线脚输出高电平。
OE:数据输出允许信号,输入,高电平有效。当转换结束后,如果从该引脚输入高电平,则打开输出三态门,输出锁存器的数据从D0~D7送出。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ.
REF+、REF-:基准电压输入端。
(至此,需要注意此芯片需要外部提供时钟,且在500khz到640khz之间)


3. 芯片工作过程

芯片通道选择真值表:
proteus中 基于STC89C51的ADC0809模数转换仿真_第3张图片
芯片时序图:
proteus中 基于STC89C51的ADC0809模数转换仿真_第4张图片


由以上adc0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。


4. 芯片使用


4.1 Proteus仿真

proteus中 基于STC89C51的ADC0809模数转换仿真_第5张图片


4.2 软件设计


芯片对应时序驱动(非完整程序)

int OutBit=0;		//芯片输出的数据
////////////////////////////////////////////////////////////////////////
//引脚定义
sbit add_a=P2^4;  //通道选通引脚
sbit add_b=P2^5;
sbit add_c=P2^6;
					   
sbit clk=P1^5;		//芯片功能引脚	  
sbit EOC=P1^7;			 
sbit OE=P1^4;			 
sbit start=P1^6;		 
sbit ALE=P2^7;	
////////////////////////////////////////////////////////////////////////

	if(EOC==1){	  	//循环检测电压
			 OE=0; 
			 start=0; 
			 delayms(1);
			 start=1;       //开始ADC转换
			 start=0;	
			 while(!EOC);
			 OE=1;          //输出允许
			 OutBit=P3;    //AD转换完成,读取值
			 OE=0;			//关闭输出
			 }

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

芯片完整驱动程序下载地址(带数码管显示):

你可能感兴趣的:(开发杂记)