矩阵键盘模块
目录
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