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);
}

审核编辑 黄昊宇

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

    关注

    6074

    文章

    45333

    浏览量

    663291
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    单片机启动&库函数的构成

    的脉冲,故单片机的时钟信号可以由RC振荡器提供。但是RC振荡器提供的时钟信号质量不高,而晶体振荡器依靠压电效应提供稳定的、高质量的时钟信号。 以CW32F030C8T6单片机为例,他拥有2个内部
    发表于 11-18 08:15

    C语言和单片机C语言有什么差异

    区别是由编译器决的,只能参考对应的编译手册,即使同种平台不同的编译器对C的扩展也有不同。 3、单片机c语言编程是基于C语言的单片机编程。
    发表于 11-14 07:55

    51单片机RS485编程实例资料

    详细介绍51单片机RS485通信接线和编程代码
    发表于 10-20 14:57 2次下载

    AT89C51 单片机中文资料

    电子发烧友网站提供《AT89C51 单片机中文资料.pdf》资料免费下载
    发表于 06-24 15:29 1次下载

    单片机实例项目:AT24C02EEPROM存储器

    单片机实例项目:AT24C02EEPROM存储器,推荐下载!
    发表于 06-03 20:50

    基于51单片机的多功能万年历设计

    基于51单片机的多功能万年历设计    本项目是基于51单片机STC89系列,运用protues仿真软件开发,使用模块化编程方法,模块化电路设计,硬件部分采用
    发表于 06-03 17:17 1次下载

    C51单片机C语言知识点必备秘籍

    功能寄存器 系列二 8:单片机寻址方式与指令系统 9:单片机数据传递类指令 10:单片机数据传送类指令 11:单片机算术运算指令 12:
    发表于 05-15 14:00

    多模块配置!YU系列USB、Type-C连接器为工控打造"全能型"数据传输方案

    背景介绍工控是一类用于工业、野外等复杂恶劣环境的专用计算机设备,如何实现稳如磐石的数据传输是关键?凌科电气YU-USB&Type-C工业连接器,以严苛环境适配性及长期稳定的性能表现,成为
    的头像 发表于 05-07 18:27 472次阅读
    多模块配置!YU系列USB、Type-<b class='flag-5'>C</b>连接器为工控<b class='flag-5'>机</b>打造&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;quot;全能型&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;quot;数据传输方案

    新概念51单片机C语言教程入门、提高、开发、拓展全攻略

    资料介绍 从实际应用入手,以实验过程和实验现象为主导,循序渐进地讲述51单片机C语言编程方法以及51单片机的硬件结构和功能应用。全书共分5篇
    发表于 04-15 13:57

    51单片机模块化编程设计与实例要点分析

    51单片机模块化开发教程
    发表于 02-24 16:40 4次下载

    单片机学习—C51源代码和Proteus仿真文件

    单片机学习—C51源代码和Proteus仿真文件.zip, 有各种例子
    发表于 02-10 13:46 2次下载

    51单片机pwm和spwm

    51单片机pwm
    发表于 01-08 15:54 3次下载

    51单片机温度报警器

    电子发烧友网站提供《51单片机温度报警器.zip》资料免费下载
    发表于 12-30 14:16 4次下载

    凌科电气YU系列工业级连接器登场,解锁USB&amp;amp;Type-C多模块新体验!

    近日,凌科全新推出YU系列USB&amp;amp;Type-C多模块工业级连接器,在功能上实现了全面升级。
    的头像 发表于 12-18 09:46 791次阅读

    51单片机核心板原理图

    51单片机核心板原理图
    发表于 12-16 11:30 4次下载