应广科技单片机PMS171B比较器测试供电电源VDD电压很实用的功能,LED输出高电平,两个信号进行比较,一个是正输入,另一个是负输
入,比较器的负输入可以是 PA3,PA4
应广PMS171B单片机有很实用的功能,不占用端口就可以测试供电的电源电压.!当电池低压的时候可以做相应的动作.比如休眠,进入低功耗等,就是可以用内部的分压电阻,Band-gap 电路提供 1.2V 参考电压,和比较器一起,测试单片机VDD电压.不使用任何外部器件,。当低于4.2V时候,LED输出低电平,高于4.2V时候,LED输出高电平。
比较器硬件原理框图
PMS171B 内置一个硬件比较器,如图所示比较器硬件原理框图。它可以比较两个引脚之间的信号或者
与内部参考电压 Vinternal R 或者与内置 bandgap(1.2v)做比较。两个信号进行比较,一个是正输入,另一个是负输
入。比较器的负输入可以是 PA3,PA4,内置 bandgap(1.2v),PB6,PB7,或者内部参考电压 Vinternal R,并由寄
存器 gpcc 的[3:1]位来选择。比较器的正输入可以是 PA4 或者 Vinternal R,并由 gpcc 寄存器的位 0 来选择。
比较器输出的结果可以用 gpcs.7 选择性的送到 PA0,此时无论 PA0 是输入还是输出状态,比较器结果都
会被强制输出;输出结果信号可以用 gpcc.5 选择为直接输出,或是通过 Timer2 从定时器时钟模块(TM2_CLK)
采样。另外,信号是否反极性也可由 gpcc.4 选择。比较输出结果可以用来产生中断信号或通过 gpcc.6 读取出来。
使用比较器
例 1:
选择 PA3 为负输入和 Vinternal R 的电压为(18/32)*VDD 作为正输入。Vinternal R 选择上图 gpcs[5:4] = 2b’00
的配置方式,gpcs [3:0] = 4b’1001 (n=9)以得到 Vinternal R = (1/4)*VDD + [(9+1)/32]*VDD = [(9+9)/32]*VDD =
(18/32)*VDD 的参考电压。
gpcs = 0b0_0_00_1001; // Vinternal R = VDD*(18/32)
gpcc = 0b1_0_0_0_000_0; //
启用比较器,负输入:PA3
,正输入:Vinternal R
padidr = 0bxxxx_0_xxx; //
停用 PA3
数字输入防止漏电(x
:由客户自定)
或者
$ GPCS VDD*18/32;
$ GPCC Enable, N_PA3, P_R; // N_xx
是负输入,P_R
代表正输入是内部参考电压
PADIER = 0bxxxx_0_xxx;
例 2:
选择 Vinternal R 为负输入,Vinternal R 的电压为(22/40)*VDD v,选择 PA4 为正输入, 比较器的结果将反极性
并输出到 PA0。Vinternal R 选择上图的配置方式 “gpcs[5:4] = 2b’10” 和 gpcs[3:0] = 4b’1101 (n=13) 得到 Vinternal
R = (1/5)*VDD + [(13+1)/40]*VDD = [(13+9)/40]*VDD = (22/40)*VDD。
gpcs = 0b1_0_10_1101; //
输出到 PA0
,Vinternal R = VDD*(22/40)
gpcc = 0b1_0_0_1_011_1; //
反极性输出,负输入:Vinternal R
,正输入:PA4
padidr = 0bxxx_0_xxxx; //
停用 PA4
数字输入防止漏电(x
:由客户自定)
或者
$ GPCS Output, VDD*22/40;
$ GPCC Enable, Inverse, N_R, P_PA4; // N_R
代表负输入是内部参考电压,P_xx
是正输入
PADIER=0bxxx_0_xxxx;
注意:当选择 PA0 做比较器结果输出时,GPCS 会影响 PA3 的仿真输出功能,但不影响实际 IC 的功能,
请在仿真时需避开这个情况。
内部参考电压 (Vinternal R)
内部参考电压 Vinternal R 由一连串电阻所组成,可以产生不同层次的参考电压,gpcs 寄存器的位 4 和位 5
是用来选择 Vinternal R 的最高和最低值,位[3:0]用于选择所要的电压水平,这电压水平是由 Vinternal R 的最高和
最低值均分 16 等份,由位[3:0]选择出来。显示四个条件下有不同的参考电压 Vinternal R。内部参
考电压 Vinternal R 可以通过 gpcs 寄存器来设置,范围从(1/32)*VDD 到 (3/4)*VDD。
Vinternal R 硬件接法(gpcs.5=0 & gpcs.4=0)
Vinternal R 硬件接法(gpcs.5=0 & gpcs.4=1)
比较器测供电电源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 )
{
/*b7@1=开启比较器
b6@0=负输入大于正输入
b5@0=比较器不用tm2_ck采样
b4@0=比较结果没有极性相反
b3:1@ 010=内部Band-gap电压
b0@1=PA4输入0=内部电阻输入*/
gpcc=0b1_0_0_0_010_0;
//$ padier 0b111_0_100_1;
/*
b7@0=不输出到PA0
b6@0保留
b5@0=高R
b4@0=低R
b3:0@0000-1111内部r值
*/
gpcs=0B0_0_0_0_0000;
}
void GetBat ( void )
{
/*设置模式为Case 4,检测4.2V*/
gpcs=0B0_0_11_1000;
.delay 10;
if ( f_Com )
{
/*电压低于4.2V,执行LED低电平*/
f_getBat=1;
}
else//LED高电平
{
f_getBat=0;
}
}
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;/*上拉*/
/***********电压比较器****************/
InitCompare();
while (1)
{
GetBat();
if(f_getBat)
LED = 0;
else
LED = 1;
.delay 4000*10;
}
}
演示效果
可以看到,4.2V以上为LED输出高电平,4.2以下为LED输出低电平,由于4.2V左右会抖动,建议后期加防抖保证稳定运行。
PMS171B 的烧录方法
烧录引脚为:PA3,PA4,PA5,PA6,VDD,GND。
如用 3S-P-002 烧录器,请把背后 Jumper 插在 CN39 的位置,同时:16 PIN 封装的 IC,请放在正面 IC 座
的顶格;14 PIN 封装的 IC,请放在正面 IC 座的顶格下移 1 行;10 PIN 封装的 IC(如 MSOP10),请放在正面
IC 座的顶格下移三行;8 PIN 封装的 IC,请放在正面 IC 座的顶格下移 4 行。其他封装客户自己根据情况处理,
所有 Jumper 位的左边都是一样的脚位排列,从上到下为 VDD,PA0(不需要用到),PA3,PA4,PA5,PA6,
PA7(不需要用到),GND。
应广单片机产品应用领域
玩具类:
RF/IR遥控直升飞机,遥控车,PS游戏机,儿童智能玩具,动物语音玩具,游戏方向盘,儿童学习机等
电子消费类:
电子万年历、温度湿度计、跑步计速器、按摩器、数码复读录音、笔电子礼品、电子密码锁,镍氢,锂电池充电器,超声波测距,防盗报警器,灯饰控制,舵机
深圳市逐高电子有限公司
我们是一家单片机代理、方案设计、芯片烧录、配单等一条龙电子元器件服务商。公司拥有强大的资源优势和完整的产品线, 是台湾应广单片机、 台湾义隆单片机、台湾九齐单片机一级代理。主要应用于小家电、消费类电子产品,LED照明控制等领域。
我公司设有专门的研发部门,具有雄厚的单片机开发实力,工程师都是具有多年单片机开发应用经验,可为您提供较强的技术支援。
有先进的开发能力,完善的售后服务及技术支援,现已成功开发出一系列电子产品方案。