8051模数转换
Analog-to-Digital Conversion ADC
A/D转换即是将模拟量信号转换成数字量信号,读入单片机内部以便进行处理
采集信号,不可控,干扰信号影响
ADC0809
ADC0809 是 8 通道 8 位的逐次逼近式模数转换芯片,芯片工作电压为 5V;
内部由八路模拟量开关、通道地址锁存译码电路、8 位 A/D 转换器和三态数据输出锁存器组成,能够分时对 8 路模拟量信号进行转换;
每一通道能够输入的模拟量电压范围单极性为 0-5V,双极性为
每一通道的转换时间为 100us,转换精度为 8 位
转换输出具有三态数据输出锁存功能,便于各种微处理器进行接口
外部引脚图:
IN0
— IN7
:8路模拟量开关模块输入端
可以分别连接8路单端的模拟电压信号
芯片内部只有一个8位的AD转换器,因此,输入的八路信号只能分时选通
D0
— D7
: 数据输出端
AD转换后数据输出, 可以与计算机数据线相连
通道的选择由地址锁存与译码电路实现
A
B
C
:通道选通端
三个选通信号的不同电平组合,用于选择不同的通道
ALE
:地址锁存允许信号
高电平有效
信号有效时,A、B、C三位地址信号被锁存,译码选通对应模拟通道
START
:启动转换信号
正脉冲启动启动 AD 转换
EOC
: 转换结束信号
一次AD转换结束变为高电平
OE
: 输出允许信号
AD 转换结束后,数据送入三态输出锁存器,三态锁存器的输出控制端由 OE 控制
高电平打开,使得数据可以被读取
内部结构图:
时序图:
工作控制逻辑
选道:ALE产生正脉冲,锁存ADDA、ADDB、ADDC通道选通端数据,通过内部地址译码,选通对应通道
启动:START端口输入正脉冲信号,启动AD转换
判别:AD转换启动后,EOC从高电平变成低电平,
- 在AD转换过程中,EOC保持低电平
- 转换结束,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的个位数,即去掉千位、百位和十位后的余数。