矩阵键盘模块

目录

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

相关推荐
xxwxx__1 天前
51单片机智能家居系统:从零实现温湿度监测、蓝牙遥控与PWM风扇调速
嵌入式硬件·51单片机·智能家居
xxwxx__1 天前
51单片机电机控制全攻略:直流电机、舵机与步进电机
c语言·单片机·嵌入式硬件·51单片机
Lumos6fly2 天前
51单片机从零到实战(15)——数字时钟温度计
单片机·嵌入式硬件·51单片机
Ameilide2 天前
51单片机学习 day1
嵌入式硬件·学习·51单片机
wuyk5554 天前
59.嵌入式C语言高级宏定义实战:多行宏、字符串化与符号拼接
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网·51单片机
BW.SU4 天前
瑞佑RUI--工业UI,拖拽即成
stm32·单片机·51单片机·gui·人机界面·单片机可视化设计
2401_8275012810 天前
51单片机(二):GPIO、中断、定时器与PWM
单片机·嵌入式硬件·51单片机
2401_8275012810 天前
51单片机(四)DS18B20 数字温度传感器
c语言·51单片机
2401_8275012810 天前
51单片机(三)串口通信(UART)、Modbus协议
单片机·嵌入式硬件·51单片机
智者知已应修善业11 天前
【51单片机实现初始化数码管不显示按启动从0秒计时到60按暂停一次显示当前秒按2次恢复原始状态】2024-6-11
c语言·c++·经验分享·笔记·嵌入式硬件·算法·51单片机