在学习单片机的时候有两个实验是必练的,一个是I/O口独立按键实验,另一个是矩阵键盘实验。两个实验的按键实现方法都是通过MCU的I/O口的高低电平检测实现的,优点是简单易实现,缺点是占用的I/O资源多,抗干扰能力差。在工程应用中,常用的按键实现方法都为ADC检测按键电压法,MCU主芯片内部本身都自带ADC模块,设计电路简单,功能稳定。
但在设计时常常要计算好每个按键的电压值范围,提前写入软件程式当中,项目做多了这个事情就成了体力活,累呀。为了方便后面计算每个按键的电压值范围,特意用 excel画了个小小的表格按键值计算.rar,只需把回路中的电阻电压值填入就自动取得最小最大电压范围。
KEY BOARD电阻值计算器为根据下面这份常用的按键板电路图得来的。
图中R4102,R4103不是分压电阻,只是串在电路上面做ESD防护用的.对AD检测不会有影响.所以在计算时可以不考虑。当某个按键按下去时,该回路接通,key1/key2得到产生一个分电压值,MCU中ADC模块转化为软体程式中数值做出设定动作。从Y=U*Rx/(Rx+R)公式可以看出只有上拉电阻R和上拉电压U范围为可知,分压电阻Rx只有从各回路读出。而电阻电压因为材料选择的关系都会有不同的偏差,计算时也要将其充分考虑进去。
上拉电压U从图中读出为3.3V,从LDO U1的datasheet中得到output voltage min 值和max值,电阻值裕度为1%,为多抓裕度取为10%。这样变量值范围都有了,只要套用公式就可以算出电压值最大最小范围。
2018年10月24日 下午10:00 沙发
上限40%,下限60%: 不留间隙,边界点取靠近低电压端40%距离处;
#define ADC_KEY_1_L0 0 //0
#define ADC_KEY_1_L1 38//0.492
#define ADC_KEY_1_L2 65//0.841
#define ADC_KEY_1_L3 94//1.216
#define ADC_KEY_1_L4 147//1.90
#define ADC_KEY_1_L5 193//2.49
#define ADC_KEY_1_L6 222//2.87
#define ADC_KEY_1_L7 240//3.105