8051模数转换

Analog-to-Digital Conversion ADC
A/D转换即是将模拟量信号转换成数字量信号,读入单片机内部以便进行处理
采集信号,不可控,干扰信号影响

ADC0809

ADC0809 是 8 通道 8 位的逐次逼近式模数转换芯片,芯片工作电压为 5V;

内部由八路模拟量开关、通道地址锁存译码电路、8 位 A/D 转换器和三态数据输出锁存器组成,能够分时对 8 路模拟量信号进行转换;

每一通道能够输入的模拟量电压范围单极性为 0-5V,双极性为 ±5V
每一通道的转换时间为 100us,转换精度为 8 位

转换输出具有三态数据输出锁存功能,便于各种微处理器进行接口

外部引脚图:
freecompress-Pasted image 20240620125306.png

IN0IN7:8路模拟量开关模块输入端
可以分别连接8路单端的模拟电压信号
芯片内部只有一个8位的AD转换器,因此,输入的八路信号只能分时选通

D0D7 : 数据输出端
AD转换后数据输出, 可以与计算机数据线相连

通道的选择由地址锁存与译码电路实现
A B C :通道选通端
三个选通信号的不同电平组合,用于选择不同的通道

ALE :地址锁存允许信号
高电平有效
信号有效时,A、B、C三位地址信号被锁存,译码选通对应模拟通道

START:启动转换信号
正脉冲启动启动 AD 转换

EOC : 转换结束信号
一次AD转换结束变为高电平

OE : 输出允许信号
AD 转换结束后,数据送入三态输出锁存器,三态锁存器的输出控制端由 OE 控制
高电平打开,使得数据可以被读取

内部结构图:
freecompress-Pasted image 20240620125144.png

时序图

freecompress-Pasted image 20240604210942.png

工作控制逻辑
选道:ALE产生正脉冲,锁存ADDA、ADDB、ADDC通道选通端数据,通过内部地址译码,选通对应通道

启动:START端口输入正脉冲信号,启动AD转换

判别:AD转换启动后,EOC从高电平变成低电平,

读数:向OE引脚输入正脉冲,打开三态输出锁存器,内部数据输出到D0—D7数据总线

#include<reg51.h>
#include<intrins.h>
#define ADCDATA P1   //端口定义
sbit START=P2^0;
sbit ALE=P2^0;
sbit EOC=P2^1;
sbit OE=P2^2;
unsigned int getdata;

void main(void)
{
	while(1)
	{
		START=1;
		_nop_(); _nop_(); _nop_();
		START =0;
		_nop_(); _nop_(); _nop_();
		While(!EOC);
		OE=1;
		getdata=ADCDATA;
	}
}
getdata=getdata*1.0/255*5000

j3 = x / 1000
计算x的千位数,即将x除以1000并取整数部分。

j2 = x % 1000 / 100
计算x的百位数,首先计算x除以1000的余数(即去掉千位后的数值),然后除以100取整数部分。

j1 = x % 100 / 10
计算x的十位数,首先计算去掉千位和百位后的数值,然后除以10取整数部分。

j0 = x % 10
计算x的个位数,即去掉千位、百位和十位后的余数。