将学号最后三位写入开发板的AT24C02存储器,并读出来显示在数码管上, 按键控制数字加1代码
时间: 2024-02-23 19:02:21 浏览: 18
好的,以下是一个基于Arduino开发板的示例代码,实现将学号最后三位写入AT24C02存储器,读取存储器中的数据,并将其显示在数码管上,使用按键控制数字加1的功能。
```
#include <Wire.h>
#include <TM1637.h>
#define CLK 2 //数码管时钟引脚
#define DIO 3 //数码管数码引脚
TM1637 display(CLK, DIO);
#define EEPROM_ADDR 0x50 //AT24C02存储器地址
#define STUDENT_ID 123456 //学号
int buttonPin = 4; //按键引脚
int count = 0; //计数器,用于存储数码管显示的数字
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();
//初始化数码管
display.setBrightness(0x0f);
display.clear();
}
void loop() {
//读取存储器中的数据,并将其显示在数码管上
Wire.beginTransmission(EEPROM_ADDR);
Wire.write(0x00); //存储器地址
Wire.endTransmission();
Wire.requestFrom(EEPROM_ADDR, 1); //读取一个字节数据
if (Wire.available()) {
count = Wire.read(); //读取数据
}
if (lastCount != count) { //只有计数器发生变化时才更新数码管显示
display.showNumberDec(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); //延时去抖
}
}
```
需要注意的是,该代码只是一个示例,实际应用中需要根据具体的硬件和软件平台进行相应的修改和调试。同时,还需要充分测试和验证代码的正确性和稳定性,以确保其能够正常运行。