基于STM32单片机的直流电机PWM调速(数码管显示)(Proteus仿真+程序)

这篇具有很好参考价值的文章主要介绍了基于STM32单片机的直流电机PWM调速(数码管显示)(Proteus仿真+程序)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编号:24

基于STM32单片机的直流电机PWM调速

功能描述:

      由 STM32单片机+数码管显示模块+键盘模块+L298N电机驱动模块+直流电机
1、采用STM32F103单片机为主控制器
2、四个按键,分别为启动/暂停、方向切换、加速、减速功能
3、数码管显示PWM占空比和电机转动方向(0正转,1反转)

注意:proteus8.11版本才能打开  

视频演示链接:

24、基于STM32单片机的直流电机PWM调速(数码管显示)

仿真图:

基于STM32单片机的直流电机PWM调速(数码管显示)(Proteus仿真+程序)

程序源码:

#include "delay.h"


#include "timer.h"
#include "key.h"
#include "SEG.h"
#include "stdio.h" 	
#include "stdlib.h" 
#include <string.h>


int main(void)
{	
	unsigned char LV = 0;							//PWM 百分比
	unsigned char buf[18];
	unsigned char Dir = 0;							//0正转
    unsigned char key_value = 0;	                //按键返回值
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
	
	Seg_Init();


	
	KEY_Init();									    //IO初始化

	PWM_Init();
	
	IN1 = 0;
	IN2 = 1;
	LV = 0;
	PWM_Set(LV);
	delay_ms(10);
	Smg_Get('+',000);
	while(1)
	{	
			 
		
		key_value = KEY_Scan(0);		 	//按键单击
		switch(key_value)
		{
			case 1:							//开启
				if(LV==0)
				{
					LV = 10;
					PWM_Set(LV);
					
					if(Dir==1)
						Smg_Get('-',LV);
					else if(Dir==0)
						Smg_Get('+',LV);
				}
				else
				{
					LV = 0;
					PWM_Set(LV);
					if(Dir==1)
						Smg_Get('-',LV);
					else if(Dir==0)
						Smg_Get('+',LV);
				}
				
			break;
			case 2:							//方向
				if(Dir==0)
				{
					Dir = 1;
					IN1 = 1;
					IN2 = 0;
					sprintf((char *)buf,"DIR: - ");	
					Smg_Get('-',LV);
	
				}
				else
				{
					Dir = 0;
					IN1 = 0;
					IN2 = 1;
					sprintf((char *)buf,"DIR: + ");
					Smg_Get('+',LV);
					
				}
			break;
			case 3:							//加速
				if(LV<100)
					LV  = LV + 10;
				PWM_Set(LV);
				Smg_Get(5,LV);
			break;
			
			case 4:							//减速
				if(LV>10)
					LV = LV-10;
				PWM_Set(LV);
				Smg_Get(5,LV);
			break;

		}	
		
		
		
	}	
}

//定时器2中断服务程序
void TIM2_IRQHandler(void)   		//TIM2中断
{
	if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)  //检查TIM4更新中断发生与否
	{
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //清除TIMx更新中断标志 
		Smg_display();		//数码管显示函数
	}
}

软件免费下载地址:

1、Proteus仿真软件
文件内容:Proteus7.8安装包、Proteus8.6安装包、Proteus.8.10安装包、Proteus Professional 8.11 SP0安装包

链接:https://pan.baidu.com/s/11LNUZ9BJXWvXf1C4dPc3_w 
提取码:2756 


3、KEIL5 MDK软件(STM32开发软件)
链接:https://pan.baidu.com/s/1t3eY-3yRdTa7jZMlijq_jg 

提取码:ab58 

文件下载:

https://pan.baidu.com/s/1owdfUhq7f7ZnNX8im_5BrA?pwd=l0np文章来源地址https://www.toymoban.com/news/detail-514086.html

到了这里,关于基于STM32单片机的直流电机PWM调速(数码管显示)(Proteus仿真+程序)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • [proteus]STM32F103单片机直流电机PID算法PWM波电机调速正反转Proteus仿真

    1、实现功能: (1)、基于STM32F103单片机PID算法PWM控制直流电机正反转调速,LCD1602显示转速等。可通过“加速”、“减速”按键修改“目标转速”并实时测量“实际转速”送到LCD1602上显示。 (2)、“启动”按键控制电机启动,默认启动电机是正转(示波器上的黄色PWM波)。 (3)、“

    2024年02月06日
    浏览(50)
  • 基于单片机串口控制直流电机调速

    一、系统方案 (2)本设计采用STC89C5单片机作为主控器,串口控制直流电机调速,串口助手发送1-8,改变电机速度,数码管显示对应速度。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 TMOD=0x21;//定时器0工作方式1 ET1=0; SM0=0; SM1=1; REN=1; EA=1; ES=1; 2、数码管

    2024年02月12日
    浏览(50)
  • 【32单片机学习】(3)霍尔编码器减速直流电机控制及测速

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 1.实验现象 2.实验接线及原理图 接线图 原理图  电机接线图 3.代码部分 1.主函数  main.c 2.按键部分   key.c  key.h pwm代码   pwm.c  pwm.h 电机驱动   motor.c   motor.h  OLED显示 oled.c oled.h  编码器

    2024年02月11日
    浏览(58)
  • 基于51单片机的直流电机转速显示+加速减速启停

    做了一个实战项目,这个实战项目主要是实现对直流电机转速的控制,可以实现电机加速,减速,报警、启停以及显示转速。在本电路的基础上也可以进行一些拓展改变电机正反转的状态,只需要外加一个按键和修改部分程序即可,在文章的最后会对拓展进行一个说明。基础

    2023年04月27日
    浏览(53)
  • 基于51单片机直流电机PWM调速液晶1602显示设计

    一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形等均作了详细的

    2024年02月11日
    浏览(49)
  • 基于51单片机直流电机转速数码管显示控制系统

    一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形等均作了详细的

    2024年02月12日
    浏览(49)
  • 基于51单片机的PWM控制直流电机设计( proteus仿真+程序+报告+讲解视频)

    仿真图proteus 7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0031 基于51单片机的PWM控制直流电机设计 1.设计要求 采用51单片机作为核心控制器,控制直流电机的正转,反转,制动,停止。 2.功能要求 1)数码管显示当前转动方向和当前的PWM占空比0~100%。 2)电机

    2023年04月25日
    浏览(56)
  • 【单片机】11-步进电机和直流电机

    电能转换为动能 (1) 交流电机【大功率】 :两相【200W左右】,三相【1000W左右】 (2) 直流电机【小功率】 :永磁【真正的磁铁】,励磁【电磁铁】 (3) 步进电机【精确控制功率】,伺服电机【非常精确功率】 (1)外观 (2)接线和工作原理 在电池位置有VCC和GND (3)

    2024年02月03日
    浏览(45)
  • 【毕业设计】2-基于单片机控制的直流电机调速系统设计(原理图+仿真+答辩论文+答辩PPT)

    包含此题目毕业设计全套资料: 原理图工程 仿真工程 源代码工程 答辩论文,配套设计参考设计说明书,字数:18077 答辩PPT 主要研究内容: 1.单片机;2.直流电机,液晶显示器LCD。 设计思路: 查阅相关文献资料学习单片机、直流电机,液晶显示器LCD,编程实现单片机控制的直

    2024年02月03日
    浏览(60)
  • 【【51单片机直流电机调速】】

    PWM的生成方法 先用户设定一个比较值,然后计数器定时自增。 当计数器比较值,输出0 当计数器比较值,输出1

    2024年02月15日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包