蓝桥杯单片机快速开发笔记——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

相关文章

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1