标题: 单片机5个IO口做25个按键(很牛) [打印本页]

作者: daming    时间: 2014-12-30 00:58
标题: 单片机5个IO口做25个按键(很牛)



扫键流程:(设置某一IO口输出为“0”――称其为“扫某IO口”)
    1、扫描直接接地的5个按键K61-K65,例如,若K61按下,则IO1-IO5为01111,若K62按下,IO为10111,依次类推。(二极管的导通压降为零点几父,单片机认为逻辑0)
    2、若判断没有按键,接着对逐一对IO口进行扫键。例如,当对IO1扫描时(IO1置0),检测IO2-2O5的状态,若IO状态为1110,则为K14按下,若为0111,则为K11按下。但当对某一IO口扫键时,如果有对地的键按下,这时有可能会误判按键,因为对地键比其他键有更高的响应优先级。例如:扫IO1,IO1 输出“0”,恰好此时K62按下,IO2 检测到有按键,那就不能判断是K11 还是K62。。我们可以在程序上避免这种按键误判:若IO2 检测到有按键,那下一步就去判断是否有对地键按下,判断方法为:先将IO1-IO5置为11111,再去扫描IO1-IO5的状态,若IO状态为10111,则可判为K62,如果没有,即IO的状态为11111,那就可以正确地判断是K11了。
我们小结扫键个数S(N为IO口个数):
  S = (N-1)*N + N ――启用二极管
  S = (N-1)*N /2    ――省掉二极管
详细程序和仿真图详见:http://www.51hei.com/mcu/1413.html

作者: WADZB    时间: 2015-1-13 17:24
一个字,牛
作者: xyz1015231411    时间: 2015-1-28 13:07
不错,值得学习。
作者: 牵只羊    时间: 2015-5-28 17:58
四个键按两次 能够实现16个键的功能,这个是把用到对口的控制上了  不过很强
作者: digger63    时间: 2015-6-5 23:11
本坛大神,3个IO识别22个按键,四个IO能扫65个键。
http://www.51hei.com/bbs/dpj-19840-1.html
作者: lilijun5292    时间: 2015-6-6 09:40
make an effort
作者: YOU1988    时间: 2015-9-28 22:18
流弊啊,
作者: jjbboox    时间: 2015-10-12 16:57
你要是愿意可以用1个IO口来实现这25个按键的功能。
可以用ADC来实现。

作者: wcs1668    时间: 2019-8-30 16:54
矩阵键盘实用性不大,多按键可以考虑用芯片
作者: aide51    时间: 2020-2-29 17:42
这个看着很厉害的样子
作者: hhh402    时间: 2020-3-1 00:58
最牛是3个IO口控制PS2电脑键盘,有101个按键。
作者: 嘟嘟胖子    时间: 2020-6-23 15:32
牛人,值得学习。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1