概述
應(yīng)廣PMS171B單片機(jī)有很實(shí)用的功能,就是可以用內(nèi)部的分壓電阻,Band-gap 電路提供 1.2V 參考電壓,和比較器一起,測試單片機(jī)VDD電壓.不使用任何外部器件,不占用端口就可以測試供電的電源電壓.!當(dāng)電池低壓的時(shí)候可以做相應(yīng)的動(dòng)作.比如休眠,進(jìn)入低功耗等。本章就寫一個(gè)實(shí)例,當(dāng)?shù)陀?.2V時(shí)候,LED輸出低電平,高于4.2V時(shí)候,LED輸出高電平。
PMS171B配置之比較器初始化
在這里插入圖片描述
gpcc寄存器是比較器 比較器控制寄存器,需要打開時(shí)需要7位配置為1,本文使用內(nèi)部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為整數(shù),所以Case 4模式較為適合,即gocs寄存器4-5位配置為11,切換為Case4模式,N為8,3-0位設(shè)置為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 )
{
/*b7@1=開啟比較器
b6@0=負(fù)輸入大于正輸入
b5@0=比較器不用tm2_ck采樣
b4@0=比較結(jié)果沒有極性相反
b3:1@ 010=內(nèi)部Band-gap電壓
b0@1=PA4輸入0=內(nèi)部電阻輸入*/
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內(nèi)部r值
*/
gpcs=0B0_0_0_0_0000;
}
void GetBat ( void )
{
/*設(shè)置模式為Case 4,檢測4.2V*/
gpcs=0B0_0_11_1000;
.delay 10;
if ( f_Com )
{
/*電壓低于4.2V,執(zhí)行LED低電平*/
f_getBat=1;
}
else//LED高電平
{
f_getBat=0;
}
}
void FPPA0 (void)//相當(dāng)于程序的 main() 函數(shù)。
{
/*單片機(jī)內(nèi)部RC震動(dòng)時(shí)鐘為 IHRC默認(rèn)為16M,因此,IHRC/4=4M,系統(tǒng)時(shí)鐘為4M*/
.ADJUST_IC SYSCLK=IHRC/4, IHRC=16MHz, VDD=5V;
/*端口設(shè)置為輸出*/
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左右會(huì)抖動(dòng),建議后期加防抖保證穩(wěn)定運(yùn)行。
在這里插入圖片描述
在這里插入圖片描述
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635217 -
比較器
+關(guān)注
關(guān)注
14文章
1651瀏覽量
107216 -
PMS171B
+關(guān)注
關(guān)注
1文章
7瀏覽量
2426
發(fā)布評論請先 登錄
相關(guān)推薦
評論