功能介绍:通过51单片机作为主控CPU,通过ULN2003步进电机驱动模块来进行步进电机驱动,通过按键设置步进电机的正反转以及停止,可以通过按键调节步进电机的转速,并且将步进电机转动状态和速度比显示到LCD1602显示屏上,文末有资料分享:
55-基于51单片机步进电机正反转加减速控制(程序+原理图+元件清单全套资料)
程序打开办法:特别注意:下载资料包以后一定要先解压!!!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。
void main()
{
init_timer0();
lcd1602_init();
L1602_string(1,1,"ZHUAN:");L1602_string(1,7," STOP ");
L1602_string(2,1,"SPEED:"); L1602_string(2,10," % ");
buf_Direction=CST_STEP_MOTOR_ST;
set_speed=15;
step_index=3;
EA=1;
while(1)
{
if(k1==0)//向左转
{
while(k1!=1);
buf_Direction=CST_STEP_MOTOR_Z;
L1602_string(1,7," LEFT ");
}
if(k2==0)//向右转
{
while(k2!=1);
buf_Direction=CST_STEP_MOTOR_F;
L1602_string(1,7,"RIGHT ");
}
if(k3==0)//停止
{
while(k3!=1);
buf_Direction=CST_STEP_MOTOR_ST;
L1602_string(1,7," STOP ");
}
if(k4==0)//减速
{
while(k4!=1);
if(set_speed <33)
set_speed +=1;; //减速
}
if(k5==0)//加速
{
while(k5!=1);
if(set_speed >1)
set_speed -=1; //加速
}
L1602_int(2,8,100-set_speed*3); //显示速度
}
}
void isr_timer0 (void) interrupt 1 using 1//定时器 执行电机运行
{
TH0=CST_TH0;
TL0=CST_TL0;
step_motor_driver();
}