相信大家都知道单片机输出得是数字信号0或者1,那么想要测量模拟信号得大小该怎么测量呢?
各种模拟量都可以通过变送器或传感器变换成相应得数字量送给单片机。
C8051F020在片内继承了AD/DA转换电路
AMX0CF控制单端输入或双端输入
AMX0SL控制某一时刻外部模拟量和一个内部温度传感器那个通过多路选择器
ADC0CF来设置多路选择器出来得模拟量得转换速度和对模拟量得放大倍数
ADC0CN(把模拟量转换成数字量)对ADC进行模拟转换得启动,启动方式采样保持,转换结束,数字量格式进行设定
12位转换好得数字量存放在数据寄存器ADC0H,ADC0L中
设定好以上以后cpu就按照设定好得模式在模拟量转换好时用指令读出数据寄存器中得数字量或在中断服务中读取数字量
下面我们来仔细看一下各个寄存器
1.选择差分输入 AMX0CF=0x01;
2.这里是用来选择是温度传感器使能还是,差分输入的,这里我们选择AMUX0SL=0x0f;
3.这里选择SAR的时钟ADC0=(240/25)<<3;ADC0|=0x01;
注意下方的位0-2为可编程增益放大器PGA,也就是放大倍数
4.ADC0CN=0x81;
5. 允许温 度传感器,ADC0 电压基准取自 VREF0 引脚。REF0CN=0x07;
这里我们都设置好了以后就完成基本的初始化,我们要实现按0为温度传感器的值,和按1为电压值(电压值是那个电压值)可以改变其中的AMX0SL来选择用不用温度传感器,和ADC0CF来配置放大增益,具体如下
下面我们就可以启动转换,和等待转换完成,完成以后的结果就存在ADC0H和ADC0L中然后按照相对应的公式转换一下就可以啦