打印

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

[复制链接]
5618|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个按键

使用特权

评论回复
5
HOTPOVER|  楼主 | 2007-7-4 19:51 | 只看该作者

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

使用特权

评论回复
6
lbx_00| | 2007-7-4 19:58 | 只看该作者

分两步

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

在4x4区,设置一个键位第二键盘选择键,这样,就行了

使用特权

评论回复
7
xwj| | 2007-7-4 20:02 | 只看该作者

笨...

还可以对地接按键啊...

使用特权

评论回复
8
wag| | 2007-7-4 20:06 | 只看该作者

可以考虑

使用特权

评论回复
9
程序匠人| | 2007-7-4 20:09 | 只看该作者

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

使用特权

评论回复
10
tjsheep| | 2007-7-4 20:17 | 只看该作者

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

如果对地可以,那对电源也可以,那样可以做4×4×3种=48个键了

使用特权

评论回复
11
HOTPOVER|  楼主 | 2007-7-4 20:33 | 只看该作者

ls不好意思

使用特权

评论回复
12
xwj| | 2007-7-4 20:35 | 只看该作者

tjsheep 就是少根筋

你自己仔细想想,到底能接多少个

使用特权

评论回复
13
NE5532| | 2007-7-4 21:18 | 只看该作者

接地线,I服了U

不过确实好办法,菜鸟记得修改软件啊。

使用特权

评论回复
14
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

使用特权

评论回复
15
HOTPOVER|  楼主 | 2007-7-4 22:00 | 只看该作者

五体投地!

使用特权

评论回复
16
hotpower| | 2007-7-4 22:04 | 只看该作者

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

使用特权

评论回复
17
pttangpt| | 2007-7-4 22:13 | 只看该作者

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

使用特权

评论回复
18
pttangpt| | 2007-7-4 22:17 | 只看该作者

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

使用特权

评论回复
19
hotpower| | 2007-7-4 22:17 | 只看该作者

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

使用特权

评论回复
20
gyt| | 2007-7-5 07:32 | 只看该作者

hotpower厉害!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

431

主题

2397

帖子

1

粉丝