¿Orientación? Claro ... no lo traigas a la escuela.
Con toda seriedad, si está utilizando el RTC, esto es bastante simple, ya que no tiene que preocuparse por mantener el tiempo. La visualización del tiempo podría ser simplemente un ciclo de conveniencia que consulta el RTC y luego actualiza la pantalla. Parece que su pantalla también está orientada a comandos en lugar de algo que necesita multiplexar explícitamente como un LED de 4 dígitos de 7 segmentos.
En términos de configurar el reloj, un enfoque sería considerar el concepto de Máquina de estados finitos .
Sin embargo, en el nivel más simple, podría tener lógica que verifique si se presiona un solo botón de "ajuste". Si es así, entonces el tiempo se adelanta en una unidad de tiempo más rápido que el real y se muestra, se espera una demora de una fracción de segundo y el ciclo se repite.
Ese retraso posterior tendrá el beneficio de las dos cosas de estimulación para el usuario y de la solución del problema contact bounce
simplemente ignorando el botón un poco después de cada vez que concluyas que está (aún) presionado.
Un diseño más refinado podría ofrecer un botón tanto rápido como lento. O puedes construir un botón de aceleración en el que el retraso comience durante mucho tiempo y se reduzca al mínimo a medida que se mantenga presionado el botón.
En un extremo, puede proporcionar botones individuales hacia arriba y hacia abajo durante horas y minutos, o incluso para cada dígito de cada uno.
O puede crear un esquema más con estado, donde tiene un botón de selección de dígitos que cambia los dígitos que parpadean, y un botón de incremento que incrementa el dígito seleccionado.
Un proyecto más avanzado sería hacer todo esto con MCU y sus temporizadores en chip, sin el chip RTC. Potencialmente podría incluso hacerlo desde el oscilador de baja velocidad que corre desde un cristal de reloj.