第一节硬件解读
扩展模块和ADC模块是一模一样的,是插在主板上面的,主板的扩展口在ADC章节讲解了,我们完全可以回顾一下:

主板上扩展板引脚的关系:
扩展板序号 | 主板引脚 |
1 | 5V |
2 | PB6 |
3 | GND |
4 | PB7 |
5 | PB1 |
6 | GND |
7 | PB0 |
8 | PA8 |
9 | VDD_NODE |
10 | PB4 |
我们来看看矩阵键盘的引脚的定义:

所以我们可以得到引脚关系如下:
扩展板序号 | 矩阵键盘模块引脚 |
2 | ROW1 |
3 | GND |
4 | ROW2 |
5 | COLUMN1 |
6 | GND |
7 | COLUMN2 |
8 | COLUMN3 |
我们综合一下:
扩展板序号 | 主板引脚 | 矩阵模块引脚 |
1 | 5V | |
2 | PB6 | ROW1 |
3 | GND | GND |
4 | PB7 | ROW2 |
5 | PB1 | COLUMN1 |
6 | GND | GND |
7 | PB0 | COLUMN2 |
8 | PA8 | COLUMN3 |
9 | VDD_NODE | |
10 | PB4 |
说完了引脚的关系,来说说矩阵键盘的原理,以蓝桥杯物联网的矩阵键盘模块为例,先给ROW1和ROW2一个电平,注意:ROW1或者ROW2一定是只允许其中一个引脚在某一时刻为低电平,除该引脚外,其他引脚必定为高电平,因为我们是通过低电平来判断按键被按下的。然后单片机不断读取COLUMN1,COLUMN2和COLUMN3的引脚。如果在ROW1为低电平,ROW2为高电平的情况下,读取COLUMN2为低电平,则代表B2被按下。
注意:在CubeMX配置和MDK代码中,我们是先给COLUMN1,COLUMN2和COLUMN3一个电平,然后读取ROW1和ROW2的电平。

第二节 CubeMX配置
第一步:配置PA8【注意:PA8和OLED的引脚重复】,PB0,PB1为输出模式,初始化为低电平,并配置用户标签,如下图:

第二步:配置PB6(ROW_1)和PB7(ROW_2)为输入模式,上拉,并配置用户标签,如下图:

注意:主板上使用了矩阵键盘模块,将在CubeMX中取消ADC模块的配置,在MDK代码中也要删除,否则会报错;另外,PA8是矩阵键盘的引脚,同样也是OLED的引脚,所以,矩阵键盘和OLED不会同时在一个项目中,除非矩阵键盘摒弃PA8,让PA8为OLED引脚。
第三节 MDK代码
第一步:以下是矩阵键盘的读按键函数,如下图:




第三步:读取按键键值,如下图:

第四节 实验现象
注意:
2,请选择A开发板。
现象:
1,继电器K1和K2吸合。
2,LED灯LD5亮。
3,按下矩阵键盘,串口(波特率9600,HEX模式)发送键值。
-
模块
+关注
关注
7文章
2822浏览量
52794 -
adc
+关注
关注
100文章
7380浏览量
553722 -
矩阵
+关注
关注
1文章
441浏览量
35808
发布评论请先 登录
KAGA FEI扩展低功耗蓝牙模块产品线
LP5891-Q1 LED矩阵显示驱动器评估模块技术解析
LP5861T LED矩阵驱动评估模块技术解析与应用指南
400 至 510 MHz 前端模块,适用于范围扩展应用 skyworksinc
低功耗、低功耗前端模块,适用于蓝牙®范围扩展应用 skyworksinc
低功耗、低功耗前端模块,适用于蓝牙®信号范围扩展应用 skyworksinc
ADP5589键盘解码器和I/O扩展器技术手册
ADP5585键盘解码器和I/O扩展器技术手册
ADP5586键盘解码器和I/O端口扩展器技术手册
AN-660:XY矩阵键盘与MicroConverter的接口

扩展模块之矩阵键盘
评论