Está en la página 1de 8

ANEXO A

PANTALLA LCD DE CARACTERES


La Pantalla LCD es uno de los periféricos más empleados para la presentación Los terminales de conexión de las pantallas LCD de caracteres han sido
de mensajes, variables y casi cualquier información proveniente de un estandarizados y generalmente son compatibles pin a pin con la distribución de
microcontrolador. Gracias a su flexibilidad, buena visibilidad y precio reducido se ha pines mostrada en la Figura A.2.
convertido en el estándar de visualización más utilizado con los microcontroladores.
El sistema de desarrollo iBOARD III, incluye una pantalla LCD 2x16 caracteres, la
cual, es extraíble a través de un conector tipo lineal de 14 pines. La figura A.1.
muestra el diagrama de conexiones de la pantalla LCD al sistema de desarrollo
iBOARD III.

Figura A.2. Distribución de pines de conexión de la pantalla LCD 2x16 del iBOARD III.

COMANDOS UTILIZADOS
La información que se envía a la pantalla LCD puede interpretarse de dos
formas: como un comando, cuando se coloca al (pin) denominado RS en nivel
bajo y como un carácter, cuando el (pin) RS está en nivel alto. Un comando es un
dato numérico de 8 bits que le indica al controlador HITACHI 44780 ó compatible,
que deber realizar una operación; entre las cuales, se encuentran las mostradas en
la figura A.3.
Figura A.1. Conexiones de la pantalla LCD 2x16 al sistema de desarrollo iBOARD III.
CONJUNTO (SET) DE CARACTERES

La pantalla LCD deL iBOARD III, incluye un microcontrolador interno como el Aún cuando los comandos mostrados en la tabla de la figura A.3. son suficientes
HITACHI 44780 ó compatible y puede entre otras cosas: para manejar la pantalla LCD, en la mayoría de las aplicaciones, un usuario puede
crear sus propios comandos de control para el manejo de la LCD. Para ello deberá
· Presentar caracteres ASCII y griegos utilizar las especificaciones que suministra fabricante. La totalidad de las pantallas
· Recibir y mostrar caracteres personalizados LCD compatibles con la Hitachi 44780, incluyen un conjunto de caracteres
· Desplazamiento de caracteres (Scroll) tanto a la derecha como a la izquierda precargados en la memoria RAM. Este conjunto de caracteres lo podemos observar
· Cambiar el aspecto y el movimiento del cursor a través de la figura A.4.
· Direccionar de manera simple la posición de visualización de los caracteres

Sistema de desarrollo para microcontroladores PIC®, iBOARD III.


93
Usted podrá crear sus propios símbolos; simplemente vaya a la dirección de la
memoria de símbolos de la LCD (CGRAM) y escriba en ella los ocho bytes que
contienen su selección. Sólo se utilizarán los bit 0 al 4.

Figura A.3. Comandos disponibles en una pantalla LCD con controlador


HITACHI 44780 ó compatible.

TÉRMINOS UTILIZADOS CON LAS LCD’S

CGRAM (Character Generator RAM): Memoria volátil de 64 bytes que permite


almacenar hasta 8 caracteres personalizados para ser mostrados en la pantalla.
SCRRAM (Display Data RAM): Memoria volátil de 80 bytes, en la cual, se
almacenan los caracteres que se van a mostrar en la pantalla.
CGROM (Character Generator ROM): Memoria no volátil, en la cual, se almacenan
los caracteres predefinidos que soportan la pantalla y su controlador

CARACTERES PERSONALIZADOS

Si el set de caracteres estándar de la LCD no contiene un carácter requerido por


usted, puede utilizar la memoria CGRAM para almacenar hasta ocho (8) caracteres
personalizados. La memoria CGRAM de un LCD estándar compatible con el
controlador HITACHI 44780, es una memoria volátil, lo que significa, que no
almacena la información en forma permanente. Una vez desenergizada la LCD, la
memoria CGRAM perderá su contenido.
Figura A.4. Conjunto (set) de caracteres para una pantalla LCD con controlador
Todo carácter visualizado en la pantalla LCD está conformado por una matriz de HITACHI 44780 ó compatible.
5x8 pixel, con la fila inferior reservada para la visualización del cursor.

Sistema de desarrollo para microcontroladores PIC®, iBOARD III.


94
Parallax,inc dispone de una aplicación que facilita la creación de caracteres
especiales denominada LCDCC.exe "LCD Character Creator", la cual, viene en el CD
que se ha entregado a usted junto al sistema de desarrollo iBOARD III, en la
carpeta 34 Aplicaciones\10 LCDCC\LCDCC.exe.

En la Figura A.5. se muestra el programa “LCD Character Creador” de la


empresa Parallax.inc, mediante el cual, usted podrá crear sus propios caracteres
especiales. Como se observa en la figura, puede dibujar cualquier píxel, el de su
preferencia, al final el programa le indica el código en hexadecimal del carácter por
cada una de los 8 líneas de la matriz 5x8. El código puede expresarse en
Hexadecimal ó en formato decimal como aparece también el la figura A.6.

Figura A.6. Código en formato decimal para un carácter especial.

La figura A.7. muestra una fotografía del sistema de desarrollo iBOARD III,
ejecutando el programa de demostración de la pantalla LCD. Este ejemplo se
encuentra en el CD entregado a usted, en la carpeta Ejemplos/
CAP_04/iBOARD_III_DEMO.bas. Ya en el capítulo 04, se había descrito como cargar
y ejecutar el programa de demostración. En esta sección explicaremos su
funcionamiento, sin embargo, antes se describirán los comandos en alto nivel que
posee en compilador Basic® PROTON® para el manejo de una pantalla LCD.

Figura A.7. Fotografía de la ejecución del programa CAP_04_Ejemplo_01.bas


Figura A.5. Programa LCD Carácter Creador de Parallax, inc. en el sistema de desarrollo iBOARD III.
Fuente: www.parallax.com

Sistema de desarrollo para microcontroladores PIC®, iBOARD III.


95
COMANDO EN ALTO NIVEL PARA EL MANEJO DE UNA LCD

El compilador Basic® PROTON® dispone de un comando para el manejo de las DECLARE LCD_ENPIN PORT . PIN
pantallas LCD.
Asigna el Puerto y el pin de conexión que se utilizarán para la conexión de la línea
PRINT Item { , Item... }
de habilitación (EN) de la pantalla LCD. Por defecto se utiliza el pin PORTB<2>.
Item - Es una constante, variable, expresión, modificador de formato y/o un(a)
DECLARE LCD_RSPIN PORT . PIN
string.
Asigna el Puerto y el pin de conexión que se utilizarán para la conexión de la línea
También el comando PRINT acepta modificadores de formato como los de selección (RS) de la pantalla LCD. Por defecto se utiliza el pin PORTB<3>.
mostrados en la siguiente tabla.
DECLARE LCD_INTERFACE 4 or 8
Informa al compilador si la pantalla LCD trabajará en modo 4 bits ó 8 bits. Por
defecto se utiliza el modo 4 bits.
AT ypos,xpos Posiciona el cursor de una pantalla al valor x,y de la LCD
CLS Limpia la Pantalla LCD y crea un retardo de 30ms
BIN{1..32} Envía dígitos en formato binario
DECLARE LCD_LINES 1 , 2 , or 4
DEC{1..10} Envía dígitos en formato decimal Informa al compilador el número de líneas de la pantalla LCD. Por defecto se utiliza
HEX{1..8} Envía dígitos en formato hexadecimal el valor de dos (2) líneas.
SBIN{1..32} Envía dígitos en formato binario con signo
SDEC{1..10} Envía dígitos en formato decimal con signo
SHEX{1..8} Envía dígitos en formato hexadecimal con signo
Ejemplos de utilización pantalla LCD.
IBIN{1..32} Envía dígitos en formato binario precedidos de '%'
IDEC{1..10} Envía dígitos en formato decimal precedidos de '#'
IHEX{1..8} Envía dígitos en formato hexadecimal precedidos de '$' Ya en el capítulo 4, se había cargado y ejecutado el programa
ISBIN{1..32} Envía dígitos en formato binario con signo precedidos de '%' CAP_04_Ejemplo_01.bas, el cual, hace uso de la pantalla LCD para mostrar un
ISDEC{1..10} Envía dígitos en formato decimal con signo precedidos de '#’ mensaje inicial y luego el valor incremental de una variable. La codificación del
ISHEX{1..8} Envía dígitos en formato hexadecimal con signo prec. de '$' programa es mostrada a continuación:
REP c\n Envía el carácter “c” repetido “n” veces
STR array\n Envía todo ó parte de un arreglo ' CAP_04_Ejemplo_01.bas
CSTR cdata Envía datos tipo “string” definidos por el comando CData ' Ejemplo básico de utilización del sistema iBOARD III con LCD
' -------------------------------------------------------------------
Device = 16F876 ' Define el microcontrolador utilizado
ALL_DIGITAL = True ' Config. todos los puertos como dig.
A fin de utilizar la pantalla LCD de caracteres con el sistema de desarrollo XTAL = 20 ' Define la velocidad del resonador
iBOARD III, primero hay que configurarla a través de las directivas del compilador.
Estas directivas son las denominadas “Declares”. Existen seis declaraciones ' Pines de conexión a la pantalla LCD
Declare LCD_DTPIN PORTB.4 ' Pin de Datos LCD conec. al PORTB.4
diferentes para la configuración de una LCD.
Declare LCD_ENPIN PORTB.3 ' Pin de Enable LCD conec. al PORTB.3
Declare LCD_RSPIN PORTB.1 ' Pin de RS LCD conec. al PORTB.1
DECLARE LCD_TYPE 1 or 0 , GRAPHIC or ALPHA TRISB.2 = 0 ' Declara a PORTB.2 como Salida Dig.
Informa al compilador el tipo de pantalla LCD a utilizar. (1) selecciona una pantalla PORTB.2 = 0 ' Coloca en PORTB.2 un cero (0) Lógico
LCD del tipo gráfica. (0) selecciona una pantalla LCD del tipo carácter. Por defecto
Dim Contador As Byte ' Declaración de var. de uso general
se escoge el uso de una pantalla de caracteres. Dim ValorF As Float ' Declaracion de var. de uso general
ValorF = 0 ' Inicializa la variable en cero
DECLARE LCD_DTPIN PORT . PIN TRISA = $FF ' Declara el Puerto A como entrada dig.
Asigna el Puerto y el pin de conexión que se utilizarán para la conexión de la línea TRISC = $00 ' Declara el Puerto C como salida dig.
data de la pantalla LCD. Por defecto se utiliza el pin PORTB<4>.

Sistema de desarrollo para microcontroladores PIC®, iBOARD III.


96
Main: Se utiliza para limpiar la pantalla LCD. Esto es: Borrar todo el contenido
Print $FE, 1 ' Comando para limpiar pantalla LCD
Print At 1,1, "Sist. Desarrollo" ' Lleva el cursos a posic. 1,1 mostrado en la pantalla LCD, colocar el cursor en la primera línea – columna y
Print At 2,4, "iBOARD III" ' Lleva el cursor a posic. 2,4 generar un retardo de 30ms. Otras instrucciones se utilizan para visualizar
DelayMS 2000 ' Pausa de 2000 ms mensajes en la LCD. Note que el comando Print At (Linea, Columna) posiciona el
cursor de la pantalla LCD a la posición especificada, así:
For Contador = 0 To 255 ' Ciclo iterativo "For"
ValorF = ValorF + 0.1 ' éste segmento de código Print At 1,1, "Sist. Desarrollo" ' Lleva el cursos a posic. 1,1
Print At 2,3, "Valor = ", DEC1 ValorF ' mostrará en la pantalla Print At 2,4, "iBOARD III" ' Lleva el cursor a posic. 2,4
PORTC.2 = PORTA.0 ' Si presionan los pulsa_
PORTC.3 = PORTA.1 ' dores, encenderán los
PORTC.4 = PORTA.2 ' Led's correspondientes Mostrará el contenido dentro de las comillas en la posición (línea1, columna1) y
PORTC.5 = PORTA.3 ' a la posición corresp. el texto “BOARD III” en la (línea 2, columna 4). Por último, la instrucción:
DelayMS 100 ' Retardo de 100 ms
Next ' Print At 2,3, "Valor = ", DEC1 ValorF
GoTo Main
End Permite visualizar el valor d la variable “ValorF” con un digito decimal. Esto lo hace
a partir de la línea 2, columna 3. En la figura A.7. puede visualizar el resultado de la
ejecución del programa mencionado.
Note que en el programa anterior, se realiza la configuración de los pines de
conexión entre el sistema de desarrollo iBOARD III y la pantalla LCD. Esto se logra
a través de las siguientes directivas: Ejemplo_02. Creando un carácter especial

Declare LCD_DTPIN PORTB.4 ' Pin de Datos LCD conec. al PORTB.4 ' Anexo_A_Ejemplo_02.bas
Declare LCD_ENPIN PORTB.3 ' Pin de Enable LCD conec. al PORTB.3 ' Creación y visualización de un caracter especial en LCD
Declare LCD_RSPIN PORTB.1 ' Pin de RS LCD conec. al PORTB.1 ' -------------------------------------------------------------------
TRISB.2 = 0 ' Declara a PORTB.2 como Salida Dig. Device = 16F876
PORTB.2 = 0 ' Coloca en PORTB.2 un cero (0) Lógico ALL_DIGITAL = True
XTAL = 20
Las primeras tres instrucciones se utilizan para indicarle al compilador cual pin
Declare LCD_DTPIN PORTB.4 ' Pin de Datos LCD conect. al PORTB.4
del microcontrolador será utilizado para manejar las líneas de datos, habilitación y Declare LCD_ENPIN PORTB.3 ' Pin de Enable LCD conect. al PORTB.3
selección de la pantalla LCD. La cuarta línea TRISB.2 = 0, configura al pin Declare LCD_RSPIN PORTB.1 ' Pin de RS LCD conect. al PORTB.1
PORTB<2> como una salida digital. La instrucción cinco: PORTB.2 = 0, coloca un
cero (0) lógico 0 Vdc en el pin PORTB<2>. Este pin está conectado al pin RW de la TRISB.2 = 0 ' Declara a PORTB.2 como Salida Digital
PORTB.2 = 0 ' Coloca en PORTB.2 un Edo. Bajo 0 VDC
pantalla LCD, el cual, deberá estar conectado a tierra para que la pantalla reciba los
datos del microcontrolador. Como el compilador Basic® PROTON® sólo da soporte Symbol CGRAM = $64 ' Apuntador a la Memoria CGRAM del LCD
para la escritura de la LCD y no la lectura, no incluye la definición de este pin Dim I As Byte
dentro de las directivas del compilador. Si RW en la pantalla LCD se coloca a cero
(0) lógico 0 Vdc, la pantalla LCD se habilitara en modo de escritura y estará lista Main:
'CARGANDO EL 1ER. CARACTER PERSONALIZADO EN LA CGRAM
para visualizar la información enviada desde el microcontrolador. Esto es
Print 254,64, 31,04,14,10,10,14,04,31
justamente lo que hace la instrucción cinco: PORTB.2 = 0. Coloca al pin RW de la Print Cls ' Limpia la pantalla LCD
LCD a cero. ' Muestra texto en línea1
Print At 1,1, "CaracterEspecial" ' CaracterEspecial
Las instrucción: Print At 2,7, 0 ' muestra caracter especial
DelayMS 1000 ' segunda línea
Print $FE, 1 ' Comando para limpiar pantalla LCD GoTo Main
End

Sistema de desarrollo para microcontroladores PIC®, iBOARD III.


97
Print 254,80, 31,00,31,00,31,00,31,00
'CARGANDO EL 4TO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,88, 31,21,21,21,21,21,21,31
'CARGANDO EL 5TO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,96, 00,21,21,21,21,21,21,00
'CARGANDO EL 6TO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,104, 00,27,27,04,04,04,17,14
'CARGANDO EL 7MO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,112, 31,31,31,04,04,31,31,31
'CARGANDO EL 8VO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,120, 00,27,27,04,04,00,14,17

Print Cls ' Limpia la pantalla LCD


For I = 0 To 7
Print I," " ' muestra los 8 caracteres
DelayMS 1000
Next

GoTo Main
Figura A.8. Fotografía de la ejecución del programa Anexo_A_Ejemplo_02.bas End
Creación de un carácter especial en CGRAM de la LCD.

Ejemplo 3. Creación de ocho caracteres especiales

' Anexo_A_Ejemplo_03.bas
' Creación y visualización de 8 caracteres especiales en LCD
' -------------------------------------------------------------------
Device = 16F876
ALL_DIGITAL = True
XTAL = 20

Declare LCD_DTPIN PORTB.4 ' Pin de Datos LCD conect. al PORTB.4


Declare LCD_ENPIN PORTB.3 ' Pin de Enable LCD conect. al PORTB.3
Declare LCD_RSPIN PORTB.1 ' Pin de RS LCD conect. al PORTB.1

TRISB.2 = 0 ' Declara a PORTB.2 como Salida Digital


PORTB.2 = 0 ' Coloca en PORTB.2 un Edo. Bajo 0 VDC

Symbol CGRAM = $64 ' Apuntador a la Memoria CGRAM del LCD


Dim I As Byte

Main:
'CARGANDO EL 1ER. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,64, 31,04,14,10,10,14,04,31
'CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
Print 254,72, 31,31,31,31,31,31,31,31 Figura A.9. Fotografía de la ejecución del programa Anexo_A_Ejemplo_03.bas
'CARGANDO EL 3RO. CARACTER PERSONALIZADO EN LA CGRAM Creación de ocho caracteres especiales en CGRAM de la LCD.

Sistema de desarrollo para microcontroladores PIC®, iBOARD III.


98
Ejemplo 4. Efectos especiales con una Pantalla LCD

El siguiente programa presentará un mensaje en la pantalla LCD y lo correrá


hacia la izquierda (Scroll Left) dieciséis posiciones. Luego lo correrá a la derecha
(Scroll Right) otras dieciséis posiciones.

' Anexo_A_Ejemplo_04.bas
' Efectos especiales con una pantalla LCD
' -------------------------------------------------------------------
Device = 16F876
ALL_DIGITAL = True
XTAL = 20

Dim Index As Byte


Symbol SCRLEFT = 24 ' Constante para hacer SCR a la izq.
Symbol SCRRIGHT = 28 ' Constante para hacer SCR a la der.
Declare LCD_DTPIN PORTB.4 ' Pin de Datos LCD conect. al PORTB.4
Declare LCD_ENPIN PORTB.3 ' Pin de Enable LCD conect. al PORTB.3
Declare LCD_RSPIN PORTB.1 ' Pin de RS LCD conect. al PORTB.1

TRISB.2 = 0 ' Declara a PORTB.2 como Salida Digital


PORTB.2 = 0 ' Coloca en PORTB.2 un Edo. Bajo 0 VDC

Main:
Print $FE, 1 ' Limpia la pantalla LCD
Print At 1,1, " Pantalla LCD " ' Visualiza mensaje en la
Print At 2,1, " iBOARD III " ' Línea 1 y Línea 2
DelayMS 2000 Figura A.10. Fotografía de la ejecución del programa Anexo_A_Ejemplo_04.bas
Efectos especiales con una pantalla LCD.
GoSub Scroll_Izquierda 'Desplaza todo el texto a la izquierda
GoSub Scroll_Derecha 'Desplaza todo el texto a la derecha
DelayMS 1000
GoTo Main

'SUB-RUTINAS
'--------------------------------------------------------------------
Scroll_Izquierda:
For Index = 0 To 15
Print $FE, SCRLEFT
DelayMS 300
Next
Return

Scroll_Derecha:
For Index = 0 To 15
Print $FE, SCRRIGHT
DelayMS 300
Next
Return

Sistema de desarrollo para microcontroladores PIC®, iBOARD III.


99
Ejemplo 5. Gráfica de Barras con LCD

' Programa: Anexo_A_Ejemplo_05.bas For BAR_VAL = 48 To 0 Step -1


' Ejemplo para generar un código de barras horizontal en la LCD GoSub Bargraph
' |||||||||||||||||||||| DelayMS 100
' Valor = xx Next
' ------------------------------------------------------------------ GoTo Main
Device = 16F876
ALL_DIGITAL = True ' Config. todos los puertos como dig. 'SubRutinas
XTAL = 20 ' Define la velocidad del resonador '------------------------------------------------------------------
Bargraph:
' Pines de conexión a la pantalla LCD WARNINGS = OFF
Declare LCD_DTPIN PORTB.4 ' Pin de Datos LCD conec. al PORTB.4 BYTE_MATH = On
Declare LCD_ENPIN PORTB.3 ' Pin de Enable LCD conec. al PORTB.3 BARS = (BAR_VAL Min MAXBAR) / 3
Declare LCD_RSPIN PORTB.1 ' Pin de RS LCD conec. al PORTB.1 BALANCE = (BAR_VAL Min MAXBAR) //3
Low PORTB.2 ' Pin de RW LCD conec. al PORTB.2 BALF = BALANCE Min 1
Print At 1,1,Rep FULLBAR\BARS,Rep (BALANCE + BASEBAR)\BALF,_
Rep " " \B_WDTH - (BARS + BALF)
' Declaración de variables y constantes Print At 2,1,"Valor = ", Dec BAR_VAL," "
' ----------------------------------------------------------------- BYTE_MATH = OFF
Dim BAR_VAL As Byte ' Valor a graficar WARNINGS = On
Dim BARS As Byte ' Numero de barras ||| a graficar Return
Dim BALANCE As Byte ' Balance a la izq. | después barras
Dim BALF As Byte ' Se necesita un caracter de balance

Symbol B_WDTH = 16 ' Max No. de caracteres en la barra


Symbol MAXBAR = B_WDTH * 3 ' Max No. de segmentos barra
Symbol FULLBAR = 3 ' Valor ASCII de la barra |||
Symbol BASEBAR = 0 ' Valor ASCII de la barra en blanco
Symbol CGRAM = 64
' Retardo requerido por la LCD
DelayMS 1000 ' Limpia todas variables en RAM
Cls

'CARGANDO EL 1ER. CARACTER ( ) PERSONALIZADO EN LA CGRAM


Print 254,64, $00,$00,$00,$00,$00,$00,$00,$00
'CARGANDO EL 2DO. CARACTER (| ) PERSONALIZADO EN LA CGRAM
Print 254,72, $10,$10,$10,$10,$10,$10,$10,$10
'CARGANDO EL 3RO. CARACTER (|| )PERSONALIZADO EN LA CGRAM
Print 254,80, $14,$14,$14,$14,$14,$14,$14,$14
'CARGANDO EL 4TO. CARACTER (|||)PERSONALIZADO EN LA CGRAM
Print 254,88, $15,$15,$15,$15,$15,$15,$15,$15

' Programa Principal


'------------------------------------------------------------------
Main:
For BAR_VAL = 0 To 48 Figura A.11. Fotografía de la ejecución del programa Anexo_A_Ejemplo_05.bas
GoSub Bargraph Gráfica de barras con una pantalla LCD.
DelayMS 100
Next

Sistema de desarrollo para microcontroladores PIC®, iBOARD III.


100