单片机在各种范畴运用适当广泛,而作为人机沟通的按键规划也有很多种。不同的规划办法,有着不同的优缺陷。而又因为单片机I/O资源有限,如何用最少的I/O口扩展更多的按键是我所研讨的问题。接下来我给咱们展现几种自己觉得比较好的按键扩展计划,咱们能够在今后的单片机电路规划中灵活运用。
1)、第一种是最为常见的,也便是一个I/O口对应一个按钮开关。
这种计划是1对1的,一个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的状况,然后再做判别。这种计划的程序其实也不难。
4)这是我在一本书上看到的,感觉规划的十分奇妙,相同它也用到了二极管,不过比我的上一种计划的I/O使用率更高,他用4个I/O口操控了12个按键。我相信你了解了之后也会惊讶的。
首要,咱们让P00到P03全输出高电平。假如这个时分从P00到P03的恣意一个端口检测到低电平,很简单知道是按下了那个键,肯定是s13到s16的其间一个。假如没有检测到信号,就进行下一次的检测,让P01到P03为高电平,P00为低电平,然后检测P01到P03的状况。假如P01为低,则按下的是s1,;P02为低,则按下的是s2;P03为低,则按下的是s3。