×
单片机 > 单片机程序设计 > 详情

步进电机加速-匀速-减速运行程序(C51源程序)

发布时间:2020-08-25 发布时间:
|
ME300系列单片机开发系统+步进电机模块演示程序

功能:步进电机以加速方式启动,转速达到程序规定的最快速度后保持一段时间匀速运转,又开始以减速

方式运行直到步进电机停止转动。由K1键控制演示程序运行。步进电机模块上D1-D4可以指示工作状态。

/******************************************************************/
/*                                                                                                                                 */
/* ME300B单片机开发系统演示程序 - 步进电机加减速运行程序                                              */
/*                                                                                                                                 */
/* 步进电机启动时,转速由慢到快逐步加速。                                                                       */
/* 步进电机匀速运行                                                                                                        */ 
/* 步进电机由快到慢逐步减速到停止                                                                                                                           */
/* 网站http://www.elecfans.com                                                  */
 /******************************************************************/
    
#include        //51芯片管脚定义头文件
#include        //内部包含延时函数 _nop_();

#define uchar unsigned char
#define uint  unsigned int

sbit  K1=P1^4;
uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
//uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
uchar rate ;        
/********************************************************/
/*                                                  
/* 延时
/* 11.0592MHz时钟,                                    
/*                                                      
/********************************************************/
void delay()
 {                           
   uchar k;
   uint s;
   k = rate;
   do
    {
       for(s = 0 ; s <500 ; s++) ;  
    }while(--k);
 }
/********************************************************/
/*
/*步进电机正转
/*
/********************************************************/
void  motor_ffw()

   uchar i;
 
    for (i=0; i<8; i++)      //一个周期转30度
    {
       P1 = FFW[i];          //取数据
       delay();                 //调节转速
    }
}

/********************************************************
*                                                       
*步进电机运行                                               
*                                                      
*********************************************************/
void  motor_turn()

   uchar x;
   rate=0x10;
   x=0xf0;
   do
     {
        motor_ffw();               //加速
        rate--;
     }while(rate!=0x01);

   do
     {     
        motor_ffw();               //匀速
       x--;
     }while(x!=0x01);
  
   do
     {
        motor_ffw();              //减速 
        rate++;
     }while(rate!=0x10);    
}

/********************************************************
*                                                       
*  主程序                                               
*                                                      
*********************************************************/
main()
{     
   
   P1=0xf0;

   while(1)
  {
      P1=0xf0;
      if(K1==0)
     {
       motor_turn();
     }
  } 
}

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



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些