文章目录
ADC——基于STC15W5K32S4
将模拟信号转换成数字信号的电路,我们称其为模数转换器,简称A/D转换器或ADC(Analog-to-digital converter)。同理,将数字信号转换成模拟信号的电路称为数模转换器,简称D/A转换器或DAC,单片机能够存储的数据都是数字类型的。
一、逼近式ADC原理
在进行转化时,一般都需要经过采样、量化和编码三个步骤。A/D转换的过程是需要时间的,我们可以在连续变化的模拟量上按一定的时间规律取得对应的瞬时值,量化后以数字的形式输出,从而可以实现从模拟量到数字量的转化。
二、STC15W4K32S4单片机的A/D结构
STC15系列单片机ADC由多路选择开关、比较器、逐次比较寄存器、10位ADC、转换结果寄存器(ADC_RES和ADC_RESL)以及ADC_CONTR构成。
STC15系列单片机的ADC是逐次比较性ADC,逐次比较型ADC由一个比较器和D/A转换器构成,通过逐次比较逻辑,从最高位(MSB)开始,顺序地对每一输入电压与内置D/A转换器输出进行比较,经过多次比较,使转换所得的数字量逐次逼近输入模拟量对应值,逐次比较型A/D转换器具有速度高,功耗低等优点。
1.P1口模拟功能控制寄存器P1ASF
2. ADC控制寄存器ADC_CONTR
3. ADC转换结果调整寄存器位——ADRJ
4.A/D转换结果寄存器ADC_RES、ADC_RESL
5.中断允许寄存器IE
三、ADC转换编程
- 设置P1口中的相应口线作为AD转换模拟量输入通道(设置P1ASF寄存器);
- 清除结果寄存器(ADC_RES、ADC_RESL为0);
- 打开ADC电源(设置ADC_POWER位)
- 适当延时,等ADC内部模拟电源稳定。一般延时1ms即可;
- 选择ADC通道(设置ADC_CONTR中的CHS2-CHS0位);
- 根据需要设置转换结果存储格式(设置CLK_DIV中ADRJ位);
- 查询AD转换结束标志ADC_FLAG,判断AD转换是否完成,若完成,则读出AD转换结果(保存在ADC_RES和ADC_RESL寄存器中),并进行数据处理。
- 采用中断方式,还需进行中断设置(中断允许和中断优先级);
- 在中断服务程序中读取AD转换结果,并将ADC中断请求标志ADC_FLAG清零。
四、代码
ADC初始化
/*----------------------------
初始化ADC
----------------------------*/