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

目录

一、键盘、微动开关概述

二、按键工作原理

(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;
			
		}
			
		
	}
	
	
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【J1939】一、概述,协议基础

文章目录 1. 背景2. 要点3. J1939帧细节3.1 协议数据单元(Protocol Data Unit,PDU)3.2 参数组编号(PGN)3.3 可疑参数编号(Suspect Parameter Number,SPN)参考1. 背景 J1939是一种用于商用车辆的通信协议,它定义了一套车辆电子控制单元之间进行数据通信的规范。J1939协议…

OpenAI 发布文生视频模型 Sora,普通人应该怎么做才能利益最大化?

原文链接&#xff1a; OpenAI 发布文生视频模型 Sora&#xff0c;普通人应该怎么做才能利益最大化&#xff1f; 自从 2022 年 11 月 30 日 ChatGPT 发布之后&#xff0c;每次 OpenAI 再发布新功能都跟过年一样&#xff0c;那叫一个热闹。 包括 GPT 4.0&#xff0c;GPT Store&…

滚雪球学Java(65):深入理解Java中的Map接口:实现原理剖析

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

2024年单服务器部署Mongodb三节点副本集自动化部署脚本

该脚本是为了方便自己学习和工作中部署服务器从而节省时间进行编写&#xff0c;目前能正常部署&#xff0c;创建集群&#xff0c;管理员用户&#xff0c;以及连接都没问题&#xff0c;但是没有开启验证&#xff0c;后续找时间补充。 完整的教程请参考一下我写的技术文章。 20…

十六进制数

1.做一个收电费程序&#xff0c;要求输入使用的电的度数&#xff08;整数&#xff09;以及电费单价&#xff08;实数&#xff09;&#xff0c;输出总的用电费用。 2.提示并输入一个小写字母数据&#xff0c;输出其对应的ASCII值&#xff0c;以及该小写字母对应的大写字母。 3.提…

软件测试工程师linux学习之系统层面相关命令总结

1 linux系统重启和关机的命令 重启命令&#xff1a;reboot 关机命令&#xff1a;shutdown 这两个命令一般很少用到&#xff0c;我们了解即可。 2 查看日志信息命令 什么是日志&#xff0c;日志就是一个一个普通的文本文件&#xff0c;文件里面记录的是软件运行过程中的信息…

市场复盘总结 20240221

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 33% 最常用…

搜维尔科技:用于运动科学的 OptiTrack,范围标记、步态捕捉!

OptiTrack 系统提供世界领先的测量精度和简单易用的工作流程&#xff0c;为研究人员和生物力学师的研究提供理想的 3D 跟踪数据。 对所有主要数字测力台、EMG 和模拟设备的本机即插即用支持为研究人员提供了在 Visual3D、MotionMonitor、MATLAB 和其他第三方生物力学软件包中进…

MySQL数据库基础(十二):子查询(三步走)

文章目录 子查询&#xff08;三步走&#xff09; 一、子查询&#xff08;嵌套查询&#xff09;的介绍 二、子查询的使用 三、总结 子查询&#xff08;三步走&#xff09; 一、子查询&#xff08;嵌套查询&#xff09;的介绍 在一个 select 语句中,嵌入了另外一个 select …

如何使用Coded UI Test对Webpage进行自动化测试

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

2024 年了,如何 0 基础开始学习 Vue ?

最近 5 个月&#xff0c;我都在忙着构建我的第一开源项目 HexoPress&#xff0c;这个项目是使用 Electron Vue 3 TypeScript 等技术实现的&#xff0c;一方面&#xff0c;我真的很需要一款合自己心意的博客编辑器&#xff0c;另一方面&#xff0c;我也是真心想学习 Electron …

App Inventor 2 Activity启动器技巧:如何查看并启动其他App

App包名和类名的查看 由 App Inventor 2 创建的应用要弄清包名和类名&#xff0c;可通过下载其应用程序的源代码&#xff0c;然后使用文件资源管理器或解压缩程序解压 .aia源文件&#xff08;文件的扩展名修改成.zip 或.rar&#xff0c;然后解压&#xff09;&#xff0c;在解压…

Redis面试题及核心知识点讲解

redis是单线程还是多线程&#xff1f; redis是单线程的&#xff0c;主要是指网络I/O线程。Redis的持久化&#xff0c;集群同步等操作&#xff0c;则由另外的线程来执行。 2 . redis是单线程&#xff0c;为什么处理这么快&#xff1f; Redis的大部分操作都是在内存中完成。单线…

电脑进水无法开机怎么办 电脑进水开不了机的解决方法

意外总是会不定时打破你的计划&#xff0c;电脑这类电器最怕遇到的除了火还有水&#xff0c;设备进水会导致数据丢失&#xff0c;那么我们遇到电脑进水怎么办&#xff1f;进水之后不正确处理也会引起很多不必要的麻烦. 解决办法 第一步&#xff1a;关机 如果您的电脑是在开…

山西电力市场日前价格预测【2024-02-22】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-02-22&#xff09;山西电力市场全天平均日前电价为441.87元/MWh。其中&#xff0c;最高日前电价为680.73元/MWh&#xff0c;预计出现在18:45。最低日前电价为352.02元/MWh&#xff0c;预计…

【git 使用】git 中head、工作树、和索引分别是什么,有什么关系和区别

HEAD 定义&#xff1a;HEAD 是指向当前所在分支&#xff08;或者是某个特定的提交&#xff09;的指针&#xff0c;它表示当前工作目录正在处于哪个提交或分支上。作用&#xff1a;HEAD 指示了当前工作目录的状态&#xff0c;可以通过 HEAD 来确定当前处于哪个分支上&#xff0…

正交匹配追踪算法(Orthogonal Matching Pursuit)实现过程及Python模拟

正交匹配追踪&#xff08;Orthogonal Matching Pursuit&#xff0c;OMP&#xff09;是一种用于寻找稀疏信号的贪婪算法&#xff0c;用于求解压缩感知问题中的稀疏近似问题。在压缩感知的背景下&#xff0c;通常我们有一个欠定的线性系统Ax y&#xff0c;其中A是一个已知的测量…

IDEA实现ssh远程连接本地Linux服务器

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境&#xff0c;并结合Cpolar内网穿透工具实现无公网远程连接&#xf…

IAR推出新版IAR Embedded Workbench for Arm功能安全版,该版本配备经过认证的静态代码分析功能

瑞典乌普萨拉&#xff0c;2024年2月20日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR宣布&#xff1a;推出其旗舰产品IAR Embedded Workbench for Arm功能安全版的最新版本9.50.3。此次发布进一步加强了IAR支持开发人员创建安全、可靠和符合标准的嵌入式应用程序的承诺&…

回归分析中的异方差性

在简单线性回归或多元线性回归中&#xff0c;我们对误差项做了一些基本假设。 简单线性回归&#xff1a; 多元线性回归&#xff1a; 假设条件&#xff1a; 1.误差均值为零 2.误差具有恒定方差 3.误差不相关 4.误差呈正态分布 第2个假设称为同方差性&#xff0c;因此&…