您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
如何用最少的IO驱动更多的按键?
按键,按下,单片机如何用最少的IO驱动更多的按键?
发布时间:2019-02-08加入收藏来源:互联网点击:
如何用最少的IO驱动更多的按键?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
按键是一个比较典型常用的输入器件,单片机可以检测按键的状态从而执行相应的命令,所以题目的合适含义应该是,如何用较少的IO口检测更多的按键输入。
由于单片机的GPIO口是有限的,要实现更多的按键检测只能通过扩展IO来实现,今天给大家分享的就是通过使用74HC165来实现GPIO口的扩展,可以实现更多按键的输入检测。
74HC165是并入传出的移位寄存器,单片74HC165具有8个输入三个输出,所以通过单片机的三个GPIO口就可以实现8个按键的输入检测,更重要的是该芯片可以级联,通过3个GPIO可以检测更多的按键输入。以三片级联为例,介绍其使用方法,其典型的电路图如下所示。
通过图片可以看出,扩展芯片的第1,2,9三个脚接单片机,通过第10脚和下一片的9脚实现级联。通过3个GPIO就扩展出了24个按键输入检测。其程序如下图所示。
该芯片与74HC595的作用正好相反,74HC是串入并出,可以用来驱动数码管等器件。74HC165的程序与74HC595存在一定的相似之处。在编写程序时,要注意查看芯片的时序图,要在时钟的边沿状态读取数据。
关于更多细节内容大家可以留言讨论。
以上就是这个问题的回答,感谢留言、评论、转发。更多精彩内容请关注本头条号:玩转嵌入式。感谢大家。
回答于 2019-09-11 08:43:50
题主这个问题很有意思。我们做产品设计中也经常遇到这种困扰,单片机(MCU)的资源是有限的。我们需要考虑怎么用最低的成本做出最好的产品来。如果用IO扩展的方法当然是可行的,但不是节省成本的方案。
下面给大家分享一下驱动(读取)按键时怎么样去节省IO资源。
方案1:矩阵扫描按键读取法
用6个IO(3x3)可以读取9个按键,用8个IO(4x4)可以读取16个按键,用10个IO(5x5)可以读取25个按键,这方案非常适合按键多的方案,下面以3x3读取9个按键为例进行讲解。
原理图如下:
按键读取方法:
方案二:ADC输入读取按键法
此方法需要单片机带有ADC输入功能,单路ADC可以读取多个按键。一般一路ADC读四、五个按键是绝对没问题的,下面以一路ADC输入读4个按键为例
原理图如下根据ADC读取到的电压值去判断哪个按键被按下。
方案三:IO共用法
此方法适用于电路中需要按键又需要驱动LED或者LCD的情况,下面以一个IO同时驱动LED和按键进行示例
原理图如下:
分时驱动LED和按键,在不扫描按键的时候,I/O是设为输出状态,是用来驱动LED的。
扫描按键时,把I/O设为输入状态,读取按键。
请大家关注一下我的头条号@电子产品设计方案,支持一下,我会把我的设计经验和方案分享给大家
回答于 2019-09-11 08:43:50
有一个非常棒的方法,就是用AD做按键扫描,可以做很多按键,电路也很简单,也不用扩展芯片,很好。电路如图所示
欢迎大家评论、转发、留言、点赞!
回答于 2019-09-11 08:43:50
我说一个做产品常用到的方法。用按键扫描驱动芯片。比如类似TM1638。不占用系统资源,可以挂很多按键,还能驱动数码管。整个系统分工明确,程序简单。还可以腾出MCU用于其它事件计算处理。
上一篇:各地都有什么特色美食?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |