#include <REG51.H>
/*定义程序中的公共变量参数*/
unsigned int ti_dis; //定义时间间隔
unsigned int mot_step; //定义步数
unsigned int mo_bc=25;//定义电机所转圈数的参数,可根据实际情况修改
unsigned int js=150; //定义电机速度参数,数值越小,速度越快,最小为8,小于8可能堵转。根据实际情况可进行修改。
unsigned int cjs=15; //定义时间基本控制参数,如无问题不需要修改
/*变量参数定义结束*/
/*以下为延时控制过程*/
void delay(unsigned int ti_small,unsigned int ti_base)//ti_small为时间最小单位,ti_base=1000时为10ms,a*ti=mS
{
while(--ti_small!=0) //循环开始
{
for(ti_dis=0;ti_dis<=ti_base;ti_dis++); //时间累加器
}
}
/*时间延时过程结束*/
/*以下为主程序,执行电机的正反转,控制速度和延时*/
void main(void)
{
P1=0xFF; //稳定信号输出,防止上电时电机转子因信号不稳定抖动
delay(1000,1000); //加电10s后再运行主程序,给调试人员留出足够准备时间,防止出现事故。可根据实际情况修改,为安全起见建议时间延长
/*以下程序未控制电机运动方式的主体部分*/
while(1) //无限循环
{
for(mot_step=0;mot_step<mo_bc;mot_step++) //循环控制旋转圈数,正转
{
delay(js,cjs); //每步延时
P1=0xF7; //电机转速,正传
delay(js,cjs); //每步延时
P1=0xFB; //电机转速,正传
}
P1=0x00; //软制动,防止机械部件因惯性造成过位
delay(20,cjs); //延长制动时间,防止电机拖动的负荷因惯性造成过未,如果需要调整制动停留时间,数字20根据实际情况修改
P1=0xFF; //防止停车后电机过热
delay(1000,1000); //间隔10s,还行反转,可根据需求进行修改
for(mot_step=0;mot_step<mo_bc;mot_step++) //循环控制旋转圈数,反转
{
delay(js,cjs); //每步延时
P1=0xFD; //电机转速,反传
delay(js,cjs); //每步延时
P1=0xFE; //电机转速,反传
}
P1=0x00; //软制动,防止机械部件因惯性造成过位
delay(20,cjs); //延长制动时间,防止电机拖动的负荷因惯性造成过未,如果需要调整制动停留时间,数字20根据实际情况修改
P1=0xFF; //防止停车后电机过热
delay(1000,1000); //间隔10s,执行正传,可根据需求进行修改
}
/*电机控制主体部分结束*/
}
/*主程序段结束*/
|