|
- /*
- CH4226
- 電池包充電控制程序
- 2017/03/11
- */
- //頭文件
- #include <hic.h>
- //全局變量
- unsigned char Cnt @0x3f;
- unsigned int ADV; //AD監(jiān)測輸出電壓值
- unsigned int ADI; //AD監(jiān)測輸出電流值
- unsigned char COUNT;
- //標(biāo)志位聲明
- sbit t400ms_fg;
- //函數(shù)聲明
- void delay(unsigned int n);
- unsigned int GetADC(unsigned char chl);
- void Sys_unit(void);
- //宏定義
- #define CLRWDT() __Asm CWDT
- //常量定義
- #define CurrentOpenLimit 60 //判定有充電電流限制值
- #define CurrentShutLimit 30 //判定沒有充電電流限制值
- #define StopChargeLimit 2770 //判定停止充電電壓限制值
- #define KongZaiLimit 2820 //判定進(jìn)入空載限制值
- #define ChargeLimit 2730 //判定開始充電限制值
-
- void main()
- {
- unsigned char K0count,K1count,K2count,K3count,K4count,upcount,downcount; //狀態(tài)標(biāo)志位定義
- Sys_unit(); //初始化
- PA5=1; //開機(jī)紅燈綠燈全滅
- PA4=1;
- PA1=0; //控制口置零
- delay(1000); //開機(jī)延時(shí)
- while(1)
- {
- ADV=GetADC(0); //將AD監(jiān)測到的值
- ADI=GetADC(2);
-
-
- //判斷當(dāng)前狀態(tài)
- ///*
- if( ADI > CurrentOpenLimit) //有充電電流
- {
- if((ADV-ADI)>StopChargeLimit) //且電池電壓超過停止充電電壓限制值,有電流時(shí)檢流電阻存在壓降進(jìn)行補(bǔ)償,電阻1.1歐姆
- {
- PA1=1; //停止充電,綠燈亮,紅燈滅
- PA4=1;
- PA5=0;
- }
- else //且電池電壓沒有超過停止充電電壓限制值
- {
- PA1=0; //紅燈亮,不停止充電
- PA4=0;
- PA5=1;
- }
- }
- else if(ADI < CurrentShutLimit) //無充電電流
- {
- if(ADV > KongZaiLimit) //且電池電壓達(dá)到空載限定值,判定進(jìn)入空載
- {
- PA1=1; //停止充電,綠燈亮
- PA4=1;
- PA5=0;
- }
- else if(ADV<ChargeLimit) //且電池電壓小于開始充電電壓限定值
- {
- PA1=0; //開始充電,兩燈皆滅
- PA4=1;
- PA5=1;
- }
- }
- //*/
- while(t400ms_fg == 0) CLRWDT(); //每4ms一個(gè)循環(huán)
- t400ms_fg = 0;
-
- }}
復(fù)制代碼
|
|