Pantallas de Cristal LquidoDisplay LCD (Liquid Crystal Display)
Muestran cualquier carcter alfanumrico, permitiendo representar cualquier informacin que se genere
Consta de una matriz de caracteres (normalmente de 5x7 puntos) distribuidos en una, dos, tres o cuatro lneas de 16 hasta 40 caracteres cada lnea.
LCD Serial
LCD para Grficos
LCDEl proceso de visualizacin es gobernado por un microcontrolador incorporado a la pantalla
(el modelo ms utilizado es el Hitachi 44780)
El modelo utilizado en el libro es el LM016L
(mdulo de 2 lneas de 16 caracteres cada una)
Su fcil manejo es ideal para dispositivos que necesitan una capacidad de visualizacin pequea o media
La explicacin siguiente se refiere al modelo LM0I6L
(con pequeas variaciones es vlido para cualquier otro)
LCD
Caractersticas del Mdulo LMOI6L+ 5V con consumo reducido 7,5 mW
Pantalla de caracteres ASCII, adems de caracteres griegos, japoneses (Kanji), y smbolos matemticos
Memoria de 40 caracteres por lnea, visualizndose 16 caracteres por lnea
Pueden ser gobernados de dos formas:Conexin con bus de 4 bitsConexin con bus de 8 bits
Caractersticas del Mdulo LMOI6LMovimiento del cursor y cambio de su aspecto
Ocho caracteres programables por el usuario
Desplazamiento de caracteres a la izquierda o a la derecha
La regulacin de contraste se realiza mediante un divisor de voltaje con una resistencia ajustable entre 10k y 20k en el pin VLC
Puede eliminarse la resistencia y conectar VLC a tierra para fijar el mximo contraste permanentemente
Patillaje de 14 Pins
LMO16LLas lneas del bus de datos son triestados y pasan a estado de alta impedancia cuando no est habilitado.
SEALDEFINICINPINESFUNCINDBO....DB7Data Bus7.... 14Bus de Datos.EEnable6E0, LCD no habilitado. E=I, LCD habilitado.R/WRead/Write5R/W=O, escribe en LCDR/W=1, lee del LCD.RSRegister Select4R/S=O, Modo ComandoR/S=1, Modo Carcter.VLCLiquid Crystal Driving Voltage3Tensin para ajustar el contraste.VDDPower Supply Voltage2Tensin de alimentacin, +5VVSSGround1Masa.
DDRAMZona de memoria RAM - Data Display RAM, se almacenan los caracteres que se pueden representar
Capacidad de 80 bytes, 40 por lnea, slo 32 se pueden visualizar a la vez (16 bytes por lnea)
Almacena los cdigos ASCII de los caracteres que aparecern en pantalla
Existe una correspondencia entre las filas de la pantalla y las posiciones consecutivas de memoria
LMO16L
DDRAMDe las 80 posibles, las 2 direcciones ms importantes son:
00h (comienzo de la primera lnea) 40h (comienzo de la segunda lnea)
Cada vez que se escribe un dato en la DDRAM automticamente se apunta a la siguiente posicin, donde se realizar la escritura del prximo carcter.
Zona de memoria interna no voltil donde se almacena una tabla con los 192 caracteres que pueden ser visualizados
LMO16L
Caracteres Definidos en CGROMCada uno de los caracteres tiene su representacin binaria de ocho bits
Los ocho nuevos caracteres de usuario no estan incluidos en tabla interna: se guardan en una zona de RAM denominada CGRAM (Character Generator RAM)
Para visualizar un carcter debe recibir por el bus de datos el cdigo correspondiente
LMO16L
Por ejemplo, para visualizar el carcter A el LCD debe recibir por su bus de datos el cdigo b0100 000l
Descripcin De Pins
Modos De FuncionamientoTiene 3 modos de funcionamiento principales:
Modo Comando
Por el bus de datos el LCD recibe instrucciones como Borrar Display, Mover Cursor, Desplazar a izquierda, etc.
RS y R/W deben estar a 0 para indicar que se realiza una operacin de escritura.
(La operacin en este modo tarda un mximo de 1,64 ms)LMO16L
Modos De Funcionamiento Modo Carcter o Dato
Por el bus de datos se recibe un carcter a escribir en la DDRAM; se enva el carcter ASCII a visualizar
RS = 1 y R/W = 0 para indicar que est realizando una operacin de escritura
Tambin se le puede llamar modo carcter o modo registro(Una operacin en este modo tarda mximo 40 ms)LMO16L
Modos De Funcionamiento Modo lectura del Busy Flag LCD Ocupada
En el bit 7 (Busy Flag) del bus de datos el LCD informa al microcontrolador que est ocupado
Para ello, se lee el bus de datos con RS= 0 y R/W= 1
Si bit 7 = 1 indica que la pantalla est ocupada realizando operaciones internas y no puede aceptar nuevas instrucciones ni datos
Hay que esperar a que el Busy Flag valga 0 para enviarle la siguiente instruccin o carcterLMO16L
El modo Busy Flag se ha ideado para evitar posibles problemas de tiempo: no se realiza ninguna operacin con el LCD hasta comprobar que no est ocupado
R/W permite leer el registro de estado en el modo Busy Flag que slo sirve para comprobar si el controlador ha terminado de realizar la instruccin que se le ha enviado y as poder enviar ms
LMO16LModos De Funcionamiento
Para un control sencillo, se pueden realizar pausas despus de cada instruccin o envo de datos para no leer el registro de estado, evitando el modo de lectura del Busy Flag
La principal ventaja es que se logra ahorrar un pin del microcontrolador porque R/W no es necesaria y se puede conectar directamente a tierra
La deteccin del Busy Flag se sustituye por un retardo antes de realizar cualquier nueva operacin con el LCD
El retardo debe ser mayor a 1,64 ms si trabaja en modo comando y mayor de 40 ms si trabaja en modo dato
LMO16LModos De Funcionamiento
Comandos De Control
Clear Display
Return Home
Entry Mode Set
Display Control
Cursor and display shift
Function Set
Set CGRAM Address
Set DDRAM Address
Read Busy Flag
Write RAM
Read RAM
Comandos De ControlLos comandos se envan a travs del bus de datos. Para que el LCD los reconozca hay que poner la seal RS a nivel bajo
Comandos De ControlClear Display (0 0 0 0 0 0 0 1)Borra pantalla y devuelve el cursor a la posicin inicial (direccin 0 de la DDRAM)
Return Home (0 0 0 0 0 0 1 x)Cursor a direccin origen. Devuelve el cursor la posicin original de la DDRAM (direccin 00h) quedando intacto su contenido
Comandos De Control
Entry Mode Set (0 0 0 0 0 1 l/D S)
Modo Entrada. Establece las caractersticas de escritura de los datos Shift e Increment/Decrement:
S = 0 La informacin visualizada en pantalla no se desplaza al escribir un nuevo carcter
S = 1 La informacin visualizada se desplaza al escribir un nuevo carcter. La pantalla se desplaza en el sentido indicado por el bit l/D cuando el cursor llega al filo de la pantalla
l/D = 1 Incremento automtico de la posicin del cursor. La posicin de la DDRAM se incrementa automticamente tras cada lectura o escritura a la misma
1/D = 0 Decremento de la posicin del cursor. Se decrementa el puntero de la DDRAM.
Comandos De Control Display Control (00 0 0 1 D C B)
Control de la pantalla:B = 0 Blink 0FF, no hay efecto de parpadeo del cursor
B = 1 Blink ON, efecto de parpadeo con cursor rectangular
C = 0 Cursor 0FF, el cursor no se visualiza
C = 1 Cursor ON, el cursor es visualizado
D = 0 Display 0FF, el display se apaga
D = 1 Display ON, el display se enciende
Comandos De Control Cursor and Display Shift (0 0 0 1 S/C R/L x x)
Control de los desplazamientos del cursor y de la pantalla:RJL =0 Left (izquierda)
RJL = 1 Right (derecha)
SIC = 0 El efecto de desplazamiento se aplica slo sobre el cursor sin alterar el contenido de la DDRAM
SIC = 1 El efecto de desplazamiento se aplica sobre todo el display
Comandos De ControlFunction Set (0 0 1 DL N F x x)
Caractersticas de control hardware:
F = O Font Caracteres de 5 x 7 puntos
F = 1 Font Caracteres de 5 x 10 puntos
N = 0 Number Line Pantalla de 1 lnea
N = 1 Number Line Pantalla de 2 lneas
DL =0 Data Length Comunicacin con 4 bits.Indica al LCD que slo se utilizan las lneas DB7, DB6, DB5 y DB4 para enviarle datos y que se har enviando primero el nibble alto, y a despus el nibble bajo
DL = 1 Data Length Comunicacin con 8 bits
Comandos De ControlSet CGRAM AddressSe va a escribir sobre la direccin CGRAM sealada
Set DDRAM Address (1 d d d d d d d)Esta instruccin se utiliza para modificar el puntero a la DDRAM. Ejemplo, si la direccin es 08h se escribir en el centro de la 1 lnea
Read Busy FlagLee el BF indicando si hay una operacin interna en curso y lee, adems, el contenido de la direccin DDRAM apuntada.
Conexin Mediante 4 Bits al Puerto BSin lectura del Busy flag
(se ahorra la lnea R/W que se conecta a tierra)
La principal ventaja es que utiliza el mnimo posible de pines (6 lneas) para el control del LCD
Librera De SubrutinasLCD_4BIT.INC contiene las subrutinas de control para realizar las tareas bsicas de control de un mdulo LCD
Las subrutinas principales son:
LCD_Inicializa Inicializa el LCD para su correcto funcionamiento. Configura funciones del LCD, produce un reset por software, borra la memoria DDRAM y enciende la pantalla.
Es necesario ejecutarla al principio de los programas que vayan a utilizar la visualizacin mediante LCD
El fabricante especifica que para garantizar una correcta inicializacin debe realizarse como se indica en la tabla siguiente:
Librera De SubrutinasLCD_CarcterVisualiza en la posicin actual del cursor el cdigo ASCII del dato contenido en el registro W
LCD_BorraBorra toda la pantalla y pone el cursor a principio de la lnea 1
LCD_LinealEnva el cursor al principio de la lnea 1
LCD_Linea2Enva el cursor al principio de la lnea 2
Librera De SubrutinasLCD_PosicionLineal Enva el cursor a la posicin de la lnea 1 indicada por (W)Ejemplo, si (W)=0x08, al ejecutar la subrutina el cursor ir al centro de la lnea en una pantalla de 16 caracteres
LCD_PosicionLinea2 Igual que el anterior para la lnea 2
LCD_LineaEnBlanco Visualiza una lnea en blanco
LCD_DosEspaciosBlanco Visualiza dos espacios en blanco
NotaLa librera ha sido diseada para que funcione correctamente con el siguiente circuito; donde a las lneas del bus de datos se han conectado otros dispositivos
NotaPor lo tanto no se debe alterar el contenido de las lneas de la parte baja del Puerto B (no son utilizadas para el LCD) (pines RB3:RBO), primero se lee estas lneas y despus se vuelve a enviar este dato sin cambiarlo
Tambin se debe mantener la configuracin de las lneas del Puerto B cuando no se utilizan para enviar datos al LCD. Esto lo supervisa la subrutina LCD_EscribeLCD
Visualizacin de CaracteresComo ejemplo de aplicacin de la librera se detalla un programa donde se indica el procedimiento para visualizar los caracteres de un mensaje.
Visualizacin De Valores Numricos LCD_4BIT.INC contiene algunas subrutinas que permiten la visualizacin de valores numricos de 8 bits:
LCD_ByteCompletoVisualiza el valor hexadecimal del byte que almacena el registro W en el lugar actual del cursorEjemplo, si (W)=b00001110, visualiza 0E
LCD_ByteIgual que el anterior pero si el nibble alto es un cero visualiza un blanco en su lugarEjemplo si (W)=00001110, visualiza E (con espacio en blanco en el nibble alto); si (W)=b1l0101110, visualiza AE
LCD_NibbleVisualiza el valor hexadecimal que almacena el nibble bajo del registro W. El nibble alto no es tenido en cuentaEjemplo, si (W)=b01010110 visualiza 6, si (W)=b10101110 visualiza E
El siguiente programa ejemplo permite apreciar la diferencia de funcionamiento entre cada una de estas subrutinas.
Conexin De LCD Mediante 8 BitsEs conectado a un puerto de 8 bits y se trata como un perifrico ms. El software de control es algo ms sencillo
Tambin se utiliza el modo Busy Flag, por ello se conecta R/W a la lnea RA1, aunque se poda haber sustituido por un retardo de 2 ms 50 ms, como se hizo con 4 bits
Conexin De LCD Mediante 8 BitsLa ventaja respecto al control de 4 bits, es mayor rapidez al enviar los 8 bits de una sola vez, en lugar de empaquetados en bloque de 4 bits
Como inconveniente se destaca el aumento de lneas de programa. Esto es importante pata el P1C16F84 ya que no tiene muchas lneas de E/S
La librera LCD_4BIT.INC tambin funciona para este modo. Evidentemente, aunque la disposicin de las patillas es de conexin a 8 bits, funcionar como si slo estuviesen conectadas 4 lneas
Visualizacin De MensajesPara visualizar mensajes ms o menos largos se ocupa la librera LCD_MENS.INC que describe dos subrutinas
LCD Mensaje visualiza mensajes fijos
LCD_MensajeMovimiento visualiza mensajes en movimiento
Subrutina Mensaje Fijo
Subrutina Mensaje en Movimiento
Ejemplo De AplicacinVisualizacin de un mensaje fijo donde se aprecia la sencillez de la subrutina LCD_Mensaje
Up ejemplo de aplicacin podra ser el siguiente:
NotaPara que aparezcan las comillas, el mensaje hay que grabarlo precediendo las comillas visibles con una barra, como en el siguiente ejemplo:
DT Estudia \Electronica\. Es tu futuro!
PracticasLCD_01.asm: En la pantalla del mdulo LCD se visualiza el mensaje Hola. Al terminar de escribir la frase el PIC entrar en modo de bajo consumo
LCD_02.asm: En la pantalla se visualiza el mensaje Hola. La escritura de cada carcter se ir realizando cada 500 ms. Despus se borrar y comenzar de nuevo
LCD_03.asm: Programa ejemplo para comprender la utilizacin de las subrutinas para la visualizacin de datos numricos. Para ello se van a utilizar sucesivamente y en este orden las subrutinas: LCD_ByteCompleto, LCD_DosEspaciosBlancos, LCD_Byte, LCD_DosEspaciosBlancos y LCD_Nibble para dos nmeros que sern:En la primera lnea un nmero con el nibble alto no cero. Por ejemplo: 1Dh.En la segunda lnea un nmero con el nibble alto igual a cero. Ej. 0Dh.As por ejemplo, para los nmeros 1D y 0D se visualizara 1D##lD##D (Primera lnea). 0D###D##D (Segunda lnea)(donde # viene a significar espacio en blanco)
PracticasLCD_04.asrn La pantalla visualiza un contador descendente desde 59 hasta 0 y vuelve a repetir la cuenta ininterrumpidamente. En cada valor estar unos 500 ms
LCD_05.asm: Cada vez que presiona el pulsador conectado al pin RA4 se incrementa un contador que se visualiza en el centro de la primera lnea de la pantalla
LCD_06.asm: Igual que el anterior pero cuando llegue a su valor mximo (por ejemplo 6) se resetea y comienza de nuevo la cuenta
LCD_07.asm: Igual que el anterior, pero se incrementa mientras se mantenga presionado el pulsador una cuenta cada 200ms
LCD_08.asm: Mientras se mantenga presionado el pulsador conectado al pin RA4 se incrementa un contador y visualiza en la pantalla en tres formatos: decimal, hexadecimal y binario. Un ejemplo:Primera Lnea:CE 206Segunda Unea: 11001110
PracticasMensaje_01.asm: En pantalla se visualiza un mensaje de menos de 16 caracteres grabado en la memoria ROM mediante la directiva DT
Mensaje_02.asm. Repetir el anterior utilizando la subrutina LCD_Mensaje de la librera LCD_MEN.INC
Mensaje_03.asm: En pantalla se visualizan varios mensajes, uno detrs de otro. Cada mensaje permanece visualizado durante 2 segundos. Entre mensaje y mensaje la pantalla se mantiene apagada durante 200 ms
Mensaje_04.asm: En las dos lineas de la pantalla aparecern dos mensajes parpadeantes
Mensaje_05.asm: En la primera Lnea de la pantalla aparecer un mensaje fijo. En la segunda lnea aparecer un mensaje parpadeante
PracticasMensaje_06.asm: En la pantalla se visualizarn varios mensajes diferentes. El paso de uno a otro se realiza al actuar sobre el pulsador conectado a la lnea RA4. En pantalla aparecer por ejemplo:Mensaje 2 (primera lnea)COSLADA Moderna. (segunda lnea)
Mensaje_07.asm: En la pantalla se visualizar un mensaje largo (de ms de 16 caracteres) que se va desplazando a lo largo de la pantalla. Se utilizar la subrutina LCD_MensajeMovimiento de la librera LCD_MENS.INC
Mensaje_08.asm: Programa para el juego de la Quiniela: Al presionar sobre el pulsador conectado aL pin RA4 en la pantalla aparecer rpidamente 1, X, 2. Cuando suelta el pulsador, permanece el signo seleccionado
Mensaje_09.asm: En pantalla visualiza Cerrado o Abierto segn si un pulsador est presionado o no
Ing. Hctor Jimnez M.
MICROCONTROLADORESVisualizador LCD
ACM1602A
ACM1602A
ACM1602A
ACM1602A
ACM1602A
Funciones del EntrenadorDepurador.- Permite la ejecucin pausada paso por paso de programas, la revisin de registros, memoria o puerto, y dependiendo del modelo su modificacin, e inclusive la modificacin del propio programaSdDfDfsdDfSd YuGvkVulBhulklnjkn