深圳應廣微控制器比較器測供電電源VDD電壓
應廣微控制器有很實用的功能,就是可以用內部的分壓電阻,內部1.2v參考電壓,和比較器一起,測試微控制器VDD電壓.厲害吧,不使用任何外部器件,測試供電的電源電壓.!當電池低壓的時候可以做相應的動作.比如休眠,進入低功耗等.不多說,上程式碼! 記得有問題可以聯絡我!
這個程式碼結構結構不是很好,佈置一個作業,理解之後自己修改去.哈哈!模擬之後檢視ucVolt就可以知道電源電壓是多少.雖然不精確,但夠用.
#include "extern.h"
#define f_Com !p_Com_Out
BIT p_Com_Out : gpcc.6;
BIT f_getBat;
BYTE ucVolt;
WORD usTmp;
bit FLAG_NMS;
byte count;
word T16COUNTER;
/* 子程式 */
void Tmr16InterInit ( void )
{
/*計數值清零*/
T16COUNTER =488;
/*ms標記reset*/
FLAG_NMS =0;
/*使能定時器*/
$ INTEN T16;
/*關中斷*/
INTRQ = 0;
/*停止定時器*/
T16M.5 =0;
STT16 T16COUNTER;
/*計算方法16M/*/
$ T16M IHRC,/1,BIT11; /*全域性中斷開啟*/
}
/*比較器初始化*/
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 )
{
/*設定模式 2-6,檢測3.2V*/
gpcs=0B0_0_10_0110;
.delay 10;
if ( f_Com )
{
/*電壓低於3.2V,執行關機*/
ucVolt=10;
f_getBat=0;
PA=0B0001_0000;
}
else
{
f_getBat=1;
PA=0B0010_0000;
}
}
#if 1
/*取得結果*/
void GetComRes ( void )
{
if (f_getBat)
{
f_getBat=0;
/*設定模式 1-10,檢測2.6V*/
gpcs=0B0001_1010;
.delay 10;
if ( f_Com )
{
/*電壓低於2.6V*/
ucVolt=25;
}
else
{
/*設定模式 2-8,檢測2.8V*/
gpcs=0B0_0_10_1000;
.delay 10;
if ( f_Com )
{
/*電壓低於2.8V*/
ucVolt=27;
}
else
{
/*設定模式 2-7,檢測3.0V*/
gpcs=0B0_0_10_0111;
.delay 10;
if ( f_Com )
{
/*電壓低於3.0V*/
ucVolt=29;
}
else
{
/*設定模式 2-6,檢測3.2V*/
gpcs=0B0_0_10_0110;
.delay 10;
if ( f_Com )
{
/*電壓低於3.2V*/
ucVolt=31;
}
else
{
/*設定模式 2-5,檢測3.4V*/
gpcs=0B0_0_10_0101;
.delay 10;
if ( f_Com )
{
/*電壓低於3.4V*/
ucVolt=33;
}
else
{
/*設定模式 1-7,檢測3.6V*/
gpcs=0B0_0_01_0111;
.delay 10;
if ( f_Com )
{
/*電壓低於3.6V*/
ucVolt=35;
}
else
{
/*設定模式 3-9,檢測3.8V*/
gpcs=0B0_0_11_1001;
.delay 10;
if ( f_Com )
{
/*電壓低於3.8V*/
ucVolt=37;
}
else
{
/*設定模式 2-3,檢測4.0V*/
gpcs=0B0_0_10_0011;
.delay 10;
if ( f_Com )
{
/*電壓低於4.0V*/
ucVolt=39;
}
else
{
/*設定模式 3-8,檢測4.2V*/
gpcs=0B0_0_11_1000;
.delay 10;
if ( f_Com )
{
/*電壓低於4.2V*/
ucVolt=41;
}
else
{
/*設定模式 2-2,檢測4.4V*/
gpcs=0B0_0_10_0010;
.delay 10;
if ( f_Com )
{
/*電壓低於4.4V*/
ucVolt=43;
}
else
{
/*設定模式 2-1,檢測4.8V*/
gpcs=0B0_0_10_0001;
.delay 10;
if ( f_Com )
{
/*電壓低於4.8V*/
ucVolt=47;
}
else
{
/*電壓高於4.8V*/
ucVolt=50;
}
}
}
}
}
}
}
}
}
}
}
}
}
#endif
void FPPA0 ( void )
{
/*使用這一行就可以看到測試出來電壓ucVolt為33*/
// .ADJUST_IC SYSCLK=IHRC/8, IHRC=16MHz, VDD=3.3v;
/*使用這一行就可以看到測試出來電壓ucVolt為41*/
.ADJUST_IC SYSCLK=IHRC/8, IHRC=16MHz, VDD=4.0v;
Tmr16InterInit();
InitCompare();
/* delay 200x2000x0.5us=0.2s */
usTmp=200;
while(usTmp--)
{
.delay 2000;
wdreset; //復位看門狗定時器
}
GetBat ();
engint;
while ( 1 )
{
GetComRes();
}
}
void Interrupt ( void )
{
pushaf;
if ( Intrq.T16 )
{
Intrq.T16 = 0;
STT16 T16COUNTER;
if ( count>0 )
{
count--;
}
else
{
count = 9;
/*1ms*/
//FLAG_NMS= 1;
f_getBat=1;
}
}
popaf;
}
/*QQ:326156566
相關文章
- 【微控制器筆記】STM8S003F3使用內部基準電壓測量供電電壓筆記
- 開關電源——壓敏電阻
- 直流穩壓電源
- 上電時透過 VIN 腳給晶片供電 ,輸入電壓晶片
- 電話機器人哪個品牌比較好?機器人
- 怎麼測試電腦電源好壞?如何檢測電腦電源好壞的方法
- 為何大多數MCU微控制器工作電壓為5V?
- 冀北電網“綠電”供應的幕後功臣
- 家用儀器血壓測量儀電子方案
- USB過壓保護晶片,高輸入電壓充電器(OVP)晶片
- 電動勢和電壓
- EVGA全模組金牌SFX電源,持久供電澎湃輸出
- 最具價效比金牌電源,EVGA GD系列電源全新上線
- 中國南方電網深圳供電局等,儲存總容量超過4500PB。
- KEMET推出新的多層陶瓷電容器,用於市電供電的應用
- STC15微控制器的高低電平範圍,拉電流和灌電流理解
- 家用電器行業數智化供應鏈系統:高效整合供應鏈,提升家電企業核心競爭力行業
- 應廣微控制器開發案例應廣微控制器11bitPWM配置
- LTC3307AHV轉換器,電池供電系統,PDF
- 測量幾個光電感測器反向電容
- 手機充電器和電腦開關電源引起跳閘
- 電腦電源功率越大越費電嗎?電腦電源功率越大越好嗎
- 模擬積體電路設計系列部落格——9.1 比較器
- 興趣支撐不起的家電電商,供應鏈可以!
- 跨境電商供應鏈管理,積加erp供應鏈功能
- 跨境電商供應鏈平臺方案
- 電商供應鏈管理系統貨源對接開發流程
- 650【畢設課設】基於微控制器大氣壓監測報警系統電路方案設計
- [深圳] 電信寬頻對映,讓自己的電腦秒變伺服器!伺服器
- 【深圳】電信寬頻對映,讓自己的電腦秒變伺服器!伺服器
- 家中的能源站:虛擬電廠將如何重塑電力供應格局?
- 桌上型電腦電源什麼牌子好?2019年入門到高階高價效比臺式電腦電源推薦
- 電腦主機電源越大越費電嗎? 電源功率不夠電腦會怎麼樣?
- 電腦主機電源越大越費電嗎? 電腦電源功率不夠會怎麼樣?
- 硬體開發筆記(二十八):TPS54331電源設計(一):5V電源供電原理圖設計筆記
- 抗電源干擾的6鍵觸控檢測晶片資料介紹,具有低待機電流,抗電壓波動等特性晶片
- 電壓-電流轉換(一):4-20mA電流環
- 看銘牌教你輕鬆選電腦電源 電腦電源怎麼選購