新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STC12C2052AD單片機做的手機電池充電器程序

        STC12C2052AD單片機做的手機電池充電器程序

        作者: 時間:2013-05-11 來源:網絡 收藏

        做的手機程序

        #include STC12c2052ad.h>
        #include intrins.h>
        #define uchar unsigned char
        #define uint unsigned int
        #define AD_SPEED 0x60 //0110,0000 1 1 270個時鐘周期轉換一次,
        //少占魚制作 河北正定歡迎您 長沙航空職業技術學院 2010 年QQ:41165643
        //
        sbit M=P1^5; //過壓指示燈
        sbit N=P1^6; //欠壓指示燈
        sbit LED=P1^7; //充滿 指示燈
        sbit REF=P1^0;
        sbit PWM=P3^7;

        bit START =0;

        uchar timeL=0x90;
        uchar timeH=0x90;
        /******************************************=***************/
        void pwm();
        void delayms(uint);
        void ADC();
        void InitADC();
        //void baohu();

        float voltage=0.0;
        const float Uref=2.500 ;

        /***8**********************************=***********/
        void main()
        {

        PWM=1;
        delayms(700);
        START=0;
        PWM=0;
        LED=0;
        REF=0;
        delayms(9000);

        delayms(1000);
        M=0;
        N=0;
        LED=0;
        delayms(7000);
        M=1;
        N=1;
        LED=1;
        delayms(7000);
        PWM=1;
        delayms(1000);//延時
        pwm();
        InitADC();
        delayms(6000);
        START=0;

        while(1)
        {
        ADC();

        if(START)
        {
        pwm();
        delayms(2000);
        }
        }

        }
        //
        //
        void pwm()

        {
        CR=0;
        START=0;

        //PCA模塊工作于PWM模式 C程序

        CMOD = 0x02; //用定時器0溢出做PCA脈沖
        CL = 0x00; //PCA定時器低8位 地址:E9H
        CH = 0x00; //PCA高8位 地址 F9H
        CCON=0x00;

        CCAP0L = timeL; //PWM模式時他倆用來控制占空比
        CCAP0H = timeH; //0xff-0xc0=0x3f 64/256=25% 占空比(溢出)

        CCAPM0 = 0x42; //0100,0010 Setup PCA module 0 in PWM mode
        // ECOM0=1使能比較 PWM0=1 使能CEX0腳用作脈寬調節輸出
        /*********************
        PCA 模塊工作模式設置 (CCAPMn 寄存器 n= 0-3四種)
        7 6 5 4 3 2 1 0
        - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn
        選項: 0x00 無此操作
        0x20 16位捕捉模式,由 CEXn上升沿觸發
        0x10 16位捕捉模式,由CEXn下降沿觸發
        0x30 16位捕捉模式,由CEXn的跳變觸發
        0x48 16位軟件定時器
        0x4c 16位高速輸出
        0x42 8位PWM輸出
        每個PCA模塊另外還對應兩個寄存器:CCAPnH和CCAPnL 。 捕獲或者比較時,它們用來
        保存16位計數值,當工作于PWM模式時,用來控制占空比
        *******************************/

        CR=1; //Start PCA Timer.

        }


        //AD轉換初始化 ----打開ADC電源
        void InitADC()
        {
        P1=0xff;
        ADC_CONTR|=0x80;
        delayms(3);
        //這兩個寄存器用來設置 P1口四種狀態,每一位對應一個P1引腳 ,按狀態組合操作

        /*****************
        P1M0 和P1M1 寄存器位 7 6 5 4 3 2 1 0
        P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
        同理P3M0 P3M0 也是。因為只有兩個P口,所以只有這倆組 STC12C5410AD還多P2M0 P1M0 有三組
        P1M0 P1M1 高
        0 0 普通I0口 (準雙向) P1寄存器位 7 6 5 4 3 2 1 0
        0 1 強推挽輸出 (20MA電流 )盡量少用 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
        1 0 僅做輸入 A/D轉換時可用此模式
        1 1 開漏 ,A/D轉換時可用此模式

        三極管相關文章:三極管放大電路


        pwm相關文章:pwm是什么


        手機充電器相關文章:手機充電器原理

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 沙雅县| 彩票| 临邑县| 建宁县| 拜城县| 封开县| 紫云| 祥云县| 宝清县| 海南省| 江孜县| 霍山县| 湘潭市| 资源县| 仪陇县| 雅江县| 德令哈市| 太仆寺旗| 阳曲县| 禄劝| 饶阳县| SHOW| 绥德县| 稻城县| 上犹县| 汉沽区| 美姑县| 罗源县| 陇西县| 炉霍县| 普兰店市| 清原| 寻乌县| 福贡县| 武陟县| 长治县| 五华县| 于田县| 广灵县| 长海县| 常熟市|