首页 » 软件开发 » 「单片机」3个IO口检测21按键分享(按键检测单片机矩阵分享)

「单片机」3个IO口检测21按键分享(按键检测单片机矩阵分享)

少女玫瑰心 2024-07-24 01:38:40 软件开发 0

扫一扫用手机浏览

文章目录 [+]

前言:

按键作为常用的输入部分,是常用的单片机外接模块。
如密码锁,计算器,等。
常用的独立按键和矩阵按键,编程原理很简单,只需要普通的单片机IO口即可实现。
如果要输入数字,字母,用独立按键就需要较多IO,此时就是矩阵按键的领域了。
最常用的矩阵按键是4X4矩阵按键,需要8个IO口,能检测出16个按键,每个按键对应一个按键值,或者按键值可以切换(某个按键设为切换按键)但是切换次数过多,不利于使用体验。
升级一点,把矩阵按键当成普通按键,可以检测单击,双击,长按等操作,实现输入多值。

回归主题,本文章讨论的是3个IO口检测21个按键

「单片机」3个IO口检测21按键分享(按键检测单片机矩阵分享) 「单片机」3个IO口检测21按键分享(按键检测单片机矩阵分享) 软件开发
(图片来自网络侵删)

10年前的帖子

3IO检测21按键原理图

「单片机」3个IO口检测21按键分享(按键检测单片机矩阵分享) 「单片机」3个IO口检测21按键分享(按键检测单片机矩阵分享) 软件开发
(图片来自网络侵删)

原理图

电路图是以二极管为中心,21个按键,一部分是接在GND和三极管节点之间,另一部分按键两端均接在二极管节点之间。

特别说明L1,L3,L5为3个IO口连接点。

要区分出不同的按键,这些按键肯定是不同的。
上图也是按照按键按下后的效果进行分类的。

大体上分两种,

第一种(直接检测)

按下某个按键,使某个IO口为低电平,使某两个IO口为低电平,(3个IO口低电平,本图暂未使用,不划算,需要再加三个二极管)

第二种(主动拉低检测)

一个IO口写0,拉低另外一个,

两个IO口通过按键短接

一个IO口拉低两个IO口

两个IO口均拉低一个IO口

程序代码截图

定义变量

前6个按键检测

后15个按键的检测

后15个按键区分

主要扫描函数

标签:

相关文章