扩展模块和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的电平。
第一步:配置PA8【注意:PA8和OLED的引脚重复】,PB0,PB1为输出模式,初始化为低电平,并配置用户标签,如下图:
第二步:配置PB6(ROW_1)和PB7(ROW_2)为输入模式,上拉,并配置用户标签,如下图:
注意:主板上使用了矩阵键盘模块,将在CubeMX中取消ADC模块的配置,在MDK代码中也要删除,否则会报错;另外,PA8是矩阵键盘的引脚,同样也是OLED的引脚,所以,矩阵键盘和OLED不会同时在一个项目中,除非矩阵键盘摒弃PA8,让PA8为OLED引脚。
第一步:以下是矩阵键盘的读按键函数,如下图:
第三步:读取按键键值,如下图:
注意:
1,请用USB线连接电脑与开发板。
2,请选择A开发板。
现象:
1,继电器K1和K2吸合。
2,LED灯LD5亮。
3,按下矩阵键盘,串口(波特率9600,HEX模式)发送键值。
全部0条评论
快来发表一下你的评论吧 !