蓝桥杯单片机快速开发笔记——AT24C02 E2PROM

2024-03-16 10:04

本文主要是介绍蓝桥杯单片机快速开发笔记——AT24C02 E2PROM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、原理分析

        此处考点分析:可能会在引用iic驱动文件时需要自己在头文件定义SCL/SDA

sbit sda = P2^1;
sbit scl = P2^0;
  1. 工作原理:24C02是一种电可擦除可编程只读存储器,通过I2C总线与微处理器或控制器通信。它可以通过电子方式对存储的数据进行读取、写入和擦除操作。

  2. 存储结构:24C02内部由若干存储单元组成,每个存储单元可以存储一个字节的数据。数据可以通过I2C总线按地址进行读写操作。

  3. 读写操作:通过I2C总线发送读写指令和地址,可以实现对24C02中存储数据的读取和写入。读取时,将地址发送给24C02,它会返回对应地址的数据;写入时,发送地址和数据给24C02,它会将数据写入指定地址。

二、应用

  1. 参数存储:24C02常用于存储系统参数、校准数据、配置信息等,如嵌入式系统中的设备参数存储。

  2. 日志记录:在一些应用中,24C02可用于记录事件日志、运行状态等信息,方便系统故障排查和数据分析。

  3. ID存储:在一些设备中,24C02可用于存储设备的唯一标识符或ID信息,用于识别设备身份。

  4. 密钥存储:在安全应用中,24C02可用于存储加密密钥、认证信息等敏感数据,保护系统安全。

  5. 参数调整:一些设备中,24C02可用于存储用户设置的参数、调整值,如显示器的亮度、音量等。

三、思维导图

四、示例框架

#include "e2prom.h"
#include "iic.h"//24C02单字节写入
void Write_24C02(unsigned char addr, unsigned char dat)
{I2CStart();           //起始信号I2CSendByte(0xa0);    //EEPROM的写设备地址I2CWaitAck();         //等待从机应答I2CSendByte(addr);    //内存单元地址I2CWaitAck();         //等待从机应答I2CSendByte(dat);     //内存写入数据I2CWaitAck();         //等待从机应答I2CStop();            //停止信号
}//24C02单字节读取
unsigned char Read_24C02(unsigned char addr, unsigned char dat)
{unsigned char tmp;//首先,进行一个伪写操作I2CStart();              //起始信号I2CSendByte(0xa0);       //EEPROM的写设备地址I2CWaitAck();            //等待从机应答I2CSendByte(addr);       //内存单元地址I2CWaitAck();            //等待从机应答//然后,开始字节读操作I2CStart();              //起始信号I2CSendByte(0xa1);       //EEPROM的读设备地址I2CWaitAck();            //等待从机应答tmp = I2CReceiveByte();  //读取内存中的数据I2CSendAck(1);           //产生非应答信号I2CStop();               //停止信号return tmp;
}

        通过I2C总线与24C02 EEPROM芯片进行通信,实现单字节数据的写入和读取操作。通过发送起始信号、设备地址、内存单元地址和数据,以及等待应答和停止信号,实现了对24C02的数据读写操作。

  1. void Write_24C02(unsigned char addr, unsigned char dat):定义了一个无返回值的函数Write_24C02(),用于向24C02 EEPROM芯片写入单个字节的数据。

  2. I2CStart();I2CSendByte(0xa0);I2CWaitAck();I2CSendByte(addr);I2CWaitAck();I2CSendByte(dat);I2CWaitAck();I2CStop();:通过I2C总线发送起始信号、设备地址、内存单元地址和数据,以及等待从机应答和停止信号,实现向24C02写入数据的操作。

  3. unsigned char Read_24C02(unsigned char addr, unsigned char dat):定义了一个返回无符号字符型数据的函数Read_24C02(),用于从24C02 EEPROM芯片读取单个字节的数据。

  4. unsigned char tmp;:定义了一个无符号字符型变量tmp,用于存储读取的数据。

  5. I2CStart();I2CSendByte(0xa0);I2CWaitAck();I2CSendByte(addr);:发送起始信号、设备地址和内存单元地址,进行伪写操作。

  6. I2CStart();I2CSendByte(0xa1);I2CWaitAck();tmp = I2CReceiveByte();I2CSendAck(1);I2CStop();:发送起始信号、读设备地址,读取内存中的数据,产生非应答信号并停止信号,实现从24C02读取数据的操作。

  7. return tmp;:返回读取的数据。

这篇关于蓝桥杯单片机快速开发笔记——AT24C02 E2PROM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/815124

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件