一个经验,一个教训。大家来看看。
这几天调试AVR单片机电路板,发现一个奇怪的现象:一大半的板子上的矩阵键盘都不能正确识别,并且现象都是一样的:只能识别第一列按键。
于是开始检查原因:
1、首先排除焊接的原因:因为所有的现象都一样,如果是焊接的原因的话,不会出现这种情况。
2、电路应该也没问题,因为有一些板子上的矩阵键盘是没问题的,电路如果有问题的话所有的都会无法识别。
3、程序问题,初步认为是程序问题,但有一点让人疑惑,为什么有的板子可以识别,有的板子无法识别,不过排除了焊接和电路的原因后,只有程序可以怀疑了。那就修改程序吧,先固定输出一个行线为低电平,然后按下该行上的按键,仍然无法识别,真是怪了。看来不是程序的问题。
4、派出了以上的问题后,怎么办?只有拿起数字万用表来实际测量端口输出的电平值了。
按照修改后的程序,固定输出一个行线的电平为低,然后按下该行线上的按键,测量对应端口的电平变化情况,这次有了新发现:无论对应PA0端口的按键是否按下,该端口的电平值始终为2V,而其余的按键没有按下时,对应的端口电平为高,按下后变为低电平。
那么可以确定是PA0端口的电平被一直拉低了,这是什么原因?
5、拿出来电路图,仔细观察PA0口都连了那些东东,这一看不打紧,真的发现了问题,如下图,PA0连在电位器上,
这时候等于PA0端口的电平是电位器在VCC和GND之间的分压电阻的阻值,是不是因为PA0对GND上的分压电阻值过小,导致该端口一直被拉低?
试验一下,把可调电阻调节端对GND的电阻调大,哈哈,能够识别按键值了,问题找到了。
从这个经历,大家有什麽感想?
[
本帖最后由 tiankai001 于 2010-3-23 16:03 编辑 ]