首先打开proteus软件,导入元器件并连线。

接着了解一下步进电机:

步进电机的特点:

步进电机的驱动芯片:

l298步进电机驱动芯片各引脚的功能:

L298的逻辑功能表

四相步进电机的工作原理:

接下来就是proteus中导入步进电机的方法:

proteus中导入L298芯片的方法:

接下来就是编写C代码了。
先写一个用不精确的延时函数来控制转速的程序

#include"reg52.h"
#define uchar unsigned char
// 使用8步法对步进电机进行控制的数组
uchar st[]={0x09, 0x08, 0x0c, 0x04, 0x06, 0x02, 0x03, 0x01}; //1001, 1000, 1100, 0100, 0110, 0010, 0011, 0001
#define uint unsigned intvoid delay(uint t){         // 模糊延时(不精确的延时)uint i=0, j=0;for(i=0; i<t; i++){for(j=0; j<120; j++);}
}void stepper(){            // 电机控制函数int i=0;for(i=0; i<8; i++){   //  从左往右取值是正转for(i=7; i>0; i--){     // 从右往左取值是反转P2 = st[i];delay(v);         // 延时越短  电机转动的速度越快}
}void main(){                   // 主函数inittimer();while(1){stepper();      //  调用电机控制函数}
}

接下来写的是用计时器来写的精确的计时来控制转速的代码:

#include"reg52.h"
#define uchar unsigned char
// 使用8步法对步进电机进行控制的数组
uchar st[]={0x09, 0x08, 0x0c, 0x04, 0x06, 0x02, 0x03, 0x01}; //1001, 1000, 1100,0100, // 0110, 0010, 0011, 0001
#define uint unsigned int
uchar count=0, num=0;    // 定义中断中使用的变量void inittimer(){               // 计时器初始化函数TMOD = 0x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;ET0 = 1;EA = 1;TR0 =1;
}void main(){                   // 主函数inittimer();while(1){//stepper();}
}
//***********************************************************************************
//   中断服务函数每隔50毫秒进来1次
//        赋初值就是确定下一次计时多长时间。
///**********************************************************************************
void zhongduan() interrupt 1{              // 中断服务函数  每隔50毫秒进来一次TH0 =  0x3C ; //(65536-50000)/256;  // 3C   高8位赋初值TL0 = 0xB0 ;//(65536-50000)%256;  // B0     低8位赋初值count++;                                  // 每隔50毫秒 count自加1if(count==20){                            // 如果count等于20了,证明加了20次了,也就是1秒钟了P2 = st[num++];                             // P2等于数组st的第num个值(从第0个到第8个)   if(num==8){                                 // 如果num等于8了,就是st的值从头取到尾了。 num=0;                                       // 就将num置0,从头取}count = 0;                                  // 将count置0,从头计算}
}

以上两段代码都是经过测试的,可以直接复制编译成hex文件,最后导入proteus中模拟仿真。

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

  1. 基于51单片机的步进电机的控制

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

  2. 51单片机通过驱动器精准控制步进电机

    文章目录 51单片机驱动器控制步进电机 文章简介 1.驱动器简介 2.驱动器和单片机接线方法 3.单片机程序 4.实物演示视频 51单片机驱动器控制步进电机 文章简介 本文是前段时间玩步进电机精准控制 ...

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

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

  4. 51单片机蓝牙通讯精准控制步进电机简易教学

    51单片机蓝牙通讯精准控制步进电机 1.蓝牙模块 本次用到的蓝牙模块为HC-05,关于HC-05怎么配置的文章已经写过很多,这里就不一一介绍了,我下面具体讲一些关于单片机蓝牙数据的收发简单快捷的方法实 ...

  5. 步进电机应用c语言程序设计实例,51单片机调节步进电机应用C语言程序设计

    51单片机调节步进电机应用C语言程序设计 //步进电机应用C语言程序设计 #include #define uchar unsigned char sbit dula=P2^6; //数码管显示段选I ...

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

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

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

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

  8. 51单片机:独立按键控制数码管计数

    //按键动作的前沿和后沿会都有大约10ms的抖动,人在按下按键到松开至少需要50ms以上(待考证).此代码实现的功能为给按键计数,并给按键消抖 //欢迎邮箱交流:bglei@foxmail.com 作 ...

  9. c51汇编语言 步进电机,51单片机驱动步进电机(汇编语言)

    在这里介绍一下用51单片机驱动步进电机的方法. 这款步进电机的驱动电压12V,步进角为 7.5度 . 一圈 360 度 , 需要 48 个脉冲完成!!! 该步进电机有6根引线,排列次序如下:1:红色. ...

最新文章

  1. html中怎么设置文本框居中显示图片,css如何让图片水平居中显示?
  2. 1 分钟 Serverless 极速抽盲盒,自己部署自己抽
  3. 比较合适的工作看板组合形式
  4. java中io流中显示中文_关于JAVA中IO流相关问题概述
  5. win10装sql2000卡在选择配置_恢复win10系统安装SQL2000卡在MADC不动的妙计
  6. r和matlab学哪个,初学者求教‘r*’是什么意思啊
  7. 【半原创】将js和css文件装入localStorage加速程序执行
  8. JSTL和EL的使用
  9. 【操作系统】输入输出系统(中)-思维导图
  10. XP连接网络计算机未启动服务,在xp系统中,如何解决本地连接无法禁止或开启?...
  11. matlab h系统控制器,Matlab的H_inf鲁棒控制器的设计.pdf
  12. Debian/Ubuntu系统命令终端提示无法定位软件包解决方法
  13. 电脑有必要安装杀毒软件吗?
  14. 瑞萨e2studio(6)----编译调试
  15. ios发布证书过期怎么办?
  16. VDA6.5认证咨询,产品审核与其他审核方式及检验的区别
  17. 62套儿童行业响应式Html5儿童慈善机构网站模板儿童公益组织企业官网模板儿童慈善CSS模板下载婴儿树儿童健康食品整站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响
  18. 线。段。树--树状数组-主席树
  19. Linux共享库编程方法,Linux共享库c
  20. Unity旋转之四元数(开关车门,第一人称控制器)

热门文章

  1. py3dtiles read a .b3dm file.py
  2. AUTOSAR工具ISOLAR简介
  3. 弦截法c语言程序,用弦截法求解一元三次方程的根(利用c语言实现)
  4. Vue实现只展示地图某一个地区
  5. R语言用灰色模型 GM (1,1)、神经网络预测房价数据和可视化
  6. 电力设备红外和可见光图像配准方法(不含图像融合算法)
  7. 嘉立创公司上传pcb文件上传的是什么文件
  8. 【mysql】哦买噶!多么强大的group by语句
  9. z17原生Android系统,努比亚Z17 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
  10. 知乎1.3万亿条数据查询毫秒级响应,如何做到的?