通过51单片机驱动步进电机

proteus模拟


电机内部数据参数,初始的即可,不用调改。
整体程序的结果:
(1)先正转一圈,等待一秒后再反转一圈。这一过程可以自己修改程序,把它去掉,即整体main函数while循环的前面那部分,只会执行一次。
while(1)
{
(2)按下按钮1,整个电机开始正转N圈,当检测按钮一直按下时,整个电机就一直正转下去。当检测到其他按钮按下时,立即跳转到其他按钮对应的程序。
(3)按下按钮2,和按钮1相反。
(4)按钮3,使整个电机停止工作。
}
上面2,3,4部分是一直在循环扫描检测的。

程序代码
#include <reg52.h>
#include <intrins.h>
unsigned char code z[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03//315,270,225......360(0)
};//八拍
unsigned char code f[]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03//45,90,145......360(0)
};
sbit K1 = P3^0;//定义正转按钮
sbit K2 = P3^1;//定义反转按钮
sbit K3 = P3^2;//定义停止按钮
void zz(unsigned char n);
void fz(unsigned char n);
void delay();
void step();
void main()
{unsigned char N = 1;//由于设定好了转一圈的数据,所以N在此设定为转多少圈。TMOD=0X10;TL1=0XF0;TH1=0XD8;EA=0;ET1=0;//这里没有使用定时器中断,这里只是使用定时器的定时功能。zz(N);delay();fz(N);while(1){if(K1 == 0){while(1){P0 = 0xfe;zz(N);if(K3 == 0||K2==0) break;}}else if(K2 == 0){while(1){P0 = 0xfd;fz(N);if(K3 == 0||K1==0) break;}}else{P0 = 0xfb;P1 = 0x03;}}
}
void zz(unsigned char n)//正转
{unsigned char i,j;for(i=0;i<n;i++){for(j=0;j<8;j++)//整个for循环,正转一个步距角,因为四相八拍,所以是半个步距角,即半步。{if(K3 == 0)    break;P1 = z[j];step();}}
}
void fz(unsigned char n)//反转
{unsigned char i,j;for(i=0;i<n;i++){for(j=0;j<8;j++){if(K3 == 0)  break;P1 = f[j];step();}}
}
void delay()//定义1s
{unsigned char i,j,k;_nop_();i=8;j=154;k=122;do{do{while(--k);}while(--j);}while(--i);
}
void step()//定时器计时10ms
{TF1=0;TR1=1;while(TF1==0);TR1=0;TL1=0XF0;TH1=0XD8;
}
关于一些实验过程中的说法

1.程序中用到的延时,这个根据自己的习惯,可以写相对应的函数延时,但是由于电机转的过程中的延时,就我上文中for循环里面的定时10ms,这个是根据实际情况来调的,理论上来说,使用proteus仿真的电机延时最低是1ms,如果低于1ms实验起来,不会看到自己编写代码的理想结果。
2.步距角的不同,那么想要电机转一圈,执行zz或者fz函数的参数就要有所不同。以我上面程序为例。
八拍转一个循环,转过360度,步距角是90°。
那么步距角是45°时,要想转过360°,那么就需要16拍。
这里需要各位自己去修改程序去实验,这里只提供一个提醒。如果超过256拍的话,那么unsigned char是不够你玩的,需要unsigned int。

51单片机控制步进电机正反转相关推荐

  1. 单片机控制步进电机正反转

    单片机控制步进电机正反转 硬件连接: 程序: #include <reg52.h> #define uint unsigned int #define uchar unsigned cha ...

  2. 基于stc89c52单片机控制步进电机正反转、加减速、测温(蜂鸣器报警)、LCD读取温度

    51单片机是许多单片机初学者的入门开发板,今天给大家做一个基于51内核的stc89c52板子来控制步进电机,可以实现步进电机的正反转.加减速.另外,使用板子自带的Ds18b20模块进行环境测温,并将测 ...

  3. 51单片机通过按钮控制步进电机正反转角度

    51单片机通过按钮控制步进电机正反转角度

  4. 按键控制c51单片机驱动unl2003控制步进电机正反转停止及程序调速-萌新入门

    ** 按键控制c51单片机驱动unl2003控制步进电机正反转停止及程序调速 ** 分享一个萌新入门小工程 一.原件连接: 第一种直接用51开发板 第二种用最小单元加unl2003驱动 二.开发板电路 ...

  5. K_A07_003 基于 STM32等单片机驱动DRV8825模块按键控制步进电机正反转

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 SETP时序 对应程序: 细分说明 程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+DRV8825模块 1. ...

  6. K_A07_001 基于 STM32等单片机驱动A4988模块按键控制步进电机正反转

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 SETP时序 对应程序: 细分说明 程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+A4988模块 1.2. ...

  7. K_A07_005 基于 STM32等单片机驱动 DRV8833 模块按键控制步进电机正反转

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 步进电机驱动时序 对应程序: 四.部分代码说明 1.接线说明 1.1.STC89C52RC+DRV8833模块 1.2.STM3 ...

  8. K_A07_002 基于 STM32等单片机驱动ULN2003模块按键控制步进电机正反转

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 步进电机驱动时序 反向输出 对应程序: 四.部分代码说明 1.接线说明 1.1.STC89C52RC+ULN2003模块 1.2 ...

  9. 51单片机控制步进电机-电路连接

    51单片机控制步进电机-电路连接 概要:本案例讲解的内容是51单片机控制步进电机硬件连接部分.后续会分别讲解单片机程序,S曲线加减速方法,上位机等相关内容 硬件清单: 1.51单片机控制板一个 2.二 ...

  10. 控制步进电机正反转的实际应用程序

    /*这是一个控制步进电机正反转的实际应用程序*/ /*选用的是三相步进电机驱动器,p14口线用做步进电机的脉冲控制*/ /*p13口线用做步进电机的方向控制.p15,p16,p17是光耦开关量输入*/ ...

最新文章

  1. ARM WFI和WFE指令【转】
  2. 基于深度卷积神经网络的小样本分割算法综述
  3. excel函数FREQUENCY、COUNTIFS、COUNTIF
  4. 不爱读书怎么办?用这个新奇的方法,熟知137亿年来的地球通史
  5. MyEclipse中SVN的使用方法
  6. [html] 举例说明图片懒加载的方案有哪些?
  7. Python统计共同参演电影最多的演员组合
  8. Webrtc服务器搭建转
  9. 给定一个N位数,得到一个N-k位的数中最小的数
  10. python利用gzip压缩解压缩StringIO
  11. [Objective-C]用Block实现链式编程
  12. 如意云路由刷PandoraBox
  13. WebApi-05 (三大家族及轮播图案例分享)
  14. 基于BottledWater-PG+nodejs实时地图应用实践
  15. Android Studio 设置控件边框
  16. MySQL - 04.数据控制语言(Data Control Language,DCL)
  17. //12、设计人民币类,其数据成员为fen(分)、jiao(角)、yuan(元)。重载这个类的加法、减法运算符,并给出主函数应用该类。
  18. 如何在Android上设置默认短信应用
  19. Linux之虚拟网卡驱动
  20. java学习基础课之面向对象(渡一教育)【属性;方法;重载】(三)

热门文章

  1. 暴风影音 打开 avi 视频文件时 explorer 出错 关闭
  2. 01-mnist数字识别
  3. 在Eclipse上用JAVA连接数据库
  4. 物联网是自动化还是计算机,物联网:自动化家里的一切
  5. android ide 下载
  6. python加载mnist数据集
  7. 计算机组成原理第一章练习题(答案详解)
  8. 常见的Python解释器,你了解多少?
  9. 数学建模算法与应用学习blog
  10. python手册中文版-python学习手册下载|