at24c02存储器读写实验通过液晶显示
时间: 2024-05-21 16:10:21 浏览: 30
本实验使用AT24C02串行EEPROM存储器,通过液晶显示屏展示存储器读写的结果。
材料:
1. AT24C02串行EEPROM存储器
2. Arduino Uno开发板
3. 1602A液晶显示屏
4. 10K电位器
5. 面包板、杜邦线等
接线:
将AT24C02存储器的SDA、SCL引脚分别连接到Arduino Uno的A4、A5引脚,将液晶显示屏的RS、EN、D4、D5、D6、D7引脚分别连接到Arduino Uno的8、9、4、5、6、7引脚。将1602A液晶显示屏的VSS、VDD、V0引脚分别连接到GND、5V、10K电位器的中间引脚,将电位器的两端引脚分别连接到GND和5V。
程序:
/* AT24C02存储器读写实验 通过液晶显示 */
#include <Wire.h>
#include <LiquidCrystal.h>
#define EEPROM_ADDR 0x50 // 存储器I2C地址
#define LCD_RS 8 // 液晶显示屏RS引脚
#define LCD_EN 9 // 液晶显示屏EN引脚
#define LCD_D4 4 // 液晶显示屏D4引脚
#define LCD_D5 5 // 液晶显示屏D5引脚
#define LCD_D6 6 // 液晶显示屏D6引脚
#define LCD_D7 7 // 液晶显示屏D7引脚
#define LCD_ROWS 2 // 液晶显示屏行数
#define LCD_COLS 16 // 液晶显示屏列数
LiquidCrystal lcd(LCD_RS, LCD_EN, LCD_D4, LCD_D5, LCD_D6, LCD_D7); // 初始化液晶显示屏
void setup() {
Wire.begin(); // 初始化I2C总线
lcd.begin(LCD_COLS, LCD_ROWS); // 初始化液晶显示屏
lcd.print("AT24C02 Test"); // 在液晶显示屏上显示标题
}
void loop() {
byte addr = 0x00; // 存储器地址
byte data = 0x00; // 存储器数据
byte buffer[2]; // 缓冲区
// 写入数据
lcd.setCursor(0, 1); // 设置光标位置
lcd.print("Write Data: "); // 在液晶显示屏上显示提示信息
for (int i = 0; i < 256; i++) {
data = i; // 写入数据
buffer[0] = addr; // 存储器地址
buffer[1] = data; // 存储器数据
Wire.beginTransmission(EEPROM_ADDR); // 发送I2C起始信号
Wire.write(buffer, 2); // 发送数据
Wire.endTransmission(); // 发送I2C停止信号
delay(10); // 延时10ms
}
// 读取数据
lcd.setCursor(0, 1); // 设置光标位置
lcd.print("Read Data: "); // 在液晶显示屏上显示提示信息
for (int i = 0; i < 256; i++) {
buffer[0] = addr; // 存储器地址
Wire.beginTransmission(EEPROM_ADDR); // 发送I2C起始信号
Wire.write(buffer, 1); // 发送地址
Wire.endTransmission(); // 发送I2C停止信号
Wire.requestFrom(EEPROM_ADDR, 1); // 读取数据
while (Wire.available()) {
data = Wire.read(); // 获取数据
}
lcd.print(data); // 在液晶显示屏上显示数据
addr++; // 存储器地址加1
}
delay(5000); // 延时5s
lcd.clear(); // 清屏
}
说明:
本实验中,首先定义了存储器的I2C地址、液晶显示屏的引脚、行数和列数等。在setup()函数中初始化I2C总线和液晶显示屏,并在液晶显示屏上显示标题。在loop()函数中,通过循环从0x00地址开始写入数据,写入数据范围为0x00~0xFF。写入数据时,需要将存储器地址和数据分别存储在缓冲区中,然后通过Wire库的函数发送I2C起始信号、发送数据和发送I2C停止信号。写入数据时,需要延时一定时间,以确保数据已经写入存储器中。在循环读取数据时,先发送存储器地址,然后请求从存储器中读取数据。读取数据时,需要检查Wire库的函数是否已经读取到数据,然后将数据显示在液晶显示屏上。在读取完256个数据后,需要将液晶显示屏清屏,以便下一次循环。
结论:
本实验通过AT24C02串行EEPROM存储器和液晶显示屏,实现了存储器数据的写入和读取,并通过液晶显示屏展示了存储器读写的结果。通过实验,我们可以更好地理解AT24C02存储器的工作原理和使用方法。