基于51单片机控制步进电机正反转「建议收藏」

基于51单片机控制步进电机正反转「建议收藏」基于51单片机控制步进电机正反转此次采用uln2003模块来链接步进电机;##步进电机工作原理步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。步进电动机的结构形式和分类方法较多,一般按励磁方式分为磁阻式、永磁式和混磁式三种;按相数可分为单相、两相、三相和多相等形式。因此我们可以控制单片机I/O口的电平来控制步进电机,此次设计中采用四相单拍工作方式,在这种工作方式下,A、

大家好,又见面了,我是你们的朋友全栈君。

基于51单片机控制步进电机正反转

此次采用uln2003模块来链接步进电机;
## 步进电机工作原理
步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。
步进电动机的结构形式和分类方法较多,一般按励磁方式分为磁阻式、永磁式和混磁式三种;按相数可分为单相、两相、三相和多相等形式。

因此我们可以控制单片机I/O口的电平来控制步进电机,此次设计中采用四相单拍工作方式,在这种工作方式下,A、B、C、D 三相轮流通电,电流切换三次,磁场旋转一周,转子向前转过一个齿距角。因此这种通电方式叫做四相单四拍工作方式。

  1. 电机正转代码 unsigned char code tableZ[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};
  2. 电机反转代码 unsigned char code tableF[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};

代码如下

#include <reg52.h>
#define uint unsigned int 
#define uchar unsigned char
unsigned char code tableZ[8]={ 
   0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};
unsigned char code tableF[8]={ 
   0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};//²½½øµç»úzheng
void delay(unsigned int t);
sbit S3=P3^4; //反转
sbit S4=P3^5; //反停
sbit S5=P3^6; // 正停
//正转写入数据
void  motor_z()
 { 
    
   unsigned char i,j;
  
      for (i=0; i<8; i++)  
        { 
   
     if(S5==0){ 
   break;}
     for(j=0;j<8;j++){ 
   
      P1 = tableZ[i]&0x1f;    
          delay(50);
     }
                       
        }
 }
//反转写入数据
void motor_f(){ 
   
 unsigned char i,j;
       for (i=0; i<8; i++)  
        { 
   
     if(S4==0){ 
   break;}
     for(j=0;j<8;j++){ 
   
      P1 = tableF[i]&0x1f;   
          delay(50);
     }
                    
        }
}
void delay(unsigned int t)//延时函数
{ 
                              
   unsigned int k;
   while(t--)
   { 
   
     for(k=0; k<60; k++)
     { 
    }
   }
}

void main()
{ 
   
while(1){ 
   
motor_z();
if(S3 == 0){ 
   
motor_f();
}
}
}

protel仿真图如下

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138090.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月31日 下午11:46
下一篇 2022年6月1日 上午6:00


相关推荐

  • js循环输出div

    js循环输出divbody 部分 div 点我 divdiv divjs 代码 scriptsrc jquery1 4 2 js type text javascript scriptscript function div first click function div last after div

    2026年3月19日
    2
  • MyBase7定期激活成功教程

    MyBase7定期激活成功教程首先 保证 myBase7 是关闭状态 然后执行以下步骤 1 找到 myBase7 的安装目录 右击 mybase 的启动图标 打开文件所在位置 2 用编辑软件打开文件 myBase ini 3 找到 App UserLic FirstUseOn 将这一行删除掉 不放心的话可以用英文分号 注释掉 效果都一样 4 再打开 myBase 的时候 就没有使用到期提醒了 注 App UserLic FirstUseOn 这一行是记录程序的首次使用时间的 就算这次删除了 下次打开软件之后还是会自动生成这一行信息 只不

    2026年3月17日
    2
  • java活期改定期的思路_计算存款利息。有 1000 元,想存一年。有三种方法可选: (1) 活期,年利率为 r1 =0.0036, (2) 一年期定期,年利率为 r2 =0.0225 (3) 存两次…

    java活期改定期的思路_计算存款利息。有 1000 元,想存一年。有三种方法可选: (1) 活期,年利率为 r1 =0.0036, (2) 一年期定期,年利率为 r2 =0.0225 (3) 存两次…其它 编程将一个四位整数分解 并逆序组合成一个新的四位整数 20 0 分 判断题 格式化输出函数 printf 的功能是按指定的格式向终端输出 1 个任意类型的数据 判断题 变量名要符合标识符的命名规则 即由字母 数字 下划线组成 且只能以字母开头 单选题 若有定义语句 inta b doublex 则以下不符合 C 语言语法的表达式是 2 0 分 判断题 字符常量用于表示一个字符

    2026年3月17日
    1
  • allegro转pads方法_pads原理图转cadence

    allegro转pads方法_pads原理图转cadence1、首先电脑上安装好三个软件。我的是AD21、Cadence16.6、PADS9.52、先把BRD文件用AD21直接导入,AD21支持直接导入BRD文件的,然后导出低版本AD即可。3、再用PADS9.5安装自带的一个转换功率,叫PADSTanslation,直接导入AD低版本文件转换出PADS的文件即可。…

    2025年8月22日
    5
  • sortablejs — 强大的拖拽库

    sortablejs — 强大的拖拽库Sortable js 是一款优秀的 js 拖拽库 支持 ie9 及以上版本 ie 浏览器和现代浏览器 也可以运行在移动触摸设备中 不依赖 jQuery 支持 Meteor AngularJS React Vue Knockout 框架和任何 CSS 库 如 Bootstrap ElementUI 你可以用来拖拽 div table 等元素 一 sortablejs 最基本的示例 divid itxst divdata id a item1 lt divdata id a divid itxst

    2026年3月17日
    2
  • gcc命令和make命令[通俗易懂]

    gcc命令和make命令[通俗易懂]针对gcc,新建一个c语言文件:3.常用的有两个命令:-o将main.c预处理、编译、汇编并链接形成可执行文件main。-o选项用来指定输出文件的文件名。-S把.c文件编译成汇编文件.s查看汇编文件:其他还有把.s文件输出为.o文件的命令-c把.o文件链接为可执行文件的命令也是-o…

    2022年10月11日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号