之前做过很多仿真仪表盒,经常遇到盒子上既有大量led指示灯,又有很多按键的情况,主芯片使用的siliconlabs的一款单片机,管脚资源有限,如何应对如此多的指示灯和按键呢?当时选用了max7219来实现多个led灯的控制,而按键则是通过矩阵扫描实现的。
所谓“矩阵扫描”,可以想象成是把几路io横竖交叉形成网格状,然后把按键放置在网格的交叉点上。这种电路应用很广泛,可以由较少的io口实现较多的按键控制。比如,6根io按照3行3列排列,就可以实现接入9个按键;8根io按照4行4列排列,就可以实现接入16个按键。来看下面这个3*3的矩阵按键原理图:
3*3矩阵按键1
注意,中间那四个行、列交叉地方的线是分离的,并没有短接:
3*3矩阵按键2
还要注意的是,我们要给行或列io加上上拉电阻,以保证它们的默认状态是高电平。
矩阵按键扫描的实现原理是这样的:把属于列的io口设置为输入状态,这时由于上拉电阻的作用,当按键没有动作时,程序就会读到高电平;这时开始按行进行扫描,先把行1的io设置为输出状态,然后设置输出为低电平,接着依次读取列io口的状态,如果有按键被按下,那么列io口的读入电平就变成低电平,这时就可以根据行和列判断出动作按键的位置了。行1的扫描完成后,把行1的io置高,然后按照上面步骤依次进行行2和行3的扫描,确认有动作按键的位置就可以了。下面是程序的简单流程图(没有包含去抖等处理):
简单扫描按键流程图
美国的“制裁大棒”终于指向了华为
华为P10给梅西拍的照片很惊艳 不说还以为是单反拍的
华为助力广东移动建设新一代绿色基础设施
bong 4智能手环发布 原有功能一个不少还加入社交功能
日常减少手机辐射措施
矩阵按键扫描的实现原理
露笑科技借百亿项目“进军”第三代半导体?
电容放电时间的计算
DSCope虚拟示波器评测
数字货币的5个冷钱包介绍
铺路VR平台,谷歌收购眼球追踪技术公司Eyefluence
红米7A评测 不仅仅是性价比还是最贴心的老人机
输入信号怎么接进电路中
stm32delay函数怎么写
新技术培训 | 微电子职业教育师资培训(第三期)圆满落幕
示波器的相关功能非常适合用于射频分析
全球最厉害的14位程序员!
使用一个基于FPGA平台实现不同工业以太网协议的设计方法
无线模块nrf24l01中文资料_引脚图及引脚定义_电路原理及实例
解析市场上的指纹识别技术