【毕业设计】_基于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、付费专栏及课程。

余额充值