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

2007-7-4 22:27 4284 5 7 分类: MCU/ 嵌入式

原帖出处: http://bbs.21ic.com/club/bbs/ShowAnnounce.asp?id=2589682


HOTPOVER 发表于 2007-7-4 19:40 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖


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


不许加外围器件


hotpower 发表于 2007-7-4 19:44 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

2楼: ID有点像~~~

hotpower 发表于 2007-7-4 21:57 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

14楼: 键盘知识---数学排列与组合中的"组合键"->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个.

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

祥见菜农的"键盘论"~~~


IO键盘编码技术



签名:


●█〓██▄▄▄▄▄▄ ●●●●●●→ ''''╭WWWW╮
▄▅██████▅▄▃▂ 灌水入坛传播非典 ( ●_●)
██████████████ '''',,,;,;,;'''/▇\''
◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲◤ 东戳西顶一片天/MMMM\
点击遨游水上蔬菜批发市场
2006224191826181.gif

打造菜农最倒塌的BLOG
PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

雁塔菜农 2009-8-10 18:09

http://hotpower.blog.dianyuan.com/article.php?arti_id=25453

用户224310 2009-8-4 00:08

要是矩阵键盘的组合键呢? 该如何扫描和设计呢?
相关推荐阅读
雁塔菜农 2012-04-05 17:51
2012年度新唐Cortex-M0助学开发套件有约束条件赠送申报贴
2012年度新唐Cortex-M0助学套件从4月起每月有约束条件发放16套。 申报人必须是21ic或 EDNC 会员 并具备1月的会龄。 申报时必须注明“遵守约束条件,缴纳250元订金,上...
雁塔菜农 2012-04-05 17:04
2012年度Cortex-M0助学园地推广框图
...
雁塔菜农 2012-04-01 17:59
2012年度Cortex-M0助学园地奖励计划细则
抢楼请点击:菜地公告:即日起创建《菜农Cortex-M0助学园地》(盖楼入口) 每月10号和25号的下午2:50进行2次抢楼,规则同去年12月的疯狂抢楼活动。 奖品由21IC、北航、广州迪圣...
雁塔菜农 2012-02-03 08:19
菜农谋略:搞定牛人宋俊德,对女牛人孙昌旭说:“记住,俺是雁塔菜农~~~ ”
http://www.baidu.com/s?wd=%B2%CB%C5%A9%D0%A6%CC%B8%A1%B6%D0%C2%C0%CB%C3%FB%C8%CB%D0%A7%D3%A6%A1%B7...
我要评论
2
5
关闭 站长推荐上一条 /3 下一条