eeprom存储键盘值,并用数码管显示出键值对应的十进制数,实验代码
时间: 2024-05-05 08:17:58 浏览: 53
可以看一下下面的代码实现:
```c
#include <EEPROM.h>
int digitToSegment[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; // 数码管显示的对应关系
int addr = 0; // EEPROM 存储地址
void setup() {
pinMode(A0, INPUT); // 设置 A0 作为输入引脚
for (int i = 2; i < 10; i++) { // 设置 8 个引脚为输出
pinMode(i, OUTPUT);
}
}
void loop() {
int val = analogRead(A0); // 读取 A0 引脚输入的电压值
EEPROM.write(addr, val); // 将数值 val 存储在 EEPROM 内存中
int numToDisp = EEPROM.read(addr); // 从 EEPROM 内存中读取存储的键值
int digits[4] = {0}; // 数码管的显示位
for (int i = 0; i < 4; i++) { // 将数字拆解成四位数字
digits[i] = numToDisp % 10;
numToDisp /= 10;
}
for (int i = 0; i < 4; i++) { // 逐个显示数码管对应数字
digitalWrite(i + 2, HIGH); // 选择对应的数字
digitalWrite(10, digitToSegment[digits[i]]); // 显示对应的数值
delay(1); // 等待一段时间
digitalWrite(i + 2, LOW); // 取消选择的数字
}
addr++; // 存储的地址加 1
if (addr == EEPROM.length()) { // 判断存储的地址是否溢出
addr = 0; // 如果溢出,地址归零
}
}
```
上面的代码可以实现如下功能:将接收到的键盘值通过 EEPROM 存储,每次从 EEPROM 中读取一个键值并转换为对应的四位十进制数码管显示。如果 EEPROM 存储的地址到达了末尾,则地址从头开始循环。
阅读全文