新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 機器人教程1:如何利用51單片機輸出PWM波

        機器人教程1:如何利用51單片機輸出PWM波

        作者: 時間:2016-12-01 來源:網絡 收藏

        /**************定時0中斷處理******************/

        void timer0_int() interrupt 1

        {

        TR0=0;//設置定時器初值期間,關閉定時器

        TH0=(65536-10)/256;

        TL0=(65536-10)%256;

        TR0=1;

        if(flag==1)//電機正轉

        {

        PWM1=0;

        time++;

        if(time{

        PWM2=1;

        }

        else

        PWM2=0;

        if(time>=100)

        {

        time=0;

        }

        }

        else //電機反轉

        {

        PWM2=0;

        time++;

        if(time{

        PWM1=1;

        }

        else

        PWM1=0;

        if(time>=100)

        {

        time=0;

        }

        }

        }

        5、利用單片機輸出PWM簡單控制小車直行

        相信通過上面的講解,大家已經能夠很好的撐握如何利用51單片機產生PWM波下面給出一個程序,通過單片機兩個I/O口輸出PWM波,讓小車直行。

        #include

        #define uint unsigned int

        #define uchar unsigned char

        sbit PWM1=P2^0;//接IN1控制正轉

        sbit PWM2=P2^1;//接IN2控制反轉

        sbit PWM3=P2^2;//接IN3控制正轉

        sbit PWM4=P2^3;//接IN4控制反轉

        sbit PWM5=P2^4;//接IN3控制正轉

        sbit PWM6=P2^5;//接IN4控制反轉

        sbit PWM7=P2^6;//接IN3控制正轉

        sbit PWM8=P2^7;//接IN4控制反轉

        uchar time;

        void main()

        {

        TMOD=0x01;//定時器0工作方式1

        TH0=0xff;//(65536-10)/256;//賦初值定時

        TL0=0xf7;//(65536-10)%256;//0.01ms

        EA=1;//開總中斷

        ET0=1;//開定時器0中斷

        TR0=1;//啟動定時器0

        while(1)

        {

        }

        }

        void delay(uint z)

        {

        uint x,y;

        for(x=z;x>0;x--)

        for(y=500;y>0;y--);

        }

        void tim0() interrupt 1

        {

        TR0=0;//賦初值時,關閉定時器

        TH0=0xff;//(65536-10)/256;//賦初值定時

        TL0=0xf7;//(65536-10)%256;//0.01ms

        TR0=1;//打開定時器

        time++;

        if(time>=100) time=0;//1khz

        PWM2=0;

        PWM4=0;

        if(time<=75) PWM1=1;

        else PWM1=0;

        if(time<=80) PWM3=1;

        else PWM3=0;

        PWM6=0;

        PWM8=0;

        if(time<=50) PWM5=1;

        else PWM5=0;

        if(time<=50) PWM7=1;

        else PWM7=0;

        }


        上一頁 1 2 3 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 城步| 汕头市| 兴安盟| 扎鲁特旗| 五常市| 怀宁县| 台江县| 阿克陶县| 辽阳市| 海盐县| 香格里拉县| 长宁县| 武隆县| 惠东县| 铜梁县| 怀化市| 保康县| 高密市| 平潭县| 顺义区| 英超| 潞西市| 双峰县| 桦南县| 小金县| 松江区| 宜良县| 商丘市| 渑池县| 呼图壁县| 恩平市| 建湖县| 全州县| 疏勒县| 永清县| 绥芬河市| 南召县| 枣阳市| 三台县| 察隅县| 昭通市|