02 基于STM32的按键控制继电器驱动电机

发布于:2024-09-18 ⋅ 阅读:(142) ⋅ 点赞:(0)

 本专栏所有源资料都免费获取,没有任何隐形消费。

注意事项:STM32仿真会存在各种各样BUG,且尽量按照同样仿真版本使用。本专栏所有的仿真都采用PROTEUS8.15。

本文已经配置好STM32F103C8T6系列,在PROTUES仿真里,32单片机一般只用一种型号,如需其他型号,可改名。

本次功能实现基于STM32的按键控制继电器驱动电机转动,此为Proteus仿真演示:

基于STM32的按键控制继电器

LED灯与单片机相连:

如图所示,首先点击图左的led.c文件,然后可以看到图右的LED引脚配置。由图可知,可以配置单片机的PD2引脚为继电器引脚,如需更改引脚,可自行修改。

接着,点LED.h文件,可以看出给PD2引脚定义名称为fs,表示为风扇的意思,在仿真图中代表继电器的名称。

然后,点击key.c文件,可以看出按键引脚配置分别由PC5、PC6、PC7,本文采用PC5引脚连接一个按键。

点击key.h文件,可以看出本文给PC5引脚定义为KEY1,即可以调用KEY1为PC5按键。

在本次仿真中,选择PC5引脚连接按键,PD2引脚连接继电器驱动电机。

主函数代码配置:

#include "stm32f10x.h"
#include "usart.h"
#include "delay.h"
#include "sys.h"
#include "led.h"
#include "key.h"

u16 key;
u8 motor_flag=0;

void Check_serial_KEY(void);
void motor_switch(void);


int main(void)
 {	
 
	 LED_Init();		  	        //初始化与LED连接的硬件接口 包括电机
	 KEY_Init();          	//初始化与按键连接的硬件接口
	 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
   RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);	

	 while(1)
		{
			Check_serial_KEY();       //按键控制函数	
			motor_switch();				//电机控制函数
		}	 
 }


void Check_serial_KEY(void) //按键
{
	key=KEY_Scan(0);	  //0,不支持连续按;1,支持连续按;
	if(key)
	{						   
		switch(key)
		{				 
			case KEY1_PRES:	
				motor_flag++;
			  if(motor_flag>1)
				{
					motor_flag = 0;
				}
				break; 
			default:
				break;
		}
	}
	else delay_ms(10); 
}

void motor_switch(void) //电机控制函数
{
	if(motor_flag == 0)
	{
		fs = 1;
	}
	else{
		fs = 0;
	}
}


仿真示例资源、程序源码和软件安装包

基于PROTEUS8.15平台,KEIL5编写
链接:https://pan.baidu.com/s/17FmzUjtkCgGWSuB8Cef6Bw?pwd=795d 
提取码:795d 


网站公告

今日签到

点亮在社区的每一天
去签到