基于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仿真图如下

在这里插入图片描述

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138088.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 发布小工具:Ip一键切换V1.0「建议收藏」

    发布小工具:Ip一键切换V1.0「建议收藏」你还在手动修改Ip么?IP地址一键切换,你经历过么?Download一个试试吧。本工具用批处理实现,无需安装,绿色安全。

  • 最大池化[通俗易懂]

    最大池化[通俗易懂]TensorFlow最大池化由Aphex34(自己的作品) CCBY-SA4.0,通过WikimediaCommons共享这是一个最大池化的例子maxpooling&

  • dz搬家 config_global.php 不可写入,傻瓜式Discuz论坛搬家教程

    dz搬家 config_global.php 不可写入,傻瓜式Discuz论坛搬家教程1.首先,数据的备份是很重要的,要明确这一点2.论坛搬家,备份恢复一点也不难,真的,首先不要在心里上被它吓到,dz程序为我们提供了非常便捷的几种方案大致上,搬家的方法有几种:1.第一种方法是通过phpmyadmin导出导入数据,这种方法比较鸡肋,因为超过2M的就上传不上去了,在此不多解释,不推荐2.第二种方法是通过ucenter后台自带备份恢复,这个容易遇到“无法访问该应用的备份接口,请拷贝uce…

  • 笔记本运行游戏卡顿的调整方法_电脑玩游戏间歇性卡顿

    笔记本运行游戏卡顿的调整方法_电脑玩游戏间歇性卡顿笔记本电脑玩游戏为什么卡顿?笔记本电脑玩游戏卡顿是指在正常情况下笔记本电脑明明可以流畅的运行该游戏,却在游戏时出现了游戏帧数突然降低,过一段时间又恢复正常的毛病。这就让我们很尴尬了,玩游戏进入高潮的时候卡顿是有分分钟想砸电脑的节奏啊。那么该如何解决笔记本玩游戏卡顿的问题呢?下面小编就详细的为大家为大家介绍解决笔记本电脑游戏卡顿的方法。无论台式机还是笔记本玩游戏都存在相同的问题

  • C++创建线程_C语言网络编程创建线程

    C++创建线程_C语言网络编程创建线程在window系统中编写控制台程序,创建线程使用CreateThread()函数创建,则线程函数必须申明为DWORDWINAPI;使用_beginthreadex()创建,则线程函数必须申明为unsignedintWINAPI;并需要设置环境:工程->设置->C/C++->CodeGeneration->Userun-timelibray->选DebugMultithr

  • UML——实现图

    UML——实现图UML——实现图

发表回复

您的电子邮箱地址不会被公开。

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