标题: 51单片机做的键盘 I2C和51单片机 连接的问题 [打印本页]

作者: tianqi911    时间: 2020-4-1 11:40
标题: 51单片机做的键盘 I2C和51单片机 连接的问题
1 这是一个51单片机的按键板 需要把按键值发送给 主机(另一个51单片机)
2 I2C通信
3 这个思路大概是什么样的?(谁是主机 谁是从机 通信大概方式是什么?)

作者: 还有谁?    时间: 2020-4-1 16:06
你的思路还不明确,I2C通信没有主从,他是在同步时钟时收发数据,他讲究开始位,停止位,应答位(ACK),主控器件接收IIC 总线传来的数据函数,主控器件发送数据到IIC 总线函数,这此事整明白了,代码就容易整出来了

作者: lfc315    时间: 2020-4-1 17:35
另一个单片机做主机,他询问一次,按键板的单片机就回一次键值
作者: tianqi911    时间: 2020-4-2 10:10
lfc315 发表于 2020-4-1 17:35
另一个单片机做主机,他询问一次,按键板的单片机就回一次键值

但我有一点一直没想通,比如说我是按键板,哪我啥时候按下按键,主机咋知道?不是应该我按键板给主机 主动发送键值吗?
作者: 雕刻时光爱雅    时间: 2020-4-2 11:54

另一个单片机做主机,主机询问,从机按键进行反馈
作者: 雕刻时光爱雅    时间: 2020-4-2 11:55
tianqi911 发表于 2020-4-2 10:10
但我有一点一直没想通,比如说我是按键板,哪我啥时候按下按键,主机咋知道?不是应该我按键板给主机 主 ...

电平高低变化
作者: dzbj    时间: 2020-4-2 12:24
tianqi911 发表于 2020-4-2 10:10
但我有一点一直没想通,比如说我是按键板,哪我啥时候按下按键,主机咋知道?不是应该我按键板给主机 主 ...

你这么想也行 人家说的也行 比如你的按键板里做个标记 只要判断完按键按下就置位 收到询问时发送的是标记值 这样就不需要实时 然后 提高查询频率 比如每50ms查询一次 以人手的能力很难每50ms按一下吧 以片子的处理能力而言 50ms基本上什么都不会影响 主动发也行的 但接收方也要考虑是否能立即处理 比如用的模拟I2C而非硬件I2C的时候 接收端口又不在外部中断端口上 接收方正好在一个中断里执行呢 你发过去人家不一定理你啊 然后你的发送端还得确认对方是否接收 无接收要重发 从代码上还不如查询来的简单
作者: MOSHEN    时间: 2020-4-2 12:28
有硬件IIC,有软件模拟IIC,IIC通信是全双工的,不存在谁是主机,谁是从机
作者: MOSHEN    时间: 2020-4-2 12:29
tianqi911 发表于 2020-4-2 10:10
但我有一点一直没想通,比如说我是按键板,哪我啥时候按下按键,主机咋知道?不是应该我按键板给主机 主 ...

你按下就会发送过去,这你要在程序里面自己写
作者: wulin    时间: 2020-4-2 15:38
因为按键程序太简单,没有人因为按键功能单独使用一个单片机获取键值再通过I2C与上位机传递,就算有必要这么做也是用串口通讯为佳。如果只是为了练练手则另当别论。
作者: tianqi911    时间: 2020-4-2 15:59
dzbj 发表于 2020-4-2 12:24
你这么想也行 人家说的也行 比如你的按键板里做个标记 只要判断完按键按下就置位 收到询问时发送的是标记 ...

哇塞,终于有一个指点的这么清楚的。原来是这样。
作者: tianqi911    时间: 2020-4-2 16:03
dzbj 发表于 2020-4-2 12:24
你这么想也行 人家说的也行 比如你的按键板里做个标记 只要判断完按键按下就置位 收到询问时发送的是标记 ...

我这个有硬件I2C模块的。客户就是要求这个按键板做从机。
我看了你的解释才明白。我太小看单片机的速度了。我一开始总觉得,我狂按,单片机就反应不过来了。。。。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1