新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機H橋電路控制電機正反轉和PWM調速

        51單片機H橋電路控制電機正反轉和PWM調速

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

        //**********************************//
        void main()
        {
        time_init(); //定時器的初始化
        while(1)
        {

        keyscan(); //不斷掃描鍵盤程序,以便及時作出相應的響應
        }
        }
        //*************************************//
        void timer0() interrupt 1 using 0
        {

        if(flag)
        {
        flag=0;
        end_turn;
        a=t0; //t0的大小決定著低電平延續時間
        TH0=(65536-a)/256;
        TL0=(65536-a)%256; //重裝載初值
        }
        else
        {
        flag=1; //這個標志起到交替輸出高低電平的作用
        if(dflag==0)
        {
        right_turn; //右轉
        }
        else
        {
        left_turn; //左轉
        }
        a=t1; //t1的大小決定著高電平延續時間
        TH0=(65536-a)/256;
        TL0=(65536-a)%256; //重裝載初值
        }
        }
        void time_init()
        {
        TMOD=0x01; //工作方式寄存器 軟件起動定時器 定時器功能 方式1 定時器0
        TH0=(65536-a)/256;
        TL0=(65536-a)%256; //裝載初值
        ET0=1; //開啟定時器中斷使能
        EA=1; // 開啟總中斷
        TR0=0;
        }
        //****************************************//
        void delay(uchar z) //在12M下延時z毫秒
        {
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
        }
        //******************************//
        void keyscan()
        {

        if(stop==0)
        {
        TR0=0; //關閉定時器0 即可停止轉動
        end_turn;
        }
        if(left==0)
        {
        TR0=1;
        dflag=1; //轉向標志置位則左轉
        }
        if(right==0)
        {
        TR0=1;
        dflag=0; //轉向標志復位則右轉
        }
        if(accelerate==0)
        {
        delay(5) ; //延時消抖
        if(accelerate==0)
        {
        while(accelerate==0) ; //等待松手
        count++;
        if(count==1)
        {
        t0=20000;
        t1=30000; //占空比為百分之60
        }
        if(count==2)
        {
        t0=15000;
        t1=35000; //占空比為百分之70
        }
        if(count==3)
        {
        t0=10000;
        t1=40000; //占空比為百分之80
        }
        if(count==4)
        {
        t0=5000;
        t1=45000; //占空比為百分之90
        }
        if(count==5)
        {
        count=0;
        }
        }

        }
        }

        本文引用地址:http://www.104case.com/article/201612/324608.htm

        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 基隆市| 平原县| 观塘区| 桂东县| 永新县| 阳信县| 万源市| 噶尔县| 东山县| 工布江达县| 砚山县| 辽源市| 贺州市| 噶尔县| 色达县| 凤山县| 新野县| 和平县| 千阳县| 田东县| 开封县| 从化市| 崇明县| 积石山| 普安县| 台州市| 阜南县| 晋城| 屏边| 南雄市| 保德县| 襄樊市| 大同县| 海阳市| 麦盖提县| 西林县| 定襄县| 清水河县| 方城县| 白银市| 广宗县|