两个51单片机如何通过i2c通讯?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-08
51单片机之间能用i2c协议通信吗

可以,两个51单片机之间可以用I2C通信,有同步和异步两种,郭天祥的51书里有具体的讲解,你可以去看看

当串行数据线上数据为1时,一个8位二进制变量dat和0x01求或,则最低位被置1,如果数据线上为0电平,则不进行这个或操作,最低位保持原状0,因此即读得一位串行数据保存在dat的最低位,然后把dat这个数据左移一次,最低位被推向次低位,空出最低位(变为0),下一个时钟里,再进行第二次这样的读操作,得两位二进制数,经过8次即读得到串囗发送的一个字节,最先发的那位数据移到了最高位 注意是读8次,左移7次
如果发送时先发送低位(spI串口发数据有时高位在前,有时低位在前)就要将其读入最高位(和0x80进行"或"操作),然后右移,同样是8次可以读得一个字节数据

一般情况下,要进行I2C通讯,你最起码其中有一个芯片要本身就带有I2C通讯接口,用这个带有I2C接口的芯片来作从器件,这样就相对好处理一点。你要是两个都不带这个接口,来模拟的话,很有难度。除非你对I2C协议很清楚,不过从楼主的提问来看,估计就不怎么熟悉这种协议。
所以建议还是用别的通讯方式吧,比如用SPI,相对会好处理一点,用其中一个芯片的INTx来模拟CS接口,作为从器件在中断中来处理,另外一个就模拟主器件来控制从器件,这样或许会好弄点。如果楼主确实需要通讯,还是赶快换个思路吧,要是卡在一个地方动不了,会耽误你的进程的,祝你好运!

两个51单片机 通讯 可以通过 串口进行通讯(也可以多机通讯),如果要用到 I2C 芯片可另外用2个IO 端口扩展,至于各种功能 通过硬件 及 软件 完全可以完成

要看你们用的是什么型号的51单片机
如果没有硬件I2C,那么你的命题不成立

必须是IIC吗。两个单片机通信通过串口通信要好点吧。个人观点。

  • 两个avr单片机用I2C通信, 两个单片机都要求主动能给对方发数据,即都能...
    答:可以同时设为主机(但同一时刻确实只有一个主机),不同时发送数据,先发能抢到总线控制权;同时发送数据发送的时候AVR的单片机会有仲裁,当失去仲裁的一方(I2C寄存器应该有个值让你判断当前失去仲裁--说明书里面有)的时候,就要自动的把当前变为slave模式。等到通信结束后,再设置处于master状态就可以了...
  • 51单片机I2C通信如何读一字节
    答:当串行数据线上数据为1时,一个8位二进制变量dat和0x01求或,则最低位被置1,如果数据线上为0电平,则不进行这个或操作,最低位保持原状0,因此即读得一位串行数据保存在dat的最低位,然后把dat这个数据左移一次,最低位被推向次低位,空出最低位(变为0),下一个时钟里,再进行第二次这样的...
  • 如何用51单片机模拟i2c协议
    答:下面根据应用分析:1,假如你要写一个ic的通信协议,而这个通信协议用的是I2C。一般需要I2C通信的ic都会告诉你具体的时序图,你可以查看具体的IC技术手册,然后你根据时序图的高低电位和电平改变的先后顺序来写I2C协议就行了,注意速度。2,你想做一个模拟 I2C 驱动协议。你在网上搜索一下I2C时序图(有...
  • 51单片机如何模拟I2C总线中从机接收ID,发送数据的程序
    答:include /*头文件的包含*/ include define uchar unsigned char /*宏定义*/ define uint unsigned int /*端口位定义*/ sbit BELL_OUT=P3^5;sbit SCL="P1"^3;/*模拟I2C数据传送位*/ sbit SDA="P1"^4;/*模拟I2C时钟控制位*/ bit ack; /*应答标志位*/ / 起动总线函数 函数...
  • 请问I2C总线如何实现与单片机的应用
    答:IIC只是一个通信协议,只要两个终端符合这个协议就可以实现数据的交换,有的单片机已经集成了IIC的外设,用起来比较简单,还有一部分并没有这样的外设,就要用IO口来模拟出IIC的两条线,一样可以实现通信,祝成功~
  • 51单片机有没有l2c
    答:51单片机没有I2C模块,但可以用IO口模拟I2C通讯,Uart是51单片机的标配通讯模块,部分单片机有SPI模块。
  • 8051f单片机能否支持I2C通信,如果不能可以拓展吗?
    答:I2C总线只要你遵从它的协议不管什么机都行,只要你能通过它的协议写进去和读进去~!!!
  • 求:51单片机模拟i2c总线程序
    答:求:51单片机模拟i2c总线程序有一定的说明,容易看懂的,希望各位大侠给一个... 求:51单片机模拟i2c总线程序有一定的说明,容易看懂的,希望各位大侠给一个 展开  我来答 2个回答 #热议# 生活中有哪些成瘾食物?Smart_wolf 2011-07-20 · TA获得超过1656个赞 知道小有建树答主 回答量:1467 采纳率:0% ...
  • 为什么在利用i2c总线进行两个单片机之间通信时从机的接受中断程序不执行...
    答:两个单片机之间通信还是用串口比较方便,程序也好写,没有必要用I2C总线。单片机做主机,读I2C芯片的程序能写。但是单片机做从机,发送数据的程序不好写。接收中断程序不执行?是做从机吗?怎么能中断?是把CLK信号接到INT0脚上了吗?否则哪来的中断?两个单片机通信何苦用I2C呢?自找麻烦。
  • 如何用IO口模拟I2C来实现两个STC单片机之间的通讯,求C语言写法
    答:这是我写的模拟程序,只有一个发送函数和一个接收函数,EP为接收标志位,发送没有标志位,通过外部中断来发送起始信号,无应答与非应答,无结束信号,实测可以正常收发数据 ifndef _IOPORTSEND_H__define _IOPORTSEND_H__include<reg52.h> unsigned char DAT,EP=0;//可以把DAT当作串口中的SBUF,主机...