51单片机at24c02的读写

AT24C02

原理图

51单片机at24c02的读写_第1张图片

AT24C02 存储器写操作需要在给出开始态、器件地址和确认之后,紧跟着给出一个 8 位数据
地址。一经收到该地址, EEPROM 就通过 SDA 发出确认信号,并随时钟输入 8 位数据。在收到 8
位数据之后, EEPROM 将向 SDA 确认,数据传送设备必须用停止状态来终止写操作,这时,
EEPROM 进入一个内计时固定存储器写入周期。在该写周期时,所有输入被禁止, EEPROM 直到
写完后才应答

1KB/2KB EEPROM 能进行 8 字节页面写入, 4KB、 8KB 和 16KB 设备能进行 16 字节页面写
入。激发写页面与激发写字节相同,只是数据传送设备无须在第一个字节随时钟输入之后,发出
一个停止状态。在 EEPROM 确认收到第一个数据之后,数据传送设备能再传送 7 个(1KB、 2KB)
或 15 个(4KB、 8KB、 16KB)数据,每一个数据收到之后, EEPROM 都将通过 SDA 回送一个确
认信号,最后数据传送设备必须通过停止状态终止页面写序列。

顺序读取由立即地址读取或随机地址读取激发,在读数据器件
收到一数据码之后,通过确认应答,只要 EEPROM 收到确认之后,便会继续增加数据码地址及串
行输出数据码。当达到存储器地址极限时,数据码地址将重复滚动,顺序读取将继续。当读数据
器件不通过确认(使 SDA 总线处于高电平)应答,而通过产生一个停止条件应答时,顺序读取操
作被终止.

代码

//函数功能:向AT24C02中写入一个数据
void wr_24c02(unsigned char add,unsigned char data1)
{
	IIC_Start();//打开iic
	IIC_SendByte(0xa0);//写入设备地址
	IIC_WaitAck();//等待应答
	IIC_SendByte(add);//写入控制字节
	IIC_WaitAck();//等待应答
	IIC_SendByte(data1);//写入数值	  
    IIC_WaitAck();//等待应答
	IIC_Stop();//停止
}
//函数功能:从AT24C02中读取一个数据
unsigned char rd_24c02(unsigned char add)
{
	 unsigned char temp;
	
	  IIC_Start();//
	  IIC_SendByte(0xa0);//读取设备地址
	  IIC_WaitAck();//等待应答
	  IIC_SendByte(add);//读取控制字
	  IIC_WaitAck();//等待应答
	  IIC_Stop();//停止
	  
	  IIC_Start();//
	  IIC_SendByte(0xa1);//	  
	  IIC_WaitAck();//等待应答
	  temp=IIC_RecByte();//
	  IIC_WaitAck();//等待应答
	  IIC_Stop();//停止
	  
	  return temp;//
}

你可能感兴趣的:(蓝桥杯大赛,蓝桥杯,51单片机)