目标实现功能
单片机先向24C02写入256个字节的数据,再从24C02中一次读取2个字节的数据、并在数码管上动态显示,直至读完24C02中256个字节的数据。
1.I2C总线简介
I2C总线有两根双向的信号线,一根是数据线SDA,另一根是时钟线SCL。I2C总线通过上拉电阻接正电源,因此,当总线空闲时为高电平。
2.I2C通信协议
起始信号、停止信号由主机发出。在数据传送时,当时钟线为高电平时,数据线上的电平状态必须保持稳定;当时钟线为低电平时,数据线上的电平状态才允许变化。发送器将8位数据从高位到低位传送完成后,需要接收来自接收器的应答或非应答的信号。
51单片机需要编写模拟I2C总线通信的程序,才能与其他I2C总线器件通信。
<1>起始信号的程序
/*I2C起始信号*/
void i2c_start()//当SCL为高电平,SDA从高电平变为低电平
{
SDA=1;
delay6us();//将SDA置为高电平
SCL=1;
delay6us();//将SCL置为高电平
SDA=0;
delay6us();//SDA从高电平变为低电平
SCL=0;
delay6us();//将SCL置为低电平,准备发送数据
}
<2>停止信号的程序
/*I2C停止信号*/
void i2c_stop()//当SCL为高电平,SDA从低电平变为高电平
{
SDA=0;
delay6us();//将SDA置为低电平
SCL=1;
delay6us();//将SCL置为高电