AT24C02引脚及原理图
AT24C02是一种电可擦除可编程ROM(EEPROM),它是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息。
具体原理及内部时序不做深究,只记录蓝桥杯备赛过程中学习的如何使用。
AT24C02如何使用及代码
同之前学的PCF8591一样,AT24C02是由I2C总线控制的芯片,在使用时应先发送地址字节,告诉芯片要使用何种大小的存储空间及是读是写。由芯片手册可知地址如下:
一:写操作:
写操作需要三个变量,即要写入的内容EEPROM_Dat,要写入的位置addr,要写入的字节数量num。
蓝桥杯中使用1K/2K,如需进行写操作,应按如下流程:
发送地址字节 A0 = 1010 0000,选中地址,开始写入->写入存储位置addr-> 进行num次循环,将EEPROM_Dat写入。具体代码如下:
void EEPROM_Write(unsigned char* EEPROM_String,unsigned char addr,unsigned char num)
{
I2CStart();
I2CSendByte(0xA0); //注意A0是写!!!!
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
while(num--)
{
I2CSendByte(*EEPROM_String++);
I2CWaitAck();
I2C_Delay(200);
}
I2CStop();
}
二:读操作:
读操作同样需要三个变量,即读入的内容EEPROM_Dat,要读取的位置addr,要读取的字节数num。
进行读操作应按照如下流程:
发送地址字节 A0 = 1010 0000,选中地址,开始写入->写入读取位置addr。
发送地址字节 A1 = 1010 0001,选中地址,开始读取->进行num次循环,将地址内数据读入EEPROM_Dat中。具体代码如下:
void EEPROM_Read(unsigned char* EEPROM_String,unsigned char addr,unsigned char num)
{
I2CStart();
I2CSendByte(0xA0);
I2CWaitAck();
I2CSendByte(addr);
I2CWaitAck();
I2CStart();
I2CSendByte(0XA1);
I2CWaitAck();
while(num--)
{
*EEPROM_String++ = I2CReceiveByte();
if(num)
I2CSendAck(0);
else
I2CSendAck(1);
}
I2CStop();
}
三:在主函数内调用
在主函数内,应在键盘处理函数内,通过键盘逻辑进行EEPROM的写入。在主函数初始化处读取EEPROM内内容。