蓝桥杯-51单片机-AT24C02

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内内容。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值