一个4*4键盘控制两块单片机的问题!!!!求教高手!!! 20
一块4*4键盘,控制两块单片机,当键盘和其中任一块单片机链接时,键盘控制正常,当键盘一起连两块单片机时,键盘完全乱码了,该怎样解决???...
一块4*4键盘,控制两块单片机,当键盘和其中任一块单片机链接时,键盘控制正常,当键盘一起连两块单片机时,键盘完全乱码了,该怎样解决???
展开
6个回答
展开全部
可以尝试下面的思路(假设4*4矩阵键盘,4根行线接P1.0~P1.3口,4根列线接P2.0~P2.3口键盘扫描机制:列线分别顺序输出0111、 1011、 1101、 1110,分别在相应时刻读入P1口状态)
1、P2口全部输出高电平
2、读入P2口状态,有0则说明另一台单片机在扫描,则退出,等待一段时间再扫描。
3、将0111送出P2口
4、读入P1口状态
5、P2口全部输出高电平
6、读入P2口状态,有0则说明另一台单片机在扫描,刚才的数据丢弃,退出等一段时间再扫描。
7、循环4次
然后处理键值。
这种方法有个前提,应保证两台单片机每次扫描的时间间隔不一样,否则理论上会出现两台同时开始进行扫描,又同时放弃,下次再扫时又碰上对方再扫描,又放弃,....这样就永远无法检测到有效的键值了。而且上面实际扫描的指令应尽量简洁,占用端口线的时间越短越好。
你试试看,我觉得应该没问题
1、P2口全部输出高电平
2、读入P2口状态,有0则说明另一台单片机在扫描,则退出,等待一段时间再扫描。
3、将0111送出P2口
4、读入P1口状态
5、P2口全部输出高电平
6、读入P2口状态,有0则说明另一台单片机在扫描,刚才的数据丢弃,退出等一段时间再扫描。
7、循环4次
然后处理键值。
这种方法有个前提,应保证两台单片机每次扫描的时间间隔不一样,否则理论上会出现两台同时开始进行扫描,又同时放弃,下次再扫时又碰上对方再扫描,又放弃,....这样就永远无法检测到有效的键值了。而且上面实际扫描的指令应尽量简洁,占用端口线的时间越短越好。
你试试看,我觉得应该没问题
展开全部
能不能说的具体点?
追问
就是独立作出了一块4*4的键盘,有两块装有单片机的电路板,一块是实现计算器功能的,另一块是实现语音功能的,当键盘单独接在其中某一块电路板时,按键控制计算或者语音功能都正常,但是把它既连在计算模块又连在语音模块工作时就出问题了,比如按1不显示1,也不发出1的读音了。其中键盘都是通过IO口扫描的,每块电路板各有一块单片机~~~~高手,求救啊!!!
追答
你这样就是一个键盘连接两个单片机,这样不好。就像一个领导给两个下属安排同样的任务,但是两个人可能做事的方法会不一样,结果有可能也不一样,单片机也一样。建议你的键盘只连一个主机,然后另一个单片机作为从机连到主机上,两机采用串口通信,或者用并口也可以啊,很简单的,你那个想法太简单了,呵呵。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个很正常啊。因为你的扫描没有同步啊,可能读回来的是另一个单片机发出的电平。
追问
怎样同步啊?同步基本是不可能的吧?
追答
解决这个问题不一定要处理这个同步问题,可以换个思路,比如:利用串口通讯把键值发给另一个单片机,让它发出相应的声音。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机与单片机之间通信没用上吧,,,,,矩阵键盘不要接在P3
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个很正常啊。因为你的扫描没有同步啊,可能读回来的是另一个单片机发出的电平。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不要两个单片机同时接一个矩阵键盘上,两个扫描不同步就会读到错误的电平,你可以只用一个单片机扫描,扫到键值后通过串口发送给另一个单片机就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询