找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16468|回复: 11
打印 上一主题 下一主题
收起左侧

单片机5个IO口做25个按键(很牛)

  [复制链接]
跳转到指定楼层
楼主
ID:71259 发表于 2014-12-30 00:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



扫键流程:(设置某一IO口输出为“0”――称其为“扫某IO口”)
    1、扫描直接接地的5个按键K61-K65,例如,若K61按下,则IO1-IO5为01111,若K62按下,IO为10111,依次类推。(二极管的导通压降为零点几父,单片机认为逻辑0)
    2、若判断没有按键,接着对逐一对IO口进行扫键。例如,当对IO1扫描时(IO1置0),检测IO2-2O5的状态,若IO状态为1110,则为K14按下,若为0111,则为K11按下。但当对某一IO口扫键时,如果有对地的键按下,这时有可能会误判按键,因为对地键比其他键有更高的响应优先级。例如:扫IO1,IO1 输出“0”,恰好此时K62按下,IO2 检测到有按键,那就不能判断是K11 还是K62。。我们可以在程序上避免这种按键误判:若IO2 检测到有按键,那下一步就去判断是否有对地键按下,判断方法为:先将IO1-IO5置为11111,再去扫描IO1-IO5的状态,若IO状态为10111,则可判为K62,如果没有,即IO的状态为11111,那就可以正确地判断是K11了。
我们小结扫键个数S(N为IO口个数):
  S = (N-1)*N + N ――启用二极管
  S = (N-1)*N /2    ――省掉二极管
详细程序和仿真图详见:http://www.51hei.com/mcu/1413.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏9 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:72128 发表于 2015-1-13 17:24 | 只看该作者
一个字,牛
回复

使用道具 举报

板凳
ID:72901 发表于 2015-1-28 13:07 | 只看该作者
不错,值得学习。
回复

使用道具 举报

地板
ID:78841 发表于 2015-5-28 17:58 | 只看该作者
四个键按两次 能够实现16个键的功能,这个是把用到对口的控制上了  不过很强
回复

使用道具 举报

5#
ID:78714 发表于 2015-6-5 23:11 | 只看该作者
本坛大神,3个IO识别22个按键,四个IO能扫65个键。
http://www.51hei.com/bbs/dpj-19840-1.html
回复

使用道具 举报

6#
ID:82175 发表于 2015-6-6 09:40 | 只看该作者
make an effort
回复

使用道具 举报

7#
ID:84705 发表于 2015-9-28 22:18 | 只看该作者
流弊啊,
回复

使用道具 举报

8#
ID:62033 发表于 2015-10-12 16:57 | 只看该作者
你要是愿意可以用1个IO口来实现这25个按键的功能。
可以用ADC来实现。
回复

使用道具 举报

9#
ID:71883 发表于 2019-8-30 16:54 | 只看该作者
矩阵键盘实用性不大,多按键可以考虑用芯片
回复

使用道具 举报

10#
ID:372579 发表于 2020-2-29 17:42 | 只看该作者
这个看着很厉害的样子
回复

使用道具 举报

11#
ID:491577 发表于 2020-3-1 00:58 | 只看该作者
最牛是3个IO口控制PS2电脑键盘,有101个按键。
回复

使用道具 举报

12#
ID:580104 发表于 2020-6-23 15:32 | 只看该作者
牛人,值得学习。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表