|
|
经验谈:利用单片机A/D端口扩展键盘的方法笔者根据自己的实践,介绍一种利用富余的一路A/D转换,来实现接入4个按键开关的要求。 1 电路原理电路原理如图1所示。图1图1中电容C是抗干扰电容,AN0是芯片的A/D转换输入端,Va为待转换电压,VCC为电源电压,各电阻为精密金属膜电阻。2 工作原理由图1可知,在各种不同的工作状态下,Va是R0与其它电阻对VCC的分压值。通过简单的计算,在不考虑各种误差的影响时,Va的电压值及相应的A/D转换的数字值如表1所列。表1电压值和数字值对应表工作状态〖〗Va/V〖〗A/D转换值开关全部断开〖〗5〖〗FFHK0按下〖〗0〖〗00HK1按下,其它断开〖〗1.5〖〗4CHK2按下,其它断开〖〗2.5〖〗80HK3按下,其它断开〖〗3.33〖〗A9H由计算可知,工作状态不同,A/D转换的数字值也不同,这是我们用以识别不同按键被按下的依据。于是可依据图2所示的流程图,用软件编程来识别各按键。图2以上分析中所确定的值,是理想的理论值,实际应用时必须考虑各种误差对A/D转换结果的影响,因此实际转换值将有一定的误差。如果考虑由于电源电压VCC、R及A/D转换精度等因素将对A/D转换结果带来5%的误差时,对K1按下而其它键断开时对应的A/D转换数字值可能落在48H~4FH之间,以此作为判断K1键是否按下。其它键的情况类似,读者可自行分析确定,自行修改编程流程图。该电路除可识别各开关单独按下外,还可用来识别两个按键同时按下的情况。如系统设计需K2、K3同时按下表示某种控制动作,此时Va是由R2、R3并联后再与R0进行分压,可计算出此时Va=116V,其A/D转换值落在22H~2AH之间,即只要A/D转换结果在22H~2AH时便可以确定是K2、K3同时被按下。 3 注意事项(1) 启动A/D转换后,可用中断、延时或查询等方法来读取A/D转换结果。(2) 为提高按键识别的可靠性,不宜在一路A/D转换端子上接入过多的按键开关。(3) 在选择分压电阻时,应避免某几个按键同时按下时其A/D转换结果落入某一按键单独按下时的转换范围内,以免造成误判。(4) 该电路只能接入按键开关或微动开关,不能接入按下后状态锁定的开关。 (山东工程学院常波)
|
|