前面笔者分享过基于51单片机的两种小车制作,我们利用的是L298N驱动控制电机转动,那么接下来,笔者给大家介绍两种利用51单片机控制步进电机的小程序。
首先我们要如何使电机转动呢,源程序如下:

#include <reg52.h>unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10}; //正转表格,换算成二进制 0000 0010,0000 0100,0000 1000,0001 0000
unsigned char code B_Rotation[4]={0x10,0x08,0x04,0x02}; //反转表格,换算成二进制 0001 0000,0000 1000,0000 0100,0000 0010
/******************************************************************/
/*                    延时函数                                    */
/******************************************************************/
void Delay(unsigned int i)//延时
{while(--i);
}
/******************************************************************/
/*                   主函数                                       */
/******************************************************************/
main()
{unsigned char i;while(1){for(i=0;i<4;i++)      //4相{P1=F_Rotation[i];  //输出对应的相 可以自行换成反转表格Delay(500);        //改变这个参数可以调整电机转速 ,数字越小,转速越大}}
}

接下来,我们要控制电机的正反转,这个程序主要用于4相步进电机的常规驱动,速度不可调的过快,不然就没有力矩的转动了,按s4可控制电机正反转:

#include <reg52.h>bit Flag;//定义正反转标志位unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格
/******************************************************************/
/*                    延时函数                                    */
/******************************************************************/
void Delay(unsigned int i)//延时
{while(--i);
}
/******************************************************************/
/*                   主函数                                       */
/******************************************************************/
main()
{unsigned char i;EX1=1;         //外部中断0开IT1=1;         //边沿触发EA=1;          //全局中断开while(!Flag)            {P0=0x71;//显示 F 标示正转for(i=0;i<4;i++)      //4相{P1=F_Rotation[i];  //输出对应的相 可以自行换成反转表格Delay(500);        //改变这个参数可以调整电机转速 ,数字越小,转速越大}}
while(Flag){ P0=0x7C;//显示 b 标示反转for(i=0;i<4;i++)      //4相{P1=B_Rotation[i];  //输出对应的相 Delay(500);        //改变这个参数可以调整电机转速 ,数字越小,转速越大}}
}
/******************************************************************/
/*                   中断入口函数                                 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{Delay(300);Flag=!Flag;         //s3按下触发一次,标志位取反}

最后介绍一下带停机的步进电机正反转的方法:

#include <reg52.h>unsigned char Flag;//定义正反转和停止标志位
sbit KEY = P3^3;unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格
/******************************************************************/
/*                    延时函数                                    */
/******************************************************************/
void Delay(unsigned int i)//延时
{while(--i);
}
/******************************************************************/
/*                   主函数                                       */
/******************************************************************/
main()
{unsigned char i;EX1=1;         //外部中断0开IT1=1;         //边沿触发EA=1;          //全局中断开while(Flag==0)            {P0=0x71;//显示 F 标示正转for(i=0;i<4;i++)      //4相{P1=F_Rotation[i];  //输出对应的相 可以自行换成反转表格Delay(500);        //改变这个参数可以调整电机转速 ,数字越小,转速越大}}
while(Flag==1){ P0=0x7C;//显示 b 标示反转for(i=0;i<4;i++)      //4相{P1=B_Rotation[i];  //输出对应的相 Delay(500);        //改变这个参数可以调整电机转速 ,数字越小,转速越大}}
while(Flag==2)  //停止{ P0=0x6D;//   显示 SP1=0;}
}
/******************************************************************/
/*                   中断入口函数                                 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{Delay(500);if(!KEY){Flag++;         //s3按下触发一次if(Flag==3)Flag=0;}}

基于51单片机的步进电机的控制相关推荐

  1. 步进电机的计算机控制系统设计,基于.51单片机的步进电机控制系统设计.doc

    基于51单片机的步进电机控制系统设计 中文摘要 步进电机是一种受,并且能将相应的或者的电动机.由于步进电机具有步距误差不积累.运行可靠.结构简单.惯性小.成本低等优点,因此,被广泛使用于计算机外围电路 ...

  2. 【033】基于51单片机的步进电机角度测量与速度设定Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的步进电机角度测量与速度设定proteus仿真设计一份: (2).基于51单片机的步进电机角度测量与速度设定proteus仿真设计keli源代码一份: (3) ...

  3. 51单片机风扇转动c语言代码,基于51单片机的智能风扇控制系统设计.doc

    完美.WORD格式.整理 范文.范例.指导 基于51单片机智能风扇控制系统的设计与实现 摘要:随着气温的逐渐上升,风扇的需求量也逐渐扩大.传统风扇不能根据外界温度的变化对风扇转速快慢进行调整,也不能对 ...

  4. 基于51单片机的简单风扇控制

    具体实现功能 系统由STC89C52单片机+单体数码管+LED指示灯+LM298N芯片芯片+直流电机构成. 具体功能: (1)模拟实现风扇的转动及摇头: (2)实现按键设置1 档强风,2档中风,3档弱 ...

  5. Proteus基于51单片机通过PWM脉冲调制控制电机转速_按键与串口控制转速_电机转速可测

    文章目录 原理图 驱动电路 MOTOR-ENCODER详解 串口通信 电机测速原理 PWM 软件部分 成果 临近期末,学校的单片机课程需要做课程设计,主要内容是基于51单片机的可调速电机,具体要求如下 ...

  6. 基于51单片机的智能空调控制系统设计(仿真+代码+原理图+报告+视频讲解)

    基于51单片机的智能空调控制系统 这里写目录标题 1 开发环境 讲解演示视频 2 功能说明介绍 3 仿真图 4 程序 4.1 工程文件 4.2 代码 5 原理图 6 元器件清单 7 视频讲解 8 资料 ...

  7. 基于STM32F4单片机对步进电机的控制(有代码)

    步进电机简介 步进电机是将电脉冲控制信号转变为角位移或线位移的一种常用的数字控制执行元件,又称为脉冲电机.在驱动电源的作用下,步进电机受到脉冲的控制,其转子的角位移量和速度严格地与输入脉冲的数量和脉冲 ...

  8. 4、基于51单片机智能语音识别小车控制 语音口令说话控制系统设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六. 程序源码 七.资料包括 摘要 随着电子工业的发展,具有语音控制功能的小 ...

  9. 基于51单片机的智能加湿器控制proteus仿真系统设计

    本设计 51单片机智能加湿器控制系统proteus仿真(仿真+源码+原理图) 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号C0043 资料下载链接( ...

最新文章

  1. c# 获取客户端IP地址方法
  2. HDU1163 Eddy's digital Roots(解法二)【快速模幂+九余数定理】
  3. MVC --.Routing
  4. HDU多校6 - 6831 Fragrant numbers(dfs爆搜+打表)
  5. 俄语使用计算机怎么说,计算机俄语常用词汇
  6. 如何在Go中编写防弹代码:不会失败的服务器工作流程
  7. Django内置权限扩展案例
  8. 深入理解cache对写好代码至关重要
  9. 我和蓝牙BT,BLE有一腿
  10. Java基础学习总结(135)——Java代码性能优化实践经验再总结
  11. 【转载】推荐系统的十大挑战
  12. 你正在学 Web 自动化测试?Selenium 基本操作你了解嘛? | 原力计划
  13. 通过路径传值id进行页面判断
  14. stm8s电机库vtimer_SetTimer()函数的使用
  15. npm的那些“坑”——持续更新
  16. EXCEL转PDF方法之使用PDF虚拟打印机生成PDF文件
  17. dell 如何给raid分区_Dell服务器如何进行RAID级别在线转换及RAID扩容
  18. 外壳IK防护等级测试
  19. rem移动端设计方案
  20. 华为平板电池损耗用什么软件测试,平板怎么看电池损耗

热门文章

  1. WinEdt的Ctex运行错误解决方案
  2. 我搭建一个好用的云盘,并支持多用户注册登录-cloudeve
  3. Unity-2D游戏开发套件指南-免费资源
  4. s7 200 smart编程软件是款功能强大的plc编程工具
  5. DNS的正向、反向、双向解析(正向解析内含CNAME,MX)
  6. 大学生体测成绩计算工具【npm包】
  7. AOP的底层原理:动态代理
  8. ##安利几个很好的网站和软件##
  9. 物理CPU-Core-逻辑CPU -超线程
  10. 鲸会务智慧景区管理解决方案