Pantalla Lcd de Caracteres

13
  PANTALLA LCD DE CARACTERES La Pantalla LCD es uno de los periféricos más empleados para la presentación de mensajes, variables y casi cualquier información proveniente de un microcontrolador. Gracias a su flexibilidad, buena visibilidad y precio reducido se ha convertido en el estándar de visualización más utilizado con los microcontroladores. Este tutorial, incluye una pantalla LCD 2x16 caracteres, la cual, es conectada al PIC 18F4550 tipo lineal de 16 pines. La figura 1. Muestra el diagrama de conexiones de la pantalla LCD al microcontrolador. Figura 1. La pantalla LCD, incluye un microcontrolador interno como el HITACHI 44780 ó compatible y puede entre otras cosas: · Presentar caracteres ASCII y griegos · Recibir y mostrar caracteres personalizados · Desplazamiento de caracteres (Scroll) tanto a la derecha como a la i zquierda · Cambiar el aspecto y el movimiento del cursor · Direccionar de manera simple la posición de visualización de los caracteres Los terminales de conexión de las pantallas LCD de caracteres han sido estandarizados y generalmente son compatibles pin a pin con la distribución de pines mostrada en la Figura 2. Dado que las pantallas LCD HD44780 son muy utilizadas, casi todos los compiladores ofrecen una biblioteca de rutinas para usar el LCD. Los comandos, no son parte del lenguaje BASIC como tal, sino que son una ampliación de los servicios por el fabricante del compilador, que difier en en la sintaxis, los tipos de argume ntos y parámetros de un compilador a otro. Los comandos básicos que se enviaran a una pantalla LCD de 44780 se agrupan en dos categorías.

Transcript of Pantalla Lcd de Caracteres

Page 1: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 1/13

 

PANTALLA LCD DE CARACTERES

La Pantalla LCD es uno de los periféricos más empleados para la presentación de mensajes,variables y casi cualquier información proveniente de un microcontrolador. Gracias a su

flexibilidad, buena visibilidad y precio reducido se ha convertido en el estándar de visualizaciónmás utilizado con los microcontroladores.

Este tutorial, incluye una pantalla LCD 2x16 caracteres, la cual, es conectada al PIC 18F4550 tipolineal de 16 pines. La figura 1. Muestra el diagrama de conexiones de la pantalla LCD almicrocontrolador.

Figura 1 .

La pantalla LCD, incluye un microcontrolador interno como el HITACHI 44780 ó compatible ypuede entre otras cosas:

· Presentar caracteres ASCI I y griegos· Recibir y mostrar caracteres personalizados· Desplazamiento de caracteres (Scroll) tanto a la derecha como a la izquierda· Cambiar el aspecto y el movimiento del cursor· Direccionar de manera simple la posición de visualización de los caracteres

Los terminales de conexión de las pantallas LCD de caracteres han sido estandarizados ygeneralmente son compatibles pin a pin con la distribución de pines mostrada en la Figura 2.

Dado que las pantallas LCD HD44780 son muy utilizadas, casi todos los compiladores ofrecen unabiblioteca de rutinas para usar el LCD. Los comandos, no son parte del lenguaje BASIC como tal,sino que son una ampliación de los servicios por el fabricante del compilador, que difieren en lasintaxis, los tipos de argumentos y parámetros de un compilador a otro.

Los comandos básicos que se enviaran a una pantalla LCD de 44780 se agrupan en doscategorías.

Page 2: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 2/13

 Nota: los pines 15 y 16 en las pantallas LCD son para habilitar la luz de fondo.Figura 2 .

D at os de com andos  , pines del PIC 18f4550 conectado al LCD para enviar BITS principalmentetiene que ver con la comunicación de 4 o 8 BITS que se puede realizar con este dispositivo, y losCom andos De Cont ro l  , que puede ser utilizada para la expedición diversos comportamientosintegrado en la pantalla. Estos comportamientos pueden ser, por ejemplo para borrar la pantalla,o dirigir el cursor dentro y fuera de los comandos, etc. Estos comandos son enviados a través devarias combinaciones de 1s y 0s en los datos, como así como los pines E y RS.

Vamos a considerar una pantalla de 2 líneas con 16 caracteres por línea. Vamos a echar unvistazo más de cerca a una pantalla LCD. Como se puede ver que hay dos líneas de cristaleslíquidos. Cada línea es además compuesta por 16 cajas, con un pequeño espacio entre cajas.

Una mirada más de cerca a estos cuadros muestra que están compuestos por más puntospequeños, dispuestos en forma de matriz o una matriz. Esta matriz, tiene puntos de cristallíquido, que se puede activar o desactivar. No se puede aumentar o disminuir su intensidad. Así que se trata de una matriz de 5X8. Todos los personajes que aparecen son asignados dentro dela memoria del controlador de pantalla. Todos los caracteres que se pueden mostrar y susfuentes, está predefinidos.

Sin embargo, hay algo de memoria adicional disponible, en la que podemos definir nuestroscaracteres personalizados. Cada posición de carácter se asigna a un determinado lugar de lamemoria en la pantalla.

Protón Ide dispone de una aplicación que facilita la creación de caracteres especiales denominadaLCDCC.exe "LCD Chr Generator", el cual, es un plugin que se puede descargar de:

http://wiki.picbasic.org/index.php?n=Plugins.LCDCharacterGenerator 

En la Figura 3. Se muestra el programa “LCD Chr Cenerator”, mediante el cual, usted podrá crearsus propios caracteres especiales. Como se observa en la figura, puede dibujar cualquier píxel, elde su preferencia, al final el programa le indica el código en hexadecimal del carácter por cadauna de las 8 líneas de la matriz 5x8.

Page 3: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 3/13

 

Figur a 3

Con el fin de posicionar correctamente la visualización de datos, debe ser enviado a la ubicaciónde memoria adecuada. Afortunadamente todo esto se puede realizar con bibliotecas contenidas enel compilador. Aunque la pantalla tiene 16 caracteres por línea, la memoria en el interior es enrealidad de 20 caracteres por línea. Los caracteres adicionales no aparecen, pero se puede

desplazar un personaje en un momento para mostrar todos los 20 caracteres.Como ya sabéis, el microcontrolador está muy ocupado en sus propios asuntos, y después deenviar los datos de pantalla, continúa con sus otros procesos. La pantalla LCD es losuficientemente inteligente, y una vez los datos han sido enviados a la pantalla, permanecen allí,mientras el microcontrolador realiza otros trabajos, hasta el comando de nuevos datos es enviadopor el controlador. Esta es la razón principal, ¿por qué, estos módulos LCD son tan populares.

Los módulos LCD requiere la fuente de alimentación regulada de 5V, y el desagüe de una cantidadconsiderable de energía, especialmente si la luz de fondo está activada. Ahora vamos a explorar labiblioteca de LCD con el Protón IDE PLUS, para mostrar algunos datos sobre ella.

COMA NDO EN ALTO NI VEL PARA EL MANEJO DE UNA LCD

El compilador Basic® PROTON® dispone de un comando para el manejo de las pantallas LCD.

PRI NT Item {, Item...}I t em - Es una constante, variable, expresión, modificador de formato y/o un(a) string. Tambiénel comando PRINT acepta modificadores de formato como los mostrados en la siguiente tabla.

Page 4: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 4/13

 A fin de utilizar la pantalla LCD de caracteres con el PIC 18f4550, primero hay que configurarla através de las directivas del compilador.

Estas directivas son las denominados “Declares”. Existen seis declaraciones diferentes para laconfiguración de una LCD.

DECLARE LCD_TYPE 1 or 0, GRAPHI C or ALPHA

Informa al compilador el tipo de pantalla LCD a utilizar. (1 ) selecciona una pantalla LCD del tipográfica. (0 ) selecciona una pantalla LCD del tipo carácter. Por defecto se escoge el uso de unapantalla de caracteres.

DECLARE LCD_DTPI N PORT. PIN

Asigna el Puerto y el pin de conexión que se utilizarán para la conexión de la línea data de lapantalla LCD. Por defecto se utilizara el pin PORTD<4>.

DECLARE LCD_ENPI N PORT. PIN

Asigna el Puerto y el pin de conexión que se utilizarán para la conexión de la línea de habilitación(EN) de la pantalla LCD. Por defecto se utiliza el pin PORTD<3>.

DECLARE LCD_ RSPI N PORT. PIN

Asigna el Puerto y el pin de conexión que se utilizarán para la conexión de la línea de selección(RS) de la pantalla LCD. Por defecto se utiliza el pin PORTD<2>.

DECLARE LCD_ I NTERFACE 4 o 8

Informa al compilador si la pantalla LCD trabajará en modo 4 bits ó 8 bits. Por defecto se utiliza elmodo 4 bits.

DECLARE LCD_LI NES 1, 2, o 4

Informa al compilador el número de líneas de la pantalla LCD. Por defecto se utiliza el valor de dos(2) líneas.

Ejem plos de ut i l i zación pant a l la LCD.

Ya en el parte 6 del tutorial, se había utilizado el LCD con el teclado matrixal, estos ejemploshacen uso de la pantalla LCD para mostrar un mensaje inicial, el valor incremental de unavariable, mensajes personalizados y movimientos entre otros.

Ejem p lo No .1

Device = 18F4550XTAL=20ALL_DI GI TAL trueLCD_DTPI N PORTD.4LCD_ RSPI N PORTD.2LCD_ENPI N PORTD.3Pr in t ClsPr in t "CURSO PROTON IDE"En d

Page 5: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 5/13

 

CI RCUI TO

Pr in t Cls: Estos dos son los comandos de la biblioteca para la pantalla LCD y no son parte del

lenguaje BASIC, como tal. El Comando Cls significa "Borrar la pantalla” generalmente cuando seutiliza un LCD. Hace dos trabajos muy importantes. En primer lugar, cuando se enciende laelectrónica del LCD, necesita algo de tiempo en estabilizarse, este comando, inserta un pequeñoretraso interno, en segundo lugar, borra todos los registros, asignando todos los bits de lapantalla a 0 y coloca el cursor por defecto en la línea 1, columna1. Después de que la pantallaestá preparada para aceptar los datos. 

El comando Pr in t es muy versátil en PROTÓN IDE. En su forma más simple como se muestraarriba, acepta un parámetro o argumento, que es una cadena. Las cadenas son constantes detexto y siempre encerradas en comillas. Las comillas, no son parte de la cadena, por lo que noque aparecen. El comando de impresión mostrará el texto suministrado en la pantalla LCD, apartir de la actual ubicación del cursor, que el CLS establece en la línea 1 con posición 1. Elcursor, que es una señal intermitente está apagado, por defecto. Podemos activarlo, comoveremos más adelante.

Ahora, ¿cómo controlar la posición del texto que se muestra? Eso es bastante simple, tenemosdos opciones, una es mediante el modificador AT con el comando de impresión, y el otro es el usode comandos del cursor. El modificador AT es más de uso común y es más conveniente.

Pr in t A t 2,10, "OK"

Esta primera orden se moverá el cursor a la línea 2 y luego la posición 10, y luego mostrara eltexto: 'OK'.

Bueno hasta ahora se ha mostrado texto, así como el control de su posición, la forma de mostrarlas variables, y formato en el LCD suele ser la parte más complicada de la programación del

Page 6: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 6/13

microcontrolador. Las cosas son complejas debido a que algunos números son bytes de tamaño,alguna palabra de tamaño, algunos tienen doble precisión mientras que en otros hay un signonegativo.

Para hacer el tema más interesante vamos a utilizar variables de puntoflotante. Considerar una variable de tamaño de bytes que se le asignado un valor numérico $ FF,correspondiente a % 11111111. Considerando que, para nosotros debe mostrarse como 255

en decimal, FF es hexadecimal.Ejem p lo No2

Device = 18F4550

XTAL=20ALL_DI GI TAL trueLCD_DTPI N PORTD.4LCD_RSPI N PORTD.2LCD_ENPI N PORTD.3Dim x As Byt e

x=$FFPr in t Cls

Pr in t A t 1,1, "X:", Dec xEn d

En este programa hemos asignado un valor de $ FF a una variable de tamaño byte de x. cuentade lo fácil que es obtener el valor de una variable se muestra en el comando:

Pr in t A t 1,1, "X:", Dec x

Para mostrar un valor de una variable, sólo el prefijo del nombre de la variable con el modificadorde formato, en este caso Dec indica al compilador para mostrar el valor de x como un númerodecimal.

Número de dígitos y ceros a la izquierda también puede ser graficados. Por ejemplo, queremosmostrar los números de 0 a 255, algunos números son de un solo dígito, algunos tienen dosdígitos y otros tienen tres dígitos. Es posible que los números que aparecen deban fijarse en tresdígitos, con los principales 0s si el número es pequeño. Esto se hace modificando el formato Dec a Dec 3. Del mismo modo para mostrar una firma de números, como -102 use el modificadorDec. Para mostrar una papelera utilice el número de binarios como modificador de formato. Para

variables de visualización de punto flotante también puede utilizar modificador Dec.Ejem p lo No .3

Device = 18F4550

XTAL=20ALL_DI GI TAL trueLCD_DTPI N PORTD.4LCD_RSPI N PORTD.2LCD_ENPI N PORTD.3Dim x As Float

Page 7: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 7/13

x=3.1419Pr in t ClsPr in t A t 1,1, "X:", DEC2 xEn d

En el ejemplo anterior x ha sido declarada como variable de tipo Float. Por lo tanto, se puedeasignar fracciones decimales así Hemos asignado un valor de 3.1419. Si bien la impresión delmodificador DEC2 se ha utilizado para mostrar 2 dígitos después del punto decimal, como 3.14, siomitimos el 2 del modificador todo el número se mostrará.

Aquí un programa completo, este programa acepta una entrada del usuario para seleccionar unnúmero. Un valor inicial.

Ejem p lo No .4

Device = 18F4550

XTAL=20ALL_DI GI TAL trueLCD_DTPI N PORTD.4LCD_RSPI N PORTD.2LCD_ENPI N PORTD.3Symb o l SW3 = PORTE.0Symb o l SW4 = PORTE.1Symb o l SW5 = PORTE.2I n p u t SW3

I n p u t SW4I n p u t SW5Dim NUMERO As Byte

Dim c As Byt eNUMERO = 10Loop:Pr in t ClsPr in t A t 1,1, "Seleccion Num:"' I R A ENTRADAS 

Wh i l e SW5 <> 0Pr in t A t 2,1,"NUMERO:", DEC3 NUMEROI f SW3=0 ThenNUMERO=NUMERO+1DelayMS 200En d I f

I f SW4=0 ThenNUMERO=NUMERO-1DelayMS 200En d I fWe n d

CI RCUI TO:

Page 8: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 8/13

 

Los personajes personal izados

La fuente y el conjunto de caracteres que aparecen por la pantalla LCD de caracteres estáncodificados y definidos en la memoria de LCD.

Esta memoria se llama CGRAM, o caracteres de RAM generador. CGRAM contiene caracteresdefinidos como una matriz de 5x8. Cada bit de la matriz, se llena con 0 o 1, que se muestrancomo píxeles en la pantalla.

No todo Conjunto de caracteres ASCII está presente en esta matriz. Por ejemplo, el carácter \ noestá presente. Del mismo modo el control caracteres 0-7 están vacíos. Usted puede aprovecharesta deficiencia, para escribir bytes a CGRAM, direcciones de estos personajes y definir suspropios caracteres.

Se examina el conjunto de caracteres de la pantalla con este programa:Ejem p lo No .5

Device = 18F4550XTAL=20ALL_DI GI TAL trueLCD_DTPI N PORTD.4LCD_RSPI N PORTD.2LCD_ENPI N PORTD.3Symb o l SW3 = PORTE.0Symb o l SW4 = PORTE.1Symb o l SW5 = PORTE.2Dim x As Byt ePr in t Cls

Fo r x=0 To 255Pr in t A t 1,1,Dec x, ":", xDelayMS 1000NextEn d

CI RCUI TO

Page 9: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 9/13

 

Ejem plo No.5 Creando u n carácter especia l

Device 18F4550= ALL_DIGITAL = True

XTAL = 20

 ALL_DIGITAL true

LCD_DTPIN PORTD.4

LCD_RSPIN PORTD.2

LCD_ENPIN PORTD.3

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

Dim I As Byte

Main:

'CARGANDO EL 1ER. CARACTER PERSONALIZADO EN LA CGRAM 

Print $40,$04,$07,$07,$1E,$1E,$12,$12,$00$FE,

Print Cls ' Limpia la pantalla LCD' Muestra texto en línea1

Print At 1,1, "CaracterEspecial" ' CaracterEspecial

Print At 2,7, 0 ' muestra caracter especial

DelayMS 1000 ' segunda línea

GoTo Main

End

SOFTWARE GENERADOR DE CARATERES

Page 10: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 10/13

 

CI RCUI TO:

Ejem plo 6 . Efectos especia les con u na Pant a l la LCD

El siguiente programa presentará un mensaje en la pantalla LCD y lo correrá hacia la izquierda(Scroll Left) treinta y tres posiciones. Luego lo correrá a la derecha (Scroll Right) otras treinta ytres posiciones.

Device = 18F4550

XTAL=20

 ALL_DIGITAL true

LCD_DTPIN PORTD.4

LCD_RSPIN PORTD.2

LCD_ENPIN PORTD.3

LCD_INTERFACE = 4 'Serán utilizadas 4 líneas de datos

LCD_LINES = 2 'LCD de 2 líneas

LCD_TYPE = 0 'Indica que el tipo de LCD es numérica

 ALL_DIGITAL = TRUE

Dim index As Byte

Symbol SCRRIGHT = 28

Main:

Print $fe,1

Page 11: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 11/13

Print At 1,1, "Electronica y Telecomunicaciones"

DelayMS 2000

GoSub Scroll_Derecha

DelayMS 1000

GoTo Main

Scroll_Derecha:

For index= 0 To 32

Print $FE,SCRRIGHTDelayMS 300

 Next

Return

CI RCUI TO:

Ejem plo 7 . Gráf ica de Barr as con LCD

‘Programa para generar un código de barras horizontal en la LCD | | | | | | | | | | | | | | | | | | | | | | Valor = xx 

Device 18F4550

XTAL = 20

 ALL_DIGITAL true

LCD_DTPIN PORTD.4

LCD_RSPIN PORTD.2

LCD_ENPIN PORTD.3

LCD_INTERFACE = 4 'Serán utilizadas 4 líneas de datos

LCD_LINES = 2 'LCD de 2 líneas

LCD_TYPE = 0 'Indica que el tipo de LCD es numérica

 ALL_DIGITAL = TRUE

' -----------------------------------------------------------------

Dim BAR_VAL As Byte ' Valor a graficar 

Dim BARS As Byte ' Numero de barras ||| a graficar 

Dim BALANCE As Byte ' Balance a la izq. | después barras

Dim  F As Byte ' Se necesita un caracter de balanceBAL

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 = $40

' Retardo requerido por la LCD

Page 12: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 12/13

DelayMS 1000 ' Limpia todas variables en RAM 

Cls

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

Print $FE,$40, $00,$00,$00,$00,$00,$00,$00,$00

'CARGANDO EL 2DO. CARACTER (| ) PERSONALIZADO EN LA CGRAM 

Print $FE,$48, $10,$10,$10,$10,$10,$10,$10,$10

'CARGANDO EL 3RO. CARACTER (|| )PERSONALIZADO EN LA CGRAM 

Print $FE,$50, $14,$14,$14,$14,$14,$14,$14,$14

'CARGANDO EL 4TO. CARACTER (|||)PERSONALIZADO EN LA CGRAM Print $FE,$58, $15,$15,$15,$15,$15,$15,$15,$15

' Programa Principal

'------------------------------------------------------------------

Main

For BAR_VAL = 0 To 50

:

GoSub Bargraph

DelayMS 100

 Next

For BAR_VAL = 50 To 0 Step -1

GoSub rgraphBa

DelayMS 100

 Next

GoTo Main'SubRutinas

'------------------------------------------------------------------

Bargraph:

 WARNINGS = OFF

BYTE_MATH = On

BARS = (BAR_VAL Min BAR) / 3MAX

BALANCE = (BAR_VAL Min MAXBAR) //3

BALF = BALANCE Min 1

Print At 1,1,Rep FULLBAR\BARS,Rep (BALANCE + BASEBAR)\BALF,_

Rep " " \B_WDTH - (BARS + BALF)

Print At 2,1,"Valor = ", Dec BAR_VAL," "

BYTE_MATH OF

 WARNINGS = On

= F

Return

CI RCUI TO:

Page 13: Pantalla Lcd de Caracteres

5/14/2018 Pantalla Lcd de Caracteres - slidepdf.com

http://slidepdf.com/reader/full/pantalla-lcd-de-caracteres 13/13

Ejem plo 8. MA NEJO DE LCD DE MAS DE 2 LI NEAS

Device 18F4550

XTAL = 20

 ALL_DIGITAL true

LCD_DTPIN PORTD.4

LCD_RSPIN PORTD.2

LCD_ENPIN PORTD.3LCD_INTERFACE = 4 'Serán utilizadas 4 líneas de datos

LCD_LINES = 4 'LCD de 2 líneas

LCD_TYPE = 0 'Indica que el tipo de LCD es numérica

 ALL_DIGITAL = TRUE

BASLA:

Print At 1,2,"TUTORIAL DE PROTON"

DelayMS 1000

Print At 2,2,"MANEJO LCD DE 20*4"

DelayMS 1000

Print At 3,4,"PARA FOROS DE"

DelayMS 1000

Print At 4,5,"ELECTRONICA"DelayMS 1000

Print Cls

Print At 2,3, "**MECATRODATOS**"

DelayMS 1000

GoTo BASLA

End

CI RCUI TO: