色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          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; //關閉蜂鳴器
          delaynms(300);
          }


          void main(void)
          {
          TR0=0; //關閉定時器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):電機轉速到最高后,也就是N為1或99時,再按一下,就變到99或1,
          //電機反方向旋轉以最高速度


          上一頁 1 2 下一頁

          評論


          技術專區(qū)

          關閉