51驱动AT24C02存储数据

51驱动AT24C02存储数据

AT24C02介绍

1,AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息
存储介质:E2PROM
通讯接口:I2C总线
容量:256字节
在这里插入图片描述
2,引脚及应用电路
在这里插入图片描述 在这里插入图片描述
3,内部结构框图

在这里插入图片描述
4,AT24C02数据帧
字节写:在“字地址”处写入“数据”
在这里插入图片描述
随机读:读出在“字地址”处的“数据”
在这里插入图片描述

主要程序

存储的地址

#define AT24C02_ADDRESS		0xA0
/**
  * @brief  AT24C02写入一个字节
  * @param  WordAddress 要写入字节的地址
  * @param  Data 要写入的数据
  * @retval 无
  */
void AT24C02_WriteByte(unsigned char WordAddress,Data)
{
    
    
	I2C_Start();
	I2C_SendByte(AT24C02_ADDRESS);
	I2C_ReceiveAck();
	I2C_SendByte(WordAddress);
	I2C_ReceiveAck();
	I2C_SendByte(Data);
	I2C_ReceiveAck();
	I2C_Stop();
}
/**
  * @brief  AT24C02读取一个字节
  * @param  WordAddress 要读出字节的地址
  * @retval 读出的数据
  */
unsigned char AT24C02_ReadByte(unsigned char WordAddress)
{
    
    
	unsigned char Data;
	I2C_Start();
	I2C_SendByte(AT24C02_ADDRESS);
	I2C_ReceiveAck();
	I2C_SendByte(WordAddress);
	I2C_ReceiveAck();
	I2C_Start();
	I2C_SendByte(AT24C02_ADDRESS|0x01);
	I2C_ReceiveAck();
	Data=I2C_ReceiveByte();
	I2C_SendAck(1);
	I2C_Stop();
	return Data;
}

主要代码

void main ()
{
    
    
	LCD_Init();                    //LCD1602初始化
	AT24C02_WriteByte(1,210);      // 写入一个数据”210“
	Delay(5);                      //延时5S
	Data=AT24C02_readByte(1);      //读取数据
	LCD_ShowNum(2,1,Data,3);       //在第二行第一列显示”210“ 3位
	while(1)
	{
    
    
		
	}
}

实验现象

在这里插入图片描述
注意事项:
写入的数据最大是255
AT24C02的接线在IIC库文件里面,不同的开发板可以根据板载的接线改定义,
需要完整工程的可以下方留言获取

猜你喜欢

转载自blog.csdn.net/qq_42250136/article/details/124179847