当前位置: 首页 > news >正文

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

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

注意事项: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);// 设置中断优先级分组2RCC_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 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 低代码开发平台系统架构概述
  • 【赵渝强老师】基于ZooKeeper实现Hadoop HA
  • 利用正则表达式匹配格式并且获取替换内容中数据并保留
  • 手机玩地平线、飙酷车神攻略 GameViewer远程助你手机畅玩赛车游戏
  • 4.铝箔缺陷检测项目复盘
  • 如何将本地项目上传到GitHub(SSH连接)
  • 【乐企】调用工具类实现
  • CSP-J 算法基础 广度优先搜索BFS
  • 【C++篇】C++类与对象深度解析(三):类的默认成员函数详解
  • Adobe After Effects的插件--------Shatter 碎片
  • ppt组织结构图怎么增加分支?
  • 低代码开发:数据分析如何快速响应企业需求
  • Cartographer源码理解
  • Vue接入高德地图并实现基本的路线规划功能
  • 软件测试 | APP测试 —— Appium 的环境搭建及工具安装教程
  • Angular Elements 及其运作原理
  • chrome扩展demo1-小时钟
  • classpath对获取配置文件的影响
  • docker-consul
  • ES学习笔记(12)--Symbol
  • export和import的用法总结
  • Java IO学习笔记一
  • LeetCode29.两数相除 JavaScript
  • vue 个人积累(使用工具,组件)
  • 百度地图API标注+时间轴组件
  • 反思总结然后整装待发
  • - 概述 - 《设计模式(极简c++版)》
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 前端自动化解决方案
  • 入手阿里云新服务器的部署NODE
  • 通过git安装npm私有模块
  • raise 与 raise ... from 的区别
  • 树莓派用上kodexplorer也能玩成私有网盘
  • #NOIP 2014# day.1 T2 联合权值
  • #pragam once 和 #ifndef 预编译头
  • $(function(){})与(function($){....})(jQuery)的区别
  • $nextTick的使用场景介绍
  • (20050108)又读《平凡的世界》
  • (7) cmake 编译C++程序(二)
  • (k8s)Kubernetes本地存储接入
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (论文阅读30/100)Convolutional Pose Machines
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十三)Flink SQL
  • (转)【Hibernate总结系列】使用举例
  • (转)程序员技术练级攻略
  • (转载)从 Java 代码到 Java 堆
  • ***利用Ms05002溢出找“肉鸡
  • .gitignore
  • .NET 读取 JSON格式的数据
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .Net接口调试与案例