找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3558|回复: 8
收起左侧

单片机步进电机控制 仿真与代码 带正转 反转 加速 减速按钮

  [复制链接]
ID:203422 发表于 2017-5-22 12:07 | 显示全部楼层 |阅读模式
51单片机控制步进电机实现正转 反转 加速 减速的仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.png 0.png

单片机源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code FFW[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
  5. uchar code REV[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
  6. sbit K1=P3^0;
  7. sbit K2=P3^1;
  8. sbit K3=P3^2;
  9. sbit K4=P3^3;
  10. sbit K5=P3^4;

  11. void delayMS(uint ms)
  12.   {
  13.     uchar i;
  14.         while(ms--)
  15.           {
  16.             for(i=0;i<120;i++);
  17.           }
  18.   }
  19.   void SETP_MOTOR_FFW(uchar n)
  20.     {
  21.           uchar i,j;
  22.           uint ms=200;
  23.          
  24.           for(i=0;i<5*n;i++)
  25.           {
  26.             for(j=0;j<8;j++)
  27.               {
  28.                     if(K3==0) break;
  29.                         if(K2==0) break;
  30.                  if(K4==0)
  31.              {
  32.                P0=0xf6;
  33.                ms=50;
  34.                   }
  35.                   if(K5==0)
  36.              {
  37.                P0=0xee;
  38.                ms=500;
  39.          }                  
  40.                          P1=FFW[j];
  41.                     delayMS(ms);
  42.                  }
  43.           }
  44.         }

  45. void SETP_MOTOR_REV(uchar n)
  46.   {
  47.     uchar i,j;
  48.         uint ms=200;
  49.           for(i=0;i<5*n;i++)
  50.           {
  51.             for(j=0;j<8;j++)
  52.               {
  53.                     if(K1==0) break;
  54.                         if(K3==0) break;
  55.                     if(K4==0)
  56.                 {
  57.                   P0=0xf5;
  58.                   ms=50;
  59.                     }
  60.                      if(K5==0)
  61.                 {
  62.                   P0=0xed;
  63.                   ms=500;
  64.             }                        
  65.                         P1=REV[j];
  66.                     delayMS(ms);
  67.               }
  68.           }
  69.   }

  70. void main()
  71.   {
  72.     uchar N=3;
  73.         while(1)
  74.           {
  75.             uchar ms=50;
  76.             if(K1==0)
  77.                   {
  78.                     P0=0xfe;
  79.                     SETP_MOTOR_FFW(N);
  80.                           if(K3==0) break;
  81.                   }
  82.                   else if(K2==0)
  83.                     {
  84.                           P0=0xfd;
  85.               SETP_MOTOR_REV(N);
  86. ……………………

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

所有资料51hei提供下载:
步进电机.rar (36.04 KB, 下载次数: 141)

评分

参与人数 1黑币 +5 收起 理由
syl829416534 + 5

查看全部评分

回复

使用道具 举报

ID:217754 发表于 2017-7-10 13:31 | 显示全部楼层
好资料,51黑有你更精彩!!!但是币币不够用呀。。好想下。。努力赚币
回复

使用道具 举报

ID:219233 发表于 2017-7-12 21:33 来自手机 | 显示全部楼层
怎么赚币
回复

使用道具 举报

ID:64913 发表于 2017-8-22 23:40 | 显示全部楼层
请问楼主,步进电机启动一会后怎么停了呢?
回复

使用道具 举报

ID:233759 发表于 2017-9-18 10:18 | 显示全部楼层
这个确实非常好用,程序完全正确,没有任何错误。
回复

使用道具 举报

ID:231214 发表于 2017-9-18 12:37 | 显示全部楼层
不错的资料,昨晚资料下不了,币用完了
回复

使用道具 举报

ID:252235 发表于 2017-11-26 14:12 | 显示全部楼层
期望下载 可惜没币
回复

使用道具 举报

ID:249545 发表于 2017-11-26 16:32 | 显示全部楼层
老师作品很好,在原创作品已有的"正转 ","反转","停止"基础止增加了"加速"和"减速"键.
回复

使用道具 举报

ID:314136 发表于 2018-6-15 18:14 | 显示全部楼层
好资料,51黑有你更精彩!!!加个lcd1602就更好了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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