13_51单片机应用_AT24C02&IIC

前言

在实际的应用中,我们需要一些存储介质帮助我们来存储一些东西,如保存一些参数和配置数据等。比较常用的有AT24Cxx系列。AT24C02芯片是以IIC接口的EEPROM器件。所谓EEPROM即电可擦除可编程只读存储器,是ROM的一种。它是只读存储器,即掉电可继续存储数据,而同时又可以在高于普通电压的作用下擦除和重写。

AT24C02

724b5b0f4a06107618ac1aaaa76026a9.png

img

其中A0、A1、A2用于定义芯片地址,VCC和GND是供电正负接口,SCL和SDA是IIC的数据总线,WP是写保护(若接VCC则该芯片所有内容都被保护,只能读不能写,一般我们直接接地)。单片机入门绘制电路板,需要正品元器件可去唯样商城,原厂真货。

AT24C02的从机地址前四位1010为固定值,A0,A1,A2正好与芯片的1,2,3引角对应,最末一位表示读(1)或写(0)。

AT24C02的内存有2Kbit(256byte),分为32页,对其的写操作包括字节写和页写。

写操作

字节写

字节写就是对指定地址的字节进行写入操作,时序是:

①发送start信号

②发送从器件地址+写标志“0”,并等待应答信号

③发送要写入的地址,并等待应答信号

④发送要写入的数据,并等应答信号

⑤发送stop信号。

页写

页写则是在字节写的基础上,在第⑤步之前多次使用第④步,即最后先不要发送stop信号,而是继续发送数据,这时AT24C02就会自动将地址加一,待所有数据发送完毕再发送stop信号。

读操作

随机读

随机读可以指定要读取数据的地址,具体时序:

①发送start信号

②发送从器件地址+写标志“0”,并等待应答

③发送要读数据的地址,并等待应答

④重新发送一个start信号(也可称为restart信号)

⑤发送从器件地址+读标志“1”,并等待应答

⑥接收传来的数据,收到数据后要发送非应答信号

⑦发送stop信号。

当前地址读

当前地址读则是只能读取芯片内部最近一次操作的地址加一处的数据(主要在已知上次操作地址时使用),具体时序:

①发送start信号

②发送从器件地址+读标志“1”,并等待应答

③接收传来的数据,然后发送非应答信号

④发送stop信号。

顺序读

顺序读则是在前两种读操作的基础上,在接收到数据后发送应答信号,然后就可以继续读上次操作地址加一处的数据了(这是在芯片内部实现的),当读够数据后,要发送非应答信号,最后发送stop信号。

代码

void write_AT24C02(uchar unit_addr, uchar dat)
{
    start();
    write_byte(AT24C02_ADDR + 0);    //下一个字节为写,所以是+0
    ack();
    write_byte(unit_addr);
    ack();
    write_byte(dat);
    ack();
    end();
}

uchar read_AT24C02(uchar unit_addr)
{
    uchar dat;
    /*先写数据*/
    start();
    write_byte(AT24C02_ADDR + 0);      //下一个字节为写
    ack();
    write_byte(unit_addr);
    ack();
    start();
    write_byte(AT24C02_ADDR + 1);       //下一个字节为读
    
    ack();
    dat = read_byte();
    end();
    return dat;
}

void main()
{
    write_AT24C02(0xf0, 0xae);
    delay_10ms();                       //写完后,必须延时一定的时间才可以读取
    P1 = read_AT24C02(0xf0);
    while(1);
}

e);
delay_10ms(); //写完后,必须延时一定的时间才可以读取
P1 = read_AT24C02(0xf0);
while(1);
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天才小狸花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值