新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于MAX1898的智能充電器設計

        基于MAX1898的智能充電器設計

        作者: 時間:2016-11-18 來源:網絡 收藏
        單片機在控制方面不僅可以在工業(yè)控制方面大展神通,如果用在控制一些很有意思的芯片方面也可以實現(xiàn)實用的功能。比如用單片機控制沖電芯片實現(xiàn)手機的智能充電器設計,基于次參考有關資料學習了基于MAX1898的智能充電器設計。

        本文引用地址:http://www.104case.com/article/201611/315966.htm

        主要器件:

        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;//停止計數(shù)

        TH0 = -5000/256;//重設計數(shù)初值

        TL0 = -5000%256;

        t_count++;

        if (t_count>600)//第一次外部中斷0產生后3s

        {

        if (int0_count==1)//還沒有出現(xiàn)第二次外部中斷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計數(shù)

        }

        /*外部中斷0服務子程序*/

        void int0() interrupt 0 using 1

        {

        if (int0_count==0)

        {

        TH0 = -5000/256;// 5ms定時

        TL0 = -5000%256;

        TR0 = 1;//啟動定時/計數(shù)器0計數(shù)

        t_count = 0;//產生定時器0中斷的計數(shù)器清零

        }

        int0_count++;

        }

        /*初始化*/

        void init()

        {

        EA = 1;//打開CPU中斷

        PT0 = 1;// T0中斷設為高優(yōu)先級

        TMOD = 0x01;//模式1,T0為16位定時/計數(shù)器

        ET0 = 1;//打開T0中斷

        IT0 = 1;//外部中斷0設為邊沿觸發(fā)

        EX0 = 1;//打開外部中斷0

        GATE = 1;//光耦正常輸出電壓

        BP = 1;//關閉蜂鳴器

        int0_count = 0;//產生外部中斷0的計數(shù)器清零

        }

        void main()

        {

        /*調用初始化函數(shù)*/

        init();

        /*無限循環(huán)*/

        while(1);

        }



        關鍵詞: MAX1898智能充電

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 泰兴市| 汉中市| 富宁县| 林芝县| 宁晋县| 朔州市| 湖北省| 张掖市| 工布江达县| 桃园市| 辽源市| 枞阳县| 随州市| 本溪| 循化| 江达县| 寻甸| 徐州市| 石首市| 晋宁县| 桂东县| 定南县| 吴江市| 台湾省| 六枝特区| 确山县| 临西县| 始兴县| 阳新县| 吴桥县| 邮箱| 澄江县| 调兵山市| 永平县| 临汾市| 阜宁县| 那曲县| 巴彦淖尔市| 丹棱县| 阜新| 澎湖县|