一般运用的按键原理图如下图所示,由按键、上拉电阻和消抖滤波电容组成。按键断开时KeyIin1处电压被上拉到+5V,当按键闭合时把KeyIin1电压拉到0V,与按键并联的电容起到滤除按键按下与弹起时的高频信号。
当需求运用多个按键输入而且需求按键中止信号时可优先考虑运用74HC148(8-3编码器)构成的按键电路,这种电路能削减按键所占用的I/O口和供给一个中止触发信号。
74HC148可以作业在3.3V的电压下,能与一些3.3V的单片机或许处理器直接相连,74HC148的真值表如下图所示。
在正确装备使能信号后,0-7号管脚有恣意一个管脚呈现低电平,A0\A1\A2会输出对应的编码组合,一起GS拉低。GS可以用作中止信号,在中止服务函数中读取A0/A1/A2的值,查表不难得知是哪个按键被按下。
74HC148构成的按键电路图如下图所示,因为74HC148是具有优先级的编码器,所以未运用的管脚最好通过上拉电阻接到VCC。
在引脚资源严重,一起MCU又具有ADC的运用中,可优先考虑运用ADC按键,其电路组成如下图所示。
当某个按键按下时,按键对应的电阻与R36串联构成分压电路,C12作为滤波电容,滤除搅扰信号,进步ADC检测的安稳性。ADC收集R36上的电压,可以正常的运用查表或许核算的方法得到被按下按键的序号。
这种计划长处是只需求一个ADC管脚即可辨认多个按键的动作,还可以检测多个按键一起按下的动作,对ADC的精度也没有很高的要求;缺陷是不能供给中止触发信号。
在分压电阻取值时应当留意不同按键按下时对应的电压差不能小于ADC的检测精度,不然就没办法辨认到底是哪个按键按下。
别的,ADC检测到的值并不是准确安稳的,而是会在某个电压规模内颤动,在编写程序时可以运用判别电压规模的方法来防止误判。