复合键在4×4 矩阵式键盘中的应用方法

同时按下两个按键,是应该叫“组合键”,还是应该叫“复合键”?做而论道虽然很自大,但是也不得不承认搞不清楚这个。在网上查,两种叫法都存在。
相信大家都用过组合键,比较著名的用法就是:Ctrl+C、Ctrl+V;但是在单片机应用系统上,好像还没有人使用过组合键。

在P1口外接4×4的矩阵键盘,几乎成了51单片机系统的标准配置。
16个按键,一般来说可以满足大部分的应用需求,但是在某些比较复杂的系统中,16个按键就显得不足了,就像手机,就需要20几个按键。
使用独立的按键接口芯片,扩充大量按键,其实是个非常笨的方法。
做而论道对此进行了仔细深入的研究,发现在4×4的矩阵键盘上,也可以使用组合键的方法。
就是说,还是原来的4×4的矩阵键盘电路,利用其中一个按键充当Ctrl键,按下后不要松手,再按下其它15个键,也就可以像按下“Ctrl+C、Ctrl+V”那样,完成程序特定的操作。
其它的15个按键分别处于组合状态或非组合状态,共可以形成30个按键的使用范围,这就超过手机的按键数目了,足以满足任何需求。

在单片机系统中使用组合键,特别在是经典的4×4矩阵键盘中使用组合键,以前还从没有见过报道,做而论道在此提出的方法可以说是独创。

对于4×4矩阵键盘,读出按键的方法主要有行列扫描法,反转法、查表法等等,这些方法所用的程序,做而论道以前也发表过。
一般来说,上述的方法在得出一个按键的信息之后,就返回主程序了,所以它们不能检查出来同时按下两个键、三个键或更多键的情况。

做而论道采用了反转加查表的方法,编写了新的程序,可以查出同时按下多个键的信息。
那么在键盘中,哪怕再设置上Shift、Alt按键,做而论道也是可以把它们的组合键盘读出来的。
按键布局及读出组合键的函数如下:

复合键在4×4 矩阵式键盘中的应用方法 - 非著名博主 - 电子信息角落

如果有键按下,Keyscan函数可以返回0~30,如果没有按下,将返回255。
如果主函数收到的返回值小于31,应该延时几个毫秒后再次读出键盘;如果延时前后的两次返回值相同,即可确认按键是按下了,这就软件消抖。

这个读出组合键的函数已经经过了硬件测试,效果十分理想,完全可以和 PC 机上的组合键相媲美。

在 Proteus 中,也可以仿真,下图是个密码锁的仿真图,有8位数码显示,16个按键输入。

复合键在4×4 矩阵式键盘中的应用方法 - 非著名博主 - 电子信息角落

图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/11c04d08d8a2316c6a60fb88.html

通过按键可以输入密码。
输入数字0~9就不必说了,输入Ctrl+1~0,就是输入英文字符“ABCDEFGHIJ”。

反复按下“*”可以切换“左移位”和“右移位”的输入方式。
反复按下“Ctrl + *”可以切换“正常”显示和“--------”显示,保证密码不被别人窥视。
反复按下“#”可以切换“开门”和“关门”的状态。
反复按下“Ctrl + #”可以进行“修改密码”和“修改完成”的操作。

显示“CDEFGHIJ”符号的图片如下。

复合键在4×4 矩阵式键盘中的应用方法 - 非著名博主 - 电子信息角落

密码是0~9、A~J,共20个符号,用这些符号组成 8 位密码,总共是多少种?肯定不少,远远超过用0~9十个符号组成的密码。
呵呵,键盘电路中还有 F1F2F3、Ctrl+F1F2F3 六个按键的功能尚待开发。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值