蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键

蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键

  • [第一节 硬件解读](#第一节 硬件解读)
  • [第二节 CubeMX配置](#第二节 CubeMX配置)
  • [第三节 MDK代码](#第三节 MDK代码)

第一节 硬件解读

扩展模块和ADC模块是一摸一样的,插在主板上。

引脚对应关系:

PB6-ROW1

PB7-ROW2

PB1-COLUMN1

PB0-COLUMN2

PA8-COLUMN3

矩阵键盘原理,如上,先给ROW1和2一个电平,**ROW1和2一定是只允许其中一个引脚在某一时刻为低电平,除该引脚外,其他引脚必定为高电平,因为我们是通过低电平判断按键被按下的。**然后单片机不断读取COLUMN1,2,3的引脚。如果在ROW1为低电平,ROW2为高电平的情况下,读取COLUMN2为低电平,则代表B2被按下。

注意:在CubeMX配置和MDK代码中,我们先给COLUMN1,2,3一个电平,然后读取ROW1和ROW2的电平。

第二节 CubeMX配置

先配置PB0 PB1为输出模式,初始化为低电平。

之后配置PB6,7为输入模式,上拉。

注意:PA8是矩阵按键的引脚,同样是OLED引脚,所以矩阵键盘的B3和B6不会同时出现在一个项目中。配置PA8为矩阵键盘还是OLED,参考题目。

第三节 MDK代码

编写代码

先定义一个value值,写第一个column(竖行)为低电平,另一个为高电平。之后读取ROW(横行)是否为低电平,是就代表被按下,更新value值,注意消抖和释放按键。之后再写第二个column(竖行)为低电平,重复操作,最后返回value值。

编写main函数代码:

可以接收到数据。

相关推荐
jianqiang.xue32 分钟前
ESP-IDF保姆级入门40|量产烧录与产线测试全解:批量烧录方案/校准流程/功能测试/不良分拣/产线追溯,掌握工业级量产交付全流程
单片机·物联网·esp32
奔跑的架构师35 分钟前
[A-50]ARMv9/v8-DVFS系统架构
linux·arm开发·架构·系统架构·arm
Zw-awa1 小时前
001-01-从C语言的main到STM32的main-你的代码后来去了哪里
stm32
易岳群3 小时前
物联网 MQTT 方案:服务端如何通过 MQTT 生命周期维护客户端设备状态
物联网·网络协议
幼儿园蛋小黑4 小时前
单片机数码管LED灯独立按键中断定时器综合实战
单片机·嵌入式硬件
数字新视界5 小时前
数据中心基础设施管理系统发布新版本,助力企业云化转型
嵌入式硬件·物联网·数据中心·数据中心基础设施管理·dcim管理系统
SKH.5 小时前
单片机(1)
单片机·嵌入式硬件
llilian_166 小时前
小切口解决大问题:时序校准场景下的标准时间间隔脉冲信号发生器应用方案
功能测试·单片机·嵌入式硬件·51单片机
宁静致远20216 小时前
VSCode 开发 STM32 的 Keil工程 (Keil Assistant)
vscode·stm32·stm32cubeide
三块石头1016 小时前
车载ADC避坑:为什么ADC采集值偏低?
经验分享·stm32·单片机·嵌入式硬件·mcu·硬件架构·硬件工程