【摘要】:可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。图5.64×4矩阵键盘原理图确定矩阵式键盘上哪一键被按下有多种方法,若键位较多,采用硬件专用芯片来实现,也可使用软件编程来实现,如行扫描法、反转法等。MCU通过检测行或列线上的电平变化就可以确定哪个按键被按下,同时为了保证按下一次得到一次键位值,一般要进行去抖处理。如图5.6,1-3行分别连接到PA0-PA3,1-4列分别连接PA4-PA7,要求通过串口把被按下的键位值编号发送出去。
在按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,半个端口(如PA口)就可以构成4×4=16个按键,比之直接将端口线用于键盘多了2倍。硬件电路如图5.6所示。可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。
图5.6 4×4矩阵键盘原理图
确定矩阵式键盘上哪一键被按下有多种方法,若键位较多,采用硬件专用芯片来实现,也可使用软件编程来实现,如行扫描法、反转法等。不管使用哪种方法,其原理都是一样的,就是当按键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化。MCU通过检测行或列线上的电平变化就可以确定哪个按键被按下,同时为了保证按下一次得到一次键位值,一般要进行去抖处理。本节通过行扫描法讲述如何进行按键识别。
【例5.3】如图5.6,1-3行分别连接到PA0-PA3,1-4列分别连接PA4-PA7,要求通过串口把被按下的键位值编号发送出去。
编程要点如下。
(1)初始化数矩阵键盘所用引脚。
(2)初始化串口。
(3)编写按键检测程序,并进行去抖处理。
(4)编写主函数,完成指定功能。
主要程序代码如下。
(www.daowen.com)
重要提示
虽然按键检测头文件看起来很长很啰嗦,但这种编写方法很实用。第一次编程很啰嗦,但对于行、列引脚分别在多个GPIO口上同样能适用,能很好地移植到不同的工程中,仅把对应的宏修改一下即可。这是一个值得掌握的编程方法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
有关基于物联网的STM32单片机应用与实践的文章