单片机矩阵键盘

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、什么是矩阵键盘?
    • 1.独立键盘
    • 2.矩阵键盘
      • 变化1
      • 变化2
      • 变化3
    • 3. 通过变型,举一反三,就可以实现4*4的矩阵键盘扫描
  • 二、使用步骤
    • 2.读入数据
  • 总结


前言

学了了独立键盘之后,发现使用一个按键就要浪费一个GPIO,有没有一种节约GPIO的方法,比如要用16个键盘,怎么样才能节省IO口

一、什么是矩阵键盘?

1.独立键盘

在这里插入图片描述在这里插入图片描述

sbit key0= P1^0;  //
if(key0==0{

	delay(20);//按键消抖
	if(key0==0{
		led0=1;}

}

独立键盘,接一个按键,就会浪费一个IO口

在这里插入图片描述
独立键盘的程序非常好写,就在上面程序的基础上,添加引脚和判断

sbit key0= P1^0;  //
sbit key1= P1^1;  //
if(key0==0{

	delay(20);//按键消抖
	if(key0==0{
		led0=1;}

}

if(key1==0{

	delay(20);//按键消抖
	if(key1==0{
		led1=1;}

}

2.矩阵键盘

就是由独立键盘组成的?

在这里插入图片描述

变化1

在这里插入图片描述

变化2

在这里插入图片描述

sbit key0= P1^0;  //
sbit key1= P1^1;  //
sbit key2= P1^2;  //
sbit key3= P1^3;  //

sbit lie0=P1^4;
while(1)
{

		lie0=0;
		if(key0==0{
		
			delay(20);//按键消抖
			if(key0==0{
				led0=1;}
		
		}
		
		if(key1==0{
		
			delay(20);//按键消抖
			if(key1==0{
				led1=1;}
		
		}
				if(key0==0{
		
			delay(20);//按键消抖
			if(key2==0{
				led0=1;}
		
		}
		
		if(key3==0{
		
			delay(20);//按键消抖
			if(key1==0{
				led1=1;}
		
		}

}

变化3

在这里插入图片描述

sbit key0= P1^0;  //
sbit key1= P1^1;  //
sbit key2= P1^2;  //
sbit key3= P1^3;  //

sbit lie0=P1^4;
sbit lie1=P1^5;

while(1)
{

		lie0=0;lie1=1;// 判断第一列
		if(key0==0{
		
			delay(20);//按键消抖
			if(key0==0{
				led0=1;//按键0
		    }
		
		}
		
		if(key1==0{
		
			delay(20);//按键消抖
			if(key1==0{
				led1=1;1
		    }
		
		}
				if(key0==0{
		
			delay(20);//按键消抖
			if(key2==0{
				led0=1;2
		    }
		
		}
		
		if(key3==0{
		
			delay(20);//按键消抖
			if(key1==0{
				led1=1;3
		    }
		
		}

}

	lie0=1;lie1=0;// 判断第一列
		if(key0==0{
		
			delay(20);//按键消抖
			if(key0==0{
				led0=1;4
		    }
		
		}
		
		if(key1==0{
		
			delay(20);//按键消抖
			if(key1==0{
				led1=1;5
		    }
		
		}
				if(key0==0{
		
			delay(20);//按键消抖
			if(key2==0{
				led0=1;6
		    }
		
		}
		
		if(key3==0{
		
			delay(20);//按键消抖
			if(key1==0{
				led1=1;7
		    }
		
		}

}

3. 通过变型,举一反三,就可以实现4*4的矩阵键盘扫描

二、使用步骤

2.读入数据

总结

从独立键盘到矩阵键盘,由浅入深

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

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

相关文章

app开发者提升第四季度广告收入的方法

第四季度将迎来双十一、双十二、圣诞、元旦为主的电商购物季,这是一年中利用线上消费为全新年度和全新预算做好准备的最佳时机,从过往的变现成功案例中汇总了优化要点,帮助开发者在第四季度和未来一年获取更多广告收益。 https://www.shensh…

CSS - 常用属性和布局方式

目录 前言 一、常用属性 1.1、字体相关 1.2、文本相关 1.3、背景相关 1.3.1、背景颜色 1.3.2、背景图片 1.4、圆角边框 二、常用布局相关 2.1、display 2.2、盒子模型 2.2.1、基本概念 2.2.2、border 边框 2.2.3、padding 内边距 2.2.4、margin 外边距 2.3、弹…

sql server2014如何添加多个实例 | 以及如何删除多个实例中的单个实例

标题sql server2014如何添加多个实例 前提(已安装sql server2014 且已有默认实例MSSQLSERVER) 添加新的实例 其实就是根据安装步骤再安装一次(区别在过程中说明) 双击安装 选择“全新独立安装或添加现有功能” 然后下一步下一…

【Spring Cloud】如何确定微服务项目的Spring Boot、Spring Cloud、Spring Cloud Alibaba的版本

文章目录 1. 版本选择2. 用脚手架快速生成微服务的pom.xml3. 创建一个父工程4. 代码地址 本文描述如何确定微服务项目的Spring Boot、Spring Cloud、Spring Cloud Alibaba的版本。 1. 版本选择 我们知道Spring Boot、Spring Cloud、Spring Cloud Alibaba的版本选择一致性非常重…

小主机折腾记18

这个月冲动消费了小两千块钱…… 1.880g5twr 由于四根2400t的内存条没有用出去,我又把它们装回了惠普的800g5twr; 看到pdd有400块钱的9350K,于是想着给他上一个9350k 在参考了pdd、咸鱼以及淘宝的价格后,我发现400块钱的9350k都…

【JAVA学习笔记】41 - 接口

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter10/src/com/yinhai/interface_ 一、快速入门 usb插槽就是现实中的接口。你可以把手机,相机,u盘都插在usb插槽上,而不用担心那个插槽是专门插哪个的&#x…

Git基本概念与使用

一、Git基本概念 git,是一种分布式版本控制软件,与CVS、Subversion这类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。g…

信奥赛一本通:数据排序(合影效果、病人排队、明明的随机数、单词排序、出现次数超过一半的数、统计字符数)

数据排序 1182:合影效果1183:病人排队1184:明明的随机数1185:单词排序1186:出现次数超过一半的数1187:统计字符数 1182:合影效果 由题目可知,n个人有 性别与身高两种属性&#xff0c…

Elasticsearch实践:ELK+Kafka+Beats对日志收集平台的实现

可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个全文搜索引擎,它还提供了分布式的多用户能力,实时的分析,以及对复杂搜索语句的处理能力,使其在众多场景下,如企业搜索,日志和事件数据分析等…

PDF Reader Pro v2.9.8(pdf编辑阅读器)

PDF Reader Pro是一款PDF阅读和编辑软件,具有以下特点: 界面设计简洁,易于上手。软件界面直观清晰,用户可以轻松浏览文档,编辑注释和填写表单。功能强大,提供了多种PDF处理工具,包括阅读、注释…

北邮22级信通院数电:Verilog-FPGA(6)第六周实验:全加器(关注我的uu们加群咯~)

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 作者建群啦!!!欢…

基于​Segment-and-Track Anything与ProPainter实现视频一键目标移除与一键祛除水印

一、 ProPainter 1.算法简介 ProPainter是由新加坡南洋理工大学(Nanyang Technological University)的S-Lab团队开发的一款视频修复工具。它融合了图像和特征修复的优势,以及高效的Transformer技术,旨在提供高质量的视频修复效果…

libcurl Socks5 堆缓冲区溢出漏洞(CVE-2023-38545)详细分析

简介 curl 是用于在各种网络协议之间传输数据的命令行工具,libcurl 用于提供处理网络通信和数据传输的 Api 接口。curl 默认下载缓冲区为 102400 字节,但如果设置低于每秒 102400 字节,缓冲区大小会自动设置为更小的值。libcurl 下载缓冲区默…

AIO开放接口平台免费畅享ChatGPT聊天、联网互动、学术等服务!更有DALL·E 3最强AI绘图功能!

免费畅享! AIO平台ChatGPT联网、聊天、学术等服务! AIO开放接口平台 | 服务介绍 ALL IN ONE (AIO)API服务是LLM(大语言模型)开放接口平台:持续接入各种主流的大模型接口,并提供简单、易用、统一的API交互…

第四章 路由基础

目录 4.1 路由器概述 4.1.1 路由器定义 4.1.2 路由器工作原理 4.1.3 路由表的生成方式 (1)直连路由 (2)静态路由 (3)动态路由 4.1.4 路由器的接口 (1)配置接口 &#xff0…

css中px、em、rem、%、vw、vh、vm、rpx 这些单位的区别

序言 px:像素 相对长度单位,相对于显示器屏幕分辨率(推荐使用) em:相对长度单位 基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个…

如何将 Helm Chart 推送至 Harbor ?

Author:rab 前言:我们说 Helm 的私有仓库可以是任何 HTTP Server(如 Nginx、Apache 等),而 Harbor 自带 Helm 私有仓库的功能(但默认是禁用的,需要我们手动启用),如果为了…

电子元器件管理系统 JAVA语言开发

目录 一、系统介绍 二、系统下载 三、系统截图 一、系统介绍 基于VueSpringBootMySQL的电子元器件管理系统包含元器件单位模块、元器件仓库模块、元器供应商模块、元器件品类模块、元器件明细模块、元器件采购模块、元器件采购审核模块、元器件领用模块、学生元器件申请模块…

Cisco IOS XE Web UI 命令执行漏洞

Cisco IOS XE Web UI 命令执行漏洞 受影响版本 Cisco IOS XE全版本 漏洞描述 Cisco IOS XE Web UI 是一种基于GUI的嵌入式系统管理工具,能够提供系统配置、简化系统部署和可管理性以及增强用户体验。它带有默认映像,因此无需在系统上启用任何内容或安…

ideaSSM在线商务管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 SSM 在线商务管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码 和数据库,系统主…