请教,只有8个I/O口,怎样供20个按键扫描使用?

[复制链接]
7337|37
 楼主| HOTPOVER 发表于 2007-7-4 19:40 | 显示全部楼层 |阅读模式
hotpower 发表于 2007-7-4 19:44 | 显示全部楼层

ID有点像~~~

 楼主| HOTPOVER 发表于 2007-7-4 19:45 | 显示全部楼层

爸爸!

tjsheep 发表于 2007-7-4 19:45 | 显示全部楼层

用3根线做3-8译码,然后用剩下的5根,做5×8=40个按键

 楼主| HOTPOVER 发表于 2007-7-4 19:51 | 显示全部楼层

谢谢LS,但不许加外围器件

lbx_00 发表于 2007-7-4 19:58 | 显示全部楼层

分两步

做成4x4的,然后在任意一行再加4个键,例如说,加在第一行,列线共用,

在4x4区,设置一个键位第二键盘选择键,这样,就行了
xwj 发表于 2007-7-4 20:02 | 显示全部楼层

笨...

还可以对地接按键啊...
wag 发表于 2007-7-4 20:06 | 显示全部楼层

可以考虑

程序匠人 发表于 2007-7-4 20:09 | 显示全部楼层

直接做4*5就行了,口不够,地线凑

tjsheep 发表于 2007-7-4 20:17 | 显示全部楼层

我说完楼主就改题了,郁闷

如果对地可以,那对电源也可以,那样可以做4×4×3种=48个键了
 楼主| HOTPOVER 发表于 2007-7-4 20:33 | 显示全部楼层

ls不好意思

xwj 发表于 2007-7-4 20:35 | 显示全部楼层

tjsheep 就是少根筋

你自己仔细想想,到底能接多少个
NE5532 发表于 2007-7-4 21:18 | 显示全部楼层

接地线,I服了U

不过确实好办法,菜鸟记得修改软件啊。
hotpower 发表于 2007-7-4 21:57 | 显示全部楼层

键盘知识---数学排列与组合中的"组合键"->Cm2

Cmn=Am2/Pn=M!/(n!(m-n)!)=Cm(m-n)
由于是键盘操作,故取n=2,m>=2

m=2时. C22=2!/2!/0!=1  即最小组合键需要2个IO.即2线1键
       设2个IO为Pin0,Pin1.
       组合扫描为Key1=Pin0,Pin1

m=3时. C32=3!/2!/1!=3  即3线3键.
       设3个IO为Pin0,Pin1,Pin2.
       组合扫描为Key1=Pin0,Pin1
                 Key2=Pin0,Pin2
                 Key3=Pin1,Pin2

m=4时. C42=4!/2!/2!=4*3/2=6  即4线6键.
       设4个IO为Pin0,Pin1,Pin2,Pin3.
       组合扫描为Key1=Pin0,Pin1
                 Key2=Pin0,Pin2
                 Key3=Pin0,Pin3
                 Key4=Pin1,Pin2
                 Key5=Pin1,Pin3
                 Key6=Pin2,Pin3

m=5时. C52=5!/2!/3!=5*4*3/6=10  即5线10键.
       设5个IO为Pin0,Pin1,Pin2,Pin3,Pin4.
       组合扫描为Key1=Pin0,Pin1
                 Key2=Pin0,Pin2
                 Key3=Pin0,Pin3
                 Key4=Pin0,Pin4
                 Key5=Pin1,Pin2
                 Key6=Pin1,Pin3
                 Key7=Pin1,Pin4
                 Key8=Pin2,Pin3
                 Key9=Pin2,Pin4
                 Key10=Pin3,Pin4

m=6时. C62=6!/2!/4!=6*5*4!/2/4!=15  即6线15键.
       设6个IO为Pin0,Pin1,Pin2,Pin3,Pin4,Pin5.
       组合扫描为Key1=Pin0,Pin1
                 Key2=Pin0,Pin2
                 Key3=Pin0,Pin3
                 Key4=Pin0,Pin4
                 Key5=Pin0,Pin5
                 Key6=Pin1,Pin2
                 Key7=Pin1,Pin3
                 Key8=Pin1,Pin4
                 Key9=Pin1,Pin5
                 Key10=Pin2,Pin3
                 Key11=Pin2,Pin4
                 Key12=Pin2,Pin5
                 Key13=Pin3,Pin4
                 Key14=Pin3,Pin5
                 Key15=Pin4,Pin5

m=7时. C72=7!/2!/5!=7*6*5!/2/5!=21  即7线21键.
       设7个IO为Pin0,Pin1,Pin2,Pin3,Pin4,Pin5,Pin6.
       组合扫描为Key1=Pin0,Pin1
                 Key2=Pin0,Pin2
                 Key3=Pin0,Pin3
                 Key4=Pin0,Pin4
                 Key5=Pin0,Pin5
                 Key6=Pin0,Pin6
                 Key7=Pin1,Pin2
                 Key8=Pin1,Pin3
                 Key9=Pin1,Pin4
                 Key10=Pin1,Pin5
                 Key11=Pin1,Pin6
                 Key12=Pin2,Pin3
                 Key13=Pin2,Pin4
                 Key14=Pin2,Pin5
                 Key15=Pin2,Pin6
                 Key16=Pin3,Pin4
                 Key17=Pin3,Pin5
                 Key18=Pin3,Pin6
                 Key19=Pin4,Pin5
                 Key20=Pin4,Pin6
                 Key21=Pin5,Pin6

m=8时. C82=8!/2!/6!=8*7*6!/2/6!=28  即8线28键.
       设8个IO为Pin0,Pin1,Pin2,Pin3,Pin4,Pin5,Pin6,Pin7.
       组合扫描为Key1=Pin0,Pin1
                 Key2=Pin0,Pin2
                 Key3=Pin0,Pin3
                 Key4=Pin0,Pin4
                 Key5=Pin0,Pin5
                 Key6=Pin0,Pin6
                 Key7=Pin0,Pin7
                 Key8=Pin1,Pin2
                 Key9=Pin1,Pin3
                 Key10=Pin1,Pin4
                 Key11=Pin1,Pin5
                 Key12=Pin1,Pin6
                 Key13=Pin1,Pin7
                 Key14=Pin2,Pin3
                 Key15=Pin2,Pin4
                 Key16=Pin2,Pin5
                 Key17=Pin2,Pin6
                 Key18=Pin2,Pin7
                 Key19=Pin3,Pin4
                 Key20=Pin3,Pin5
                 Key21=Pin3,Pin6
                 Key22=Pin3,Pin7
                 Key23=Pin4,Pin5
                 Key24=Pin4,Pin6
                 Key25=Pin4,Pin7
                 Key26=Pin5,Pin6
                 Key27=Pin5,Pin7
                 Key28=Pin6,Pin7

如果加"独占键"即8个IO的接地键,那么8个IO不加如何器件的键盘个数为28+8=36个.

"组合键"的程序很好编写,可能比行扫描更好编~~~不要被它吓到,问问数学家~~~

祥见菜农的"键盘论"~~~
相关链接:http://www.**/blog/hotpower/11888/message.aspx
 楼主| HOTPOVER 发表于 2007-7-4 22:00 | 显示全部楼层

五体投地!

hotpower 发表于 2007-7-4 22:04 | 显示全部楼层

我倒!!!李逵遇到李鬼了~~~否则俺真不想灌水~~~

pttangpt 发表于 2007-7-4 22:13 | 显示全部楼层

不用电源线跟地线,就8个口,127个键都行,编码的方式

pttangpt 发表于 2007-7-4 22:17 | 显示全部楼层

但是这样就不能使用组合键功能了

hotpower 发表于 2007-7-4 22:17 | 显示全部楼层

不准组合不准加东西,估计36是极限~~~

gyt 发表于 2007-7-5 07:32 | 显示全部楼层

hotpower厉害!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

431

主题

2397

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部