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

相关文章

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3