ADC0809的使用

一、前言介绍

  • 使用ADC0809对一个模拟电压进行转换
  • 转换后的电压使用数码管显示出来

二、ADC0809的介绍

1、ADC0809简介
  • ADC0809是采用COMS工艺制造的双列直插式单片8位A/D转换器。分辨率8位,精度7位,带8个模拟量输入通道,有通道地址译码锁存器,输出带三态数据锁存器。启动信号为脉冲启动方式,最大可调节误差为±1LSB。
  • ADC0809内部没有时钟电路,故CLK时钟需由外部输入,fclk允许范围为500kHz-1MHz,典型值为640kHz。每通道的转换需要66~73个时钟脉冲,大约100-110us。(转换时间)工作温度范围为-40℃—+85℃。功耗为15mW,输入电压范围为0–5V,单一+5V电源供电。
2、ADC0809的引脚介绍

ADC0809

  • IN0~IN7 : 8路模拟量输入端
  • D0~D7:8位数字量输出端
  • ADDA、ADDC、ADDC:3位地址输入线,用于选择8路模拟通道中的一路,选择情况见表。
  • ALE:地址锁存允许信号,输入,高电平有效
  • START:A/D转换启动信号,输入,高电平有效
  • EOC:A/D转换结束信号,输出。当启动转换时,高引脚为低电平,当A/D结束转换时,高引脚输出高电平。
  • OE:数据输出允许信号,输入,高电平有效。当转换结束后,如果从该引脚输入高电平,则打开输出三态门,输出锁存器的数据从D0~D7送出。
  • CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ.
  • REF+、REF-:基准电压输入端。
  • VCC:电源,接+5V;
  • GND:地。
3、地址码与输入通道的对应关系地址码#### 4、ADC0809的时序图

时序图

5、ADC0809的工作流程
  1. 输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器译码从8路模拟通道中选通一路模拟量送到比较器。
  2. 送START一高脉冲,START的上升沿使逐次逼近寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。
  3. 送START一高脉冲,START的上升沿使逐次逼近寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。
  4. 当CPU执行一读数据指令,使OE为高电平,则从输出端D0~D1读出数据。

三、proteus仿真图

仿真图

四、程序

#include<reg52.h>
unsigned char code dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char dispbuf[4];
unsigned int i;
unsigned int j;
unsigned char getdata;
unsigned int temp;
unsigned int temp1;
unsigned char count;
unsigned char d;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;
sbit P34=P3^4;
sbit P35=P3^5;
sbit P36=P3^6;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P17=P1^7;
void TimeInitial();
void Delay(unsigned int i);

void TimeInitial()
{ 
	 TMOD=0x10;
	 TH1=(65536-200)/256;
	 TL1=(65536-200)%256;
	 EA=1;
	 ET1=1;
	 TR1=1;
}

void Delay(unsigned int i)
{
  unsigned int j;
  for(;i>0;i--)
  {
  for(j=0;j<125;j++)
  {;}
  }
}
 
void Display()
{ 
	   P1=dispbitcode[dispbuf[3]];
		 P20=0;
		 P21=1;
		 P22=1;
		 P23=1;
		 Delay(10);
		 P1=0x00;
		 P1=dispbitcode[dispbuf[2]];
		 P17=1;
		 P20=1;
		 P21=0;
		 P22=1;
		 P23=1;
		 Delay(10); 
		 P1=0x00;
		 P1=dispbitcode[dispbuf[1]];
		 P20=1;
		 P21=1;
		 P22=0;
		 P23=1;
		 Delay(10);
		 P1=0x00;
		 P1=dispbitcode[dispbuf[0]];
		 P20=1;
		 P21=1;
		 P22=1;
		 P23=0;
		 Delay(10);
		 P1=0x00;
}
void main()
{
		TimeInitial();
		while(1)
		{
				ST=0;
				OE=0;
				ST=1;
				ST=0;
				P34=0;
				P35=0;
				P36=0;
				while(EOC==0);
				OE=1;
				getdata=P0;
				OE=0;
				temp=getdata*1.0/255*500;
				dispbuf[0]=temp%10;
				dispbuf[1]=temp/10%10;
				dispbuf[2]=temp/100%10;
				dispbuf[3]=temp/1000;
				Display();
		}
}

void t1(void) interrupt 3 using 0
 {
  TH1=(65536-200)/256;
  TL1=(65536-200)%256;
  CLK=~CLK;
  }

### ADC0809 使用教程 #### 1. 硬件连接说明 ADC0809 是一款常用的8位模数转换器,具有8个模拟输入通道。为了正确使用此器件,硬件连接至关重要。具体来说: - **电源和接地**:VCC 接 +5V 电源,GND 接地。 - **时钟信号 (CLK)**:由于内部无时钟发生器,需外加时钟源,建议频率不超过640kHz[^2]。 - **基准电压设置**:REF+ 和 REF- 分别接入合适的正负基准电压,通常情况下可以将 REF+ 设定为 +5V 而 REF- 设置成 GND。 #### 2. 控制逻辑解析 对于控制线的操作如下所示: - 地址选通 ALE 高电平有效,用来锁存地址信息; - 启动 START 上升沿触发一次新的 AD 转换过程; - 结束标志 EOC,在转换完成后会变为高电平通知主机读取数据; - 输出使能 OE 当其处于高电平时允许 D0-D7 数据总线上输出已转换好的数值[^3]。 #### 3. 初始化配置流程 初始化阶段主要涉及对各条控制线路状态的设定以及准备就绪的状态监测。例如通过编程来实现这些功能之前要确保所有必要的外围设备都已经正确安装并连好线缆。 ```c void init_ADC(void){ // 假设这里已经定义好了相应的IO口操作函数 set_ALE_high(); // 锁存地址 delay_us(1); // 小延时等待稳定 clear_START_signal();// 清除之前的启动命令 } ``` #### 4. 进行单次测量 一旦完成了上述准备工作之后就可以着手于实际的数据采集环节了。下面给出了一种简单的方法来进行单次采样的代码片段。 ```c uint8_t read_channel(uint8_t channel){ select_channel(channel); // 根据所需选择对应的模拟输入通道 start_conversion(); // 发送开始指令给ADC模块 while(!is_EOC_set()); // 循环检测直到转换完成 enable_output(); // 打开三态缓冲区以便获取结果 uint8_t result = get_data_bus();// 获取当前D0-D7上的值作为最终返回的结果 disable_output(); // 关闭三态缓冲区防止干扰其他操作 return result; } ``` #### 5. 多次采样平均化处理 考虑到噪声等因素的影响,可以通过多次重复同样的动作并将得到的结果累加以提高信噪比从而获得更精确可靠的测量值[^1]。 ```python def average_sampling(times=10): sum_value = 0 for _ in range(times): value = read_channel(specific_channel_number) sum_value += value avg_result = sum_value / times return avg_result ```
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值