应广PMS171B(4)--ADC

概述

应广PMS171B单片机有很实用的功能,对于PMS171B-S08,有3个ADC输入管脚,8bit的ADC,分别是AD8、AD9、AD10。本文使用AD10作为ADC检测口,并配合端口输出高低电平来进行检验。
在这里插入图片描述

PMS171B配置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。

PA0检测3V代码

#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;
	}
}

演示效果

在这里插入图片描述在这里插入图片描述

视频教学

https://www.bilibili.com/video/BV1uv411479i

最后

以上的代码会在Q群里分享。QQ群:615061293。
或者关注微信公众号『记贴』,持续更新文章和学习资料,可加作者的微信交流学习!
在这里插入图片描述

posted @ 2022-05-28 22:04  记帖  阅读(190)  评论(0编辑  收藏  举报