0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

13_51单片机应用_AT24C02&IIC

天才小狸花 来源:Sigle_chip 作者:Sigle_chip 2022-10-06 21:10 次阅读

前言

在实际的应用中,我们需要一些存储介质帮助我们来存储一些东西,如保存一些参数和配置数据等。比较常用的有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);
}

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6036

    文章

    44555

    浏览量

    634901
收藏 人收藏

    评论

    相关推荐

    51单片机中为什么很少出现printf的身影

    51单片机中为什么很少出现 printf 的身影?是用不了吗? 不是的,51单片机可以用 printf,只是不建议使用。 平时我们在操作系统上写C
    的头像 发表于 12-03 10:46 264次阅读
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>中为什么很少出现printf的身影

    通过C51单片机控制数码管显示

    电子发烧友网站提供《通过C51单片机控制数码管显示.docx》资料免费下载
    发表于 11-12 15:51 2次下载

    基于51单片机的7人多数投票表决器设计

    设计编号:P13 1.主要功能:           基于51单片机AT89C51/52(与AT89S51/52、AT89
    的头像 发表于 11-09 09:48 777次阅读
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b>的7人多数投票表决器设计

    把esp8266加入到c51单片机单通道程序怎么写

    要将ESP8266模块加入到C51单片机的单通道程序中,您需要了解如何通过串行通信(UART)与ESP8266进行通信。以下是如何实现这一点的步骤和示例代码。 步骤 1:硬件连接 首先,您需要
    的头像 发表于 10-18 11:32 573次阅读

    51单片机驱动

    电子发烧友网站提供《51单片机驱动.exe》资料免费下载
    发表于 09-20 11:46 5次下载

    OC7201C资料(PCB &amp;amp; 原理图)

    电子发烧友网站提供《OC7201C资料(PCB &amp; 原理图).zip》资料免费下载
    发表于 07-18 16:19 1次下载

    基于51单片机24秒倒计时设计

    本资源内容概要:       这是基于51单片机24秒倒计时设计包含了 C语言程序源代码(keil软件打开) 。本资源适合人群:      单片机
    发表于 06-25 10:03 0次下载

    51、STM32单片机的编程方式一样吗?

    STM32和51单片机是两种常见的单片机系列,它们在硬件架构、性能特点和编程方式等方面有所不同。但是从c语言编程的角度来说,我认为是大同小异的。我们来对比一下它们的编程特点:
    的头像 发表于 05-18 08:04 2190次阅读
    <b class='flag-5'>51</b>、STM32<b class='flag-5'>单片机</b>的编程方式一样吗?

    基于51单片机的锅炉控制设计

    电子发烧友网站提供《基于51单片机的锅炉控制设计.rar》资料免费下载
    发表于 01-12 10:22 3次下载

    基于51单片机的火灾报警设计

    电子发烧友网站提供《基于51单片机的火灾报警设计.rar》资料免费下载
    发表于 01-12 10:04 3次下载

    基于51单片机的波形测量

    电子发烧友网站提供《基于51单片机的波形测量.rar》资料免费下载
    发表于 01-12 09:10 13次下载

    基于51单片机的电机控制设计

    电子发烧友网站提供《基于51单片机的电机控制设计.rar》资料免费下载
    发表于 01-03 11:19 4次下载

    基于51单片机的光控小夜灯设计

    电子发烧友网站提供《基于51单片机的光控小夜灯设计.rar》资料免费下载
    发表于 01-03 11:13 0次下载

    stc51单片机怎么烧录

    步骤 常见问题与解决方法 STC51单片机是一种常见的8位单片机,广泛应用于各种嵌入式系统。它具有高性能、低成本、易于学习和使用等优点。STC51
    的头像 发表于 01-02 17:41 3402次阅读

    基于51单片机的电子闹钟设计

    基于51单片机的电子闹钟设计(实物)
    发表于 01-02 09:58 8次下载