51单片机对步进电机的控制
首先打开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单片机对步进电机的控制相关推荐
- 基于51单片机的步进电机的控制
前面笔者分享过基于51单片机的两种小车制作,我们利用的是L298N驱动控制电机转动,那么接下来,笔者给大家介绍两种利用51单片机控制步进电机的小程序. 首先我们要如何使电机转动呢,源程序如下: #in ...
- 51单片机通过驱动器精准控制步进电机
文章目录 51单片机驱动器控制步进电机 文章简介 1.驱动器简介 2.驱动器和单片机接线方法 3.单片机程序 4.实物演示视频 51单片机驱动器控制步进电机 文章简介 本文是前段时间玩步进电机精准控制 ...
- 步进电机的计算机控制系统设计,基于.51单片机的步进电机控制系统设计.doc
基于51单片机的步进电机控制系统设计 中文摘要 步进电机是一种受,并且能将相应的或者的电动机.由于步进电机具有步距误差不积累.运行可靠.结构简单.惯性小.成本低等优点,因此,被广泛使用于计算机外围电路 ...
- 51单片机蓝牙通讯精准控制步进电机简易教学
51单片机蓝牙通讯精准控制步进电机 1.蓝牙模块 本次用到的蓝牙模块为HC-05,关于HC-05怎么配置的文章已经写过很多,这里就不一一介绍了,我下面具体讲一些关于单片机蓝牙数据的收发简单快捷的方法实 ...
- 步进电机应用c语言程序设计实例,51单片机调节步进电机应用C语言程序设计
51单片机调节步进电机应用C语言程序设计 //步进电机应用C语言程序设计 #include #define uchar unsigned char sbit dula=P2^6; //数码管显示段选I ...
- 【033】基于51单片机的步进电机角度测量与速度设定Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的步进电机角度测量与速度设定proteus仿真设计一份: (2).基于51单片机的步进电机角度测量与速度设定proteus仿真设计keli源代码一份: (3) ...
- 基于51单片机的简单风扇控制
具体实现功能 系统由STC89C52单片机+单体数码管+LED指示灯+LM298N芯片芯片+直流电机构成. 具体功能: (1)模拟实现风扇的转动及摇头: (2)实现按键设置1 档强风,2档中风,3档弱 ...
- 51单片机:独立按键控制数码管计数
//按键动作的前沿和后沿会都有大约10ms的抖动,人在按下按键到松开至少需要50ms以上(待考证).此代码实现的功能为给按键计数,并给按键消抖 //欢迎邮箱交流:bglei@foxmail.com 作 ...
- c51汇编语言 步进电机,51单片机驱动步进电机(汇编语言)
在这里介绍一下用51单片机驱动步进电机的方法. 这款步进电机的驱动电压12V,步进角为 7.5度 . 一圈 360 度 , 需要 48 个脉冲完成!!! 该步进电机有6根引线,排列次序如下:1:红色. ...
最新文章
- html中怎么设置文本框居中显示图片,css如何让图片水平居中显示?
- 1 分钟 Serverless 极速抽盲盒,自己部署自己抽
- 比较合适的工作看板组合形式
- java中io流中显示中文_关于JAVA中IO流相关问题概述
- win10装sql2000卡在选择配置_恢复win10系统安装SQL2000卡在MADC不动的妙计
- r和matlab学哪个,初学者求教‘r*’是什么意思啊
- 【半原创】将js和css文件装入localStorage加速程序执行
- JSTL和EL的使用
- 【操作系统】输入输出系统(中)-思维导图
- XP连接网络计算机未启动服务,在xp系统中,如何解决本地连接无法禁止或开启?...
- matlab h系统控制器,Matlab的H_inf鲁棒控制器的设计.pdf
- Debian/Ubuntu系统命令终端提示无法定位软件包解决方法
- 电脑有必要安装杀毒软件吗?
- 瑞萨e2studio(6)----编译调试
- ios发布证书过期怎么办?
- VDA6.5认证咨询,产品审核与其他审核方式及检验的区别
- 62套儿童行业响应式Html5儿童慈善机构网站模板儿童公益组织企业官网模板儿童慈善CSS模板下载婴儿树儿童健康食品整站模板html5网页静态模板Bootstrap扁平化网站源码css3手机seo自适响
- 线。段。树--树状数组-主席树
- Linux共享库编程方法,Linux共享库c
- Unity旋转之四元数(开关车门,第一人称控制器)
热门文章
- py3dtiles read a .b3dm file.py
- AUTOSAR工具ISOLAR简介
- 弦截法c语言程序,用弦截法求解一元三次方程的根(利用c语言实现)
- Vue实现只展示地图某一个地区
- R语言用灰色模型 GM (1,1)、神经网络预测房价数据和可视化
- 电力设备红外和可见光图像配准方法(不含图像融合算法)
- 嘉立创公司上传pcb文件上传的是什么文件
- 【mysql】哦买噶!多么强大的group by语句
- z17原生Android系统,努比亚Z17 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
- 知乎1.3万亿条数据查询毫秒级响应,如何做到的?