我设计了一个5*5的矩阵键盘,中断方式扫描,按下一个键后,单片机将该键的码值发送到pc机,通过485总线传送。程序烧进后,结果第一行的5个键(码值应该为01 02 03 04 05)发送到pc机的码值经常为15 16 17 18 19,比如我不断的按下01键,在pc机就可能接收到类似15 15 01 15 15 01的码值,不断地按下02键,pc机可能接受到类似16 16 02 02 16的码值,而第二行到第四行共20个按键的键值在pc机端接收到的都是正确值。不知道这是什么原因
先把问题分开来查,即先确定是通讯问题还是按键扫描问题?比如先不去扫描按键,直接把你可能产生的键码值全部循环送给电脑,看看是否正确?然后再去查按键扫描程序!
谢谢两位。我现在只是让单片机往PC机发,并没有接收部分。现在发现除了第一列按键外,剩下的全部都扫描出正常的键值,而第一列扫描的值跟第五列扫描的值有可能相同。
即第一列的键值正确应该为01 02 03 04,第五列的键值正确为15 16 17 18,结果发现第一列也会扫描出 15 16 17 18这样的键值
我原来扫描列的顺序是p00 p01 p02 p03 p04,结果p00列的值01 02 03 04 05 ,也可能是15 16 17 18 19 ,而p04列的值是15 16 17 18 19,我后来把扫描的顺序改称p04 p00 p01 p02 p03 ,结果扫描结果正确。仔细看了程序,感觉逻辑上没什么问题。不知则么回事,难道扫描顺序会影响扫描的正确性吗
还有个问题,就是单片机每次复位或加电时pc的串口精灵经常会受到0x00,不知道这事什么原因
精通施奈德PLC,要有实际经验,有一定的自主支配时间。待遇面谈。联系方式:027-87792427;E@mail:bb0912@163.com