新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 89C52 PWM輸出程序

        89C52 PWM輸出程序

        作者: 時間:2012-10-30 來源:網絡 收藏

        #include reg52.h> //Keil header file name
        #include "use.h"
        #include "Ver.h"

        //extern void LedOut(unsigned char *pLed);
        #define Pmax 55000 //55000 //42666(18.4320)
        #define Ki 2.2 //i=2

        //----------------------------
        sbit PwinPin=P3^5;
        //----------------------------

        typedef union
        {
        unsigned int Pwm; //pwm的數據
        unsigned char PwmUse[2]; //[0]=H;[1]=L
        };

        //----------------------------
        PwmData;
        unsigned int PwmBak;
        //----------------------------
        unsigned char PwmF=0; //輸出的1,0的標志
        /*****************************************
        計算,輸出
        t0=T50ms(b0/[fs-fo]+Sgn(U)*20%+a1
        ;T50ms=Pwm50+Ah
        ;B0fo=>0V;Must Bo In(Fo-Fs)
        *******************************************/
        void PwmOut(void)
        {
        float Pwm,i,k,j;
        k=Pmax+(Mp1.AH+OminH)*Ki;
        i=(PminL+Mp1.AL)*Ki;

        //----------------------------
        //LedOut(LedBuf); //LED顯示輸出
        //----------------------------
        j=(LedMenu.B-Mp1.Fo)/(Mp1.Fs-Mp1.Fo);
        if(j0) j=0;
        if(j>1) j=1;
        Pwm=j*k; //Bo/(Fs-Fo)*Pk
        j=Pwm*0.8+k*0.2+i; //先計算
        if(Mp1.U==1) {Pwm=j;}
        else Pwm=Pwm+i;
        TR0=0;
        PwmBak=(unsigned int)Pwm; //更新數據
        TR0=1;
        }
        //-------------------------------
        void Init_Pwm(void)
        {
        PwmData.Pwm=0;
        PwmPin=0; //輸出0 (地點平)
        // PwmOut();
        }
        //定時器0 中斷處理 pwmout()
        void T0_Do(void) interrupt 1{
        TR0=0;
        if(PwmF==0) //輸出高電平
        {
        PwmData.Pwm=-PwmBak;
        TH0=PwmData.PwmUse[0];
        TL0=PwmData.PwmUse[1];
        PwmPin=1; //0 輸出
        PwmF=1;
        }else{
        PwmData.Pwm=-PwmData.Pwm;
        TH0=PwmData.PwmUse[0];
        TL0=PwmData.PwmUse[1];
        PwmPin=0; //1 輸出
        PwmF=0;
        }
        TR0=1;
        }

        pwm相關文章:pwm原理




        關鍵詞: 89C52 PWM 輸出程序

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 武穴市| 宜州市| 吉安市| 若尔盖县| 尼木县| 常州市| 乌兰县| 淮南市| 隆回县| 麻江县| 澄江县| 施秉县| 昭苏县| 巴青县| 咸阳市| 镇康县| 耒阳市| 海阳市| 竹山县| 恩施市| 宝清县| 佛教| 噶尔县| 颍上县| 高邮市| 桃园市| 冷水江市| 庄河市| 合山市| 法库县| 武冈市| 尼玛县| 尚志市| 揭东县| 昌江| 论坛| 彰武县| 通州市| 池州市| 北宁市| 锡林郭勒盟|