单片机学习笔记 —— STC15单片机ADC

  将模拟信号转换成数字信号的电路,我们称其为模数转换器,简称A/D转换器或ADC(Analog-to-digital converter)。同理,将数字信号转换成模拟信号的电路称为数模转换器,简称D/A转换器或DAC,单片机能够存储的数据都是数字类型的。

一、逼近式ADC原理

简介:在进行转化时,一般都需要经过采样、量化和编码三个步骤。A/D转换的过程是需要时间的,我们可以在连续变化的模拟量上按一定的时间规律取得对应的瞬时值,量化后以数字的形式输出,从而可以实现从模拟量到数字量的转化。

步骤

单片机学习笔记 —— STC15单片机ADC_第1张图片

固有量化误差:±LSB/2
ADC的分辨率:LSB = FSR/(2^n^-1),其中FSR表示参考值,如参考电压Vref。

ADC结构:STC15F2K60S2单片机ADC由多路选择开关、比较器、逐次比较寄存器、10位DAC、转换结果寄存器(ADC_RES和ADC_RESL)以及ADC控制寄存器ADC_CONTR构成
单片机学习笔记 —— STC15单片机ADC_第2张图片
核心部分:电压比较器、逐次比较寄存器、10位DAC。

举例:下图为8位逐次逼近,集散AD编码D7~D0(过程类似用天平,先放大砝码,再放小砝码)
在这里插入图片描述
单片机学习笔记 —— STC15单片机ADC_第3张图片
图中,OE为使能,EOC为1表示完成AD转换。



二、ADC控制寄存器

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

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

AD_CONTR控制寄存器
寄存器格式

SFR name bit B7 B6 B5 B4 B3 B2 B1 B0
ADC_CONTR name ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0

寄存器功能

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

8-bit A/D转换结果:ADC_RES[7:0] = 256 * Vin/Vcc
单片机学习笔记 —— STC15单片机ADC_第4张图片



三、A/D转换编程

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清零。

样例程序
单片机学习笔记 —— STC15单片机ADC_第5张图片

单片机学习笔记 —— STC15单片机ADC_第6张图片

第10篇学习笔记完结 cheers !?

你可能感兴趣的:(单片机)