• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 高唐县| 金寨县| 精河县| 孟村| 大兴区| 佳木斯市| 大连市| 铜梁县| 临武县| 蒲城县| 松阳县| 页游| 冕宁县| 仪征市| 太谷县| 安岳县| 紫金县| 根河市| 图木舒克市| 容城县| 周至县| 南投市| 德清县| 周宁县| 聊城市| 类乌齐县| 运城市| 民和| 财经| 得荣县| 绥江县| 大兴区| 崇阳县| 民权县| 潼关县| 巫山县| 苏尼特左旗| 宝鸡市| 习水县| 马关县| 阿瓦提县|