找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 22387|回复: 54
收起左侧

A4988步进电机单片机驱动程序

  [复制链接]
ID:213838 发表于 2017-6-22 20:47 | 显示全部楼层 |阅读模式
这是自己用4988步进电机驱动芯片做的,4988芯片一般用在3D打印机上,具有体积小等优点。下面有我的测试程序,希望可以给需要的人提供参考。

单片机源程序如下:
  1. /***************************************************************
  2. * 实 验 名 :步进电机实验
  3. * 实验说明 :电机启动、停止、正转、反转
  4. * 实验平台 :51单片机开发板
  5. * 连接方式 :pulse接P10  DIR接P11 KYE1接P20 KYE2接P21 KYE3接P22 KYE4接P23 ENABLE接P12 MS1-3接P13-P14
  6. * 注    意 :本例程使用了中断定时器,中断介绍会在下一实验中说明
  7. ****************************************************************************/

  8. #include <reg52.h>
  9. #include <intrins.h>

  10. #define FOSC 11059200L //晶振设置,默认使用11.0592M Hz
  11. //#define FOSC 12000000L //晶振设置,使用12M Hz
  12. //#define FOSC 24000000L //晶振设置,使用24M Hz

  13. #define TIME_MS 1 //设定定时时间 ms ,在11.0592M晶振下,不易超过60ms





  14. //IO接口定义
  15. sbit pulse = P1^0;//脉冲信号
  16. sbit Dir   = P1^1; //正反转

  17. sbit EN    = P1^2;
  18. sbit MS1   = P1^3;
  19. sbit MS2   = P1^4;
  20. sbit MS3   = P1^5;



  21. sbit KEY1 = P2^0;  //启动
  22. sbit KEY2 = P2^1;  //停止
  23. sbit KEY3 = P2^2;  //正转
  24. sbit KEY4 = P2^3;  //反转


  25. //全局变量定义
  26. unsigned char count=0;

  27. /*******************************************************************************
  28. * 函 数 名 :Delayms
  29. * 函数功能 :实现 ms级的延时
  30. * 输    入 :ms
  31. * 输    出 :无
  32. *******************************************************************************/
  33. void Delayms(unsigned int ms)
  34. {
  35.         unsigned int i,j;
  36.         for(i=0;i<ms;i++)
  37.         #if FOSC == 11059200L
  38.                 for(j=0;j<114;j++);
  39.         #elif FOSC == 12000000L
  40.           for(j=0;j<123;j++);
  41.         #elif FOSC == 24000000L
  42.                 for(j=0;j<249;j++);
  43.         #else
  44.                 for(j=0;j<114;j++);
  45.         #endif
  46. }

  47. /*******************************************************************************
  48. * 函 数 名 :Timer0Init
  49. * 函数功能 :定时器0初始化
  50. * 输    入 :无
  51. * 输    出 :无
  52. *******************************************************************************/
  53. void Timer0Init()
  54. {
  55.         TMOD=0x01; //设置定时器0工作方式为1
  56.         TH0=(65536-FOSC/12/1000*TIME_MS)/256;
  57.         TL0=(65536-FOSC/12/1000*TIME_MS)%256;
  58.         ET0=1; //开启定时器0中断
  59. //        TR0=1;        //开启定时器       
  60.         EA=1;  //打开总中断
  61. }


  62. /*******************************************************************************
  63. * 函 数 名 :main
  64. * 函数功能 :主函数
  65. * 输    入 :无
  66. * 输    出 :无
  67. *******************************************************************************/
  68. void main()
  69. {
  70.         Timer0Init();
  71.         EN=0;
  72.         MS1=0;
  73.         MS2=0;
  74.         MS3=0;
  75.         while(1)
  76.         {
  77.   if(KEY1==0)  //判断是否按下键盘
  78.         {
  79.                 Delayms(10); //延时,软件去干扰
  80.                 if(KEY1==0)   //确认按键按下
  81.                 {
  82.       TR0=1;
  83.                 }
  84.                 while(KEY1==0);//按键锁定,每按一次count只加1.
  85.         }
  86.         if(KEY2==0)  //判断是否按下键盘
  87.         {
  88.                 Delayms(10); //延时,软件去干扰
  89.                 if(KEY2==0)   //确认按键按下
  90.                 {
  91.       TR0=0;
  92.                 }
  93.                 while(KEY2==0);//按键锁定,每按一次count只加1.
  94.         }       
  95.        
  96.         if(KEY3==0)  //判断是否按下键盘
  97.         {
  98.                 Delayms(10); //延时,软件去干扰
  99.                 if(KEY3==0)   //确认按键按下
  100.                 {
  101.       Dir=0;
  102.                 }
  103.                 while(KEY3==0);//按键锁定,每按一次count只加1.
  104.         }       
  105.        
  106.                 if(KEY4==0)  //判断是否按下键盘
  107.         {
  108.                 Delayms(10); //延时,软件去干扰
  109.                 if(KEY4==0)   //确认按键按下
  110.                 {
  111.       Dir=1;
  112.                 }
  113.                 while(KEY4==0);//按键锁定,每按一次count只加1.
  114.         }       
  115.        
  116.        
  117.         }
  118. }

  119. /*******************************************************************************
  120. ……………………

  121. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
A4988步进电机实验.rar (23.64 KB, 下载次数: 811)

评分

参与人数 2黑币 +35 收起 理由
dww465757120 + 30 共享资料的黑币奖励!
Lucency1998 + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:1 发表于 2017-6-24 21:47 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:138282 发表于 2017-6-25 20:31 来自手机 | 显示全部楼层
必须顶啊!终于有51单片机控制4988了
回复

使用道具 举报

ID:231918 发表于 2017-10-11 21:04 | 显示全部楼层
有51单片机控制4988了    参观看看代码 学习一下
回复

使用道具 举报

ID:144716 发表于 2017-10-26 23:42 来自手机 | 显示全部楼层
楼主,用A4988驱动电机时还有四拍八拍的整步、半步这个说法吗?
回复

使用道具 举报

ID:144716 发表于 2017-10-26 23:44 来自手机 | 显示全部楼层
假如我要实现每秒钟发5个脉冲,程序里定时器要怎么设置(计算)呢?小白一个,楼主不要嫌弃。感谢…
回复

使用道具 举报

ID:144716 发表于 2017-10-26 23:46 来自手机 | 显示全部楼层
假如我要实现每秒钟发5个脉冲,程序怎么修改呢?小白一个,楼主不要嫌弃,感谢!
回复

使用道具 举报

ID:283533 发表于 2018-2-10 15:45 | 显示全部楼层
学习学习
回复

使用道具 举报

ID:283533 发表于 2018-2-10 15:47 | 显示全部楼层

有51单片机控制4988了    参观看看代码 学习一下
回复

使用道具 举报

ID:287420 发表于 2018-3-4 13:53 | 显示全部楼层
学习一下,留个记号
回复

使用道具 举报

ID:287420 发表于 2018-3-4 13:53 | 显示全部楼层
学习一下,留个记号~~!
回复

使用道具 举报

ID:219315 发表于 2018-3-11 11:38 | 显示全部楼层
必须顶啊!终于有51单片机控制4988了
回复

使用道具 举报

ID:243748 发表于 2018-4-6 12:29 来自手机 | 显示全部楼层
?学习了
回复

使用道具 举报

ID:230020 发表于 2018-6-5 18:34 | 显示全部楼层
必须顶啊!终于有51单片机控制4988了
回复

使用道具 举报

ID:347013 发表于 2018-6-7 16:37 | 显示全部楼层
这个必须顶顶
回复

使用道具 举报

ID:218959 发表于 2018-6-12 17:32 | 显示全部楼层
666666666666666666
回复

使用道具 举报

ID:230020 发表于 2018-7-19 18:59 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:233449 发表于 2018-8-4 20:14 | 显示全部楼层
我想知道脉冲引脚要连在那里
回复

使用道具 举报

ID:384479 发表于 2018-8-9 10:26 来自手机 | 显示全部楼层
厉害了,终于找到了
回复

使用道具 举报

ID:384755 发表于 2018-8-9 20:30 | 显示全部楼层
终于有51单片机控终于有51单片机控制4988了制4988了
回复

使用道具 举报

ID:381271 发表于 2018-8-13 10:16 | 显示全部楼层
假的 没什么用
回复

使用道具 举报

ID:249545 发表于 2018-8-24 12:03 | 显示全部楼层
很好的步进电机MCU驱动资料,适合我们初学者学习制做和实验~
回复

使用道具 举报

ID:368790 发表于 2018-9-5 10:15 | 显示全部楼层
点赞。。。。。。。。。。。。。。。。等积分够了再来下载
回复

使用道具 举报

ID:88617 发表于 2018-10-7 11:17 | 显示全部楼层
下载来学习下

回复

使用道具 举报

ID:85865 发表于 2018-11-1 11:16 | 显示全部楼层
可以驱动48步进电机吗
回复

使用道具 举报

ID:191831 发表于 2018-11-11 23:05 | 显示全部楼层
为什么不行
回复

使用道具 举报

ID:425210 发表于 2018-11-12 19:25 | 显示全部楼层
哈哈哈,谢谢分享
回复

使用道具 举报

ID:428394 发表于 2018-11-17 20:03 | 显示全部楼层
非常感谢找了好久
回复

使用道具 举报

ID:433326 发表于 2018-11-26 11:56 | 显示全部楼层

必须顶啊!终于有51单片机控制4988了
回复

使用道具 举报

ID:434762 发表于 2018-11-28 10:09 | 显示全部楼层
想学习
回复

使用道具 举报

ID:326087 发表于 2018-12-28 14:35 | 显示全部楼层
这个是用51单片机驱动的吗
回复

使用道具 举报

ID:3802 发表于 2019-1-8 16:09 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:505656 发表于 2019-4-6 11:31 | 显示全部楼层
太棒了,终于可以驱动42了
回复

使用道具 举报

ID:392259 发表于 2019-4-14 10:30 | 显示全部楼层
为啥我下载后电机只颤抖,而不转了?
回复

使用道具 举报

ID:554670 发表于 2019-6-4 14:30 | 显示全部楼层
好资料,51黑有你更精彩
回复

使用道具 举报

ID:562192 发表于 2019-6-13 22:23 来自手机 | 显示全部楼层
感谢,写的很棒,
回复

使用道具 举报

ID:572447 发表于 2019-6-29 09:31 来自手机 | 显示全部楼层
学习了
回复

使用道具 举报

ID:573271 发表于 2019-6-29 14:08 | 显示全部楼层
这个必须顶顶
回复

使用道具 举报

ID:579329 发表于 2019-7-8 19:39 | 显示全部楼层
感谢楼主分享,学习学习。
回复

使用道具 举报

ID:609144 发表于 2019-9-8 16:34 | 显示全部楼层
还是不会连线  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表