微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求高手给步进电机子程序加个延时或者中断步进电机运行一分钟停止,或者转3圈停止

求高手给步进电机子程序加个延时或者中断步进电机运行一分钟停止,或者转3圈停止

时间:10-02 整理:3721RD 点击:
求高手给步进电机子程序加个延时或者中断步进电机运行一分钟停止,或者转3圈停止

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

7  步进电机控制程序函数

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

voidmotor_ccw(void)            //电机反转函数

{

  uchar i,j;

  for(j=0;j<8;j++)                 //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周

  {

   if(key7==0)

{

   break;  //如果K7按下,退出此循环

}

for(i=0;i<8;i++)  //旋转45度

{

   //P1=CCW;

   MA=tabD;

   MB=tabC;

   MC=tabB;

   MD=tabA;

   delay(5);  //调节转速

}

  }

}

voidmotor_cw(void)            //电机正转函数

{

  uchar i,j;

  for(j=0;j<8;j++)

  {

   if(key7==0)

{

   break;  //如果K7按下,退出此循环

}

for(i=0;i<8;i++)  //旋转45度

{

   //P1=CW;

   MA=tabDB;

   MB=tabCB;

   MC=tabBB;

   MD=tabAB;

   delay(5);  //调节转速

}

  }

}   

voidmotor_back()    //电机反转

{

    write_1602com(er+0x01);

       write_1602dat(tabrun[2]); //写运行状态反转B

//for(r=0;r<N;r++)

while(motorflag==1)

               {

                motor_ccw();  

                if(key7==0)      //key7电机停止按键

                  {

                               motorflag=0;

                         write_1602com(er+0x01);

                      write_1602dat(tabrun[0]);

                   //break;

                  }

                     

               }

}

void motor_run()    //电机正转

{

   write_1602com(er+0x01);

   write_1602dat(tabrun[1]);  //写运行状态正转A

   //for(r=0;r<N;r++)

   while(motorflag==1)

                  {

                   motor_cw();   

                   if(key7==0)

                   {

                               motorflag=0;

                                 write_1602com(er+0x01);

                        write_1602dat(tabrun[0]);

                     //break;

                   }

                  }

}

void motor_stop()        //电机停止

{

                      write_1602com(er+0x01);

               write_1602dat(tabrun[0]);

             MD=0;

                      MC=0;

                      MB=0;

                      MA=0;   

}

voidkeyscan2()              // 电机控制按键扫描子涵数

{

if(key5==0)                  //key5电机反转按键                  

      {            

          delay(10);

              if (key5==0)

               {

                motorflag=1;

           motor_back();

               }      

         }

elseif(key6==0)  //key6电机正转按键

          {  

                 delay(10);

                 if(key6==0)

                     {

                     motorflag=1;

                     motor_run();

                     }        

                                                                 

               }

      else

                        motor_stop();

}


顶起,让高手看到

顶起,让高手看到

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top