IIC通讯协议

简单介绍下IIC的通讯时序,然后给出51单片机实现的代码。

1. 通讯协议

IIC总线在传送数据过程中有三种类型信号,分别是:开始信号、结束信号和应答信号。

  • 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
  • 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
  • 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况做出是否继续传递信号的判断。若未接收到应答信号,则判断为受控单元出现故障。

IIC总线时序图片如下。

IIC通讯时序图

2. 51单片机程序代码

2.1 使用的IO口

//---定义IIC接口---//
sbit IIC_SCL = P2^1;
sbit IIC_SDA = P2^0;

2.2 延时函数

/**************************************
延时4微秒(STC89C51,晶振频率12MHz)
不同的单片机,需要调整此函数
**************************************/
void Delay_4us(void)
{
   
   
	_nop_();
	_nop_();
	_nop_();
    _nop_();
}

2.3 IIC驱动代码

/*******************************************************************************
* 函数名   	   	: IIC_Start
* 功能			: IIC启动信号
* 输入			: 无
* 输出			: 无
*******************************************************************************/
void IIC_Start(void)
{
   
   
	IIC_SDA = 1;
	IIC_SCL = 1;
	Delay_4us
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值