概述
应广PMS171B单片机有很实用的功能,就是可以用内部的分压电阻,Band-gap 电路提供 1.2V 参考电压,和比较器一起,测试单片机VDD电压.不使用任何外部器件,不占用端口就可以测试供电的电源电压.!当电池低压的时候可以做相应的动作.比如休眠,进入低功耗等。本章就写一个实例,当低于4.2V时候,LED输出低电平,高于4.2V时候,LED输出高电平。
PMS171B配置之比较器初始化
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603195725624.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0MzEyOTQ1,size_16,color_FFFFFF,t_70#pic_center)
gpcc寄存器是比较器 比较器控制寄存器,需要打开时需要7位配置为1,本文使用内部1.20V的band-gap参考电压,需配置3-1位为010,gpcc配置如下所示:
gpcc=0b1_0_0_0_010_0;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603195917403.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0MzEyOTQ1,size_16,color_FFFFFF,t_70#pic_center)
gpcs寄存器是配置比较电压,本文中以测试4.2V电压为例,将VDD=4.2V带入,得到N只为0.14、5.85、2.43、8.14;由于N为整数,所以Case 4模式较为适合,即gocs寄存器4-5位配置为11,切换为Case4模式,N为8,3-0位设置为1000,gpcs配置如下所示:
gpcs=0B0_0_11_1000;//检测4.2V
比较器测供电电源VDD电压完整代码
#include "extern.h"
BIT LED : PA.7;
#define f_Com !p_Com_Out
BIT p_Com_Out : gpcc.6
BIT f_getBat;
void InitCompare ( void )
{
gpcc=0b1_0_0_0_010_0;
gpcs=0B0_0_0_0_0000;
}
void GetBat ( void )
{
gpcs=0B0_0_11_1000;
.delay 10;
if ( f_Com )
{
f_getBat=1;
}
else
{
f_getBat=0;
}
}
void FPPA0 (void)
{
.ADJUST_IC SYSCLK=IHRC/4, IHRC=16MHz, VDD=5V;
pa.7=0;
pac.7=1;
paph.7=0;
InitCompare();
while (1)
{
GetBat();
if(f_getBat)
LED = 0;
else
LED = 1;
.delay 4000*10;
}
}
演示效果
可以看到,4.2V以上为LED输出高电平,4.2以下为LED输出低电平,由于4.2V左右会抖动,建议后期加防抖保证稳定运行。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603200111886.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0MzEyOTQ1,size_16,color_FFFFFF,t_70#pic_center)
视频教学
最后
以上的代码会在Q群里分享。QQ群:。 或者关注微信公众号『记贴』,持续更新文章和学习资料,可加作者的微信交流学习!!
|