利用二极管的单向导通性设计多按键扫描,但是占用极少IO口

今天把手头的罗技手持摇杆拆了,发现里面按键扫描有二极管存在,就想不通了,于是就上网搜索,找到一个关于利用二极管的单向导通性设计多按键扫描,哈哈,学到一招:


我们分析一下图四(未画出,课本上最普通的扫描法):当IO1输出“0”时,按下K11或K11’键都能被IO2检测到,但IO2检测却无法区别K11和K11’键!同理,不管扫哪个IO口,都有两个对称的键不能区分。我们假想,如果能把对称键区分开来,我们就能正常地去判断按键。我们在思考:有没有单向导通性器件?有!见图五!

  绝妙的IO口扫键应用电路设计盘点 —电路图天天读(253)

图五

  很巧妙的思路!利用二极管的单向导通性,区别两个对称键。扫键思路:对逐个IO口扫键,其他四个IO口可以分别检测其所在的四个按键。这样,就不会有分析图五时提到的注意点。

  够酷吧!等等,大家先别满足现状,我们再看一下图六,是不是有点启发?对,我们再分析一下“用5个IO口对地衍生的5个键”。看图六:

  绝妙的IO口扫键应用电路设计盘点 —电路图天天读(253)

图六

  25个键!5个IO口扫出25个键!先别激动,我们再分析一下它的可行性,分析通得过才能真正使用。假设扫键流程:先扫对地的5个键,再如图五扫键。先扫对地5个键,判断没有按键,接着对逐一对IO口进行扫键。但当对某一IO口扫键时,如果有对地的键按下,这时有可能会误判按键,因为对地键比其他键有更高的响应优先级。例如:扫IO1,IO1输出“0”,恰好此时K62按下,IO2检测到有按键,那就不能判断是K11还是K62。我们可以在程序上避免这种按键误判:若IO2检测到有按键,那下一步就去判断是否有对地键按下,如果没有,那就可以正确地判断是K11了。

  编辑点评:我们小结扫键个数S: S = (N-1)*N + N ――启用二极管; S = (N-1)*N /2 + N ――省掉二极管


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值