新聞中心

        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 輸出程序

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 门头沟区| 静海县| 乳源| 荆州市| 德庆县| 奈曼旗| 怀安县| 枞阳县| 临高县| 射洪县| 息烽县| 旺苍县| 龙海市| 监利县| 永泰县| 武强县| 平定县| 荔波县| 湛江市| 乳山市| 明星| 堆龙德庆县| 武邑县| 晋中市| 灵山县| 肇东市| 连山| 辽中县| 新丰县| 苗栗县| 双城市| 微山县| 洛川县| 徐水县| 新巴尔虎左旗| 丰顺县| 白水县| 体育| 洛浦县| 格尔木市| 平山县|