快捷搜索:

单片机系统按键硬件检测的几种方法介绍

单片机系统里,按键是常见的输入设备,在本文将先容几种按键硬件、软件设计方面的技术。一样平常的在按键的设计上,一样平常有四种规划:一是 GPIO 口直接检测单个按键,如图 1.1 所示;二是按键较多则应用矩阵键盘,如图 1.2 所示;三是将按键接到外部中断引脚上,使用按键按下孕育发生的边沿旌旗灯号进行按键检测,如图 1.3 所示;四是使用单片机的 ADC,在不合的按键按下后,能够使得 ADC 接口上的电压不合,根据电压的不合,则可以识别按键,如图 1.4 所示。

图 1.1 规整洁

图 1.2 规划二

图 1.3 规划三

图 1.4 规划四

在以上四种设计上,各有优点和不够。

第一种是最简单和最根基的,对付单片机初学者很轻易理解和应用,然则毛病是,必要在主轮回中赓续检测按键是否按下,并且必要做消抖处置惩罚。若主轮回中某个函数义务占用光阴较长,则按键会有不合程度的“掉灵”。

第二种,优点是能够在有限的 GPIO 环境下,扩展尽可能多的按键。但毛病同上,必要不绝检测按键是否按下。

第三种要领是效率最高,不必要轮回检测按键是否按下,然则毛病是,必要单片机有足够的外部中断接口以供应用;第四种的优点是,只必要单片机的一个 ADC 接口,一根线,就能对多个按键进行识别,毛病是按键一旦内部打仗不良,则可能按键串位,且按键孕育发生的哆嗦,会造成必然的识别差错。

在以上的三种常见按键设计的根基上,现在分享我进修和事情中总结的按键规划。

改进一:在原规整洁的根基上,加上与门电路,使得任何一个按键按下,都能孕育发生中断,然后在中断里面识别是哪个按键被按下。是以不必要轮回扫描,大年夜大年夜前进了效率。规划如图 1.5 所示。只必要每个按键对应地增添一个二极管,使用二极管的线与特点,可以实现按下任何按键,都能孕育发生中断旌旗灯号,然则按键之间互不影响。二极管选用通俗整流二极管即可,本人亲测可行。

图 1.5 改进一

图 1.6 改进二

改进二:在原有的 ADC 按键的根基上,也可用增添二极管的要领,实现按键中断,并在中断办事法度榜样里进行 AD 转换,从而识别按键。电路如图 1.6 所示。

改进三:由于按键弗成避免的有哆嗦,是以按键消抖可以经由过程硬件消痘和软件消抖。现在分享一个十分简单且有效的硬件消痘措施:给按键并联一个 104 阁下的电容。软件上基础不用场置惩罚即可避免哆嗦。

改进四:在按键扫描检测的规划下,假如主轮回中有某个函数占用光阴较长,则按键会发生或长或短的“掉灵”,现分享我的一个办理规划。将按键扫描放到准时器中断里面,这样就可周期性地检测按键按下环境,不受主轮回的影响。并且,能解析出按键的不合状态,即按下、按住、弹起、为按下这四种状态,用以实现更富厚的功能。

但需留意两点,一是准时器的准韶光阴,弗成过长也弗成过短,过长轻易检测不到按下,过短会占用大年夜量光阴资本。二是中断办事法度榜样需简单清楚明了,只做检测用,经由过程全局变量通报,在主轮回内完成按键相应,中断办事函数内只管即便不要占用太多光阴。

滥觞:互联网

您可能还会对下面的文章感兴趣: