IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 13_51单片机应用_AT24C02&IIC -> 正文阅读

[嵌入式]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);
}




  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:58:04  更:2022-10-08 20:59:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 18:11:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码