標題: CH4226鋰電池充電單片機控制程序 [打印本頁]

作者: xuejiji    時間: 2017-8-24 19:16
標題: CH4226鋰電池充電單片機控制程序
  1. /*
  2.   CH4226
  3.   電池包充電控制程序
  4.   2017/03/11      
  5. */
  6. //頭文件
  7. #include <hic.h>
  8. //全局變量
  9. unsigned char Cnt @0x3f;
  10. unsigned int  ADV;               //AD監(jiān)測輸出電壓值
  11. unsigned int  ADI;               //AD監(jiān)測輸出電流值
  12. unsigned char COUNT;
  13. //標志位聲明
  14. sbit  t400ms_fg;
  15. //函數(shù)聲明
  16. void delay(unsigned int n);
  17. unsigned int GetADC(unsigned char chl);
  18. void Sys_unit(void);
  19. //宏定義
  20. #define     CLRWDT() __Asm CWDT
  21. //常量定義
  22. #define    CurrentOpenLimit   60                     //判定有充電電流限制值
  23. #define    CurrentShutLimit   30                     //判定沒有充電電流限制值
  24. #define    StopChargeLimit    2770                   //判定停止充電電壓限制值
  25. #define    KongZaiLimit       2820                   //判定進入空載限制值
  26. #define    ChargeLimit        2730                   //判定開始充電限制值
  27.       
  28. void main()
  29. {   
  30.     unsigned char K0count,K1count,K2count,K3count,K4count,upcount,downcount;    //狀態(tài)標志位定義
  31.         Sys_unit();       //初始化
  32.         PA5=1;            //開機紅燈綠燈全滅
  33.         PA4=1;
  34.         PA1=0;            //控制口置零
  35.         delay(1000);      //開機延時
  36.    while(1)
  37.    {
  38.                 ADV=GetADC(0);         //將AD監(jiān)測到的值
  39.                 ADI=GetADC(2);
  40.                   
  41.       
  42.        //判斷當前狀態(tài)
  43.            ///*
  44.             if( ADI > CurrentOpenLimit)           //有充電電流   
  45.             {
  46.                         if((ADV-ADI)>StopChargeLimit)     //且電池電壓超過停止充電電壓限制值,有電流時檢流電阻存在壓降進行補償,電阻1.1歐姆
  47.                         {
  48.                              PA1=1;                       //停止充電,綠燈亮,紅燈滅
  49.                                  PA4=1;
  50.                                  PA5=0;
  51.                         }
  52.                     else                              //且電池電壓沒有超過停止充電電壓限制值
  53.                         {
  54.                              PA1=0;                       //紅燈亮,不停止充電
  55.                                  PA4=0;                       
  56.                                  PA5=1;
  57.                         }
  58.                 }
  59.                 else  if(ADI < CurrentShutLimit)      //無充電電流
  60.                 {
  61.                     if(ADV > KongZaiLimit)            //且電池電壓達到空載限定值,判定進入空載
  62.                         {
  63.                              PA1=1;                       //停止充電,綠燈亮
  64.                          PA4=1;                  
  65.                                  PA5=0;
  66.                         }
  67.                         else if(ADV<ChargeLimit)          //且電池電壓小于開始充電電壓限定值
  68.                         {
  69.                              PA1=0;                       //開始充電,兩燈皆滅
  70.                              PA4=1;
  71.                                  PA5=1;
  72.                         }
  73.                 }      
  74.                 //*/
  75.         while(t400ms_fg == 0) CLRWDT();          //每4ms一個循環(huán)
  76.             t400ms_fg = 0;
  77.          
  78.    }}
復制代碼







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1