adc0809的使用

ADC0809说明

针对本课题的需要及多方面综合考虑,本设计中采用ADC0809 芯片作为控制电路中的模数转化芯片。ADC0809是含8位A/D转换器、8路多路开关,以及与微型计算机兼容的控制逻辑的CMOS组件,其转换方法为逐次逼近型,精度是1LSB。在A/D转换器内部有一个高阻斩波稳定比较器,一个带模拟开关树组的256电阻分压器,以及一个逐次逼近型寄存器。8路的模拟开关的通/断由地址锁存器和译码器控制,可以在8个通道中任意访问一个单边的模拟信号。其原理图框图,如图A所示

 

                图A  ADC0809原理图

这种器件无须进行零位和满量程调整。由于多路开关的地址输入部分能够进行锁存和译码,而且其三态TTL输出也可以锁存,所以易于与微型计算机接口。

从图3-6可以看出,ADC0809由两部分组成。第一部分为8通道多路模拟开关,其基本原理与CD4051类似,控制C、B、A和地址锁存允许端子,可使其中一个通道被选中。第二部分为一个完整的逐次逼近型A/D转换器,它由比较器、控制逻辑、数字量输出锁存缓冲器、逐次逼近型寄存器及开关树组和256R梯型电阻网络组成,由后两种电路(开关型树组和256R梯型电阻)组成D/A转换器。控制逻辑用来控制逐次逼近型寄存器从高位到低位逐次取“1”,然后将此数字量送到开关树组,以控制开关K7    —K0   是否与参考电平相连。参考电平经256R电阻网络输出一个模拟电压Vc    ,Vc   与输入模拟量Vx   在比较器中进行比较。当Vc   >Vx    时,该位Di   =0;Vc   >=Vx   ,则Di   =1且一保持到比较结束。照此处理,从D7-D0    比较8次,逐次逼近型寄存器中的数字量,即与模拟量Vx    所相当的数字量等值。此数字量送入后存于锁存器,并同时发出转换结束信号[23]。

ADC0809的引脚功能如下:

IN0~IN7:8路模拟量输入端。

START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。

EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平),表示A/D转换完毕。此信号可用做A/D是否转换完毕的检测信号,或向CPU申请中断的信号。

OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

CLOCK:实时时钟,可通过外接RC电路改变时钟频率。

ALE:地址锁存允许信号,输入,高电平有效。当ALE为高电平时,允许C、B、A所示的通道被选中,并把该通道的模拟量接入A/D转换器。

A、B、C:3位地址输入线,用于选通8路模拟输入中的一路 C为最高位,A为最低位。

   D7—D0:数字量输出端

REF(+)、REF(-):参考电压端子。用以提供D/A转换器权电阻的标准电平。对于一般单极性模拟量输入信号,REF(+)=+5V、REF(-)=0V。

Vcc:电源端子,接+5V。

GND:接地端。

由于ADC0809 设计时考虑到若干模/数变换技术的长处而且成本低,所以该芯片广泛应用于过程控制、微处理器输入通道控制的接口电路等。

### 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 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值