找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12594|回复: 13
打印 上一主题 下一主题
收起左侧

28BYJ-48步进电机测试程序

  [复制链接]
跳转到指定楼层
楼主
51单片机驱动28BYJ-48型号的步进电机测试程序:



单片机源程序如下:
  1. //******************************************************************************************//
  2. //        程序名称:28BYJ-48步进电机测试程序
  3. //        功能描述:步进电机分别以单四拍、双四拍、八拍驱动方式驱动,正反转各360度
  4. //        单片机:  AT89S52,FOSC=12MHz
  5. //        硬件连接:P1.0----INA
  6. //            P1.1----INB
  7. //            P1.2----INC
  8. //            P1.3----IND
  9. //            驱动板的驱动电压和芯片逻辑供电电压均为5V;         
  10. //            步进电机红线接+5V驱动电压,橙黄粉蓝分别接OUT1、OUT2、OUT3、OUT4,
  11. //            注意外接电源要与单片机共地。
  12. //        维护记录:2012.11.2 双龙电子科技
  13. //*****************************************************************************************//
  14. #include<reg52.h>
  15. #define uint unsigned int
  16. #define uchar unsigned char
  17. uint i,j,k;
  18. uint N=128;//主轴旋转度数设置,度数D=N*45/减速比,采用1:16减速比的步进电机,旋转度数即为D=128*45/16=360度

  19. uchar code single_pos[4]={0x07,0x0b,0x0d,0x0e};//单四拍驱动方式正转表 D-C-B-A
  20. uchar code single_rev[4]={0x0e,0x0d,0x0b,0x07};//单四拍驱动方式反转表 A-B-C-D
  21. uchar code double_pos[4]={0x06,0x03,0x09,0x0c};//双四拍驱动方式正转表 AD-DC-CB-BA
  22. uchar code double_rev[4]={0x0c,0x09,0x03,0x06};//双四拍驱动方式反转表 AB-BC-CD-DA
  23. uchar code eight_pos[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e};//八拍驱动方式正转表 AD-D-DC-C-CB-B-BA-A
  24. uchar code eight_rev[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06};//八拍驱动方式反转表 A-AB-B-BC-C-CD-D-DA

  25. void delay(uint z);
  26. void m_single_pos();
  27. void m_single_rev();
  28. void m_double_pos();
  29. void m_double_rev();
  30. void m_eight_pos();
  31. void m_eight_rev();
  32. void main()                       
  33. {       
  34.         while(1)
  35.         {
  36.                 m_single_pos();//单四拍驱动方式正转360度
  37.                 delay(200);
  38.                 m_single_rev();//单四拍驱动方式反转360度
  39.                 delay(200);
  40.                 m_double_pos();//双四拍驱动方式正转360度
  41.                 delay(200);
  42.                 m_double_rev();//双四拍驱动方式反转360度
  43.                 delay(200);
  44.                 m_eight_pos();//八拍驱动方式正转360度
  45.                 delay(200);
  46.                 m_eight_rev();//八拍驱动方式反转360度       
  47.                 delay(200);
  48.         }               
  49. }
  50. /********************延时z毫秒**************************************/
  51. void delay(uint z)
  52. {
  53.         uint x,y;
  54.         for(x=z;x>0;x--)
  55.                 for(y=110;y>0;y--);
  56. }
  57. /*******************单四拍驱动正转(N*45/16)度***********************/
  58. void m_single_pos()
  59. {
  60.         for(k=0;k<N;k++)
  61.         {
  62.                 j=0;
  63.                 for(i=0;i<4;i++)//在单四拍工作方式下,一个脉冲转子转动角度为5.625*2=11.25度,四拍共45度
  64.                 {
  65.                         P1=single_pos[j];
  66.                         delay(5);//适当延时,保证转子转动时间,延时过短会丢拍
  67.                         j++;
  68.                 }
  69.         }
  70. }

  71. /*******************单四拍驱动反转(N*45/16度)***********************/
  72. void m_single_rev()
  73. {
  74.         for(k=0;k<N;k++)
  75.         {
  76.                 j=0;
  77.                 for(i=0;i<4;i++)//在单四拍工作方式下,一个脉冲转子转动角度为5.625*2=11.25度,四拍共45度
  78.                 {
  79.                         P1=single_rev[j];
  80.                         delay(5);
  81.                         j++;
  82.                 }
  83.         }
  84. }

  85. /*******************双四拍驱动正转(N*45/16)度***********************/
  86. void m_double_pos()
  87. {
  88.         for(k=0;k<N;k++)
  89.         {
  90.                 j=0;
  91.                 for(i=0;i<4;i++)//在双四拍工作方式下,一个脉冲转子转动角度为5.625*2=11.25度,四拍共45度
  92.                 {
  93.                         P1=double_pos[j];
  94.                         delay(8);
  95.                         j++;
  96.                 }
  97.         }
  98. }
  99. /*******************双四拍驱动反转(N*45/16)度***********************/
  100. void m_double_rev()
  101. {
  102.         for(k=0;k<N;k++)
  103.         {
  104.                 j=0;
  105.                 for(i=0;i<4;i++)//在双四拍工作方式下,一个脉冲转子转动角度为5.625*2=11.25度,四拍共45度
  106.                 {
  107.                         P1=double_rev[j];
  108.                         delay(8);
  109.                         j++;
  110.                 }
  111.         }
  112. }
  113. /*******************八拍驱动正转(N*45/16)度***********************/
  114. void m_eight_pos()
  115. {
  116.         for(k=0;k<N;k++)
  117.         {
  118.                 j=0;
  119.                 for(i=0;i<8;i++)//在八拍工作方式下,一个脉冲转子转动角度为5.625度,八拍共45度
  120.                 {
  121.                         P1=eight_pos[j];
  122.                         delay(2);
  123.                         j++;
  124.                 }
  125. ……………………

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

所有资料51hei提供下载:
28BYJ-48步进电机测试程序.zip (19.71 KB, 下载次数: 325)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:327261 发表于 2018-5-10 23:54 | 只看该作者
谢谢分享呀~
回复

使用道具 举报

板凳
ID:320751 发表于 2018-6-17 19:26 | 只看该作者
xiexie 分享  初学者在此谢过
回复

使用道具 举报

地板
ID:249450 发表于 2018-12-5 10:13 | 只看该作者
非常感谢
回复

使用道具 举报

5#
ID:469333 发表于 2019-1-16 18:36 | 只看该作者
学习一下看看内容
回复

使用道具 举报

6#
ID:426441 发表于 2019-4-24 08:53 | 只看该作者
谢谢谢谢,下来看看,希望有用
回复

使用道具 举报

7#
ID:193507 发表于 2019-7-11 16:00 | 只看该作者
非常感谢,正常找资料。
回复

使用道具 举报

8#
ID:579967 发表于 2019-7-25 11:35 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

9#
ID:590239 发表于 2019-7-25 13:57 | 只看该作者
感谢楼主分享,正需要这个资料
回复

使用道具 举报

10#
ID:312978 发表于 2019-7-25 14:58 | 只看该作者

谢谢分享呀~
回复

使用道具 举报

11#
ID:87366 发表于 2020-1-26 12:47 | 只看该作者
谢谢分享
回复

使用道具 举报

12#
ID:693420 发表于 2020-2-19 15:04 | 只看该作者
最快可以达到每分钟多少转
回复

使用道具 举报

13#
ID:412517 发表于 2020-4-29 16:15 | 只看该作者
感谢分享,有你更精彩
回复

使用道具 举报

14#
ID:724938 发表于 2020-5-6 22:01 | 只看该作者
为啥我的电机在震动,不转呢?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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