概述
应广PMS171B单片机有很实用的功能,就是可以用内部的分压电阻,Band-gap 电路提供 1.2V 参考电压,和比较器一起,测试单片机VDD电压.不使用任何外部器件,不占用端口就可以测试供电的电源电压.!当电池低压的时候可以做相应的动作.比如休眠,进入低功耗等。本章就写一个实例,当低于4.2V时候,LED输出低电平,高于4.2V时候,LED输出高电平。
PMS171B配置之比较器初始化
gpcc寄存器是比较器 比较器控制寄存器,需要打开时需要7位配置为1,本文使用内部1.20V的band-gap参考电压,需配置3-1位为010,gpcc配置如下所示:
gpcc=0b1_0_0_0_010_0;
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左右会抖动,建议后期加防抖保证稳定运行。
视频教学
最后
以上的代码会在Q群里分享。QQ群:。 或者关注微信公众号『记贴』,持续更新文章和学习资料,可加作者的微信交流学习!!
|