51单片机读写EEPROM(AT24C02)

AT24C02引脚图
AT24C02引脚功能描述

AT24C02的存储容量为2K bit,内容分成32页,每页8Byte,共256Byte,操作时有两种寻址方式:芯片寻址和片内子地址寻址。
(1)芯片寻址:AT24C02的芯片地址为1010,其地址控制字格式为1010A2A1A0R/W。其中A2,A1,A0可编程地址选择位。A2,A1,A0引脚接高、低电平后得到确定的三位编码,与1010形成7位编码,即为该器件的地址码。R/W为芯片读写控制位,该位为0,表示芯片进行写操作。
(2)片内子地址寻址:芯片寻址可对内部256B中的任一个进行读/写操作,其寻址范围为00~FF,共256个寻址单位。

函数声明:

IIC开始函数:void IIC_Start(void);
向IIC发送数据:void IIC_SendByte(unsigned char address, unsigned char date);
从IIC接受数据:unsigned char IIC_RecByte(void);
IIC应答函数:void IIC_Ack(void);
IIC停止函数:void IIC_Stop(void);

向AT24C02写数据步骤:
第1步:发送开始信号,IIC启动;
第2步:发送器件地址,其中读写标志位为写;
第3步:IIC应答信号;
第4步:发送器件内部存储地址;
第5步:IIC应答信号;
第6步:向器件中写入数据;
第7步:IIC应答信号;
第8步:发送停止信号,IIC停止

代码如下:

void writeAT24C02(unsigned char address, unsigned char date)
{
    IIC_Start();
    IIC_SendByte(0xa0);
    IIC_Ack();
    IIC_SendByte(address);
    IIC_Ack();
    IIC_SendByte(date);
    IIC_Ack();
    IIC_Stop();
}

从AT24C02中读取数据步骤:
第1步:定义一个unsigned char类型的变量,以接受读出的数据;
第2步:发送开始信号,IIC启动;
第3步:发送器件地址,其中读写标志位为写;
第4步:IIC应答信号;
第5步:发送器件内部存储地址;
第6步:IIC应答信号;
第7步:发送开始信号,IIC再次启动;
第8步:发送器件地址,其中读写标志位为读;
第9步:IIC应答信号;
第10步:从器件读出数据;
第11步:发送停止信号,IIC停止;
第12步:返回所读取的数据;

代码如下:

unsigned char readAT24C02(unsigned char address)
{
    unsigned char date;
    IIC_Start();
    IIC_SendByte(0xa0);
    IIC_Ack();
    IIC_SendByte(address);
    IIC_Ack();
    IIC_Start();
    IIC_SendByte(0xa1);
    IIC_Ack();
    date = IIC_RecByte();
    IIC_Stop();
    return date;
}
  • 17
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值