应广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。
或者关注微信公众号『记贴』,持续更新文章和学习资料,可加作者的微信交流学习!
在这里插入图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记帖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值