【蓝桥杯单片机入门记录】独立按键

news2025/1/4 15:42:34

目录

一、键盘、微动开关概述

二、按键工作原理

(1)按键构成

(2)(蓝桥杯开发板)独立按键电路图(非实际,参考理解)

(3)独立按键工作原理

三、单片机I/O口-输入

四、按键例程

(0)开发板设置

(1)例程1:按键控制LED点亮或熄灭(本例以按下S7按键打开L1灯,按下S6按键打开L2灯)

(2)例程2:按键控制LED点亮或者熄灭。本例以按下S7按键打开L1灯,按下S6按键打开L2灯按下s5按键打开L5灯,按下S6按键关闭L5灯为例。

(3)例程3:按键控制流水灯移位(一)。本例以S7按键每按下一次LED向右移动1位。 注:多次检测此程序,观察此程序存在的问题

(4)例程4:按键控制流水灯移位(二)。本例以S7按键每按下一次LED向右移动1位 注:此程序已加入按键消抖、LED效果为按键按下执行,

(5)例程5:按键控制流水灯移位(三)。本例以S7按键每按下一次LED向右移动1位 注:此程序已加入按键消抖、LED效果为按键松开执行,


一、键盘、微动开关概述

  • 键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘;
  • 而靠软件编程来识别的称为非编码键盘;
  • 在单片机组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的。
  • 非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。

二、按键工作原理

(1)按键构成

微动开关是具有微小接点间隔和快动机构,用规定的行程和规定的力进行开关动作的接点机构用外壳覆盖,其外部有驱动杆的一种开关,因为其开关的触点间距比较小,故名微动开关,又叫灵敏开关、触动开关、轻触开关。

(2)(蓝桥杯开发板)独立按键电路图(非实际,参考理解)



(3)独立按键工作原理

按键在闭合和断开时,触点回存在抖动现象;涉及后续(软件)消抖

三、单片机I/O口-输入

四、按键例程

(0)开发板设置

  • J13跳线帽:IO模式
  • J5跳线帽:BIN模式(独立按键)

(1)例程1:按键控制LED点亮或熄灭(本例以按下S7按键打开L1灯,按下S6按键打开L2灯)

//头文件声明区域
#include <STC15F2K60S2.H>

//变量声明区域


//函数定义区域


//程序主体
void main()
{
	P2 = 0XA0;
	P0 = 0X00;
	P2 = 0X80;
	P0 = 0XFF;
	
	while(1)
	{
		if(P30 == 0) P00 = 0;
		if(P31 == 0) P01 = 0;
		
		
		
	}
	
	
}

(2)例程2:按键控制LED点亮或者熄灭。本例以按下S7按键打开L1灯,按下S6按键打开L2灯按下s5按键打开L5灯,按下S6按键关闭L5灯为例。

//头文件声明区域
#include <STC15F2K60S2.H>

//变量声明区域
sbit S4 = P3^3;
sbit S5 = P3^2;
sbit L5 = P0^4;

//函数定义区域


//程序主体
void main()
{
	P2 = 0XA0;
	P0 = 0X00;
	P2 = 0X80;
	P0 = 0XFF;
	
	while(1)
	{
		if(P30 == 0) P00 = 0;
		if(P31 == 0) P01 = 0;
		if(S5 == 0) L5 = 0;
		if(S4 == 0) L5 = 1;
		
		
		
	}
	
	
}

(3)例程3:按键控制流水灯移位(一)。本例以S7按键每按下一次LED向右移动1位。 注:多次检测此程序,观察此程序存在的问题

//头文件声明区域
#include <STC15F2K60S2.H>

//变量声明区域
unsigned char LED = 0;
//函数定义区域



//程序主体
void main()
{
	P2 = 0XA0;
	P0 = 0X00;
	P2 = 0X80;
	P0 = 0XFF;
	
	while(1)
	{
		if(P30 == 0)
		{
			P0 = ~(0x01<<LED);
		  LED++;
		  if(LED == 8) LED = 0;
		
			
		}
					

		
		
	}
	
	
}
//存在的问题:按下按键后,由于程序执行的太快,现象不明显

(4)例程4:按键控制流水灯移位(二)。本例以S7按键每按下一次LED向右移动1位 注:此程序已加入按键消抖、LED效果为按键按下执行

//头文件声明区域
#include <STC15F2K60S2.H>

#include<intrins.h>
//变量声明区域
unsigned char LED = 0;
//函数定义区域
void Delay(unsigned int time)		//@11.0592MHz
{
	unsigned char i, j;
 while(time--)
 {
	 	_nop_();
	i = 2;
	j = 199;
	do
	{
		while (--j);
	} while (--i);
 }

}



//程序主体
void main()
{
	P2 = 0XA0;
	P0 = 0X00;
	P2 = 0X80;
	P0 = 0XFF;
	
	while(1)
	{
		if(P30 == 0 )
		{
			Delay(10);//消抖
			
			if(P30 == 0)
			{
				P0 = ~(0x01<<LED);
				LED++;
				if(LED == 8) LED = 0;
				
			}
		while(!P30);//一直在读取P30的状态,程序不会往下进行,知道松开手
		Delay(10);//消抖
		while(!P30);
		
		}
		
		
	}
	
	
}

(5)例程5:按键控制流水灯移位(三)。本例以S7按键每按下一次LED向右移动1位 注:此程序已加入按键消抖、LED效果为按键松开执行

//头文件声明区域
#include <STC15F2K60S2.H>
#include<intrins.h>
//变量声明区域
unsigned char LED = 0;
unsigned char S7_Flag = 0;
//函数定义区域
void Delay(unsigned int time)		//@11.0592MHz
{
	unsigned char i, j;
 while(time--)
 {
	 	_nop_();
	i = 2;
	j = 199;
	do
	{
		while (--j);
	} while (--i);
 }

}



//程序主体
void main()
{
	P2 = 0XA0;
	P0 = 0X00;
	P2 = 0X80;
	P0 = 0XFF;
	
	while(1)
	{
		if(P30 == 0)
		{
			Delay(10);//消抖
			if(P30 == 0)
			{
			S7_Flag = 1;
			}
			while(!P30);
			
		}
		

		
		if(S7_Flag == 1)
		{
			S7_Flag = 0;
			P0 = ~(0x01<<LED);
			LED++;
			if(LED == 8) LED = 0;
			
		}
			
		
	}
	
	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1461512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java程序流程控制

java程序有哪些流程控制、以及Java提供了哪些方案来控制程序的执行顺序&#xff1f; 程序的流程控制一般分为3种&#xff1a;顺序结构、分支结构、循环结构 顺序结构&#xff1a;就是不加任何控制&#xff0c;代码从main方法开始自上而下执行 分支结构&#xff1a;就是根据条…

高光谱图像降噪方法(2D Wavelet, 3D Wavelet, FORPDN, HyRes等方法)

近年来&#xff0c;随着遥感应用的不断深入&#xff0c;高光谱图像研究已经成为遥感领域发展最迅速的技术之一。与其他传统成像技术相比&#xff0c;高光谱图像具有更多优势&#xff1a;更丰富的信息量、纳米级的光谱分辨率以及范围更广且连续的光谱。因此&#xff0c;在农业、…

学习SpringMVC第二天

第一种方法与springmvc无关 , 用的是tomcat的东西在web.xml里配置 第二种方法 : 用SpringMVC解决 ,设置静态资源映射匹配 , 在Spring-mvc.xml里配置 第三种方法: 还是用SpringMVC解决 , 直接加一个 <mvc:default-servlet-handler/>, 在spring-mvc.xml里配置 第二种方法…

虹科方案 | 释放总线潜力:汽车总线离线模拟解决方案

来源&#xff1a;虹科汽车智能互联 虹科方案 | 释放总线潜力&#xff1a;汽车总线离线模拟解决方案 原文链接&#xff1a;https://mp.weixin.qq.com/s/KGv2ZOuQMLIXlOiivvY6aQ 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #汽车总线 #ECU #汽车网关 导读 传统的…

【RPG Maker MV 仿新仙剑 战斗场景UI (一)】

RPG Maker MV 仿新仙剑 战斗场景UI 一 战斗场景制作原版仙剑战斗UI原版RPG Maker MV战斗UI启航战斗菜单 战斗场景制作 RPG Maker 中战斗场景的UI是比较经典的日式RPG的UI布局&#xff0c;现在尝试将它变成仙剑这样的布局看看。。。 原版仙剑战斗UI 这里只截图了开始的战斗UI…

Git笔记——2

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、撤销修改__情况一 二、撤销修改__情况二 三、撤销修改__情况三 四、删除文件 五、理解分支 六、创建、切换和合并分支初体验 七、删除分支 八、合并冲突 总…

多个.C 文件关于全局变量如何使用

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

代码随想录算法训练营第二十四天 | 回溯算法理论基础,77. 组合 [回溯篇]

代码随想录算法训练营第二十四天 回溯算法理论基础什么是回溯法回溯法的理解回溯法模板 LeetCode 77.组合题目描述思路参考代码总结优化版本 回溯算法理论基础 文章讲解&#xff1a;代码随想录#回溯算法理论基础 视频讲解&#xff1a;带你学透回溯算法&#xff08;理论篇&#…

pclpy 安装和使用

pclpy 安装和使用 一、安装pclpy二、问题与解决方法三、测试四、测试结果五、相关链接 一、安装pclpy pclpy是点云库(PCL)的Python绑定。使用CppHeaderParser和pybind11从头文件生成。这个库正在积极开发中&#xff0c;目前Windows只支持python 3.6 x64 和 python3.7&#xff…

Shell基础和变量使用

一、Shell概述 1、什么是shell Shell是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问操作系统内核的服务&#xff0c;在用户和内核之间充当翻译官的角色&#xff0c;是一个命令解释器。 Shell是一种编程语言&#xff0c;只是比较古…

动态内存管理(下)

动态内存管理&#xff08;上&#xff09;-CSDN博客&#xff08;malloc&#xff0c; realloc&#xff0c; calloc&#xff0c; free函数的用法以及注意事项等知识点&#xff09; 动态内存管理&#xff08;中&#xff09;-CSDN博客&#xff08;常见的内存出错问题) -----------…

【PX4SimulinkGazebo联合仿真】在Simulink中使用ROS2控制无人机沿自定义圆形轨迹飞行并在Gazebo中可视化

在Simulink中使用ROS2控制无人机沿自定义圆形轨迹飞行并在Gazebo中可视化 系统架构Matlab官方例程Control a Simulated UAV Using ROS 2 and PX4 Bridge运行所需的环境配置PX4&Simulink&Gazebo联合仿真实现方法建立Simulink模型并完成基本配置整体框架各子系统实现原理…

MySQL 安装步骤

下载地址&#xff1a;https://downloads.mysql.com/archives/community/&#xff0c; 选择第二个 将下载的压缩包解压到自己想要放到的目录下&#xff08;路径中最好不要有中文&#xff09; 一、添加环境变量 环境变量里面有很多选项&#xff0c;这里我们只用到Path这个参数…

IOT-Reaserch虚拟机配置

我用的是VirturalBox 主机与物理机之间的复制粘贴问题 VirtualBox Ubuntu无法安装增强功能以及无法复制粘贴踩坑记录_virtualbox安装增强功能没反应-CSDN博客 上面这篇博客帮助了我很多&#xff0c;摘取重要的重新提示一遍 运行虚拟机选择&#xff1a;设备->安装增强功能…

基于EKF扩展卡尔曼滤波的传感器网络目标跟踪matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 .....................................................................% 定义初始位置的均…

力扣773. 滑动谜题(BFS)

Problem: 773. 滑动谜题 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 由于题目提到最小步数&#xff0c;则可以使用BFS来穷举出最小的结果 1.转换为BFS问题&#xff1a;由于0代表空着的可以移动的位置&#xff0c;所以我们只需要从当前位置和0的相邻位置移动从而转…

错误票据题解

1、错误票据 题目信息 思路 先对数组进行排序&#xff0c;然后遍历数组&#xff0c;如果出现两个一样的&#xff0c;就是重号&#xff0c;如果连续的两个数之间相差大于1就是断号 题解 #include<bits/stdc.h> #define hh ios::sync_with_stdio(false),cin.tie(0),cou…

Golang - 从源码到二进制:探索在国产CPU架构上交叉编译Minio的方法

文章目录 前置知识交叉编译Go 支持的所有操作系统和体系结构组合列出 Go 支持的所有操作系统和体系结构组合 大端、小端minio使用的go版本ABI 官方下载目标编译loongarch架构下的minio编译mipsle架构下的minio编译sw64架构下的minio 前置知识 交叉编译 交叉编译是指在一台主机…

IP详细地理位置查询:技术原理与应用实践

IP地址是互联网上设备的唯一标识&#xff0c;在网络安全、个性化服务等领域具有重要意义。通过IP详细地理位置查询&#xff0c;可以获取到IP地址所在地的具体信息&#xff0c;为网络管理、定位服务等提供支持。IP数据云将深入探讨IP详细地理位置查询的技术原理、应用实践以及相…

【JavaEE】_form表单构造HTTP请求

目录 1. form表单的格式 1.1 form表单的常用属性 1.2 form表单的常用搭配标签&#xff1a;input 2. form表单构造GET请求实例 3. form表单构造POST请求实例 4. form表单构造法的缺陷 对于客户端浏览器&#xff0c;以下操作即构造了HTTP请求&#xff1a; 1. 直接在浏览器…