miércoles, 16 de febrero de 2011

MANEJO DE LCD ALFANUMERICO

Teniendo en cuenta la importancia que tiene mostrar determinada información cuando se hace diseños en base a uC´s  hoy les daré las rutinas necesarias para el manejo de un LCD y algunos ejemplos de su uso. Descargar
En la siguiente figura se muestran las macros que se usaran mas adelante.

macros

- SETZ setea un valor al puntero Z (ZH:ZL ó R31:R30).
- PUTC imprime un carácter.
- PUTV imprime el valor de un registro.
- CMD_LCD envía un comando al LCD.
- PRINTF_LCD imprime un string ( debe estar almacenado en la flash ). Éste string debe terminar en un 0.

Ahora pasare a mostrar la rutina de comunicación con el LCD.

En ésta primera parte de la rutina de muestra las definiciones de algunas variables y algunas constantes. Cuando se quiera usar un puerto diferente del predefinido ( PORTC ) solamente se debe cambiar esta línea “PUERTO_LCD = PORTC”, aquí se deberá poner el puerto que se usara para manejar el LCD.

lcd1

En la siguiente figura se muestra lo restante del archivo LCD.asm.

lcd2

En éste momento no tengo mucho tiempo para explicar estas rutinas, si tienen alguna pregunta por favor escríbanme.
Tanto las rutinas del archivo LCD.asm como el programa principal necesitan la rutinas de retardo, en éste caso pueden usar las rutinas dadas en post pasados ( si no la encuentran me escriben y les enviare el archivo RETARDOS.asm).
Pasaremos a mostrar unos ejemplos muy sencillos del uso de estas rutinas.

ej1

En la simulación veremos lo siguiente:

figej1

En el siguiente ejemplo se llena el LCD con parte del codigo ASCII.

ej2

El ejecución del ejemplo anterior nos mostrara los siguiente:

figej2

Por último mostrare un ejemplo en el cual se imprimirá un string definido en la flash.

ej3

Luego de la simulación veremos los siguiente:

figej3

Buenos amigos, espero les sea útil la información…

2 comentarios:

  1. estaba observando como estructuraste tu programa y me di cuenta de que "CHAR" lo tienes como registro bajo R11
    Como es que puedes usar la instruccion LDI con el?

    Atte:Jahir

    ResponderEliminar
  2. LDI nunca la uso con R11, el valor lo cargo en R16 y luego hago un MOV hacia R11.

    ResponderEliminar