OLED Aktualisierung, Vorgehensweise

Ich habe das nun wie folgt gelöst. Ein leichtes Flackern ist zwar noch zu erkennen bei einem Wertewechsel aber das ist zu verkraften.

/*############## Uhrzeit anzeigen ##############*/
  
  
  if(Stunde != now.hour()){          // prüfen, ob sich die aktuelle Stunde (now.hour) geändert hat
    sprintf(s,"%02u", Stunde);
    tft.setTextColor(BLACK);
    tft.setCursor(20, 37);
    tft.print(s);
    sprintf(s,"%02u", now.hour());
    tft.setTextColor(WHITE);
    tft.setCursor(20, 37);
    tft.print(s);
  }else{
    sprintf(s,"%02u", now.hour());
    tft.setCursor(20, 37);
    tft.print(s);
  }

  tft.setCursor(57, 37);
  tft.print(":");

  if(Minute != now.minute()){          // prüfen, ob sich die aktuelle Minute (now.minute) geändert hat
    sprintf(s,"%02u", Minute);
    tft.setTextColor(BLACK);
    tft.setCursor(64, 37);
    tft.print(s);
    sprintf(s,"%02u", now.minute());
    tft.setTextColor(WHITE);
    tft.setCursor(64, 37);
    tft.print(s);
  }else{
    sprintf(s,"%02u", now.minute());
    tft.setCursor(64, 37);
    tft.print(s);
  }

  tft.setCursor(101, 37);
  tft.print(":");

  if(Sekunde != now.second()){          // prüfen, ob sich die aktuelle Sekunde (now.second) geändert hat
    sprintf(s,"%02u", Sekunde);
    tft.setTextColor(BLACK);
    tft.setCursor(108, 37);
    tft.print(s);
    sprintf(s,"%02u", now.second());
    tft.setTextColor(WHITE);
    tft.setCursor(108, 37);
    tft.print(s);
  }else{
    sprintf(s,"%02u", now.second());
    tft.setCursor(108, 37);
    tft.print(s);
  }
 


  Jahr = now.year();
  Monat = now.month();
  Tag = now.day();
  Stunde = now.hour();
  Minute = now.minute();
  Sekunde = now.second();