单片机按键连接方法总结(五种按键扩展方案详细介绍)单片机在各种领域运用相当广泛,而作为人机交流的按键设计也有很多种
不同的设计方法,有着不同的优缺点
而又由于单片机I/O资源有限,如何用最少的I/O口扩展更多的按键是我所研究的问题
接下来我给大家展示几种自己觉得比较好的按键扩展方案,大家可以在以后的单片机电路设计中灵活运用
1)、第一种是最为常见的,也就是一个I/O口对应一个按钮开关
这种方案是一对一的,一个I/O口对应一个按键
这里P00到P04,都外接了一个上拉电阻,在没有开关按下的时候,是高电平,一旦有按键按下,就被拉成低电平
这种方案优点是电路简单可靠,程序设计也很简单
缺点是占用I/O资源多
如果单片机资源够多,不紧缺,推荐使用这种方案
2)、第二种方案也比较常见,但是比第一种的资源利用率要高,硬件电路也不复杂
这是一种矩阵式键盘,用8个I/O控制了16个按钮开关,优点显而易见
当然这种电路的程序设计相对也还是很简单的
由P00到P03循环输出低电平,然后检测P04到P07的状态
比方说这里P00到P03口输出1000,然后检测P04到P07,如果P04为1则说明按下的键为s1,如果P05为1则说明按下的是s2等等
为了电路的可靠,也可以和第一种方案一样加上上拉电阻
3)、第三种是我自己搞的一种方案,可以使用4个I/O控制8个按键,电路多了一些二极管,稍微复杂了一点
这个电路的原理很简单,就是利用二极管的单向导电性
也是和上面的方案一样,程序需要采用轮训的方法
比方说,先置P00到P03都为低电平,然后把P00置为高电平,接着查询P02和P03的状态,如果P02为高则说明按下的是s5,若P03为高则说明按下的是s6,然后再让P00为低,P01为高,同样检测P02和P03的状态
接下来分别让P02和P03为高,其他为低,分别检测P00和P01的状态,然后再做判断