我所知道的矩阵键盘工作原理

三、单片机关于矩阵键盘的设计 通过porteus和keil对52单片机的4X4矩阵按键进行了简单的设计。 阅读详情

最近在笔记本EC中使用到了18*8矩阵键盘,我原本以为这应该是很简单的实现原理:按下某个键时有一根行线与一根列线电平变化。简单地举个例子,比如18根列线为C0~C17,8根行线和R0~R7, 初始时所有的26线全为高电平, 按下按键‘A’时R0和C0为低电平,按下按键‘B’时R0和C1为低电平, 按下按键‘C’时R1和C0为低电平, 按下按键‘D’时R1和C1和低电平…,以此类推。这个实现原理看起来似乎非常准确又设计简便。然而, 仔细想想这样的设计在检测多个按键同时按下时是有BUG存在的,比如当检测到R0、R1、C0、C1这4根线全为低时你根本无法判断‘A’,‘B’,‘C’,‘D’这4个按键到底被同时按了几个, AD、ABD、ACD、BC、ABC、BCD、ABCD这些组合都是可能的。

为了解决这个问题,矩阵键盘采用了另外一种方式,逐行扫描方式,为方便理解,我们采用4*4的矩阵键盘来分析。首先看下原理图:

 

P10~P13是4根设计成输出口的行线,P14~P17是4根设计成输入口的列线。如此的设计该怎样区别是什么按键被按下了呢?判断方法如下:

1.  扫描P10行:

a)         将P10~P13输出为0 、1、1、1

b)        读P14~P17这4个输入口的电平。如果S0~S3都没被按下,则因为P14~P17都是上拉到VCC,所以都为高;如果有1个被按下比如是S1,则因P10输出为低,所以S1开关导通后P16应为低;如果有2个按下比如是S1,S2,则P16与P17应为低。

c)        根据P14~P17的电平即可得知S0~S3中共有几个按键被按下。

2.  扫描P11行:

a)            将P10~P13输出为1 、0、1、1

b)        读P14~P17这4个输入口的电平。如果S4~S7都没被按下,则因为P14~P17都是上拉到VCC,所以都为高;如果有1个被按下比如是S5,则因P10输出为低,所以S5开关导通后P16应为低;如果有2个按下比如是S5,S6,则P16与P17应为低。

c)        根据P14~P17的电平即可得知S4~S7中共有几个按键被按下。

3.  扫描P12行:将P10~P13输出为1 、1、0、1,其他步骤同上。

4.  扫描P13行:将P10~P13输出为1 、1、1、0,其他步骤同上。

通过这4行的扫描,我们已经能够确定S0~S15这16个按键当前的状态了。

 

C语言实现如下:

void key_scan()   //键盘扫描函数

{

    int i;

unsigned char n, row, rowmask ;

row = 1;

for(i=0; i<4; i++)  //共扫描4条行线

{

    rowmask = ~(row<<i); //i=0时,rowmask=0xfe, i=1时rowmask=0xfd…

P1=rowmask;

n = P1;

n &= 0xf0;

if(n != 0xf0)

{

        Delay();//防抖动

        P1=rowmask;

n = P1;

n &= 0xf0;

if(n != 0xf0)

{

        switch(n)

        {

        case 0xE0://S(3+i*4)按下

          break;

        case 0xD0://S(2+i*4)按下

          break;

        case 0xB0://S(1+i*4)按下

          break;

        case 0x70://S(0+i*4)按下

          break;

        }

}

}

    }

}

void Delay() //延时函数

{

    int i,j;

for(i=0; i<100; i++)

{

    for(j=0; j<100; j++);

}

}

【蓝桥杯单片机入门记录】矩阵键盘 阅读详情

相关推荐

FPGA之矩阵键盘

一 、矩阵键盘原理 如何将自己理解的东西教给别人,这是一门学问,我很不擅长,所以希望通过写点博客,来锻炼自个的表达能力,如有错误之处,敬请谅解。 我们要写的是矩阵键盘的驱动,因此必须先了解键盘的工作原理,只有知道键盘需要什么样的信号、有哪些输入输出,你才好确定驱动该怎么写。 ...

weixin_42736555的博客 7284

我所知道的EC====>Keyboard

我所知道的EC====>Keyboard Keyboard Introduction  Keyboard是PC架构中的一个重要组成部分。在常见的PC系统中主板上都有一颗专用的8042接口芯片去处理(现在被集成进了SB中),8042控制keyboard的整个工作过程,包括加电自检键盘扫描码的缓冲以及与chipset沟通。在NB上这部分工作都有EC负责,它有一个keyboard

Dig into computer system. 1万+

51单片机——矩阵键盘扫描(矩阵键盘1602显示及密码锁)

可以看到矩阵键盘是4*4的一个结构,而独立按键是2*4的结构从原理图可以看到,二者按键数量虽然不同,但I/O口数量均为8个,这也就是矩阵键盘的优势所在,大大减少了外设对I/O口的使用;独立按键:4个按键为一小组,一端接GND(低电平),另外一端连接4个I/O口,也就是说,通过给予I/O口高低电平进行按键的扫描矩阵键盘:低四位(接口1234)控制行,高四位(5678)控制列,也就是说整个按键就是一个坐标图,通过(行,列)/(列,行)坐标来进行扫描,从而判断哪个按键被按下。

m0_74225397的博客 5886

一文带你详解矩阵键盘工作原理

矩阵键盘应该是经常能够用到的一类器件了,4X4矩阵键盘只需要用到8个IO口,即可完成16位按键的读取。其本质原理也就是行列扫描。本片文章将带你详细的学习矩阵键盘的原理以及代码编写。 矩阵键盘本质: 矩阵键盘本质是使用8个io口来进行16个按键的控制读取,可以减小io口的使用,用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上,设置一个按键。而这样的按键中按键的个数是4 X 4个。 这样的行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。节约单片机的资源,其本质和独.

Z小旋 11万+

使用51单片机的矩阵键盘和LCD1602做一个密码锁

使用51单片机与LCD1602模块做了一个密码锁。

w736996104的博客 1万+

51单片机矩阵键盘的控制原理-扫描及使用方式

51单片机矩阵键盘的扫描原理介绍以及使用方法

Destiny_Di的博客 1万+

51单片机矩阵键盘扫描及使用方法

本文详细介绍了矩阵键盘的使用方法,都是干货窝

小指南的博客 3万+

19.EC实战 矩阵键盘控制触摸板开关

在我们的笔记本电脑键盘上一般都存在触摸板开关的按钮,实现方式一般是Fn+对应图标按键控制开关,那么在EC中又是如何实现的呢?下图可以通过笔记本的Fn+F6来实现笔记本触摸板的开关,开机默认打开触摸板,在按下Fn+F6按键后,EC会将触摸板关闭,再次按下后又可以打开。接下来介绍两种方式,一种是非常规方式、一种是常规方式。

qq_30135687的博客 1824

4x4矩阵键盘工作原理及扫描程序_基于proteus的51单片机开发实例24-矩阵键盘(行列式键盘)...

1. 基于proteus的51单片机开发实例24-矩阵键盘1.1. 实验目的图1 矩阵键盘电路本实例我们来学习矩阵键盘(行列式键盘)的电路设计、编程实现。目的是通过较少的I/O口来识别多个按键。1.2. 设计思路我们在前面已经学习过独立按键,在独立按键电路中,一个按键连接单片机的一位I/O端口。这样通过检测I/O的状态就能很方便的识别该按键是否按下。这种电路的优点是:电路简单,程序简单,缺点是一个...

weixin_42365346的博客 1万+

8台 × 8卡 910B NPU之顶尖大模型选型分析

本文对比了2026年主流大语言模型在昇腾910B NPU集群上的部署方案。重点评估了GLM5、MiniMax M2.5、Kimi K2.5、DeepSeek V3.2和Qwen 3.5旗舰版等候选模型,从部署需求(显存占用)、能力表现(基准测试、多模态支持)和NPU生态适配度三个维度进行分析。结果显示DeepSeek V3.2综合表现最优:支持BF16/W8A8/INT4量化,在4TB显存环境下可实现2000+ TPS,首token延迟<100ms,且具备官方NPU支持。备选方案Qwen 3.5旗舰版

FeelTouch Labs 755

Microapp 接入vite子应用

MicroApp接入vite版本,干货满满,手把手步骤说明,加上报错说明,赶紧上车!

outsider76557的博客 4658

stm32矩阵键盘学习笔记

矩阵键盘矩阵键盘简介矩阵键盘扫描原理端口的配置相关函数的编写主函数与其他串口的接线与矩阵键盘的接线load与运行调试 矩阵键盘简介 什么是矩阵键盘 矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组,由于电路设计时需要更多的外部输入,单独的控制一个按键需要浪费很多的IO资源,所以就有了矩阵键盘,常用的矩阵键盘有4X4和8X8,其中用的最多的是4X4。 矩阵键盘的原理 矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。 在行线和列线的每一个交叉点上,设置一个按键。这

qq_54733828的博客 1万+

手把手教你用WKT文件在Petrel中创建自定义坐标系统(附CGCS2000转换模板)

本文详细介绍了如何在Petrel软件中利用WKT文件创建自定义坐标系统,并重点提供了CGCS2000坐标系的完整转换模板与实战步骤。通过解析坐标系统的三大支柱(大地坐标系、投影坐标系、基准转换)和WKT文件结构,指导用户从零开始构建适用于本土化项目的坐标系统,确保地质建模与空间数据处理的精度与一致性。

gpt4scribbler的博客 277

矩阵键盘

矩阵键盘的扫描原理和protues仿真(附代码) 先附上protues仿真的原理图 首先要明白矩阵键盘的原理,由原理图可以看出矩阵键盘的值是要让端口赋值的,它不像独立键盘。独立键盘是有接地的。那我们要怎么确认是哪一个按键按下呢。很简单,只要确定按下的是哪一行哪一列就可以知道是哪个按键按下了,这个就是矩阵键盘最基本的原理。(形象一点的话可以画四条横线,然后在四条横线上画四条竖线,两线交叉的地方为一...

weixin_45847432的博客 5476

Android 13.0 SystemUI下拉状态栏背景增加高斯模糊背景

在13.0的产品开发中,发现现在很多产品都是高斯模糊背景的,这种高斯模糊背景看起来效果很不错,产品开发需要SystemUI下拉状态栏背景也是高斯模糊背景,所以就要来实现下拉状态栏高斯模糊背景

安卓兼职framework和app工程师的博客 2670

禁止使用服务器 IP 访问 Apache 环境下的 Web 站点

通过在 Apache 的配置文件中添加适当的指令,我们可以轻松地禁止使用服务器 IP 地址访问我们的 Web 站点。在 Apache 环境下,有时我们希望禁止用户使用服务器的 IP 地址直接访问我们的 Web 站点,而只允许使用域名进行访问。现在,当用户尝试使用服务器的 IP 地址来访问你的网站时,他们将会被拒绝访问,只有通过域名才能正常访问。为了实现这个目标,我们可以通过 Apache 的配置文件进行相应的设置。表示禁止对根目录的访问权限,即禁止使用服务器的 IP 地址进行访问。

TpCode的博客 945

51单片机(六)矩阵键盘和矩阵键盘密码锁

相较于独立按键,矩阵键盘可以减少i/o口的占用。独立按键是每个按键都占用一个i/o口;而矩阵键盘是利用四行四列达到16个键盘占用8个i/o口的目的;减少了i/o口的占用。有点类似于利用坐标系,用行号和列号来定位具体的键盘。即采用逐行或逐列的“扫描”,就可以独处任何位置按键的状态。什么是扫描呢?

AnChenliang_1002的博客 5563

万字详解YOLOv8网络结构Backbone/neck/head以及Conv、Bottleneck、C2f、SPPF、Detect等模块

YOLOv8是由Ultralytics开发的最先进的目标检测模型,推升了速度、准确性和用户友好性的界限。YOLO这一缩写代表“你只看一次”(You Only Look Once),通过在一次网络传递中同时预测所有边界框,提升了算法的效率和实时处理能力。相比之下,其他一些目标检测技术需要经过多个阶段或过程来完成检测。YOLOv8在流行的YOLOv5架构上进行了扩展,在多个方面提供了改进。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 14万+

4x4矩阵键盘扫描c语言程序,4x4矩阵键盘工作原理及扫描程序

矩阵键盘扫描矩阵键盘的原理图根据矩阵键盘的原理图可知,当没有按键按下时,P1=0xf0;然后依次将P1^0~P1^3单独置低电平,其他置高,再扫描各列的状态,来判断是哪个按键按下,比如,将P1^0输出低电平,其他的引脚都输出高电平,即P1=0xfe,那么当第1行有按键按下时P1的相应值为,1X1(01111110=0x7e)1X2(10111110=0xbe)1x3(11011110=0xde)1...

weixin_36382155的博客 4042

修改Windows hosts文件的解决方案

本文主要介绍了修改Windows hosts文件解决方案,希望能对新手有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 安装软件 2.2 修改hosts文件

weixin_43178406的博客 1万+

LangGraph 实战教程:搭建一个智能办公多Agent协作平台

只存储必要的信息:不要把所有的原始数据都存储在状态中,比如销售数据可以存储在数据库或向量数据库中,状态中只存储数据的 ID 或摘要。使用类型提示:避免类型错误,提高代码的可维护性。支持增量更新:LangGraph 默认支持状态的增量更新(通过reduce函数),比如messages列表可以通过追加新消息的方式更新,而不是每次都重新创建整个列表。Normal Edge 的定义非常简单,只需要在StateGraph对象(稍后会详细讲解)上调用add_edge# 创建一个 StateGraph 对象。

SuperAGI2025 221

stm32矩阵键盘_矩阵键盘的行列扫描原理详解

点击上方“嵌入式从0到1”,选择“置顶/星标公众号”干货福利,第一时间送达!有的单片机应用需要使用的按键数量比较多,比如:密码锁,这时如果按照之前的设计,一个GPIO控制一个按键的话,有点浪费单片机资源,这时候我们常常需要使用矩阵键盘。常见的矩阵键盘有如下两种:后面的为薄膜按键。上图中,上面的按键按照5行*4列的布局排布,所以整个矩阵键盘共计引出了9(5+4)个引脚;下面的按键按照4行*...

weixin_39634878的博客 4436

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

51之矩阵键盘

51之矩阵键盘

2302_80442755的博客 1615

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【STM32】矩阵键盘

按键式的有的有引脚标识,R是行,C是列。有的没有引脚标识,可以找商家问下,或者自己看原理图薄膜式的都没有引脚标识。键盘正对自己,引脚是先行后列,从小到大。1.3 矩阵键盘工作原理矩阵键盘由行列两路信号组成矩阵,每个按键连接到行列的交叉点。也就是说识别时一端必须是输出高电平或者低电平,另一端去检测是否是高电平或者低电平。矩阵键盘识别常用方法逐行逐列扫描法1.使列线连接的I/O引脚输出低电平,四条行线所连接的I/O引脚输出高电平。当没有按键按下时,四条行线所连接的I/O。

2301_76153977的博客 1788

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【51单片机入门】矩阵键盘

在嵌入式系统设计中,键盘输入是一种常见的人机交互方式。其中,矩阵键盘因其简单、方便和易于扩展的特性,被广泛应用于各种设备中。本文将介绍如何使用51单片机来实现矩阵键盘的设计,包括硬件连接、键盘扫描算法以及按键处理等内容。希望通过本文的学习,读者能够掌握矩阵键盘的基本原理和设计方法,为自己的项目提供强大的输入功能。矩阵键盘是一种常见的输入设备,它由多个按键组成,通常是以矩阵的形式排列。每个按键都有一个唯一的行和列位置,通过检测行和列的电平变化来确定按下的是哪个按键。

m0_62599305的博客 1485
上一篇: Linux 汇编语言开发指南(转)
下一篇: 如何编写Linux下的USB键盘驱动
sunwill_chen
博客等级 码龄19年 25粉丝 39原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值