|
Descripción: En un tema anterior, se dieron las bases para programar en C dispositivos como LEDS, microswitches y relevadores. En esta sección, se proporcionan las funciones necesarias para manejar un display LCD de 16 x 1, para el microcontrolador 16F88, utilizando los compiladores de HITECH y CCS. Contamos con dos librerías universales que incluyen todas las funciones para el manejo del LCD, teclado y retrasos (delay). Para HITECH, use key34.h, para CCS, use key3.h Todas las funciones están basadas en el diagrama electrónico y la asignación de señales proporcionados en este vínculo y coincide con el conector del sistema EB88 de 8 pines. Si el programador necesita modificar la asignación de señales en el 16F88, puede hacerlo cambiando los datos en las funciones. |
MANEJO DEL CURSOR EN EL LCD: Es importante recordar que el LCD 16 x 1 está organizado electrónicamente en 2 secciones de 8 caracteres cada una. El renglón 0 está formado por las primeras 8 celdas y el renglón 1 por las siguientes 8. Para identificar una celda, usamos el siguiente formato: (0,3) significa renglón 0, celda 3; (1,7) renglón 1, celda 7, etc. Si deseamos escribir en las 16 celdas del LCD, usamos la función GotoXY( ), para el compilador HiTech ó cursorXY( ) para el compilador CCS para posicionar el cursor en el renglón deseado, antes de enviar los caracteres. Las funciones que se proporcionan para cada compilador son las siguientes: |
FUNCION |
DESCRIPCION |
InitIO( ) | Envía los comandos para inicializar el LCD. El cursor se posiciona en (0,0). |
ClearScreen( ) | Pone las 16 celdas del LCD en blanco. |
GotoXY(1,5) | Posiciona el cursor en el renglón 1, celda 5 |
PrintString("ANSI C") | Escribe el texto entrecomillado, iniciando en la celda en donde se encuentre posicionado el cursor. Máximo 8 caracteres. |
PrintString(wob) | La función acepta como parámetro de entrada un string, en este ejemplo de nombre "wob". Escribe en el LCD el contenido del string. Máximo 8 caracteres. Vea el programa de prueba 3 |
PutChar('*') | Escribe el caracter indicado en la posición en donde se encuentre el cursor. Observe que deben usarse diéresis y no comillas. |
PutChar(53); | se envía el código ASCII del número 5, cuyo valor decimal es 53 |
PutChar(x); | se envía al LCD, en un solo caracter, el valor de la variable x, que debe ser un código ASCII. |
DelayMs(100) | Realiza un retraso de 100 milisegundos. El valor máximo es 30,000. |
PROGRAMA DE PRUEBA 1 -En una nueva carpeta guarde los siguientes archivos: HITECHLCD3TINY.c y key33.h El programa escribe un texto de 16 caracteres en el LCD. -Siga el procedimiento detallado en este vínculo: CREAR UN PROYECTO DENTRO DE MPLAB.PDF -Abra el proyecto creado y compile con la opción "build all". Pruebe el archivo .hex en el sistema EVOLUPIC Bootloader 16F88. Microswitches en posición "OFF". PROGRAMA DE PRUEBA 2 -Guarde en la carpeta los siguientes archivos: HITECHLCD5TINY.c y key33.h -El programa utiliza la función PrintString( ), con un string como parámetro de entrada. Muestra en el LCD el valor de una variable entera con signo, la cual es previamente convertida a un string por medio de la función sprintf( ). PROGRAMA DE PRUEBA 3 SCROLLING CIRCULAR EN EL LCD: este programa define un arreglo con formato de strings de 16 caracteres en memoria RAM, lo muestra en el LCD 16 x 1 y realiza un scrolling (corrimiento) circular hacia la derecha. Se utiliza el archivo header universal key34.h el cual realiza las funciones del LCD más rápidamente que el key33.h. Los archivos que debe usted almacenar en su carpeta son: HITECHSCROLLING16TINY.h y KEY34.h Pruebe el programa en EVOLUPIC Bootloader 16F88, insertando el módulo LCD. Microswitches en posición "OFF". |
FUNCION |
DESCRIPCION |
initLCD( ) | Envía los comandos para inicializar el LCD. El cursor va a la posición (0,0). |
clearLCD( ) | Pone las 16 celdas del LCD en blanco. |
cursorXY(1,5) | Posiciona el cursor en el renglón 1, celda 5 |
stringLCD(wib) | En este ejemplo, "wib" es un arreglo con formato de string. La función escribe el string en el LCD. Máximo 8 caracteres. Programa de prueba CCSLCD4.c |
PutLCD('*') | Escribe el caracter indicado entre diéresis en la posición en donde se encuentre el cursor. |
PutLCD(53); | se envía el código ASCII del número 5, cuyo valor decimal es 53 |
PutLCD(x); | se envía al LCD, en un solo caracter, el valor de la variable x, que debe ser un código ASCII. |
PutLCD("1234") | Funciona como la función stringLCD( ), pero sin necesidad de inicializar un arreglo. Envía un caracter tras otro. Ver el programa de prueba 2. |
delay_ms(100) | Retraso de 100 milisegundos. Argumento máximo 1000 milisegundos. |
strcpy(letrero,"AMIGOS") | Es una función suplementaria para el manejo de strings. Almacena en memoria el texto entrecomillado en un arreglo de nombre "letrero". El arreglo tiene formato de "string". Esta función está integrada al compilador CCS, en la librería string.h |
PROGRAMA DE PRUEBA 1: -Genere una carpeta con el nombre "LCD" y almacene allí los siguientes archivos: CCSLCD3TINY.c, key3.h, 16F88.h El programa escribe un texto de 16 caracteres en el LCD. -Siga el procedimiento detallado en este vínculo: CREAR UN PROYECTO DENTRO DE MPLAB.PDF -Abra el proyecto en MPLAB y compile con la opción "build all". El archivo .hex resultante, cárguelo con el programa TINY al sistema EVOLUPIC Bootloader 16F88, conectado a un LCD 16 x 1. -No olvide posicionar todos los microswitches en la posición "OFF" de tal manera que no interfieran con las señales de control del LCD. PROGRAMA DE PRUEBA 2: -Genere una carpeta con el nombre "LCD" y almacene allí los siguientes archivos: CCSLCDSCROLLINGTINY.c, key3.h, 16F88.h El programa escribe un texto de 16 caracteres en el LCD, realizando un corrimiento circular hacia la derecha. -Siga el procedimiento detallado en este vínculo: CREAR UN PROYECTO DENTRO DE MPLAB.PDF -Abra el proyecto en MPLAB y compile con la opción "build all". El archivo .hex resultante, cárguelo con el programa TINY al sistema EB88, conectado a un LCD 16 x 1. -No olvide posicionar todos los microswitches en la posición "OFF" de tal manera que no interfieran con las señales de control del LCD. |
NOTA CON RESPECTO AL USO DE LA FUNCION PutLCD( ): putLCD('*') despliega en el LCD el caracter entre los símbolos de diéresis, en este caso el asterisco. Sin embargo, también es posible usar en el compilador de CCS la misma función para enviar un string: putLCD("123"); //EN CCS, ES SIMILAR A ESCRIBIR:
Esta característica no existe en el compilador de HiTech, el cual usa la función PrintString( ) para realizar la misma tarea. |