四种单片机按键设计方案与改进,拿走不谢!
在单片机系统里,按键是常见的输入设备。本文将介绍四种按键硬件设计上的方案和一些软件设计方面的技巧。
方案一:单个按键
图1 方案一
方案二:矩阵键盘
图2 方案二
方案三:外部中断
图3 方案三
方案四:利用ADC
图4 方案四
以上四种设计分别各有优点和不足。
第一种设计是最简单、基础的做法,对于单片机初学者很容易理解和使用,但缺点是需要在主循环中不断检测按键是否按下,并且需要做消抖处理。若主循环中某个函数任务占用时间较长,则按键会有不同程度的“失灵”。
第二种设计的优点是能够在GPIO数量有限的情况下,扩展尽可能多的按键。但缺点同上,需要不停检测按键是否按下。
第三种设计的效率Z高,不需要循环检测按键是否按下,但缺点是需要单片机有足够的外部中断接口供使用。
第四种设计的优点是只需要单片机有一个ADC接口、一根线,就能对多个按键进行识别,缺点是按键内部一旦接触不良,则可能导致按键串位,并且按键产生的抖动有可能会造成识别错误。
在以上常见按键设计的基础上,分享一下笔者学习和工作中总结的按键方案。
改进一:
图5 改进一
改进二:
图6 改进二
改进三:
改进四:
如果都设置了以上的改进,仍要注意以下两点:
定时器的定时时间不可过长也不可过短。过长容易检测不到按下,过短会占用大量时间资源。
中断服务程序需简单明了。只做检测用,通过全局变量传递,在主循环内完成按键响应,尽量不要在中断服务函数内占用太多时间。
*本文系网络转载,版权归原作者所有,如有侵权请联系删除
点赞 评论 收藏 1