简单实现51单片机步进电机的驱动

本文详细介绍了一种使用51单片机控制步进电机的简单方法,包括引脚定义、定时器配置及中断处理技巧,通过实例代码讲解如何实现精确的电机控制。

简单实现51单片机步进电机的驱动

说明:本文章主要用代码实现驱动步进电机

驱动步进电机原理和代码都比较简,相信各位都能看懂,但由于我做过这个项目其中有些小坑的地方和大家分享一下
首先是定义引脚我在这定义的是P1.1;P1.2;P1.3;P1.4;大家也可以定义其他的引脚,但定义什么引脚就要用杜邦线连接什么引脚。
下一步需要比较注意的是定时器的使用,在驱动步进电机定时机上可以使用定时器0、定时器1等等,我在这里使用的是定时器1工作方式也为1但需要注意的地方是TMOD设置定时器的模式,如果是仅仅驱动步进电机的话大家不知道如何配置就可以像我一样把定时器0和定时器1都打开TMOD|= 0x11(不推荐);然后分享我入坑的地方我一开始是使用定时器0的然后为以后项目扩展我就把定时器0改为了定时器1,然后我就粗心大意的中断标号还是为interrupt 1导致步进电机直接不工作,所以当大家想使用不同定时器工作的时候一定不要忘了改中断号(定时器1对应的是interrupt 3)
最后我增加了一个外部中断0来停止步进电机工作,外部中断0的触发方式为低电平触发,既当按键按下时触发外部中断0使步进电机停止工作(按键我定义为P3.2)当按键复位外部中断0停止既步进电机继续工作。
项目代码:

#include "reg52.h"
sbit anniu=P3^2;
 //Motor
sbit A = P1^1;	  //定义管脚
sbit b = P1^2;
sbit C = P1^3;
sbit D = P1^4;

 ///////////////////////////////////////
//步进电机驱动
unsigned char MotorStep=0;  //步进马达步序
unsigned int  MotorDelay,Speed=1,TIM,CT;

#define speed  1  // 调整速度 数值不要设的太低 低了会引起震动。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值