找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机步进电机的正反转控制(含源码和仿真文件)

[复制链接]
跳转到指定楼层
楼主
能够实现步进电机正转3圈,反转3圈和停止。内容很基础,供大家学习参考。仿真图如下:


单片机源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code FFW[]=
  5. {
  6.         0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09
  7. };    //正转

  8. uchar code REV[]=
  9. {
  10.         0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01
  11. };    //反转

  12. sbit K1 = P3^0;
  13. sbit K2 = P3^1;
  14. sbit K3 = P3^2;

  15. void DelayMS(uint ms)
  16. {
  17.         uchar i;
  18.         while(ms--)
  19.         {
  20.                  for(i=0;i<120;i++);
  21.         }
  22. }

  23. void SETP_MOTOR_FFW(uchar n)    //电机正转函数,n为圈数
  24. {
  25.         uchar i,j;
  26.         for(i=0;i<5*n;i++)
  27.         {
  28.                  for(j=0;j<8;j++)
  29.                 {
  30.                          if(K3 == 0)        break;    //检测K3是否按下,如果按下则停止转动
  31.                         P1 = FFW[j];
  32.                         DelayMS(25);
  33.                 }
  34.         }
  35. }

  36. void SETP_MOTOR_REV(uchar n)    //电机反转函数,n为圈数
  37. {
  38.         uchar i,j;
  39.         for(i=0;i<5*n;i++)
  40.         {
  41.                  for(j=0;j<8;j++)
  42.                 {
  43.                          if(K3 == 0)        break;
  44.                         P1 = REV[j];
  45.                         DelayMS(25);
  46.                 }
  47.         }
  48. }

  49. void main()
  50. {
  51.         uchar N = 3;    //转3圈
  52.         while(1)
  53.         {
  54.                  if(K1 == 0)
  55.                 {
  56.                          P0 = 0xfe;    //正转指示灯点亮
  57.                         SETP_MOTOR_FFW(N);
  58.                         if(K3 == 0) break;
  59.                 }
  60.                 else if(K2 == 0)
  61.                 {
  62.                          P0 = 0xfd;    //反转指示灯点亮
  63.                         SETP_MOTOR_REV(N);
  64.                         if(K3 == 0) break;
  65.                 }
  66.                 else
  67.                 {
  68.                          P0 = 0xfb;    //停止指示灯点亮
  69.                         P1 = 0x03;    //?
  70.                 }
  71.         }
  72. }
复制代码

所有资料51hei提供下载:
步进电机的正反转控制.rar (42.2 KB, 下载次数: 65)

评分

参与人数 1黑币 +10 收起 理由
admin + 10 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:350104 发表于 2021-6-8 09:41 | 只看该作者
推荐学习实用  不错
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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