给出个人关于AD键盘的解决方案
1。硬件上,
1.1 显然按键过程中要考虑滤波消抖,一般是选用瓷片电容,电容容量一般为0.01uF~1uF
1.2 你不必须“用数字万用表先测采集到的电压,根据不同的测量值来分配不同按键的AD采集值”,你可以在硬件电路上增加一个校准电路,这样在不同的环境不同的.温度,只要对产品进行校准操作就可以了,显然,这增强了你的键盘的鲁棒性。
2。 软件上,时间延迟滤波是必须的,然后还需要考虑多次采样,举手表决以确定其所代表的键值的方法
模板如下
void delay();//延迟函数
char get_key_value(char ad_value);//这个函数通过对AD采样的结果进行处理,返回键值,其中ad_value是AD采样的值,最快的算法是建立一个查询表
char get_ad_value();//这个函数用于获得ad采样的值,注意不是键值
用着3个函数,我们可以调用get_key_value5次,假设有3次返回的键值是132,又一次返回的是128,有一次返回的是134,我们可以认为此次采样的键值为132,
当然你也可以调用get_ad_value()5次,获得平均值,然后调用et_key_value,求的键值。