前言 A/D转换模块是单片机的高功能模块,用于对模拟信号进行数字转换,本文以STC8H8K64U单片机为例(原理与其他51单片机并无差别),该单片机A/D模块为16通道12位。 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转换的有关中断的控制寄存器进行控制和管理。 由于寄存器标志位等过多,此处仅列举较为重要的个别寄存器。 此代码中出现的寄存器有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转换。 A/D转换模块转换结果选择 A/D转换模块转换结束后,结果保存到ADC_RES和ADC_RESL中(因为是12位,一个寄存器8位,所以需要两个寄存器拼起来存储结果),但是有两种存储格式,由ADCFG中的RESFMT控制。 RESFMT=0时,结果左对齐,右边空余位自动为0。 RESFMT=1时,结果右对齐,左边空余位自动为0。 (责任编辑:admin) |