按键侦测电路
图1:单按键侦测回路
1. 图1:第一种是最简单和最基础的,对于单片机初学者很容易理解和使用,但是缺点是,需要在主循环中不断检测按键是否按下,并且需要做消抖处理。若主循环中某个函数任务占用时间较长,则按键会有不同程度的“失灵”。
按键输入的上拉电阻是可选项,一般在长配线插接或在高湿等情况下最好选用,否则用MCU内置上拉电阻;因为硬件 电路没有RC防抖动设计所以软件要防抖动处理;输入MCU串联的电阻是为了防止基板焊锡后该按键输入脚和电源或输出脚短 接的情况下一旦按键按下那么将等同把电源或高电平短接到低,造成较大的电流回路,起到限流保护作用;
2.目前常用的插件按键或称轻触开关按外形尺寸描述分为6*6,3*6,4.5*4.5等,同一种6*6的还按高度区分,比如6*6*8等; 常用的贴片按键按外形尺寸描述分为6*6和4.5*4.5等;
图二:多按键侦测
3:图二第二种方式优点在只需要单片机的一个ADC接口,一根线,就能对多个按键进行识别,缺点是按键一旦内部接触不良,则可能按键串位,且按键产生的抖动,会造成一定的识别错误。
:假设9位A/D,5V MCU:1LSB=5V/512=0.00976V;
1)V1输入电压=0V~0.5V;程序设置A/D刻度范围=0~51个刻度;
2)V2标准值=2/(2+10)*512=85个刻度,零件最大误差2%;
V2程序设置A/D刻度范围=83~87,若MCU误差3LSB=80~90;
3)V3标准值=4/(4+10)*512=146个刻度,零件最大误差2%;
V3程序设置A/D刻度范围=143~149,若MCU误差3LSB=140~152;
4)V4标准值=8.7/(8.7+10)*512=238个刻度,零件最大误差2%;
V4程序设置A/D刻度范围=233~243,若MCU误差3LSB=230~246;
5)V5标准值=13.4/(13.4+10)*512=293个刻度,零件最大误差2%;
V5程序设置A/D刻度范围=287~299,若MCU误差3LSB=284~302;
6)V6标准值=23.4/(23.4+10)*512=359个刻度,零件最大误差2%;
V6程序设置A/D刻度范围=352~366,若MCU误差3LSB=349~369;
图二假设12位A/D,5V MCU:1LSB=5V/512=0.00122V;
1)V1输入电压=0V~0.5V;程序设置A/D刻度范围=0~410个刻度;
2)V2标准值=2/(2+10)*4096=683个刻度,零件最大误差2%;
V2程序设置A/D刻度范围=669~697,若MCU误差3LSB=666~700;
3)V3标准值=4/(4+10)*4096=1170个刻度,零件最大误差2%;
V3程序设置A/D刻度范围=1146~1193,若MCU误差3LSB=1143~1196;
4)V4标准值=8.7/(8.7+10)*4096=1906个刻度,零件最大误差2%;
V4程序设置A/D刻度范围=1867~1944,若MCU误差3LSB=1864~1947;
5)V5标准值=13.4/(13.4+10)*4096=2346个刻度,零件最大误差2%;
V5程序设置A/D刻度范围=2299~2393,若MCU误差3LSB=2296~2396;
6)V6标准值=23.4/(23.4+10)*4096=2870个刻度,零件最大误差2%;
V6程序设置A/D刻度范围=2812~2927,若MCU误差3LSB=2809~2930;
图三:外部中断侦测
第三种方式是效率最高,不需要循环检测按键是否按下,但是缺点是,需要单片机有足够的外部中断接口以供使用。再次结合第二种方案和第一种方案做了一个结合。如下图。