sábado, 19 de febrero de 2011

KEYPAD Y LCD

En el post anterior les mostré las rutinas para en manejo de un LCD y algunos ejemplos del manejo de dichas rutinas. Descargar

Ahora les mostrare la rutina de escaneo de un KEYPAD 4x4 y mostrar la tecla presionada en el LCD.
Editando esta línea “.EQU    PUERTO_KEY = PORTA” se puede cambiar el puerto que se usara para el KEYPAD. Al final de de éste archivo se encuentra la tabla con los valores ASCII de cada tecla. La rutina espera que la tecla sea soltada y retorna el valor en R16.

keypad

Además de las macros usadas en el post anterior usaremos ésta otra macro:

macros1

Ahora mostrare un ejemplo de su funcionamiento.

keypadeje

Esta rutina muestra los mensajes MENSAJE_1, MENSAJE_2, MENSAJE_3 y MENSAJE_4 y luego de esperar una tecla limpia el LCD, luego posiciona el puntero del LCD a la línea 1 y espera una tecla y la muestra. Luego de 20 teclas pasara a la siguiente línea.

key1

key2

La siguiente figura muestra como usar otro tipo de teclado.

key3

En el programa solamente deberán cambiar lo siguiente.

key4

Eso es todo por ahora, espero estos ejemplos los ayuden.


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…