24c02_drive.ino
#include <Wire.h>
#define EEPROM_ADDRESS 0x50 // 24C02的I2C地址
void setup() {
Wire.begin(); // 初始化I2C总线
Serial.begin(9600); // 初始化串口通信
Serial.println("24C02 EEPROM 测试程序");
// 写入测试数据
writeEEPROM(0, 'H');
writeEEPROM(1, 'e');
writeEEPROM(2, 'l');
writeEEPROM(3, 'l');
writeEEPROM(4, 'o');
delay(10); // 等待写入完成
// 读取并显示数据
Serial.print("从EEPROM读取的内容: ");
for (int i = 0; i < 5; i++) {
char c = readEEPROM(i);
Serial.print(c);
}
Serial.println();
}
void loop() {
// 主循环可以留空,因为我们只在setup()中执行一次读写测试
}
// 向EEPROM写入一个字节的数据
void writeEEPROM(int address, byte data) {
Wire.beginTransmission(EEPROM_ADDRESS);
Wire.write((int)(address >> 8)); // 发送高地址字节
Wire.write((int)(address & 0xFF)); // 发送低地址字节
Wire.write(data); // 发送数据
Wire.endTransmission(); // 结束传输
delay(5); // 等待写入完成(24C02的写入周期约为5ms)
}
// 从EEPROM读取一个字节的数据
byte readEEPROM(int address) {
byte data = 0xFF;
Wire.beginTransmission(EEPROM_ADDRESS);
Wire.write((int)(address >> 8)); // 发送高地址字节
Wire.write((int)(address & 0xFF)); // 发送低地址字节
Wire.endTransmission();
Wire.requestFrom(EEPROM_ADDRESS, 1); // 请求1个字节的数据
if (Wire.available()) {
data = Wire.read(); // 读取数据
}
return data;
}上面是一个用于Arduino驱动24C02芯片进行数据读写的程序。这个程序提供了基本的初始化、写入和读取功能,你可以根据需要修改或扩展它。 这个程序的工作原理如下:
在`setup()`函数中初始化I2C总线和串口通信,然后写入测试数据并读取显示。
`writeEEPROM()`函数通过I2C发送数据到指定地址,并在发送后延时等待写入完成。
`readEEPROM()`函数通过I2C从指定地址读取数据。 使用时需要注意:
(1),24C02的I2C地址可能需要根据实际连接调整(默认是0x50)。
(2),确保Arduino的SDA和SCL引脚正确连接到24C02的对应引脚。
(3),写入操作后需要适当延时(至少5ms),确保数据成功写入。