Animación en pantallas de LCD

Para lograr hacer una animación necesitamos:

1.- Un medio donde dibujar.

2.- Varios dibujos para realizar la animación.

3.- Una base de tiempos que nos permita pasar de un dibujo a otro y se vea la animación.

Si contamos con una pantalla de LCD, ya tenemos el medio donde dibujar y si a eso le agregamos que tenemos un espacio de memoria CGRAM donde podemos dibujar lo que queremos, ya tenemos los 2 primeros puntos.

Diseñemos las imágenes en CGRam, en este caso, dibujemos 2 caritas, una feliz y una triste.

En la siguiente figura se ve como quedarían las imágenes, tanto dirección CGRam y dato a almacenar.

Podemos colocar el cursor en la posición de casa y cada 500 mS cambiar la carita.

Para eso debemos mandar llamar el caracter 0 y regresar el cursor a casa para poder mandar llamar el caracter 1 en la misma posición y volver a regresar el cursor a casa.

El tercer punto lo podemos obtener con un micro, pero debemos establecer que tiempo debe permanecer cada dibujo en pantalla.

Para ello, escogeremos un tiempo de 500 mS entre imagen e imagen.

Para lograr esto, cada micro cuenta al menos con un timer/contador.

Tomemos como ejemplo los micros de la familia de microchip, el Pic16F84, el Pic16F877A y el Pic16F887, por ser los más utilizados en mi escuela.

Observando las hojas de datos de estos micros, observamos que tienen en común el timer 0.

Tomando como base este timer 0, vemos que cuenta con un registro de 8 bits y un preescaler de 8 bits.

Lo que nos permite tener una cuenta máxima de hasta 65,536 pulsos.

Si utilizamos un cristal de cuarzo de 4 MHz como fuente para el oscilador, obtenemos una frecuencia de trabajo de 1 MHz o un tiempo de ejecución por instrucción de 1 uS.

Con estas consideraciones podríamos escoger que el timer 0 nos avisara cada vez que llega a una cuenta de 50 mS.

Para ello necesitamos configurar el timer 0 con las siguiente opciones:

1.- Selección de la fuente de señal --> Reloj interno.

2.- Preescaler asignado al timer 0 y selección a 256.

3.- Habilitar interrupción en timer 0 por overflow.

Los valores y registros que nos permiten configurar el timer 0 son:

el registro OPTION_REG con el valor B'11010111'

el registro INTCON con el valor B'10100000'

el registro TMR0 con el valor B'00111101'

y en la sección de interrupción la rutina de servicio de timer 0 debe realizar las siguientes tareas:

1.- Borrar la bandera de interrupción en el registro INTCON.

2.- Volver a cargar el registro TMR0 con el valor 61.

3.- Checar si ya pasaron los 500 mS para cambiar de imagen en la pantalla de LCD.