[电路设计]按键方案

[电路设计]按键方案

本文记录和介绍几种按键解决方案,包括普通按键、按键编码电路、ADC按键的工作原理。


1、普通按键

一般使用的按键原理图如下图所示,由按键、上拉电阻和消抖滤波电容组成。按键断开时 K e y I i n 1 KeyIin1 处电压被上拉到+5V,当按键闭合时把 K e y I i n 1 KeyIin1 电压拉到0V,与按键并联的电容起到滤除按键按下与弹起时的高频信号。
按键消抖电路

2、74HC148编码器按键

当需要使用多个按键输入并且需要按键中断信号时可以考虑使用74HC148(8-3编码器)构成的按键电路,这种电路可以减少按键所占用的I/O口和提供一个中断触发信号。
74HC148可以工作在3.3V的电压下,能与一些3.3V的单片机或者处理器直接相连,74HC148的真值表如下图所示。
74ls148真值表
在正确配置使能信号后,0-7号管脚有任意一个管脚出现低电平,A0\A1\A2会输出对应的编码组合,同时GS拉低。GS可以用作中断信号,在中断服务函数中读取A0/A1/A2的值,查表可以知道是哪个按键被按下。
74HC148构成的按键电路图如下图所示,由于74HC148是具有优先级的编码器,所以未使用的管脚最好通过上拉电阻接到VCC。
编码按键

3、ADC按键

在引脚资源紧张,同时MCU又具备ADC的应用中,可以考虑使用ADC按键,其电路组成如下图所示。
ADC按键 当某个按键按下时,按键对应的电阻与R36串联构成分压电路,C12作为滤波电容,滤除干扰信号,提高ADC检测的稳定性。ADC采集R36上的电压,可以使用查表或者计算的方式得到被按下按键的序号。这种方案优点是只需要一个ADC管脚即可识别多个按键的动作,还可以检测多个按键同时按下的动作,对ADC的精度也没有很高的要求;缺点是不能提供中断触发信号。在分压电阻取值时应当注意不同按键按下时对应的电压差不能小于ADC的检测精度,否则无法识别到底是哪个按键按下。 另外,ADC检测到的值并不是精确稳定的,而是会在某个电压范围内抖动,在编写程序时可以采用判断电压范围的方式来避免误判。