IIC(Inter-Intergrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线。用于连接微控制器及其外围设备。IIC只需两根线SDA(数据线),SCL(时钟)。IIC支持多主控,当然,在任何时间点上只能有一个主控,而SPI是一主多从。IIC各种被控制电路均并联在这条总线上,每个模块和电路都有唯一的地址。SPI是通过CS进行片选,有多少个SPI就要占用多少口。IIC总线在传输数据过程中有3个信号,它们分别是:开始信号,结束信号和应答信号。
IIC总线的硬件结构图:
IIC支持多主和主从工作方式,通常为主从工作方式。在主从工作方式中,系统中只有一个主器件(单片机),其它器件都是具有IIC总线的外围从器件。在主从工作方式中,主器件启动数据的发送(发出启动信号),产生时钟信号,发出停止信号。 开始信号:SCL为高电平,SDA由高电平向低电平跳变,开始传送数据 结束信号:SCL为高电平,SDA由低电平向高电平跳变,结束传送数据 应答信号:接受数据的IC在接受到8bit数据后,向发送数据的IC发送特定的低电平脉冲,表示已经接收到数据。CPU向受控单元发送一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况做出是否继续传送数据的判断。若未收到应答信号,由判断为受控单元出现故障。
这些信号中开始信号是必须的,结束信号和应答信号都可以不要。
IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
IIC总线协议规定,每传送一个字节数据后,都要有一个应答信号,以确定数据传送是否被对方收到。应答信号由接受设备产生,在SCL信号为高电平期间,接受设备将SDA拉为低电平,表示数据传输正确,产生应答。
IIC总线的时序图:
许多单片机并不具有IIC总线接口,如51单片机。
单片机模拟IIC总线通信:
启动代码: void start(){
SDA = 1;
delay();
SCL = 1;
delay();
SDA = 0;
delay();
}
停止代码:
void stop(){
SDA = 0;
delay();
SCL = 1;
delay();
SDA = 1;
delay();
}
关键字:51单片机 IIC 串行总线
引用地址:
51单片机-IIC
推荐阅读最新更新时间:2024-03-16 13:57
51单片机定时器0工作在模式2
51单片机定时器0工作在模式2,INT0(P3.2)引脚控制定时/计数器定时计数,定时/计数器0溢出中断,使P2.0引脚相连的LED灯闪烁。定时/计数器0溢出中断为250μs,与P2_0引脚相连的LED灯每2s亮灭一次。源程序如下: //51hei单片机网原创作品,版权所有. #include "reg_c51.h" #define reload_value 0x06 //计数值为250,若时钟频率为12MHz,相当于250μs unsigned char hex ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, 0x88,0x83,0xC6,0xA1,0x86,
[单片机]
51单片机学习:I2C-EEPROM实验
实验名称:I2C-EEPROM实验 接线说明: 实验现象:下载程序后,数码管右4位显示0,按K1键将数据写入到EEPROM内保存, 按K2键读取EEPROM内保存的数据,按K3键显示数据加1,按K4键显示数据清零, 最大能写入的数据是255。 注意事项: ***************************************************************************************/ #include public.h #include 24c02.h #include key.h #include smg.h #define EEPROM_ADDRESS 0 //定义数据存入EEP
[单片机]
普通51单片机驱动3.5寸TFT的应用实例
目前市场流行的3.5寸屏基本上都是只内置了驱动器,而不带控制器,这样给用户的使用造成了一些难度。基本上很多朋友在用彩屏时选择一些带LCD控制器的ARM7或ARM9去开发,对于不会ARM开发的朋友来说,只使用普通MCU,这样可以选择的3.5寸TFT模块,就很难找到了。 本文就是基于市场上一款比较使用的3.5寸TFT模块编写的,用户只需要帮该TFT模块当作普通的单色液晶的开发思路来使用,就可以很容易去编程。 一、 硬件选择 1、 MCU:AT89S51 2、 开发编译环境:Keil C51 3、 3.5寸TFT模块型号:MzT35C1 二、 TFT模块基本性能: 1、基本参数 模块结构: 内置控制器 屏幕大
[单片机]
51单片机中断矢量表
8051系列单片机是现在最常用的单片机他的中断矢量表如下所示: 下面是8051单片机的各种封装形式和引脚图
[单片机]
51单片机精确延迟程序
51单片机精确延时程序(晶振12MHz,一个机器周期1us.) 几个精确延时程序:在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响. 一. 500ms延时子程序:(晶振12MHz,一个机器周期1us.) void delay500ms(void) { unsigned char i,j,k; for(i=15;i 0;i--) for(j=202;j 0;j--) for(k=81;k 0;k--); } 计算分析: 程序共有三层循环 一层循环n:R5*2 = 81*2 = 162us DJNZ 2us 二层循环m:R6
[单片机]
18-基于51单片机的排队叫号系统
具体实现功能 系统由STC89C52单片机+按键模块+LCD1602液晶屏+蜂鸣器呼叫模块+电源构成。 具体功能: 1、主机通过按键完成叫号,LCD1602液晶显示屏显示被叫的号码及服务的柜台号;同时,蜂鸣器响,以提醒顾客接收服务; 2、从机按下按键实现取号,并通过串行通信方式实现排队取号功能; 3、从机还可以实时显示自己的排队号及及当前正在等待的人数。 设计背景 排队论(又称随机服务系统)是研究系统由于随机因素的干扰而出现排队(或拥塞)现象的规律的一门学科,它适用于一切服务系统,包括公共服务系统、通信系统、计算机系统等。可以说,凡是出现拥塞现象的系统,都属于随机服务系统。一个对象通过拥塞系统接受服务必须经过三
[单片机]
基于51单片机的8x8 LED点阵
最近学了LED点阵,并用了三种方式显示字母组,分别为按键控制显示,自动变换显示,和滚动显示 第一种 #include reg51.h #include intrins.h typedef unsigned char u8; typedef unsigned int u16; sbit RCLK=P3^5; sbit SRCLK=P3^6; sbit SER=P3^4; #define GPIP_KEY P1 #define GPIO_DIG P0 u8 keyvalue; u8 code duan ={{0x00,0x42,0x7e,0x42,0x42,0x3c,0x00,0x00},//对字母编码
[单片机]
图形点阵式液晶显示模块与51单片机的接口设计
引 言 液晶作为一种显示器件,以其特有的优势正广泛应用于仪器、仪表、电子设备等低功耗产品中。以往的测控仪器的显示部分大都采用LED式液晶显示屏进行参数设定和结果显示,其显示信息量少、形式单一、人机交互性差、操作人员要求较高。而液晶显示器(LCD)具有功耗低、体积小、质量轻、超薄和可编程驱动等其他显示方式无法比拟的优点,不仅可以显示数字、字符,还可以显示各种图形、曲线、及汉字,并且可实现屏幕上下左右滚动、动画、闪烁、文本特征显示等功能;人机界面更加友好,使用操作也更加灵活、方便,使其日益成为智能仪器仪表和测试设备的首选显示器件。本文在介绍以ST7920为驱动器的WGM-12832液晶显示模块的引脚、结构、功能的基础上,详述了与AT
[应用]