当前位置: 网站首页 > 技术应用 > 单片机应用

单片机5个IO口做25个按键

图片关键词
 
扫键流程:(设置某一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.xinfuke.icoc.cc/nd.jsp?id=95#_np=2_302
点击次数:  【关闭
  • 壹零零单片机©版权所有 2008-2023 粤ICP备17151077号

Powered by  xinfuke  5.2.5 ©2008-2024  www.100mcu.com