<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 機(jī)器人教程1:如何利用51單片機(jī)輸出PWM波

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

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

          /************電機(jī)正反向控制**************/

          void Motor_turn(void)

          {

          if(key_turn==0)

          {

          delayxms(2);//此處時(shí)間不能太長(zhǎng),否者會(huì)的中斷產(chǎn)生沖突

          if(key_turn==0)

          {

          flag=~flag;

          }

          while(!key_turn);

          }

          }

          /***********定時(shí)器0初始化***********/

          void timer0_init(void)

          {

          TMOD=0x01; //定時(shí)器0工作于方式1

          TH0=(65536-10)/256;

          TL0=(65536-10)%256;

          TR0=1;

          ET0=1;

          EA=1;

          }

          /**************定時(shí)0中斷處理******************/

          void timer0_int(void) interrupt 1

          {

          TR0=0;//設(shè)置定時(shí)器初值期間,關(guān)閉定時(shí)器

          TH0=(65536-10)/256;

          TL0=(65536-10)%256;

          TR0=1;

          if(flag==1)//電機(jī)正轉(zhuǎn)

          {

          PWM1=0;

          time++;

          if(time{

          PWM2=1;

          }

          else

          PWM2=0;

          if(time>=100)

          {

          time=0;

          }

          }

          else //電機(jī)反轉(zhuǎn)

          {

          PWM2=0;

          time++;

          if(time{

          PWM1=1;

          }

          else

          PWM1=0;

          if(time>=100)

          {

          time=0;

          }

          }

          }

          4、程序4、使單片機(jī)輸出PWM,并能控制正反轉(zhuǎn)和實(shí)現(xiàn)調(diào)速

          為了使大家徹底掌握此方面,下面再給出一個(gè)復(fù)雜一點(diǎn)的程序,實(shí)現(xiàn)的功能為通過(guò)一個(gè)按鍵控制正反轉(zhuǎn)并通過(guò)另外兩個(gè)按鍵使之可以在0到20級(jí)之間調(diào)速的程序。

          /*******************************************************************/

          /*程序名:PWM直流電機(jī)調(diào)速*/

          /*晶振:11.00592 MHz CPU型號(hào):STC89C52 */

          /*直流電機(jī)的PWM波控制,可以通過(guò)按鍵控制正反轉(zhuǎn)并在0到20級(jí)之間調(diào)速*/

          /*****************************************************************/

          #include

          #define uint unsigned int

          #define uchar unsigned char

          uchar time,count=50,flag=1;//低電平的占空比

          sbit PWM1=P2^0;//PWM通道1,反轉(zhuǎn)脈沖

          sbit PWM2=P2^1;//PWM通道2,正轉(zhuǎn)脈沖

          sbit key_add=P3^5;//電機(jī)加速

          sbit key_dec=P3^6;//電機(jī)減速

          sbit key_turn=P3^7;//電機(jī)換向

          /************函數(shù)聲明**************/

          void delayxms(uint z);

          void Motor_turn();

          void Motor_add();

          void Motor_dec();

          void timer0_init();

          /*********主函數(shù)********************/

          void main()

          {

          timer0_init();

          while(1)

          {

          Motor_turn();

          Motor_add();

          Motor_dec();

          }

          }

          /****************延時(shí)處理**********************/

          void delayxms(uint z)//延時(shí)xms程序

          {

          uint x,y;

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

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

          }

          /************電機(jī)正反向控制**************/

          void Motor_turn()

          {

          if(key_turn==0)

          {

          delayxms(2);//此處時(shí)間不能太長(zhǎng),否者會(huì)的中斷產(chǎn)生沖突

          if(key_turn==0)

          {

          flag=~flag;

          }

          while(!key_turn);

          }

          }

          void Motor_add()//電機(jī)加速

          {

          if(key_add==0)

          {

          delayxms(2);//此處時(shí)間不能太長(zhǎng),否者會(huì)的中斷產(chǎn)生沖突

          if(key_add==0)

          {

          count+=5;

          if(count>=100)

          {

          count=0;

          }

          }

          while(!key_add);

          }

          }

          void Motor_dec()//電機(jī)加減速

          {

          if(key_dec==0)

          {

          delayxms(2);//此處時(shí)間不能太長(zhǎng),否者會(huì)的中斷產(chǎn)生沖突

          if(key_dec==0)

          {

          count-=5;

          if(count>=100)

          {

          count=0;

          }

          }

          while(!key_dec);

          }

          }

          /***********定時(shí)器0初始化***********/

          void timer0_init()

          {

          TMOD=0x01; //定時(shí)器0工作于方式1

          TH0=(65536-10)/256;

          TL0=(65536-10)%256;

          TR0=1;

          ET0=1;

          EA=1;

          }



          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();