新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 直流電機(jī)正反轉(zhuǎn)及調(diào)速控制

        直流電機(jī)正反轉(zhuǎn)及調(diào)速控制

        作者: 時(shí)間:2016-11-18 來(lái)源:網(wǎng)絡(luò) 收藏
        #include

        #define uint unsigned int
        #define uchar unsigned char
        sbit rl=P3^0;//正反轉(zhuǎn)按鍵
        sbit add=P3^1;//增速按鍵
        sbit sub=P3^2;//減速按鍵
        sbit stop=P3^3;//電機(jī)停止按鍵
        sbit pwmh=P1^0;//PWMH輸出
        sbit pwml=P1^1;//1正/0反轉(zhuǎn)
        uchar num1,num2,flag1,flag2,flag3;
        uint aa,bb,n;
        void delay(uint z);
        void monitor();
        void intc();
        void keyscan();
        //======================
        void main()
        {
        intc();
        while(1)
        {
        keyscan();
        if(flag3==0)
        {if(flag1==0)
        pwml=1;
        else
        pwml=0;}
        if(flag3==1)
        {pwmh=1;pwml=1;}
        }
        }

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

        //===================
        void delay(uint z)
        {
        uint x;
        uchar y;
        for(x=0;xfor(y=0;y<100;y++);
        }


        //=========================
        void intc()
        {n=50;//設(shè)定電機(jī)初始轉(zhuǎn)速10MS方波;
        TMOD=0x01;
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        ET0=1;
        EA=1;
        TR0=1;
        }
        //========================
        void keyscan()
        {
        if(rl==0)
        delay(10);
        if(rl==0)
        {
        while(!rl);
        flag1++;
        if(flag1>1)
        flag1=0;
        }
        if(add==0)
        delay(10);
        if(add==0)
        {
        while(!add);
        n++;
        if(n>100)
        n=100;
        }
        if(sub==0)
        delay(10);
        if(sub==0)
        {
        while(!sub);
        if(n<2)
        n=1;
        else
        n--;
        }
        if(stop==0)
        delay(10);
        if(stop==0)
        {
        while(!stop);
        flag3=1;
        pwmh=1;
        pwml=1;
        }
        }

        //==========================
        //==========第二種改變PWM波的方法======
        void timer0() interrupt 1
        {
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        num1++;
        if(num1 pwmh=1;
        else
        pwmh=0;
        if(num1>100)
        {num1=0;flag2=1;}
        }
        //=======================================



        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 扶风县| 叶城县| 菏泽市| 保亭| 贡嘎县| 盐山县| 巨野县| 仲巴县| 务川| 阿城市| 旌德县| 兴山县| 潞城市| 阜新市| 古交市| 湟源县| 安西县| 澄江县| 开封县| 商城县| 如皋市| 达尔| 乳山市| 同江市| 维西| 宜阳县| 朝阳区| 昭觉县| 宜春市| 陇川县| 鹤岗市| 阳江市| 武威市| 开原市| 南川市| 通海县| 甘孜县| 刚察县| 沾益县| 清原| 红河县|