×
嵌入式 > 嵌入式开发 > 详情

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

发布时间:2020-06-30 发布时间:
|

ME300系列单片机开发系统+步进电机模块演示程序

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

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

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

/* */

/* ME300B单片机开发系统演示程序 - 步进电机加减速运行程序 */

/* */

/* 步进电机启动时,转速由慢到快逐步加速。 */

/* 步进电机匀速运行 */

/* 步进电机由快到慢逐步减速到停止 */

/* 网站/zixunimg/eepwimg/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; i8; 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();

}

}

}

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



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

热门文章 更多
STM8 UART