单片机必学系列
单片机学习——中断系统
单片机学习——存储器详解(程序存储器、片内RAM、拓展RAM、EEPROM)
单片机学习——定时器/计数器
单片机学习——A/D转换
更新ing
前言
A/D转换模块是单片机的高功能模块,用于对模拟信号进行数字转换,本文以STC8H8K64U单片机为例(原理与其他51单片机并无差别),该单片机A/D模块为16通道12位。本文主要摘录STC丁向荣《单片机微机原理与接口技术》。
A/D转换模块的结构
STC8H的这个单片机A/D转换模块输入通道有16个(通道越多,同时可以接收的模拟量就越多),分别为ADC0——ADC15,其中ADC15用于测试内部1.19V基准电压,工作时,各个输入通道都工作在高阻状态。
关于位数:12位是用于精度,位数越多,精度越高,以5v电压为例,当一位时,只能分成两份,2.5v以上是1,2.5v以下为0,当两位时,可以分成4份,也就是1.25v,2.5v,3.75v,5v为分界,提高了精度,以此类推。
该单片机A/D转换模块由多路选择开关、比较器、逐次比较寄存器、12位数字模拟转换器(D/A转换模块)、A/D转换结果寄存器、A/D转换模块控制寄存器以及A/D转换模块配置寄存器构成。
A/D转换模块的分类
按转化原理分类:逐次逼近型、双积分型、并行/串行比较型、压频转换型等
按转化速度分类:超高速<=1ns、高速<=20us、中速<=1ms、低速<=1s。
按转化位数分类:8、12、14、16。
目前主要有逐次比较型转换器(最常用的)和双积分型转换器,故接下来主要讲解逐次比较型转换器。
逐次比较型转换器
逐次比较型模拟数字转换器根据逐次比较的逻辑,从最高位(MSB)开始,逐次对每一个输入的电压模拟量与内部D/A转换器输出进行比较,多次比较之后,使得转换得到的数字量逼近输入模拟量对应值,直到A/D转换结束。
下图为逐次比较型转换器原理图
A/D转换模块的参考电压源
该A/D转换模块的电源与单片机电源是同一个,但A/D模块有独立的参考电压源输入端。
当测量精度要求不高时,可以直接使用单片机的工作电压,高精度时使用精准的参考电压。
A/D转换模块的控制
A/D转换模块主要由ADC_CONTR、ADCCFG、ADC_RES、ADC_RESL和A/D转换模块时序控制寄存器ADCTIM以及控制A/D转换的有关中断的控制寄存器进行控制和管理。
由于寄存器标志位等过多,此处仅列举较为重要的个别寄存器。
/****************测量AD值*************************/
uint Get_ADC12bitResult(uchar channel) //channel = 0~15
{
ADC_RES = 0; //将转换结果寄存器清0
ADC_RESL = 0;
ADC_CONTR = (ADC_CONTR & 0xe0) | 0x40 | channel; //启动ADC
_nop_(); _nop_(); _nop_(); _nop_();//第一次开始的时候需要等待电路稳定
while((ADC_CONTR & 0x20) == 0) ; //等待ADC完成
ADC_CONTR &= ~0x20; //清除ADC结束标志
return (((uint)ADC_RES << 8) | ADC_RESL );
}
此代码中出现的寄存器有ADC_CONTR,ADC_RES,ADC_RESL。
其中ADC_RES和ADC_RESL共同作为存储结果寄存器,RES是高8位,RESL是低8位。
ADC_CONTER各位如下图:
B7是A/D模块的电源控制位,1打开,0关闭。
B6是A/D转换启动控制位,1时启动转换,转换完成后自动清0,为0时无影响(当A/D转换模块启动之后,即使写0也无法停止)
B5是完成标志位,完成转换后置1,需要手动清0。
主要:启动A/D转换前一定保证A/D转换模块电源已打开,A/D转换结束后关闭A/D转换模块电源可以降低能耗。初次打开时需要适当延时,等内部电路稳定后再启动A/D转换。文章来源:https://www.toymoban.com/news/detail-489818.html
A/D转换模块转换结果选择
A/D转换模块转换结束后,结果保存到ADC_RES和ADC_RESL中(因为是12位,一个寄存器8位,所以需要两个寄存器拼起来存储结果),但是有两种存储格式,由ADCFG中的RESFMT控制。
RESFMT=0时,结果左对齐,右边空余位自动为0。
RESFMT=1时,结果右对齐,左边空余位自动为0。文章来源地址https://www.toymoban.com/news/detail-489818.html
到了这里,关于单片机学习——ADC讲解(A/D转换、D/A转换)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!