| 近日发现对于按键很多人还停留在单片机教材的水平。不知道如何实现N个按键的硬件处理。
本人有一种实现方法可以用来借鉴一下,个人认为还不错。
利用串行芯片74HC595配合来实现N个按键的硬件处理。
大家都知道,74HC595只需要3条IO就可以实现其控制。
首先讨论一片74HC595的情况:
我们将这三条IO来做行扫描线,译码后可以得到8条行扫描线。这里可以相当一个3-8译码器,但是比3-8译码器所需要的IO资源要少。列扫描线直接用IO做。
单 IO----|-|-|-|-|-|-|-|-----
片 IO----|-|-|-|-|-|-|-|-----
机 IO----|-|-|-|-|-|-|-|-----
74HC595的IO
由于74HC595的级联不需要新的IO支持,所以,我们在上面示意图中可以在后面添加更多的74HC595来实现更多的按键。
单 IO----|-|-|-|-|-|-|-|---------|-|-|-|-|-|-|-|-----
片 IO----|-|-|-|-|-|-|-|---------|-|-|-|-|-|-|-|-----
机 IO----|-|-|-|-|-|-|-|---------|-|-|-|-|-|-|-|-----
74HC595的IO 74HC595的IO……
如果IO资源够多,我们也可以多使用几条单片机的IO做列扫描线,比如用8条单片机IO做列扫描线,可以实现8*8键盘,在单片机IO资源不够的时候,行扩展就开始发挥作用了。比如你只有三条单片机IO资源,要实现48个按键就只需要2片74HC595配合就可以了。
该方案个人觉得情况如下:
1、对于按键响应时间要求不是很苛刻的情况下使用。
2、按键需求比较多,但是又没有足够的IO资源
3、单片机速度够快,74HC595本身移位速度很快,用51移位基本不用考虑速度问题,单片机速度够快才能够比较方便的扫描到后面的键盘而不丢键。 |