N76E003之ADC电量检测(程序、分析、电路)

模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件。

先来看看N76E003 ADC工作方式
N76E003之ADC电量检测(程序、分析、电路)_第1张图片
再看下相关寄存器,方便理解上图
N76E003之ADC电量检测(程序、分析、电路)_第2张图片
现在我们只需要配置好以上几个寄存器,就可以开始使用ADC了,为了保证程序的及时性,我们采取ADC中断的方式进行处理,ADCF是中断标志位。(上图ETGSEL中,ADC模块提供了外部触发的功能,可以使用PWM上升沿,下降沿,中点等进行触发,该功能在N76E003驱动夏普PM2.5传感器时使用到了,简单而言就是依托PWM驱动传感器(里面的LED),然后ADC在PWM的中点进行采样,获取正确的(光电二极管电压))
接下来让我们配置相关代码(此次代码,源自新唐官方例程修改)

#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"



void ADC_ISR (void) interrupt 11
{
	if(ADCF)
	{
		clr_ADCF;//清除ADC转化完成标志,进行下一次转换
		set_ADCS;//当单次转换完成后,ADCS会硬件置0,需要重新使能
		printf ("\n Value = 0x%bx",ADCRH);//输出测量值高八位 
	}
}
void main (void) 
{
  Set_All_GPIO_Quasi_Mode;
	InitialUART0_Timer1(9600);//串口0配置,引脚P06\07
	Enable_ADC_AIN6;//配置使能P03,作为AIN6。
	//P04_FALLINGEDGE_TRIG_ADC;// 使用P04下降沿触发中断,使			    用外部触发时,可以不使能ADCS。
  set_EADC;//使能ADC中断
	EA = 1;
	set_ADCS;//使能ADCS,启动ADC测量
	while(1);
}

接下来就是ADC采样电路的设计,下图为一个典型的分压电路,前期可以大致确定ADC的电压范围,建议加上R1,以此保护单片机。

其实N76e003测量电压时,可以先通过内部自带的带隙电压,逆推出VDD电压,进行计算

实际电压X=测量值Y(VDD/4096)
根据上式,计算带隙电压与测量到的带隙电压的比值,然后12bit深度4096,就可以得到当前的VDD电压,如下式
VDD=4096(UID中的带隙电压/ADC测量得到的带隙电压)
故有
VDD/4096=(UID中的带隙电压/ADC测量得到的带隙电压)
令(UID中的带隙电压/ADC测量得到的带隙电压)=Coe
实际电压X=测量值Y * Coe
N76E003之ADC电量检测(程序、分析、电路)_第3张图片

你可能感兴趣的:(N76E003,N76E003,单片机,学习)