矩阵键盘模块

目录

1.矩阵键盘介绍

2.扫描的概念

数码管扫描(输出扫描)   

矩阵键盘扫描(输入扫描) 

矩阵按键采用逐行扫描:

3.矩阵键盘代码

第一步:

第二步:

第三步:

第四步:

第五步:

第六步:

第七步:

4.矩阵键盘密码锁

第一步:

第二步:

第三步:

第四步:

第五步:


1.矩阵键盘介绍

在矩阵中按键数量较多时,为了减少I/O口的占用,通常将按键排列矩阵形式

采用逐行或逐列的“扫描”,就可以读出位置按键的状态

2.扫描的概念

数码管扫描(输出扫描)   

 原理:显示第1位→显示第2位→显示第3位→……,然后快速循环这个过程,最终实现所有数码管同时显示的效果

矩阵键盘扫描(输入扫描) 

 原理:读取第1行(列)→读取第2行(列) →读取第3行(列) → ……,然后快速循环这个过程,最终实现所有按键同时检测的效果

以上两种扫描方式的共性:节省I/O口

矩阵按键采用逐行扫描:

因为P15连接到步进电机的BZ,而BZ连接到蜂鸣器,为了让他们不冲突,所以不能逐行扫描,所以矩阵按键要逐列扫描。

逐行扫描:给0就代表扫描,其他给1(没选中),一次只能扫描一行;P10-P13给0表示按下,给1表示没按下

按列扫描也一样思路

3.矩阵键盘代码

第一步:

将延迟的和LCD1602(液晶显示)的代码复制到工程目录下

第二步:

添加到keil中(选中文件右键,Add filess to Grop---)

第三步:

引用头文件使用(前面知识,要先初始化才能用)

补充:如果不想看警告就去掉警告,不显示

补充:快速生成常用格式代码

设置,完成后双击就可以生成了

第四步:

扫描矩阵按键代码,可以选中图片右键浏览,这样看模糊:(局部变量要赋初始值)

第五步:

第一列判断是否被按下代码

第六步:

那一列检测那一列置0,再检测列的第几个按下(其他的列复制过来改下)

头文件声明

第七步:

main函数调用

矩阵按键函数其他列如下

4.矩阵键盘密码锁

第一步:

将矩阵键盘代码复制过来到工程目录下(复制功能模块点C和点H文件)在主函数引入头文件

第二步:

第三步:

乘以10和+=操作理解

矩阵键盘密码锁

第四步:

显示密码超出范围(大于int类型函数显示值),解决方法Count,计数

11按键确认键

第五步:

取消键12

### 矩阵键盘模块接线教程 矩阵键盘是一种常见的输入设备,其设计通过减少所需的I/O端口数量来优化资源利用。以下是关于如何连接和配置矩阵键盘的具体说明。 #### 接线方法 在硬件实现方面,矩阵键盘通常由行线和列线组成。具体来说: - **行线与列线的分配** 行线一般被设置为输出模式,用于发送信号;而列线则作为输入模式,接收来自按键的状态反馈。这种结构允许微控制器扫描整个键盘并检测哪个键处于按下状态[^3]。 - **引脚定义** 假设我们正在处理的是一个标准4×4矩阵键盘,则会有四根行线(Row0至Row3)以及另外四根列线(Column0至Column3)。这些线路需分别接到单片机或其他控制单元上的指定GPIO接口上。例如,在Arduino项目中可能这样安排: - 将`R0`, `R1`, `R2`, 和 `R3` 连接到 Arduino 的数字管脚 D2 至 D5; - 同样地把 `C0`, `C1`, `C2`, 及 `C3` 对应于更高编号的一组 GPIO 如D6 到 D9 上去完成物理连线操作[^1]。 #### 电路连接方式 为了确保可靠的电气接触并且简化逻辑判断过程中的干扰问题需要注意以下几点: - 当某个特定按钮被按压时, 它会短接相应的行列触点从而改变该节点处原本设定好的高低电压等级关系. - 微处理器可以通过依次激活每一条出行路径(即拉低某一行), 并监测所有入列线上是否有相应的变化来进行逐行扫描测试以定位实际触发的位置信息. 此外值得注意的一个重要环节是对开关动作执行必要的软件层面消除机械颤动措施以防误判现象发生[^2]. ```cpp // 示例代码展示基本初始化流程 (适用于Arduino环境) const int rowPins[] = {2, 3, 4, 5}; // Row Pins connected to Digital I/Os const int colPins[] = {6, 7, 8, 9}; // Column Pins connected to Digital Inputs void setup() { for(int i=0;i<sizeof(rowPins)/sizeof(rowPins[0]);i++) pinMode(rowPins[i], OUTPUT); for(int j=0;j<sizeof(colPins)/sizeof(colPins[0]);j++)pinMode(colPins[j], INPUT_PULLUP); } ``` 以上片段展示了针对上述提到过的那些针脚进行适当方向性的预置工作以便后续程序能够正常运作起来。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值