51单片机双机IIC通信

这篇具有很好参考价值的文章主要介绍了51单片机双机IIC通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

双机IIC通信

一、功能介绍

通过IIC协议进行两个51单片机之间的信息传输,主机按下按键发送不同的指令,控制从机对应LED灯进行点亮。

二、IIC介绍

1、发送部分

(1)开始信号

起始条件:SCL高电平期间,SDA从高电平切换到低电平

单片机之间iic通信,51单片机,c语言,嵌入式硬件,信息与通信

(2)结束信号

终止条件:SCL高电平期间,SDA从低电平切换到高电平

单片机之间iic通信,51单片机,c语言,嵌入式硬件,信息与通信

(3)发送一个字节

条件:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,依次循环上述过程8次,即可发送一个字节。
单片机之间iic通信,51单片机,c语言,嵌入式硬件,信息与通信

2、接收部分

(1)开始信号检测

循环等待SDA、SCL由高电平转换成低电平。

(2)结束信号检测

循环等待SDA由低电平转换成高电平

(3)数据接收
开始信号之后,循环等待SCL由高电平转化为低电平,之后将SDA上的数据读出,循环上述过程8次。完成后执行结束信号表示传输结束。

三、硬件连接

1、将两个单片机的SDA、SCL连在一起。

2、SCL和SDA各添加一个上拉电阻。

单片机之间iic通信,51单片机,c语言,嵌入式硬件,信息与通信

四、软件代码

主机

 //起始信号 释放SDA SCL再拉低SDA,SCL
void I2C_Start(void)
{
	SDA=1;
	SCL=1;
	IIC_delay();
	SDA=0;
	IIC_delay();
	SCL=0;
	
}

//结束信号
void I2C_Stop(void)
{
	SDA=0;
	SCL=1;
	IIC_delay();
	SDA=1;
}

//发送一个字节
void Send_Byte(u8 dat)
{
	u8 i;
	for(i=0;i<8;i++)
	{
		SCL=0;
		if(dat&(0x80>>i))//将数据放在SDA(按位与)
		{
			SDA=1;
        }
		else
		{
			SDA=0;
        }
		IIC_delay();
		SCL=1;
		IIC_delay();
		SCL=0;
		IIC_delay();
  }
}

从机

//开始信号
void I2C_Start(void)
{
	while(SDA&&SCL);
	while(!SDA&&!SCL);	 
}

//结束信号
void I2C_Stop(void)
{
	while(!SDA&&SCL);
	while(SDA);
}

//接收一个字节
unsigned int IIC_Addr_RW(void)
{
	unsigned int Addr_Check=0x00,i=0;
	I2C_Start();
	for(i=0;i<8;i++)
	{
		while(SCL);
		while(!SCL);
		Addr_Check <<=1;
		if(SDA == 1){
			Addr_Check |= 0x01;
		}else{
			Addr_Check |= 0x00;
		}		
		
	}
	I2C_Stop();
   
	return Addr_Check;    
}

五、效果展示

单片机之间iic通信,51单片机,c语言,嵌入式硬件,信息与通信

51单片机双机IIC通信

六、代码链接

关注公众号“小小创客者”回复“51双机IIC通信”获得代码。如有错误欢迎指正!文章来源地址https://www.toymoban.com/news/detail-539568.html

到了这里,关于51单片机双机IIC通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32单片机初学5-IIC通信驱动OLED屏幕

    在我上篇文章(STM32-软件模拟IIC通信)讲解了软件模拟IIC通信。这篇文章详将细讲解利用软件模拟IIC来控制0.96寸的OLED屏幕(如下图),使其显示字符串。本文将不再对IIC通信原理做详细讲解,所以对IIC通信原理不熟悉的话可以参考我上篇文章(点击上面的链接直接跳转)。

    2023年04月10日
    浏览(24)
  • 基于51单片机+SHT30设计的环境温度与湿度检测设备(IIC模拟时序)

    当前文章介绍基于51单片机和SHT30传感器设计的环境温度与湿度检测设备。设备采用IIC模拟时序通信协议,能够实时监测环境的温度和湿度,并将数据通过LCD显示屏显示出来;可以广泛应用于室内环境监测、气象观测、农业温室监测等领域。 在本项目中,使用了51单片机作为主

    2024年02月13日
    浏览(27)
  • 基于51单片机的双机串口通信排队叫号系统(LCD显示)设计

    仿真图:proteus8.9以上 程序代码:KEIL4/KEIL5 原理图:AD 设计编号:A0006 基于51单片机的双机串口通信排队叫号系统(LCD显示)设计 结合实际情况,基于51单片机设计一个排队叫号系统设计。该系统应满足的功能要求为: 由51单片机、按键模块、LCD1602液晶屏、蜂鸣器呼叫模块构成 具

    2024年02月04日
    浏览(32)
  • 51单片机学习笔记_6 IO通信:电脑与单片机之间的通信

    单片机还可以通过IO口实现多种通信。 串行通信 :一条数据线,一次发1bit,发很久。 并行通信 :多条数据线,同时发送,发的速度快多了但是费用高、接收困难、抗干扰性差。 异步通信 :发送和接收方时钟可以不用完全一致。 同步通信 :发送和接收方时钟要完全一致。

    2024年02月08日
    浏览(34)
  • 在学习c51单片机实验七(双机通信及pcb设计)操作Keil uVision4和protus的时候遇到的两个坑

    特别是懒的时候,对于新手,每次用一个工程文件,因为创建不熟练,就容易出现这个问题 Build target \\\'Target 1\\\' linking... *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS     SYMBOL:  MAP     MODULE:  shiyan6right.obj (SHIYAN6RIGHT) *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS     SYMBOL:  MAIN     MODULE:  shi

    2024年02月03日
    浏览(84)
  • 51单片机编程应用(C语言):串口通信

    目录 通信的基本概念和种类    1.1串行通信与并行通信 ​编辑 1.2同步通信与异步通信 1.3单工,半双工,全双工   1.4通信速率  二、波特率和比特率的关系 串口通信简介: 1.接口标准 RS-232 2、D型9针接口定义 3.通信协议: 2.串口内部结构  51单片机串口相关寄存器   1.80c

    2024年02月19日
    浏览(25)
  • C语言课设项目-51单片机-红外通信

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一. 什么是红外线 二. 红外线系统的组成  三. 红外发射管  四. 红外遥控器发射  五. 红外线接收 六.数据格式 ​七. 位定义 人的眼睛能看到的可见光按波长从长到短排

    2024年02月03日
    浏览(31)
  • Proteus8仿真:51单片机使用串口进行双机通讯

    元器件 名称 电阻 RES 51单片机 AT89C51 电容 CAP 晶振 CRYSTAL BCD数码管 7SEG-BCD 串口初始化: 首先根据相关的串口寄存器编写对应的初始化代码: STC89C51单片机设有两个定时器/计数器,因定时器1有4种工作方式,而常选用定时器1的工作方式2(8位自动重装)作为波特率的溢出率。 串口

    2024年02月04日
    浏览(27)
  • HC-05(ZS-040)蓝牙模块使用详情(蓝牙模块配置、手机蓝牙控制单片机、蓝牙与蓝牙之间的通信)含51、32程序

    HC-05是一款主从一体化的蓝牙模块,因此其使用起来比较方便,只需要进行简单的配置即可。 本文就 手把手的介绍小白入手模块后如何使用 。 对于模块使用:1、蓝牙配置→2、手机与蓝牙的传输→3、手机通过蓝牙模块控制单片机→4、一对蓝牙之间主—从传输数据,这是一个

    2023年04月09日
    浏览(93)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包