求教:串口通信怎会接收到两种按键扫描码值

ford5404   2007-1-10 21:12 楼主
我设计了一个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机端接收到的都是正确值。不知道这是什么原因

回复评论 (9)

先把问题分开来查,即先确定是通讯问题还是按键扫描问题?比如先不去扫描按键,直接把你可能产生的键码值全部循环送给电脑,看看是否正确?然后再去查按键扫描程序!
点赞  2007-1-11 08:25
485通信
注意延时
它是半双工的
点赞  2007-1-11 09:23
谢谢两位。我现在只是让单片机往PC机发,并没有接收部分。现在发现除了第一列按键外,剩下的全部都扫描出正常的键值,而第一列扫描的值跟第五列扫描的值有可能相同。
点赞  2007-1-11 18:28
即第一列的键值正确应该为01 02 03 04,第五列的键值正确为15 16 17 18,结果发现第一列也会扫描出 15 16 17 18这样的键值
点赞  2007-1-11 18:29
那就是你程序逻辑错误
点赞  2007-1-12 14:17
我原来扫描列的顺序是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 ,结果扫描结果正确。仔细看了程序,感觉逻辑上没什么问题。不知则么回事,难道扫描顺序会影响扫描的正确性吗
点赞  2007-1-12 20:28
还有个问题,就是单片机每次复位或加电时pc的串口精灵经常会受到0x00,不知道这事什么原因
点赞  2007-1-19 21:46
肯定是程序逻辑问题
点赞  2007-1-25 21:40
精通施奈德PLC,要有实际经验,有一定的自主支配时间。待遇面谈。联系方式:027-87792427;E@mail:bb0912@163.com
点赞  2007-2-2 08:35
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复