您的位置 首页 被动

根据MAX1898的智能充电器规划

单片机在控制方面不仅可以在工业控制方面大展神通,如果用在控制一些很有意思的芯片方面也可以实现实用的功能。比如用单片机控制冲电芯片实…

单片机在操控方面不只能够在工业操控方面大展神通,假如用在操控一些很有意思的芯片方面也能够完成有用的功用。比如用单片机操控冲电芯片完成手机的智能充电器规划,根据次参阅有关材料学习了根据MAX1898的智能充电器规划。

首要器材:

1、AT89C52单片机芯片,用于操控充电器芯片。

2、可供给准确的恒流/恒压充电,可对一切化学类型的Li+电池进行安全充电的MAX1898。

3、LM7805供给安稳的+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)//还没有呈现第2次外部中止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中止设为高优先级

TMOD = 0x01;//形式1,T0为16位守时/计数器

ET0 = 1;//翻开T0中止

IT0 = 1;//外部中止0设为边缘触发

EX0 = 1;//翻开外部中止0

GATE = 1;//光耦正常输出电压

BP = 1;//封闭蜂鸣器

int0_count = 0;//发生外部中止0的计数器清零

}

void main()

{

/*调用初始化函数*/

init();

/*无限循环*/

while(1);

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/267059.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部