ADC数模转换

ADC:数模转换器。

这里我以STC15系列单片机介绍讲解
15系列的ADC一般是使用P1口来实现的 P1.0 ~ P1.7对应AD1 ~ AD8
首先介绍一下结构,也是主要用单的寄存器

P1ASF :P1模拟功能控制寄存器(只能写不能读,不能按位寻址)P17ASF P16ASF P15ASF P14ASF P13ASF P12ASF P11ASF P10ASF 8位组成
ADC_CONTR :ADC控制寄存器 ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0
ADC_POWER: 0 关闭ADC电源 ,1打开ADC电源 建议进入空闲模式之前或者掉电模式之前,将ADC电源关闭,初次打开adc电源需要等待一定延迟,待电源电压稳定
ADC_RES : ADC结果高位
ADC_RESL: ADC结果低位

ADC_CONTR

SPEED1 SPEED0 备注
1 1 90个时钟周期转换一次
1 0 180个时钟周期转换一次
0 1 360个时钟周期转换一次
0 0 540个时钟周期转换一次

ADC_FLAG: 当ad转换完成之后,该标志位会变成1必须软件清零
ADC_START: ADC启动位,设置为1时开始转换,转换结束后为0
ADRJ:用于控制adc结果存放位置

寄存器 功能 7 6 5 4 3 2 1 0
CLK_DIV/PCON2 时钟分频寄存器 MCKO_S1 MCKO_S0 ADRJ Tx_Rx MCLKO_2 CLKS2 CLKS1 CLKS0
IE 中断使能 EA ELVD EADC ES ET1 EX1 ET0 EX0
IP 中断优先级 PPCA PLVD PADC PS PT1 PX1 PT0 PX0

PADC0时,ad转换器为最低优先级
PADC1是,ad转换器为最高优先级

EADC0时,禁止ad转换器中断
EADC1时,允许ad转换器中断

也就数说adc支持产生8位以上的结果

ad转换器,转换完成之后会通知标志位ADC_FLAG,并且把结果储存ADC_RESADC_RESL
根据配置的ADRJ的配置和公式获取结果
ADRJ=0 如果取10位结果,结果为:ADC_RES【7~0】,ADC_RESL【1~0】=1024xvin/vcc
ADRJ=0 如果取8位结果,结果为:ADC_RES【7~0】=256xvin/vcc
ADRJ=1 如果取8位结果,结果为:ADC_RES【1~0】,ADC_RESL【7~0】=1024xvin/vcc

CHS2~CHS0来控制模拟通道的选择

应用

如果电压是电池等不稳定电源,可以使用TL431可控精密电压源来作为参考基准。
TL431是可控精密稳压源 可以精确控制2.5v~36V
ADC用于应用扫描按键,每10ms读取一次ad的值,但是只能检测单个按键,多个组合按键无法识别

你可能感兴趣的:(ADC数模转换)