描述:
如图所示,怎么根据A/D转换值判断是哪个键按下呢?
(10位A/D转换)
例程认为当A/D转换值<180+80时是S11按下;180+80<=A/D转换值<403+80时S12按下......以此类推;
我想知道这个值是怎么来的,然后为什么要加上80?
解决方案1:
没有按键时,ADC采样是VCC,S1按下之后,ADC采样值是VCC的1/(1+4.7),S2按下后,ADC采样值是VCC的(1+2)/(1+2+4.7),依次类推
解决方案2: 硬件仿真,把每个按键的AD值记下来
然后考虑下阈值就得到范围了
比如K1--->AD1
K2--->AD2
K3--->AD3
则如果AD在(AD1+AD2)/2 和(AD2+AD3)/2/2之间就时K2按下
但这样设计的话组合按键会比较麻烦
+80是考虑元器件参数可能的误差
解决方案4: 计算公式=Vin/Vref*2^n Vin输入电压,Vref参考电压,n为AD位数
STC单片机可以认为Vref=VCC,n为10位
s14:(10+4.7+2+1)/(10+4.7+2+1+4.7)*VCC/Vref*1024=17.7/22.7*1024=798
s13:(4.7+2+1)/(4.7+2+1+4.7)* VCC/Vref*1024=635
s12:(2+1)/(2+1+4.7) *VCC/Vref*1024=398
S11:(1)/(1+4.7) VCC/Vref*1024=179