Estoy haciendo un diseño de matriz LED de 16 filas X 32 columnas basado en PIC MCU & La multiplexación de la pantalla se realiza en el ISR. A una velocidad de 1 ms Tengo acceso al ISR & actualizar cada fila en cada interrupción. Para un marco, tomará 1 ms X 16 = 16 ms.
En el código principal hago patrones de movimiento (Ej .: letras en movimiento). Tengo un tiempo de fotograma de 16mS. Si quiero hacer una animación como, por ejemplo, quiero mover un personaje de la pantalla de derecha a izquierda, necesito un retraso de desplazamiento (en mis palabras, el llamado retraso de animación).
Genero este retraso al contar los fotogramas. Por ejemplo, utilizo un retardo de 48 ms que es 3 veces el tiempo de fotograma.
Left Shift(); ; make shift bits on display register (or in inactive buffer)
Delay(48mS); ; call a delay (shift delay)
Left Shift();
Delay(48mS);
Left Shift();
Delay(48mS);
Left Shift();
Delay(48mS);
Left Shift();
Delay(48mS);
Lo anterior desplazará una imagen 5 pasos a la izquierda. Vea la imagen adjunta. Estoy moviendo la letra "A" a la izquierda, llamada animación.
El problema es que mientras se mueve veo varios LED que se mueven ligeramente. ¿Cómo superar la situación anterior?