Módulos LCD
Módulos LCD
7 MDULO LCD
Los mdulos LCD son muy tiles para ver cualquier tipo de informacin. La
pantalla de cristal lquido est conformada por una, dos o cuatro lneas de 8, 16, 20, 24
40 caracteres de 5x7 pixels c/u. Los ms comunes son los mdulos LCD de 16x2,
16x4, con y sin backlight). La figura 2.10 a, muestra una vista de mdulo LCD 16 x2 de
16 pines (los pines 15 y 16 corresponden al backlight, control de luz de fondo). Las
conexiones para controlar el contraste y el backlight del LCD se indican en la figura
2.10 b. Dependiendo el puerto que se utilice los dems pines se conectan al
microcontrolador como veremos ms adelante.
Dnde:
n es opcional y puede ser:
1-9 especifica el nmero de caracteres.
01-09 indica la cantidad de ceros a la izquierda.
1.1-9.9 para punto flotante.
t puede indicar un: carcter c, cadena o caracteres, entero sin signo u, entero con
signo d, entero largo sin signo Lu, Entero largo con signo Ld, entero hexadecimal
(minsculas) x, entero hexadecimal (maysculas) X, entero largo hexadecimal
(minsculas) Lx, entero largo hexadecimal (maysculas) LX, flotante con truncado f,
flotante con redondeo g, flotante el forma exponencial e, entero sin signo con decimales
insertados w.
PROGRAMA:
#include <18f4550.h>
//Librera para usar el PIC18F4550.
#fuses HS, NOPROTECT, NOWRT, NOPUT, NOWDT //Configuracin de fusibles.
#use delay (clock=12000000) // FOSC =12MHz.
#include <lcd.c>
//Librera lcd.c
set_tris_d(0x00);
//Identificador para el puerto d como salida.
void main(void)
//Funcin principal main.
{
lcd_init();
// Inicializa el LCD.
lcd_gotoxy(4,1);
//Sita el cursor en columna 4, fila 1.
lcd_putc("HOLA MUNDO!!\n LCD en CCS"); // Escribe en el LCD.
}
Para cambiar el cursor de una lnea a otra o posicionar en una columna distinta
la instruccin lcd_gotoxy(x,y); es de mucha utilidad. En el presente ejercicio se tiene el
mismo resultado si se escribe el cdigo as:
lcd_gotoxy(4,1);
//Sita el cursor en columna 4, fila 1.
lcd_putc("HOLA MUNDO!! "); //Escribe en el LCD.
lcd_gotoxy(4,2);
//Sita el cursor en columna 4, fila 2.
lcd_putc(LCD en CCS");
// Escribe en el LCD.
Para los puertos A y C puede modificar en las instrucciones del mismo archivo
como se indica:
#if defined use_portb_lcd
//#locate lcd = getenv("sfr:PORTB")
#define set_tris_lcd(x) set_tris_b(x)
#else
//#locate lcd = getenv("sfr:PORTD")
#define set_tris_lcd(x) set_tris_d(x)
Como ya se indic, para utilizar el puerto B se modific el fichero lcd.c y se
renombr por lcdb.c para no afectar al original para usar en este ejercicio. Para el puerto
B se deben conectar como se indica en la tabla 2.9.
PUERTO
BO
B1
B2
B3
B4
B5
B6
B7
LCD
ENABLE
RS
RW
NO UTILIZADO
D4
D5
D6
D7
void main(void)
{
char y=1;
signed char x=16;
lcd_init();
while(TRUE){
//Bucle inicio.
lcd_gotoxy(x,y) ;
//Ubica cursor para escribir mensaje.
lcd_putc(mensaje ) ;
//Muestra por pantalla el mensaje.
delay_ms(150);
//Retardo 150 ms.
x++;
//Incremento ndice de columnas.
if(x>-16){ //Se ha mostrado mensaje entero en la primera fila?.
x=16;
//SI, ndice columna x=-16, para que inicie el ltimo carcter en la
// primera posicin.
y++;
//Incremento ndice fila (mostrar texto en segunda columna).
if(y>2) //Se ha mostrado mensaje por segunda fila?.
y=1;
//SI, restaurar ndice de fila.
}
lcd_putc("\f" ) ;
//Borra pantalla.
}
//Bucle infinito.
}
//Fin del main.
Figura 2.15. Captura parte del resultado del desplazamiento del texto a la izquierda.
Movimiento de texto a la derecha
Aunque el movimiento de texto a la derecha no es muy comn dejar escrito el
cdigo para realizar este desplazamiento. El lector puede realizar el anlisis del cdigo y
comprobar el funcionamiento ya sea en el simulador o armando el circuito con los
componentes reales.
Ejercicio 2.16. Desplazamiento del texto hacia la derecha.
PROGRAMA:
//MOVIMIENTO DE TEXTO HACIA LA DERECHA
#include <18f4550.h>
//Librera para usar el PIC18F4550.
#fuses HS,NOWDT,NOPROTECT,NOPUT, NOLVP //Configuracin de fusibles.
#use delay (clock=12000000) // FOSC = 12 MHz.
#include <lcd.c>
//Librera para el manejo del LCD.
const char mensaje[]= {"electromicrodigital"};
//Mensaje a desplegarse en el LCD.
void main(void)
{
char y=1;
signed char x=-16;
lcd_init();
while(TRUE){
//Inicio del bucle.
lcd_gotoxy(x,y) ; //Ubica cursor para escribir mensaje.
lcd_putc(mensaje ); //Muestra por pantalla el mensaje.
delay_ms(150);
//Retardo de 150 ms.
x++;
//Incremento ndice de columnas.
if(x>16){
//se ha mostrado mensaje entero en la primera fila?
x=-16;
//SI, ndice columna x=-16, para que inicie el ltimo carcter en la
//primera posicin.
y++;
//incremento ndice fila (mostrar texto en segunda columna).
if(y>2)
//se ha mostrado mensaje por segunda fila?.
y=1;
//SI, restaurar ndice de fila.
}
lcd_putc("\f" ) ;
//Borra pantalla.
}
//Bucle infinito.
}
//Fin del bucle main.