申贝丰 2025-03-04 00:25 采纳率: 33.3%
浏览 17

数码管显示内容如何存入EEPROM

下面代码是数码管的按键显示0-9的程序 ,我想在按键时把显示的数字存到EEPROM中,应该怎么改。


int pushButton=13; 
int beforeState=0;//检测上一次按下是否松开
int buttonState=0;//初始值为0
int presstime=0;//记录按了几次
int a=5;
int b=7;
int c=9;
int d=11;
int e=10;
int f=6;
int g=8;
 
void setup()
{
pinMode(pushButton, INPUT);
int i;
for(i=5;i<=11;i++)
pinMode(i,OUTPUT);
}
int numTable[10][8]=
{
  { 1,1,1,1,1,1,0,0},
  { 0,1,1,0,0,0,0,0},
  { 1,1,0,1,1,0,1,0},
  { 1,1,1,1,0,0,1,0},
  { 0,1,1,0,0,1,1,0},
  { 1,0,1,1,0,1,1,0},
  { 1,0,1,1,1,1,1,0},
  { 1,1,1,0,0,0,0,0},
  { 1,1,1,1,1,1,1,0},
  { 1,1,1,1,0,1,1,0},
};
void loop() 
{ int buttonState=digitalRead(pushButton);  
 if(buttonState==1&&beforeState==0)
 {
  presstime++;
 if(presstime==10)
 {presstime=0;}
 }
 digitalWrite(a,numTable[presstime][0]);
 digitalWrite(b,numTable[presstime][1]);
 digitalWrite(c,numTable[presstime][2]);
 digitalWrite(d,numTable[presstime][3]);
 digitalWrite(e,numTable[presstime][4]);
 digitalWrite(f,numTable[presstime][5]);
 digitalWrite(g,numTable[presstime][6]);
 beforeState=buttonState;
 delay(50);
}
 
 

展开全部

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-03-04 00:25
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    你可以使用EEPROM库来存储数据。首先,需要包含EEPROM库:

    #include <EEPROM.h>
    

    然后,在按键按下时,读取当前显示的数字,并将其存储到EEPROM中:

    void loop() {
      int currentState = digitalRead(pushButton);
      if (currentState == HIGH && beforeState == LOW) {
        // 读取当前显示的数字
        int displayNumber = // 读取当前显示的数字
        // 将数字存储到EEPROM中
        EEPROM.write(0, displayNumber);
        EEPROM.commit();
      }
      beforeState = currentState;
    }
    

    在上面的代码中,我们使用EEPROM.write()函数将数字存储到EEPROM中,EEPROM.commit()函数将写入的数据commit到EEPROM中。

    如果你想读取EEPROM中的数据,可以使用EEPROM.read()函数:

    int readNumber = EEPROM.read(0);
    

    这将读取EEPROM中的第一个字节的数据,并将其存储到readNumber变量中。

    注意:EEPROM的地址空间是从0开始的,所以EEPROM.write(0, displayNumber)将存储到EEPROM的第一个字节中。

    评论
  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-03-04 00:25
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    要实现把显示的数字存到EEPROM中,可以在按键按下并且数字显示完毕后,将当前数字写入EEPROM中。具体步骤如下:
    1. 在setup函数中初始化EEPROM: EEPROM.begin(1);
    2. 在loop函数中,在数字显示完毕后,添加如下代码实现将数字存入EEPROM:
    if(buttonState == 0 && beforeState == 1) {
      EEPROM.write(0, presstime);
      EEPROM.commit();
    }
    
    1. 添加恢复数字的逻辑:在setup函数中添加如下代码实现从EEPROM恢复数字:
    presstime = EEPROM.read(0);
    

    这样就能实现将按键显示的数字存储到EEPROM中。

    评论
  • 码农阿豪@新空间 Java领域优质创作者 2025-03-04 00:31
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    要将显示的数字存储到EEPROM中,需要在按键按下时进行EEPROM的写入操作。下面是修改后的代码:
    #include <EEPROM.h>
    int pushButton = 13; 
    int beforeState = 0;
    int buttonState = 0; 
    int presstime = 0; 
    int a = 5, b = 7, c = 9, d = 11, e = 10, f = 6, g = 8; 
    void setup() {
      pinMode(pushButton, INPUT);
      int i;
      for(i = 5; i <= 11; i++) pinMode(i, OUTPUT);
    }
    int numTable[10][8] = {
      {1, 1, 1, 1, 1, 1, 0, 0},
      {0, 1, 1, 0, 0, 0, 0, 0},
      {1, 1, 0, 1, 1, 0, 1, 0},
      {1, 1, 1, 1, 0, 0, 1, 0},
      {0, 1, 1, 0, 0, 1, 1, 0},
      {1, 0, 1, 1, 0, 1, 1, 0},
      {1, 0, 1, 1, 1, 1, 1, 0},
      {1, 1, 1, 0, 0, 0, 0, 0},
      {1, 1, 1, 1, 1, 1, 1, 0},
      {1, 1, 1, 1, 0, 1, 1, 0},
    };
    void loop() {
      int buttonState = digitalRead(pushButton);   
      
      if(buttonState == 1 && beforeState == 0) {
        presstime++;
        if(presstime == 10) {
          presstime = 0;
        }
        EEPROM.write(0, presstime); // Write the current digit to EEPROM
      }
      
      digitalWrite(a, numTable[presstime][0]);
      digitalWrite(b, numTable[presstime][1]);
      digitalWrite(c, numTable[presstime][2]);
      digitalWrite(d, numTable[presstime][3]);
      digitalWrite(e, numTable[presstime][4]);
      digitalWrite(f, numTable[presstime][5]);
      digitalWrite(g, numTable[presstime][6]);
      
      beforeState = buttonState;
      delay(50);
    }
    

    在以上代码中,当按键按下时,将当前的数字presstime写入EEPROM的地址0。每次按下按键时,将当前数字保存到EEPROM中。这样可以在下次开机时从EEPROM中读取之前保存的数字。

    展开全部

    评论
  • 明天起飞吧~~ 2025-03-07 19:28
    关注

    按键结束后,按下确定键,并执行存入eeprom函数

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部