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

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

  • [第一节 硬件解读](#第一节 硬件解读)
  • [第二节 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函数代码:

可以接收到数据。

相关推荐
Hello_Embed3 小时前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
亿坊电商4 小时前
物联网领域中PHP框架的最佳选择有哪些?
物联网·struts·php
一起搞IT吧4 小时前
嵌入式ARM SOC开发中文专题分享一:ARM SOC外围资源介绍
arm开发·嵌入式硬件
研华嵌入式5 小时前
如何在高通跃龙QCS6490 Arm架构上使用Windows 11 IoT企业版?
arm开发·windows·嵌入式硬件
御控工业物联网5 小时前
灌区泵站远程监控物联网网关解决方案
物联网·远程监控·物联网网关·泵站·灌区泵站
矢志不移7925 小时前
裸机开发 时钟配置,EPIT
单片机·嵌入式硬件
清风6666666 小时前
基于STM32的APP遥控视频水泵小车设计
stm32·单片机·mongodb·毕业设计·音视频·课程设计
前端小超超6 小时前
capacitor配置ios应用图标不同尺寸
ios·蓝桥杯·cocoa
优雅鹅7 小时前
ARM、AArch64、amd64、x86_64、x86有什么区别?
arm开发·学习
BAGAE9 小时前
MODBUS 通信协议详细介绍
linux·嵌入式硬件·物联网·硬件架构·iot·嵌入式实时数据库·rtdbs