51单片机对步进电机的控制

这篇具有很好参考价值的文章主要介绍了51单片机对步进电机的控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

51单片机对步进电机的控制

接着了解一下步进电机:

51单片机对步进电机的控制

 步进电机的特点:

51单片机对步进电机的控制

 步进电机的驱动芯片:

51单片机对步进电机的控制

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

51单片机对步进电机的控制

 L298的逻辑功能表

51单片机对步进电机的控制

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

51单片机对步进电机的控制

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

51单片机对步进电机的控制

 proteus中导入L298芯片的方法:

51单片机对步进电机的控制

 接下来就是编写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 int

void 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自加1
	if(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单片机对步进电机的控制

 文章来源地址https://www.toymoban.com/news/detail-494577.html

到了这里,关于51单片机对步进电机的控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 7-3、S曲线生成器【51单片机控制步进电机-TB6600系列】

    摘要 :本节介绍步进电机S曲线生成器的计算以及使用 一.计算原理 根据上一节内容,已经计算了一条任意S曲线的函数。在步进电机S曲线加减速的控制中,需要的S曲线如图1所示,横轴为时间,纵轴为角速度,其中w0为起始角速度,w1为终止角速度 在S曲线加减速控制中,加减

    2024年02月08日
    浏览(46)
  • 【51单片机Keil+Proteus8.9】控制步进电机+LCD1602显示状态

    步进电机控制 设计思路 电路设计: 选用AT89C51单片机作为电路核心部件,外加LM016L液晶显示屏作为显示,显示步进电机的Fast,Slow,Stop的三个状态 将AT89C51单片机所选引脚与LM016L控制引脚相连,再将数据通过引脚与LCD接收引脚相连。 通过AT89C51单片机P0^0和P0^2两个引脚引出两个

    2024年01月20日
    浏览(57)
  • 51单片机STC15W4K56S4控制步进电机28BYJ-48正反转

    步进电机28BYJ-48(12V)介绍:       首先,我们看下步进电机28BYJ-48(12V)外观图,如下:         28BYJ-48(12V)含义如下:28表示电机直径28毫米,B表示电机 ,Y表示永磁,J表示带减速箱,48表示四相八拍。       下面解释下“4 相永磁式”的概念,28BYJ-48 的构造如下图所示

    2023年04月17日
    浏览(46)
  • 51单片机——步进电机实验,小白讲解,相互学习

    步进电机简介:         步进电机是将电脉冲信号转变为角位移或多线位移的开源控制元件。在非超载的情况下,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性的关系的存在

    2024年02月04日
    浏览(38)
  • 153、仿真-基于51单片机四相步进电机正反转控制系统设计(程序+Proteus仿真+参考论文+流程图+配套资料等)

    目录 一、设计功能 二、Proteus仿真图​ 三、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。

    2024年02月16日
    浏览(56)
  • 基于51单片机的步进电机驱动,亲测无误

    这一次要分享的项目是最近接单做的一个小玩意儿,基于51单片机的步进电机驱动。最近积压了两个月的小项目会在后面陆续发出,好了回归正题。本次步进电机驱动的话主要实现的功能就是实现: 步进电机的加速和减速,正转反转和开启或者停止工作。用LCD1602显示当前工作

    2023年04月09日
    浏览(47)
  • 51单片机双轴太阳能追光追日系统ULN2003步进电机

    功能介绍:    

    2023年04月09日
    浏览(55)
  • 基于单片机的步进电机控制系统设计与实现

    目 录 1 引言 1 2 总体设计方案 2 2.1 系统设计原理 2 2.2 总体设计框图 2 3系统硬件模块的组成 3 3.1单片机控制模块 3 3.1.1 STC89C52主要结构 3 3.1.2 STC89C52功能特性描述 3 3.1.3 时钟电路 6 3.1.4复位电路 6 3.2 步进电机模块 7 3.2.1 步进电机简介 7 3.2.2步进电机的结构 8 3.2.3 28BYJ-48步进电机

    2024年02月04日
    浏览(63)
  • 基于51单片机的FRID智能门禁系统(RFID,12864,AT24C02,步进电机......)

    目录 门禁系统 需要的器件 设计思路 流程图实现 技术实现 实物接线图 实物接线图  函数设计 部分主程序代码,截取片段 12864显示模块 步进电机模块以及蜂鸣器 FRID射频模块 AT24C02模块 功能实现及其源代码 完整文件         STC89C52,MFRC-522 RFID射频模块,AT24C02存储电路,

    2024年02月07日
    浏览(54)
  • 单片机设计_自动追光系统、光源跟踪系统(AT89C51 光敏电阻 步进电机)

    想要更多项目私wo!!!          51 单片机双轴自动追光系统主要由 STC89C52RC + 5516 光敏电阻 + ADC0832 + ULN2803 + 步进电机 + LCD1602 显示屏组成。         1.通过子电路板的上、下、左、右四个光敏电阻来感受四个方向的光强,自 动寻找光强最强的方向。四个光敏电阻的分压电

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包