【毕业设计】_基于STM32单片机的PWM电机调速(原理图+源码)

一. 系统概述

系统利用STM32单片机作为主控制器,通过L298N驱动模块来控制电机。用户可以通过按键直接操作电机,实现开启或关闭、电机速度的加减以及旋转方向的调整。

在这里插入图片描述

二. 仿真概述

  1. 系统中,通过按键可以控制电机的启动和停止。加减速按键则用于调节电机的速度。

在这里插入图片描述

  1. 按下方向键可切换电机的旋转方向,选择顺时针或逆时针旋转。

在这里插入图片描述

三.程序设计

#include <main.h>
u8 Key;//按键检测
u8 V[]={0,20,40,60,80,100};
u8 G=1;//档位
u8 S=0;//启停
u8 D=0;//方向

void Init_Test(void);
void Display(void);

int main(void)
{
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//2:2
	Init_Test();

	
	while(1)
	{
		Key_Scan(&Key);
		OLED_ShowNum(4,1,Key,1);

		Display();
			
		if(Key==4) 
		{ 
			S=~S; 
			Key=0; 
		}
		if(Key==3) 
		{ 
			D=~D; 
			Key=0; 
		}		
		if(Key==1|Key==2) 
		{
			if(Key==1)
			{
				G++; if(G>5) G=1;
			}	
			else if(Key==2)
			{
				G--; if(G<1) G=1;
			}
			Key=0;
			
		}
		
		PWM_SetCompare1(V[G]);
		
		if(S)
		{
			OLED_ShowNum(3,3,G,1);
			OLED_ShowString(1,3,"ON ");
			if(D)
			{
				OLED_ShowString(2,3,"ACW");
				LedC1_0;
				LedC2_1;
				IN1_0;
				IN2_1;
			}
			else
			{
				OLED_ShowString(2,3,"CW ");
				LedC2_0;
				LedC1_1;
				IN1_1;
				IN2_0;
			}			
		}
		else
		{
			OLED_ShowString(1,3,"OFF");
			OLED_ShowString(2,3,"         ");
			OLED_ShowString(3,3,"         ");
			LedC2_0;
			LedC1_0;
			IN1_0;
			IN2_0;
		}
	}
}

24-32f-39

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值