[讨论] 很牛的键盘电路

呱呱   2008-12-26 09:06 楼主
朋友发了一张图叫我帮他看看,在他上面发现了一个很牛的键盘接口电路。
发上来分享一下。
16个键,只用了4个IO。

回复评论 (10)

Re: [分享] 很牛的键盘电路

终于看明白了,真的很牛,而且不是一般的牛---------是"犀牛"
点赞  2008-12-27 00:28

Re: [分享] 很牛的键盘电路

大家早上好啊……!·
点赞  2008-12-27 08:49
没看明白耶··
点赞  2010-6-12 15:04

应该用的方法叫钳位二极管

是一个4X4的键盘矩阵

只是不知道,算法中是不是用的查表法呢

 

补充一点:

算法上应该是分别让menu inc dec ok线置“1”

置“1”后

   如果还为“1”则

       去读其它三条线

   否则

       说明按下的是最下一排按键

分析键码如下:

menu置1        
  menu  inc  dec  ok
1  1  1  0  0
2  1  0  1  0
4  1  0  0  1
7  0  0  0  0
        
inc置1        
%  1  1  0  0
3  0  1  1  0
5  0  1  0  1
8  0  0  0  0
        
dec置1        
var  1  0  1  0
q  0  1  1  0
6  0  0  1  1
9  0  0  0  0
        
ok置1        
w  1  0  0  1
f  0  1  0  1
k  0  0  1  1
0  0  0  0  0

可以看到,同一个编码出现了两次,但不同的是置1的线不同,所以这也是那个两极管出现的原因。

 

小弟初次评论,还有不道之处,多多见谅。

[ 本帖最后由 20100614 于 2010-6-15 18:56 编辑 ]
点赞  2010-6-15 17:55
引用:         
ok置1        
w  1  0  0  1
f  0  1  0  1
k  0  0  1  1
0  0  0  0  0




可以看到,同一个编码出现了两次,但不同的是置1的线不同,所以这也是那个两极管出现的原因。

LS的思想是正确的,但把置0和1的弄反了。
所以那个值是无法读取的。

正确的方式应该是:
1、全部置1,然后读值得
MENU— INC———DEC———OK——对应数字
1————1————1————0————0
1————1————0————1————9
1————0————1————1————8
0————1————1————1————7

2、MENU    INC    DEC置1,OK置0,然后读取值得
MENU— INC———DEC———OK——对应数字
1————1————0————0————6
1————0————1————0————5
0————1————1————0————4

3、MENU    INC    OK置1,DEC置0,然后读取值得
MENU— INC———DEC———OK——对应数字
1————1————0————0————K
1————0————0————1————3
0————1————0————1————2

4、MENU    DEC    OK置1,INC置0,然后读取值得
MENU— INC———DEC———OK——对应数字
1————0 ————1————0————F
1————0————0————1———— Q
0————0————1————1————1

5、INC    DEC    OK置1,MENU置0,然后读取值得
MENU——INC—— DEC———OK———对应数字
0————1————1———— 0———— W
0————1————0————1———— Var
0————0————1————1————%

这样所有的值才都能读出。只能有一条线为0,其它为1。

再详细的我就不说了,大家琢磨一下为什么要这样子~~

[ 本帖最后由 huchuan987 于 2010-6-15 21:49 编辑 ]
点赞  2010-6-15 21:33
BZ的分析有一定的道理,但不知道有没注意到,除了最下一行四个健外(因为置位的原因)其它的健码你我的全是反码。
点赞  2010-6-16 09:41
引用: 除了最下一行四个健外(因为置位的原因)其它的健码你我的全是反码。

你说的没错,是这样的,你试想一下,
引用: ok置1        
w  1  0  0  1
f  0  1  0  1
k  0  0  1  1
0  0  0  0  0

如果OK为1,MENU为0,此时W按下去后会是什么结果??
MENU会把OK也拉低变成0。
如果MENU为三态的高阻而不是0那又是什么结果??
点赞  2010-6-16 12:44
路过。
一生只做一件事
点赞  2010-6-16 15:30

引用: 原帖由 huchuan987 于 2010-6-16 12:44 发表 你说的没错,是这样的,你试想一下, 如果OK为1,MENU为0,此时W按下去后会是什么结果?? MENU会把OK也拉低变成0。如果MENU为三态的高阻而不是0那又是什么结果??

 

这种状态我有考虑到的,所以在逻辑上先判断是否为零.否结果时才去读其它线状态

[ 本帖最后由 20100614 于 2010-6-17 09:13 编辑 ]
点赞  2010-6-17 09:11
嘻嘻
点赞  2012-8-3 23:31
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复