新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 直流電動機的調(diào)速 用單片機產(chǎn)生PWM控制

        直流電動機的調(diào)速 用單片機產(chǎn)生PWM控制

        作者: 時間:2016-11-25 來源:網(wǎng)絡 收藏

        C語言代碼:


        #include
        #define uchar unsigned char
        #define uint unsigned int

        sbit K5=P1^4;
        sbit K6=P1^5;
        sbit PWM1=P1^0;
        sbit PWM2=P1^1;
        sbit FMQ=P3^6;


        uchar ZKB1,ZKB2;

        void delaynms(uint aa)
        {
        uchar bb;
        while(aa--)
        {
        for(bb=0;bb<115;bb++) //1ms基準延時程序
        {
        ;
        }
        }

        }

        void delay500us(void)
        {
        int j;
        for(j=0;j<57;j++)
        {
        ;
        }
        }

        void beep(void)
        {
        uchar t;
        for(t=0;t<100;t++)
        {
        delay500us();
        FMQ=!FMQ; //產(chǎn)生脈沖
        }
        FMQ=1; //關(guān)閉蜂鳴器
        delaynms(300);
        }


        void main(void)
        {
        TR0=0; //關(guān)閉定時器0
        TMOD=0x01; //定時器0,工作方式1
        TH0=(65526-100)/256;
        TL0=(65526-100)%256; //100us即0.01ms中斷一次
        EA=1; //開總中斷
        ET0=1; //開定時器0中斷
        TR0=1; //啟動定時器T0
        ZKB1=50; //占空比初值設定
        ZKB2=50; //占空比初值設定
        while(1)
        {
        if(!K5)
        {
        delaynms(15); //消抖
        if(!K5) //確定按鍵按下
        {
        beep();
        ZKB1++; //增加ZKB1
        ZKB2=100-ZKB1; //相應的ZKB2就減少
        }
        }
        if(!K6)
        {
        delaynms(15); //消抖
        if(!K6) //確定按鍵按下
        {
        beep();
        ZKB1--; //減少ZKB1
        ZKB2=100-ZKB1; //相應的ZKB2增加
        }
        }
        if(ZKB1>99)
        ZKB1=1;
        if(ZKB1<1)
        ZKB1=99;

        }
        }


        void time0(void) interrupt 1
        {
        static uchar N=0;
        TH0=(65526-100)/256;
        TL0=(65526-100)%256;
        N++;
        if(N>100)
        N=0;
        if(N<=ZKB1)
        PWM1=0;
        else
        PWM1=1;
        if(N<=ZKB2)
        PWM2=0;
        else
        PWM2=1;

        }


        //顯現(xiàn):電機轉(zhuǎn)速到最高后,也就是N為1或99時,再按一下,就變到99或1,
        //電機反方向旋轉(zhuǎn)以最高速度


        上一頁 1 2 下一頁

        關(guān)鍵詞: 直流電動機單片機PWM控

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 沭阳县| 济南市| 张家港市| 兴隆县| 高淳县| 海林市| 乐都县| 南乐县| 陆河县| 易门县| 邢台市| 扶余县| 台安县| 成安县| 高台县| 凉山| 哈密市| 略阳县| 乐陵市| 汶上县| 交口县| 加查县| 蓬溪县| 齐齐哈尔市| 新建县| 贺兰县| 株洲县| 东乌| 邹城市| 青田县| 建水县| 故城县| 新郑市| 元谋县| 浮山县| 阜平县| 江都市| 涟水县| 运城市| 军事| 肃北|