pantalla lcd de caracteres.pdf

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 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 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 difieren en la sintaxis, 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 dos categorías.

Upload: john-walter-ticona-quispe

Post on 07-Aug-2015

153 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: PANTALLA LCD DE CARACTERES.pdf

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 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 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 difieren en la sintaxis, 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 dos categorías.

Page 2: PANTALLA LCD DE CARACTERES.pdf

Nota: los pines 15 y 16 en las pantallas LCD son para habilitar la luz de fondo. Figura 2. Datos de comandos, pines del PIC 18f4550 conectado al LCD para enviar BITS principalmente tiene que ver con la comunicación de 4 o 8 BITS que se puede realizar con este dispositivo, y los Comandos De Control, que puede ser utilizada para la expedición diversos comportamientos integrado 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 de varias 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 un vistazo más de cerca a una pantalla LCD. Como se puede ver que hay dos líneas de cristales lí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 puntos pequeños, dispuestos en forma de matriz o una matriz. Esta matriz, tiene puntos de cristal lí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 de la memoria del controlador de pantalla. Todos los caracteres que se pueden mostrar y sus fuentes, está predefinidos.

Sin embargo, hay algo de memoria adicional disponible, en la que podemos definir nuestros caracteres personalizados. Cada posición de carácter se asigna a un determinado lugar de la memoria en la pantalla. Protón Ide dispone de una aplicación que facilita la creación de caracteres especiales denominada LCDCC.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á 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 las 8 líneas de la matriz 5x8.

Page 3: PANTALLA LCD DE CARACTERES.pdf

Figura 3 Con el fin de posicionar correctamente la visualización de datos, debe ser enviado a la ubicación de memoria adecuada. Afortunadamente todo esto se puede realizar con bibliotecas contenidas en el compilador. Aunque la pantalla tiene 16 caracteres por línea, la memoria en el interior es en realidad 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 de enviar los datos de pantalla, continúa con sus otros procesos. La pantalla LCD es lo suficientemente 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 enviado por 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 cantidad considerable de energía, especialmente si la luz de fondo está activada. Ahora vamos a explorar la biblioteca de LCD con el Protón IDE PLUS, para mostrar algunos datos sobre ella. COMANDO EN ALTO NIVEL PARA EL MANEJO DE UNA LCD El compilador Basic® PROTON® dispone de un comando para el manejo de las pantallas LCD. PRINT Item {, Item...} Item - Es una constante, variable, expresión, modificador de formato y/o un(a) string. También el comando PRINT acepta modificadores de formato como los mostrados en la siguiente tabla.

Page 4: PANTALLA LCD DE CARACTERES.pdf

A fin de utilizar la pantalla LCD de caracteres con el PIC 18f4550, primero hay que configurarla a través de las directivas del compilador. Estas directivas son las denominados “Declares”. Existen seis declaraciones diferentes para la configuración de una LCD. DECLARE LCD_TYPE 1 or 0, GRAPHIC or ALPHA Informa al compilador el tipo de pantalla LCD a utilizar. (1) selecciona una pantalla LCD del tipo gráfica. (0) selecciona una pantalla LCD del tipo carácter. Por defecto se escoge el uso de una pantalla de caracteres. DECLARE LCD_DTPIN 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 la pantalla LCD. Por defecto se utilizara el pin PORTD<4>. DECLARE LCD_ENPIN 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_RSPIN 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_INTERFACE 4 o 8 Informa al compilador si la pantalla LCD trabajará en modo 4 bits ó 8 bits. Por defecto se utiliza el modo 4 bits. DECLARE LCD_LINES 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. Ejemplos de utilización pantalla LCD. Ya en el parte 6 del tutorial, se había utilizado el LCD con el teclado matrixal, estos ejemplos hacen uso de la pantalla LCD para mostrar un mensaje inicial, el valor incremental de una variable, mensajes personalizados y movimientos entre otros. Ejemplo No.1 Device = 18F4550 XTAL=20 ALL_DIGITAL true LCD_DTPIN PORTD.4 LCD_RSPIN PORTD.2 LCD_ENPIN PORTD.3 Print Cls Print "CURSO PROTON IDE" End

Page 5: PANTALLA LCD DE CARACTERES.pdf

CIRCUITO

Print 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 se utiliza un LCD. Hace dos trabajos muy importantes. En primer lugar, cuando se enciende la electrónica del LCD, necesita algo de tiempo en estabilizarse, este comando, inserta un pequeño retraso interno, en segundo lugar, borra todos los registros, asignando todos los bits de la pantalla a 0 y coloca el cursor por defecto en la línea 1, columna1. Después de que la pantalla está preparada para aceptar los datos. El comando Print es muy versátil en PROTÓN IDE. En su forma más simple como se muestra arriba, acepta un parámetro o argumento, que es una cadena. Las cadenas son constantes de texto y siempre encerradas en comillas. Las comillas, no son parte de la cadena, por lo que no que aparecen. El comando de impresión mostrará el texto suministrado en la pantalla LCD, a partir de la actual ubicación del cursor, que el CLS establece en la línea 1 con posición 1. El cursor, que es una señal intermitente está apagado, por defecto. Podemos activarlo, como veremos más adelante. Ahora, ¿cómo controlar la posición del texto que se muestra? Eso es bastante simple, tenemos dos opciones, una es mediante el modificador AT con el comando de impresión, y el otro es el uso de comandos del cursor. El modificador AT es más de uso común y es más conveniente. Print At 2,10, "OK" Esta primera orden se moverá el cursor a la línea 2 y luego la posición 10, y luego mostrara el texto: 'OK'.

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

Page 6: PANTALLA LCD DE CARACTERES.pdf

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 signo negativo. Para hacer el tema más interesante vamos a utilizar variables de punto flotante. 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. Ejemplo No2 Device = 18F4550 XTAL=20 ALL_DIGITAL true LCD_DTPIN PORTD.4 LCD_RSPIN PORTD.2 LCD_ENPIN PORTD.3 Dim x As Byte x=$FF Print Cls Print At 1,1, "X:", Dec x End

En este programa hemos asignado un valor de $ FF a una variable de tamaño byte de x. cuenta de lo fácil que es obtener el valor de una variable se muestra en el comando: Print At 1,1, "X:", Dec x Para mostrar un valor de una variable, sólo el prefijo del nombre de la variable con el modificador de formato, en este caso Dec indica al compilador para mostrar el valor de x como un número decimal. Número de dígitos y ceros a la izquierda también puede ser graficados. Por ejemplo, queremos mostrar los números de 0 a 255, algunos números son de un solo dígito, algunos tienen dos dígitos y otros tienen tres dígitos. Es posible que los números que aparecen deban fijarse en tres dí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 modificador Dec. 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. Ejemplo No.3 Device = 18F4550 XTAL=20 ALL_DIGITAL true LCD_DTPIN PORTD.4 LCD_RSPIN PORTD.2 LCD_ENPIN PORTD.3 Dim x As Float

Page 7: PANTALLA LCD DE CARACTERES.pdf

x=3.1419 Print Cls Print At 1,1, "X:", DEC2 x End

En el ejemplo anterior x ha sido declarada como variable de tipo Float. Por lo tanto, se puede asignar fracciones decimales así Hemos asignado un valor de 3.1419. Si bien la impresión del modificador DEC2 se ha utilizado para mostrar 2 dígitos después del punto decimal, como 3.14, si omitimos el 2 del modificador todo el número se mostrará. Aquí un programa completo, este programa acepta una entrada del usuario para seleccionar un número. Un valor inicial. Ejemplo No.4 Device = 18F4550 XTAL=20 ALL_DIGITAL true LCD_DTPIN PORTD.4 LCD_RSPIN PORTD.2 LCD_ENPIN PORTD.3 Symbol SW3 = PORTE.0 Symbol SW4 = PORTE.1 Symbol SW5 = PORTE.2 Input SW3 Input SW4 Input SW5 Dim NUMERO As Byte Dim c As Byte NUMERO = 10 Loop: Print Cls Print At 1,1, "Seleccion Num:" ' IR A ENTRADAS While SW5 <> 0 Print At 2,1,"NUMERO:", DEC3 NUMERO If SW3=0 Then NUMERO=NUMERO+1 DelayMS 200 EndIf If SW4=0 Then NUMERO=NUMERO-1 DelayMS 200 EndIf Wend CIRCUITO:

Page 8: PANTALLA LCD DE CARACTERES.pdf

Los personajes personalizados La fuente y el conjunto de caracteres que aparecen por la pantalla LCD de caracteres están codificados y definidos en la memoria de LCD. Esta memoria se llama CGRAM, o caracteres de RAM generador. CGRAM contiene caracteres definidos como una matriz de 5x8. Cada bit de la matriz, se llena con 0 o 1, que se muestran como píxeles en la pantalla. No todo Conjunto de caracteres ASCII está presente en esta matriz. Por ejemplo, el carácter \ no está presente. Del mismo modo el control caracteres 0-7 están vacíos. Usted puede aprovechar esta deficiencia, para escribir bytes a CGRAM, direcciones de estos personajes y definir sus propios caracteres. Se examina el conjunto de caracteres de la pantalla con este programa: Ejemplo No.5 Device = 18F4550 XTAL=20 ALL_DIGITAL true LCD_DTPIN PORTD.4 LCD_RSPIN PORTD.2 LCD_ENPIN PORTD.3 Symbol SW3 = PORTE.0 Symbol SW4 = PORTE.1 Symbol SW5 = PORTE.2 Dim x As Byte Print Cls For x=0 To 255 Print At 1,1,Dec x, ":", x DelayMS 1000 Next End CIRCUITO

Page 9: PANTALLA LCD DE CARACTERES.pdf

Ejemplo No.5 Creando un carácter especial 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 LCD CGRAM =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.pdf

CIRCUITO:

Ejemplo 6. Efectos especiales con una Pantalla 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 y tres 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.pdf

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,SCRRIGHT DelayMS 300 Next Return CIRCUITO:

Ejemplo 7. Gráfica de Barras 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 balance BALSymbol 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.pdf

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 '------------------------------------------------------------------ MainFor BAR_VAL = 0 To 50

:

GoSub Bargraph DelayMS 100 Next For BAR_VAL = 50 To 0 Step -1 GoSub rgraph BaDelayMS 100 Next GoTo Main 'SubRutinas '------------------------------------------------------------------ Bargraph:WARNINGS = OFF

BYTE_MATH = On BARS = (BAR_VAL Min BAR) / 3 MAXBALANCE = (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 OFWARNINGS = On

= F

Return CIRCUITO:

Page 13: PANTALLA LCD DE CARACTERES.pdf

Ejemplo 8. MANEJO DE LCD DE MAS DE 2 LINEAS 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 = 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 CIRCUITO: