1. MICROPROCESADORES Y MICROCONTROLADORES I
Las pantallas de cristal líquido LCD o display LCD para mensajes (Liquid Cristal Display)
tienen la capacidad de mostrar cualquier carácter alfanumérico, permitiendo
representar la información que genera cualquier equipo electrónico de una forma fácil y
económica.
La pantalla consta de una matriz de caracteres (normalmente de 5x7 o 5x8 puntos)
distribuidos en una, dos, tres o cuatro líneas de 16 hasta 40 caracteres cada línea.
El proceso de visualización es gobernado por un microcontrolador incorporado a la
pantalla, siendo el Hitachi 44780 el modelo de controlador más utilizado.
UNIDAD III: PANTALLAS LCD
2. MICROPROCESADORES Y MICROCONTROLADORES I
Las características generales de un módulo LCD 16x2 son las siguientes:
· Consumo muy reducido, del orden de 7.5mW
· Pantalla de caracteres ASCII, además de los caracteres japoneses
Kanji, caracteres griegos y símbolos matemáticos.
· Desplazamiento de los caracteres hacia la izquierda o a la derecha
· Memoria de 40 caracteres por línea de pantalla, visualizándose 16
caracteres por línea
· Movimiento del cursor y cambio de su aspecto
· Permite que el usuario pueda programar 8 caracteres
· Pueden ser gobernados de 2 formas principales:
Conexión con bus de 4 bits
Conexión con bus de 8 bits
UNIDAD III: PANTALLAS LCD
4. MICROPROCESADORES Y MICROCONTROLADORES I
El visualizador LCD dispone de tres bloques de memoria:
DDRAM Display Data RAM (RAM de datos de visualización)
CGRAM Character Generator RAM (generador de caracteres RAM)
CGROM Character Generator ROM (generador de caracteres ROM)
UNIDAD III: PANTALLAS LCD
5. MICROPROCESADORES Y MICROCONTROLADORES I
Memoria DDRAM
La memoria DDRAM se utiliza para almacenar los caracteres a visualizar. Tiene una
capacidad de almacenar 80 caracteres. Algunas
localidades de memoria están directamente conectadas a los caracteres en el
visualizador.
Todo funciona muy simple: basta con configurar el visualizador para incrementar
direcciones automáticamente (desplazamiento a la derecha)
y establecer la dirección inicial para el mensaje que se va a visualizar (por ejemplo 00
hex).
Luego, todos los caracteres enviados por las líneas D0-D7 se van a visualizar en el
formato de mensaje al que nos hemos acostumbrado - de
la izquierda a la derecha. En este caso, la visualización empieza por el primer campo de
la primera línea ya que la dirección inicial es 00hex.
Si se envía más de 16 caracteres, todos se memorizarán, pero sólo los primeros 16 serán
visibles. Para visualizar los demás, se debe utilizar
el comando shift. Virtualmente, parece como si el visualizador LCD fuera una ventana,
desplazándose de la izquierda a la derecha sobre las
localidades de memoria con diferentes caracteres. En realidad, así es cómo se creó el
efecto de desplazar los mensajes sobre la pantalla.
UNIDAD III: PANTALLAS LCD
6. MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: PANTALLAS LCD
Si se habilita ver el cursor, aparecerá en la localidad actualmente direccionada. En otras
palabras, si un carácter aparece en la posición del
cursor, se va a mover automáticamente a la siguiente localidad direccionada.
Esto es un tipo de memoria RAM así que los datos se pueden escribir en ella y leer de
ella, pero su contenido se pierde irrecuperablemente al
apagar la fuente de alimentación.
Memoria DDRAM
7. MICROPROCESADORES Y MICROCONTROLADORES I
Memoria CGROM
La memoria CGROM contiene un mapa
estándar de todos los caracteres que se
pueden visualizar en la pantalla. A cada
carácter se le asigna
una localidad de memoria:
UNIDAD III: PANTALLAS LCD
8. MICROPROCESADORES Y MICROCONTROLADORES I
Memoria CGRAM
Además de los caracteres estándar, el visualizador LCD puede visualizar símbolos
definidos por el usuario. Esto puede ser cualquier símbolo
de 5x8 píxeles. La memoria RAM denominada CGRAM de 64 bytes lo habilita.
Los registros de memoria son de 8 bits de anchura, pero sólo se utilizan 5 bits más
bajos. Un uno lógico (1) en cada registro representa un
punto oscurecido, mientras que 8 localidades agrupados representan un carácter. Esto
se muestra en la siguiente figura:
UNIDAD III: PANTALLAS LCD
10. MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: PANTALLAS LCD
Modos de funcionamiento
El LCD tiene 3 modos de funcionamiento principales:
· Modo Comando
· Modo Carácter o Dato
· Modo de lectura del Busy Flag o LCD Ocupada
11. MICROPROCESADORES Y MICROCONTROLADORES I
Conectar al visualizador LCD
-Dependiendo de cuántas líneas se utilizan para conectar un LCD al microcontrolador, hay
dos modos de LCD, el de 8 bits y el de 4 bits. El modo apropiado se selecciona en el inicio
del funcionamiento en el proceso denominado ‘inicialización’.
-El modo de LCD de 8 bits utiliza los pines D0-D7 para transmitir los datos.
-El propósito principal del modo de LCD de 4 bits es de ahorrar los valiosos pines de E/S
del microcontrolador.
-Sólo los 4 bits más altos (D4-D7) se utilizan para la comunicación, mientras que los
demás pueden quedarse desconectados.
-Cada dato se envía al LCD en dos pasos - primero se envían 4 bits más altos
(normalmente por las líneas D4- D7), y luego los 4 bits más bajos. La inicialización habilita
que el LCD conecte e interprete los bits recibidos correctamente.
UNIDAD III: PANTALLAS LCD
13. MICROPROCESADORES Y MICROCONTROLADORES I
Comandos en MikroPro
// Conexiones del módulo LCD
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// Final de las conexiones del módulo LCD
char *text; //definimos una variable llamada text en forma de puntero
UNIDAD III: PANTALLAS LCD
14. MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: PANTALLAS LCD
Comandos en MikroPro
void main() {
INTCON = 0; // Todas las interrupciones deshabilitadas
ANSEL = 0x00; //todos los pines como digitales
ANSELH=0x00;
text = "mikroElektronika"; //definir el primer mensaje
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR); //Comando LCD (borrar el LCD)
Lcd_Out(1,1,text); // Escribir el primer mensaje en la primera línea
text = "LCD ejemplo"; // Definir el segundo mensaje
Lcd_Out(2,1,text); //Escribir el primer mensaje en la segunda línea
}
15. Comando Función
_LCD_FIRST_ROW Mueve el cursor a la 1a. fila.
_LCD_SECOND_ROW Mueve el cursor a la 2a. fila.
_LCD_THIRD_ROW Mueve el cursor a la 3a. fila.
_LCD_FOURTH_ROW Mueve el cursor a la 4a. fila.
_LCD_CLEAR Limpia el display.
_LCD_RETURN_HOME Regresa el cursor a la posición 1,1. Los datos de la RAM no son
afectados.
_LCD_CURSOR_OFF Apaga el cursor.
_LCD_UNDERLINE_ON Coloca el caracter subrayado.
_LCD_BLINK_CURSOR_ON Parpadeo del cursor.
_LCD_MOVE_CURSOR_LEFT Mueve el cursor hacia la izquierda sin cambiar la RAM
_LCD_MOVE_CURSOR_RIGHT Mueve el cursor hacia la derecha sin cambiar el contenido de la
RAM
_LCD_TURN_ON Enciende el display
_LCD_TURN_OFF Apaga el display
_LCD_SHIFT_LEFT Mueve el display hacia la izquierda sin cambiar el contenido de la
RAM
_LCD_SHIFT_RIGHT Mueve el display hacia la derecha sin cambiar el contenido de la
RAM
MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: LISTA DE COMANDOS
16. Ejercicio
1) Diseñar el programa que inicialice un LCD, usando un bus de datos de 4 bits, y a
continuación envié un mensaje de bienvenida. El mensaje debe desplazarse hacia la
izquierda en forma continua.
2) Programa que forme la palabra ‘HOLA’ en un LCD, configurado para utilizar un bus de 4
bits. Las letras deben desplazarse de derecha a izquierda. Primero debe aparecer la H,
moviéndose desde la derecha a la primer columna a la izquierda. Enseguida debe
aparecer la O, también saliendo de la derecha y terminando a la derecha de la letra H. Lo
mismo debe suceder para las letras L y A. El programa debe ser cíclico.
MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: PANTALLAS LCD
17. H
H
H O
H
O
O
H
H
HO
H O L A
L
.
.
.
MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: PANTALLAS LCD
18. MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: PANTALLAS LCD
ByteToStr
Descripcion: Crea una cadena de salida de un pequeño numero sin signo (valor numérico
menos a 0x100). La cadena esta ajustada a un ancho de 3 caracteres; Las posiciones a la
izquierda que no se usan en la conversión se rellenan con espacios.
void ByteToStr(unsigned short number, char *output);
Ejemplo:
unsigned short t = 24;
char txt[4]; //se inicializa un apuntador a 4 espacios
ByteToStr(t, txt); // txt es " 24" (un espacio en blanco)
19. MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: PANTALLAS LCD
ShortToStr
Descripción: Crea una cadena de salida de un numero pequeño con signo (valor
numérico menor a 0x100). La cadena esta ajustada a un ancho de 4 caracteres; Las
posiciones a la izquierda que no se usan en la conversión se rellenan con espacios.
void ShortToStr(short number, char *output);
Ejemplo:
short t = -4;
char txt[5]; // Se inicializa un apuntador de 5
espacios
ShortToStr(t, txt); // txt es " -4" (dos espacio en blanco)
20. MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: PANTALLAS LCD
WordToStr
Descripción: Crea una cadena de salida de un numero sin signo (Valor numérico de una
variable unsigned). La cadena esta ajustada a un ancho de 5 caracteres; Las posiciones a
la izquierda que no se usan en la conversión se rellenan con espacios.
void WordToStr(unsigned number, char *output);
Ejemplo:
unsigned t = 437;
char txt[6]; // Inicializa un apuntador con 6 espacios
WordToStr(t, txt); // txt es “ 437" (dos espacios vacios)
21. MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: PANTALLAS LCD
IntToStr
Descripción: Crea una cadena de salida de un numero con signo (Valor numérico de una
variable int). La cadena esta ajustada a un ancho de 6 caracteres; Las posiciones a la
izquierda que no se usan en la conversión se rellenan con espacios.
void IntToStr(int number, char *output);
Ejemplo:
int j = -4220;
char txt[7]; // Inicializa un apuntador con 6 espacios
IntToStr(j, txt); // txt es " -4220" (un espacio en blanco)
22. MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: PANTALLAS LCD
LongToStr
Descripción: Crea una cadena de salida de un numero con signo (Valor numérico de una
variable long). La cadena esta ajustada a un ancho de 11 caracteres; Las posiciones a la
izquierda que no se usan en la conversión se rellenan con espacios.
void LongToStr(Long number, char *output);
Ejemplo:
int j = -4220;
char *txt=“ “; // Inicializa un apuntador con 6 espacios
IntToStr(j, txt); // txt es " -4220" (un espacio en blanco)
23. MICROPROCESADORES Y MICROCONTROLADORES I
UNIDAD III: PANTALLAS LCD
FloatToStr
Descripción: Crea una cadena de salida de un numero de punto flotante. La cadena
contiene un formato normalizado de un numero (mantisa entre 0 y 1) con signo en la
primera posición. La mantisa esta ajustada a un formato de 6 dígitos, 0.ddddd; Hay
siempre 5 dígitos a continuación del punto decimal.
void FloatToStr(float number, char *output);
Ejemplo:
float ff = -374.2;
char tx[15]; // Inicializa un apuntador con 14 espacios
FloatToStr(ff, txt); // txt es "-0.37420e3"