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; 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();
}
}
}
/********************************************************/