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

两个51单片机如何通过i2c通讯,第1张

一般情况下,要进行I2C通讯,你最起码其中有一个芯片要本身就带有I2C通讯接口,用这个带有I2C接口的芯片来作从器件,这样就相对好处理一点。你要是两个都不带这个接口,来模拟的话,很有难度。除非你对I2C协议很清楚,不过从楼主的提问来看,估计就不怎么熟悉这种协议。

所以建议还是用别的通讯方式吧,比如用SPI,相对会好处理一点,用其中一个芯片的INTx来模拟CS接口,作为从器件在中断中来处理,另外一个就模拟主器件来控制从器件,这样或许会好弄点。如果楼主确实需要通讯,还是赶快换个思路吧,要是卡在一个地方动不了,会耽误你的进程的,祝你好运!

您好,中国最早的通讯方式是飞鸽传书,还有烽火传军情、鸿雁传书、鱼传尺素、青鸟传书、黄耳传书、风筝通信等。而通讯方式IIC(Inter-IntegratedCircuit)就是集成电路总线,只要输入收件人的E-mail地址和主题等,就可以将文件以附件或正文的形式发送出去。作为正文发送时,只须填写对方的E-mail地址,并在“主题”栏内进行简单介绍,然后单击“发送该工作表”按钮(如果你选中了工作表中的部分区域,该按钮变成“发送所选区域”)即可。当其他用户收到邮件后,可以直接对正文进行编辑修改,处理完毕后用同样方法将文件发给你。单击“附加文件按钮”,可以打开 “插入附件”对话框,像Outlook是一种多向控制总线,由飞利浦半导体公司在八十年代初设计,主要是用来连接整体电路(ICS)。在IIC中,多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源,这种方式简化了信号传输总线。谢谢。

IIC通讯只能是TTL连接通信,要求两个单片机是近距离的,应在1米以内。既然是TTL连接,为何不用串口呢,也是TTL连接,串口通信简单多了。

而IIC通信,两个单片机都是用引脚来模拟的,通信协议比较麻烦,写程序很麻烦的,又何苦呢?

我把iic通信的代码给你吧

/

向IIC总线发送一个字节数据

/

//

void delay(unsigned int k)

{

unsigned int i,j;

for(i=0;i<k;i++)

{

for(j=0;j<121;j++)

{;}}

}

/

延时5微秒(STC90C52RC@12M)

不同的工作环境,需要调整此函数,注意时钟过快时需要修改

当改用1T的MCU时,请调整此延时函数

/

void Delay5us()

{

_nop_();_nop_();_nop_();_nop_();

_nop_();/_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_(); /

}

/

延时5毫秒(STC90C52RC@12M)

不同的工作环境,需要调整此函数

当改用1T的MCU时,请调整此延时函数

/

void Delay5ms()

{

WORD n = 1000;

while (n--)

{

_nop_();_nop_();_nop_();_nop_();

};

}

void MMA8452_SendByte(BYTE dat)

{

BYTE i;

for (i=0; i<8; i++) //8位计数器

{

dat <<= 1; //移出数据的最高位

SDA = CY; //送数据口

SCL = 1; //拉高时钟线

Delay5us(); //延时

SCL = 0; //拉低时钟线

Delay5us(); //延时

}

MMA8452_RecvACK();

}

/

从IIC总线接收一个字节数据

/

BYTE MMA8452_RecvByte()

{

BYTE i;

BYTE dat = 0;

SDA = 1; //使能内部上拉,准备读取数据,

for (i=0; i<8; i++) //8位计数器

{

dat <<= 1;

SCL = 1; //拉高时钟线

Delay5us(); //延时

dat |= SDA; //读数据

SCL = 0; //拉低时钟线

Delay5us(); //延时

}

return dat;

}

这是我以前读取传感器信息时候用的。正好是iic通信的那部分,你自己学一下iic吧,我的程序是没问题的哦。

IIC总线在没有总裁模式的前提下,只能实现主从通信。也就是主机可以随时向从机发送数据,但只能等主机访问才能从机才能应答。这个是标准IIC协议。不知道符不符合你对双机通信的要求。电路图很简单,只用连上2条上,上拉个电阻就可以啦。IIC通信的原理参考飞利浦的标准,两线特定的状态实现数据传输开始,应答,结束等等,多看看时序图就了解啦。

但是大多数的51单片机不带硬件IIC模块,我们可以用软件来模拟。我只写过主机的模拟IIC程序,从机的没写过。从机程序51实现难度很大,也不实用。机制问题,从机响应如不能用中断实现,只能一直让程序在查询,实现起来没什么意义。如果你的51带管脚电平变化中断,可以去尝试下。

以上就是关于两个51单片机如何通过i2c通讯全部的内容,包括:两个51单片机如何通过i2c通讯、通讯方式ⅡC什么意思、两个单片机用IIC通讯,从机的函数要怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9638075.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存