STC学习:ADC

介绍
将模拟电子信号转换成数字信号的电路,称为模数转换器,简称A/D转换器或ADC。同理,将数字信号转换成模拟信号的电路称为数模转换器,简称D/A转换器或DAC

1.逼近式ADC原理

ADC步骤

(1)在将模拟量转化为数字量的过程中,一般需要经过采样、量化和编码三个步骤

(2)由于模拟信号在时间上是连续的,而A/D转换的过程是需要时间的,所以不可能把模拟信号的每一个瞬间值都转换成数字量,只能在连续变化的模拟量上接一定的时间规律取出与之对应的瞬间值,并对该瞬间值做一个量化标定,将标定的结果以数字的形式输出,从而实现从模拟量到数字量的转换。
在这里插入图片描述
固有量化误差:±LSB/2
ADC的分辨率:LSB = FSR/(2n-1),其中FSR表示参考值

ADC结构:STC15F2K60S2单片机ADC由多路选择开关、比较器、逐次比较寄存器、10位DAC、转换结果寄存器(ADC_RES和ADC_RESL)以及ADC控制寄存器ADC_CONTR构成
在这里插入图片描述

核心部分:电压比较器、逐次比较寄存器、10位DAC

举例:下图为8位逐次逼近,集散AD编码D7~D0(过程类似用天平,先放大砝码,再放小砝码)
在这里插入图片描述

2.ADC控制寄存器与应用编程

与STC系列单片机ADC相关的寄存器包含:

符号描述
P1ASF选择P1.X口作为模拟功能A/D的使用
ADC_CONTRADC控制寄存器
ADC_RES控制ADC结果存储格式
ADC_RESL控制ADC结果存储格式
ADRJ位于寄存器CLK_DIV/PCON中,用于控制ADC转换结果存放位置
IE中断允许寄存器
IP中断优先级控制寄存器

AD_CONTR控制寄存器

寄存器格式:

SFR namebitB7B6B5B4B3B2B1B0
ADC_CONTRnameADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS2

寄存器功能:

bitfunction
ADC_POWER电源控制位,0:关闭ADC电源;1:打开ADC电源
ADC_START控制ADC开始,建议打开电源后适当延时(1ms),稳定后在启动A/D转换
SPEED模数转换器换速度控制位,00:ADC转换周期=540;11:AC转换周期=90
CHS选择 P1.X 坐为A/D输入来用
ADRJADRJ=0时,0位的A/D转换结果的高8位存放在ADC_RES中,低两位存放在ADC_RESL的低两位中

8-bit A/D转换结果:ADC_RES[7:0] = 256 * Vin/Vcc
在这里插入图片描述

3.A/D转换编程

1、打开ADC电源(设置ADC_POWER位)
2、适当延时,等ADC内部模拟电源稳定。一般延时1ms即可;
3、设置P1口中的相应口线作为AD转换模拟量输入通道(设置P1ASF寄存器);
4、选择ADC通道(设置ADC_CONTR中的CHS2-CHS0位);
5、根据需要设置转换结果存储格式(设置CLK_DIV中ADRJ位);
6、查询AD转换结束标志ADC_FLAG,判断AD转换是否完成,若完成,则读出AD转换结果(保存在ADC_RES和ADC_RESL寄存器中),并进行数据处理。
7、采用中断方式,还需进行中断设置(中断允许和中断优先级);
8、在中断服务程序中读取AD转换结果,并将ADC中断请求标志ADC_FLAG清零。

样例程序:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布布要成为最负责的男人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值