基于MAX1898的智能充電器設計
主要器件:
1、AT89C52單片機芯片,用于控制充電器芯片。
2、可提供精確的恒流/恒壓充電,可對所有化學類型的Li+電池進行安全充電的MAX1898。
3、LM7805提供穩(wěn)定的+5v電壓。
試驗流程圖:試驗電路圖:
試驗程序代碼:
//BattCharger.h程序
#ifndef_BATTCHARGER_H//防止BattCharger.h被重復引用
#define_BATTCHARGER_H
#include
#define uchar unsigned char
#define uint unsigned int
sbit GATE = P2^0;
sbit BP = P2^1;
uint t_count,int0_count;
#endif
//BattCharger.c程序
#include "BattCharger.h"
/*定時器0中斷服務子程序*/
void timer0() interrupt 1 using 1
{
TR0 = 0;//停止計數
TH0 = -5000/256;//重設計數初值
TL0 = -5000%256;
t_count++;
if (t_count>600)//第一次外部中斷0產生后3s
{
if (int0_count==1)//還沒有出現第二次外部中斷0,則認為充電完畢
{
GATE = 0;//關閉充電電源
BP = 0;//打開蜂鳴器報警
}
else//否則即是充電出錯
{
GATE = 1;
BP = 1;
}
ET0 = 0;//關閉T0中斷
EX0 = 0;//關閉外部中斷0
int0_count = 0;
t_count = 0;
}
else
TR0 = 1;//啟動T0計數
}
/*外部中斷0服務子程序*/
void int0() interrupt 0 using 1
{
if (int0_count==0)
{
TH0 = -5000/256;// 5ms定時
TL0 = -5000%256;
TR0 = 1;//啟動定時/計數器0計數
t_count = 0;//產生定時器0中斷的計數器清零
}
int0_count++;
}
/*初始化*/
void init()
{
EA = 1;//打開CPU中斷
PT0 = 1;// T0中斷設為高優(yōu)先級
TMOD = 0x01;//模式1,T0為16位定時/計數器
ET0 = 1;//打開T0中斷
IT0 = 1;//外部中斷0設為邊沿觸發(fā)
EX0 = 1;//打開外部中斷0
GATE = 1;//光耦正常輸出電壓
BP = 1;//關閉蜂鳴器
int0_count = 0;//產生外部中斷0的計數器清零
}
void main()
{
/*調用初始化函數*/
init();
/*無限循環(huán)*/
while(1);
}
評論