应广PMS171B单片机有很实用的功能,对于PMS171B-S08,有3个ADC输入管脚,8bit的ADC,分别是AD8、AD9、AD10。本文使用AD10作为ADC检测口,并配合端口输出高低电平来进行检验。
在这里插入图片描述
在这里插入图片描述
adcrgc寄存器是ADC调节控制寄存器,本文使用VDD为参考电压,需配置7位为0,adcrgc配置如下所示:
adcrgc=0b000_0_00_00
在这里插入图片描述
adcc寄存器是ADC控制寄存器,如果需要知道ADC是否转换完成,读取第6位;本文使用PA0作为ADC输入口,adcc配置如下所示:
adcc= 1_0_1010_00;
PMS171B为8bit的ADC,所以检测3V时,对应的ADC值为3V/5V*255 = 153。
#include "extern.h"//是程序的头文件。
BIT LED : PA.7;
/**********adc*****************/
Word AdcSum;
BIT THR : PA.0;
void GetAdc(void) //ADC采样处理
{
BYTE i;
$ ADCC Enable, THR ;// ADCC = 1_0_1010_00;
//8次采样做平均/
i=8;
//初始化
AdcSum=0;
while ( i-- )
{
AD_Start=1;//读取 ADCC第六位;
.wait1 AD_Done;
//adc 采样值,PMS171B为8bit
AdcSum +=ADCRH;
}
//取平均值输出
AdcSum=AdcSum>>3; //temp除以8
}
void FPPA0 (void)//相当于程序的 main() 函数。
{
/*单片机内部RC震动时钟为 IHRC默认为16M,因此,IHRC/4=4M,系统时钟为4M*/
.ADJUST_IC SYSCLK=IHRC/4, IHRC=16MHz, VDD=5V;
/*端口设置为输出 低*/
pa.7=0;
pac.7=1;/*输入*/
paph.7=0;/*上拉*/
$ THR in;//设置PA0为输入
/*bit config start
b7:5@001=2V参考;000=VDD;
b4@0f通道选择器
b3:2@f通道band-gap参考电压选择
b1:0@00=rsv
bit config end*/
adcrgc=0b000_0_00_00;
while (1)
{
GetAdc();
if(AdcSum>153)//检测3V
{
LED = 1;
}
else
LED = 0;
.delay 4000*500;
}
}
在这里插入图片描述
在这里插入图片描述
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !