Practica #4 (Escribir en una LCD) *La LCD es algo muy sencillo aunque tiene varias instrucciones, pero todas ellas son fáciles de aprender y combinar. La LCD que manejaremos es una de 2 x 16, conectada a 4 bits. 1. La librería de la LCD que esta incluida en el compilador esta hecha para que la LCD se trabaje en el puerto D, pero nuestro micro no tiene puerto D, por este motivo vamos a utilizarla en el puerto B. Pero antes de hacer eso vamos a decirle al programa que vamos a utilizar la LCD de lo contrario al escribir alguna instrucción que tenga algo que ver con la LCD este nos va a marcar error: #include <lcd.c> Esta instrucción es la que indica que vamos a utilizar la LCD, pero el programa todavía nos sigue marcando error porque no le hemos indicado que vamos a utilizar el puerto B; antes de incluir la librería de la LCD escribimos lo siguiente: #define use_portb_lcd true #include <lcd.c> Esto indica que vamos a utilizar la LCD en el puerto B. Pero estas dos instrucciones nuevas van después de las ya conocidas: #include <18f2550.h> #use delay(clock=8000000) #define use_portb_lcd true #include <lcd.c>
2. Ahora tenemos que agregar algo nuevo dentro de la función principal, la siguiente instrucción siempre la tendremos que colocar cada ves que utilicemos la LCD si la omitimos el programa nunca funcionara así todo este bien: lcd_init(); Esta instrucción inicia la LCD para que este pendiente de cualquier instrucción que reciba. Nuestro programa va de la siguiente forma #include <18f2550.h> #use delay(clock=8000000) #define use_portb_lcd true #include <lcd.c> void main (void) { lcd_init(); while(true) { } }
3. A continuación explicare las instrucciones utilizadas en una LCD antes de empezar a escribir el programa: *lcd_putc(„a‟); podemos escribir en la LCD cualquier letra, numero o simbolo encerrándola en comillas sencillas y dentro de los paréntesis, de esta manera solo se puede escribir un solo caracter, si se escriben mas de dos marca error.
*lcd_putc(“Marlon Gomez”); cuando utilizamos comillas dobles podemos escribir palabras completas procurando no exceder el limite de caracteres admitidos por la LCD. En esta instrucción podemos agregar algunos términos que se usan para borrar la pantalla o para cambiar de línea cuando se esta escribiendo, esto se hace asi: lcd_putc(“\F”); esta instrucción borra la pantalla y la pone en blanco, pero también la podemos usar en conjunto con cualquier frase ejemplo: lcd_putc(“\FMarlon Gomez”); primero borra la pantalla y luego si escribe mas adelante usaremos esta instrucción. Y también podemos escribir en las dos líneas de la LCD de la siguiente manera: lcd_putc(“\n”); cuando colocamos esto significa que lo siguiente que vayamos a escribir en la LCD será en la segunda línea, ejemplo: lcd_putc(“Marlon \n Gomez”); la palabra Marlon se escribe en la primera línea y Gomez se escribe en la segunda línea, porque esta después del \n. *printf(lcd_putc,"Marlon Gomez”); de esta forma también se pueden escribir palabras, pero esta instrucción se usa para visualizar valores de variables, sin importar el cambio constante de la variable. Ejemplo, si se tiene un sensor de temperatura podemos almacenar el valor leído por el sensor en una variable y visualizarlo en una LCD: printf(lcd_putc,”Temperatura=” “%u”,variable1); de esta forma visualizamos el valor de la variable1 en la LCD, por lo tanto si la temperatura leida por el sensor cambia, lo que se visualiza en la LCD también cambia; aclaro que al utilizar “%u” esta limitando a usar variables de 8 bits, si es variable de 16 bits seria “%%u”, si es una variable tipo float “%F”. *lcd_gotoxy(x,y); con esta instrucción podemos escoger en que línea y en que posición deseamos empezar a escribir, X indica la posición en nuestro caso podemos escoger de 1 a 16, y Y indica la línea donde se va a escribir nosotros solo tenemos dos líneas, ejemplo: lcd_gotoxy(5,1); escribimos en la posición 5 y en la primera línea. Esta instrucción la agregamos antes de escribir cualquier carácter o palabra. Ejemplo: lcd_gotoxy(4,2); lcd_putc(“Marlon Gomez”); Esas son las instrucciones mas utilizadas a la hora de trabajar una LCD, trataremos de utilizar todas estas en este programa; ya conociendo todo comencemos a escribir el programa.
4. Como habíamos dicho al principio nuestro programa va de la siguiente forma: #include <18f2550.h> #use delay(clock=8000000) #define use_portb_lcd true #include <lcd.c> void main (void) { lcd_init(); while(true) { } } Vamos a combinar todas las instrucciones vistas anteriormente; iniciemos con escribir cualquier palabra en una posición determinada, asi:
lcd_gotoxy(4,1); lcd_putc(“Practica #4”); Lo escribimos en la posición 4 para tratar de que quede centrado, ahora escribamos algo en la segunda línea, podemos hacerlo de las dos formas ya vistas: lcd_gotoxy(3,2); lcd_putc(“Pantalla LCD”); Ahora agregamos un retardo para poder visualizar esto y después borrar la pantalla y escribir otra cosa. delay_ms(4000); lcd_putc(“\F”); Todo lo anterior es la presentación del programa por lo tanto no es necesario agregarlo dentro del while, lo podemos colocar antes del while. Ya borramos la pantalla y vamos a realizar un conteo sencillo y visualizarlo: lcd_putc(“Conteo:\n”); ++x; delay_ms(1000); printf(lcd_putc,”*” “%u “,x); Escribimos Conteo: en la primera línea y le dimos la orden que después de esto escribiera en la segunda línea, agregamos la variable x y esta va aumentando de uno en uno con un retardo de un segundo, luego escribimos un asterisco ( * ) y el valor que tenga la x va a ser visualizado en la segunda línea.
5. Ya tenemos todo el programa ahora vamos a ordenarlo: #include <18f2550.h> #use delay(clock=8000000) #define use_portb_lcd true #include <lcd.c> int x; void main (void) { lcd_init(); lcd_gotoxy(4,1); lcd_putc(“Practica #4”); lcd_gotoxy(3,2); lcd_putc(“Pantalla LCD”); delay_ms(4000); lcd_putc(“\F”); while(true) { lcd_putc(“Conteo:\n”); ++x; delay_ms(1000); printf(lcd_putc,”*” “%u “,x); } } Como la variable que utilizamos es de 8 bits el conteo solo va a ser de 0 hasta 255, si queremos aumentar el conteo solo tenemos que cambiar la variable por una de 16 bits o la que queramos.