将学号最后三位写入开发板的AT24C02存储器,并读出来显示在LCD上, 按键控制数字加1代码
时间: 2024-02-23 11:02:27 浏览: 15
好的,以下是一个基于Arduino开发板的示例代码,实现将学号最后三位写入AT24C02存储器,读取存储器中的数据,并将其显示在LCD上,使用按键控制数字加1的功能。
```
#include <Wire.h>
#include <LiquidCrystal.h>
#define LCD_ADDR 0x27 //LCD地址
#define EEPROM_ADDR 0x50 //AT24C02存储器地址
#define STUDENT_ID 123456 //学号
LiquidCrystal lcd(LCD_ADDR, 16, 2);
int buttonPin = 4; //按键引脚
int count = 0; //计数器,用于存储LCD显示的数字
int lastCount = 0; //上一次计数器的值,用于判断计数器是否发生变化
void setup() {
Wire.begin();
Serial.begin(9600);
pinMode(buttonPin, INPUT_PULLUP);
//将学号最后三位写入AT24C02存储器
Wire.beginTransmission(EEPROM_ADDR);
Wire.write(0x00); //存储器地址
Wire.write(STUDENT_ID % 1000); //学号最后三位
Wire.endTransmission();
//初始化LCD
lcd.begin(16, 2);
lcd.clear();
}
void loop() {
//读取存储器中的数据,并将其显示在LCD上
Wire.beginTransmission(EEPROM_ADDR);
Wire.write(0x00); //存储器地址
Wire.endTransmission();
Wire.requestFrom(EEPROM_ADDR, 1); //读取一个字节数据
if (Wire.available()) {
count = Wire.read(); //读取数据
}
if (lastCount != count) { //只有计数器发生变化时才更新LCD显示
lcd.setCursor(0, 0);
lcd.print("Student ID: ");
lcd.print(count);
lastCount = count;
}
//按键控制数字加1
if (digitalRead(buttonPin) == LOW) { //按键被按下
count++;
if (count > 999) { //计数器最大值为999
count = 0;
}
//将加1后的数字写入AT24C02存储器
Wire.beginTransmission(EEPROM_ADDR);
Wire.write(0x00); //存储器地址
Wire.write(count); //加1后的数字
Wire.endTransmission();
delay(100); //延时去抖
}
}
```
需要注意的是,该代码只是一个示例,实际应用中需要根据具体的硬件和软件平台进行相应的修改和调试。同时,还需要充分测试和验证代码的正确性和稳定性,以确保其能够正常运行。