Lcd

696 views
599 views

Published on

Published in: Business, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
696
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
39
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lcd

  1. 1. CONEXIÓN DE UNA PANTALLA LCD A UN MICROCONTROLADORALUMNOS:José Hipólito PascualJosé Luis FernándezEnrique SilvestreMario PozoJosé Ignacio Seguí 1
  2. 2. INDICE1-Introducción2-¿Qué es un LCD?2.1-Los caracteres del LCD2.2-Diversidad de módulos LCD3-Tipos de memorias del LCD3.1-DD RAM (Display Data Ram)3.2-CG RAM (carácter generator RAM)4-Interface con el exterior y funcionamiento del módulo4.1-Asignación de pines4.2-Interface del display con un microcontrolador4.3-El bus de datos4.4-El bus de control4.5-Conectando un módulo LCD a un Microprocesador PIC16F84 oPIC16F87x4.6-Secuencia de inicialización del módulo LCD4.7-Tiempos mínimos requeridos para que una instrucción o un datopuedan ser ejecutados5-Comandos del LCD y ejemplo de programa 2
  3. 3. 1-Introducción Antes de aparecer los módulos LCD, se utilizaban los Displays de sietesegmentos para poder mostrar la información. Tenían una gran limitación de podermostrar los caracteres alfa numéricos y símbolos especiales, también consumíandemasiada corriente y ocupaban demasiado espacio físico. Posteriormente aparecieronotros tipos de displays mas complejos que podían mostrar algunos caracteres ysímbolos; pero tenían de igual manera mucho consumo de corriente y espacio físicoocupaban también bastante espacio físico. Finalmente aparecieron los módulos LCD opantallas de cristal liquido la cual tiene la capacidad de mostrar cualquier carácter alfanumérico. Estos dispositivos ya vienen con su pantalla y toda la lógica de controlpreprogramada en la fabrica y lo mejor de todo es que el consumo de corriente esmínimo y no hace falta realizar tablas especiales como se hacia anteriormente con losdisplays de siete segmentos. Las aplicaciones de los módulos LCD son infinitas ya que pueden ser aplicadosen la informática, comunicaciones, telefonía, instrumentación, robótica, automóviles,equipos industriales, etc.2-¿Qué es un LCD? La definición mas clara de un LCD es: una pantalla de cristal liquido quevisualiza unos ciertos caracteres. Para poder hacer funcionar un LCD, debe de estarconectado a un circuito impreso en el que estén integrados los controladores del displayy los pines para la conexión del display. Sobre el circuito impreso se encuentra el LCDen sí, rodeado por una estructura metálica que lo protege. En total se pueden visualizar 2 líneas de 16 caracteres cada una, es decir,2x16=32 caracteres. A pesar de que el display sólo puede visualizar 16 caracteres porlínea, puede almacenar en total 40 por línea. Es el usuario el que especifica qué16 caracteres son los que se van a visualizar. Tiene un consumo de energía de menos de 5mA y son ideales para dispositivosque requieran una visualización pequeña o media. 3
  4. 4. 2.1-Los caracteres del LCD El LCD dispone de una matriz de 5x8 puntos para representar cada carácter. Entotal se pueden representar 256 caracteres diferentes. 240 caracteres están grabadosdentro del LCD y representan las letras mayúsculas, minúsculas, signos de puntuación,números, etc... Existen 8 caracteres que pueden serdefinidos por el usuario. En la siguiente tabla se muestran los caracteres mas importantes que es capaz derepresentar la pantalla LCD. No estan representados los caracteres correspondientes alos códigos desde el $80 hasta el $FF, que corresponden a símbolos extraños. Loscódigos comprendidos entre el 0 y el 7 están reservados para que el usuario los defina.Código Carac. Código Carac. Código Carac. Código Carac. Código Carac. Código Carac.$20 Espacio $30 0 $40 $50 P $60 ` $70 p$21 ! $31 1 $41 A $51 Q $61 a $71 q$22 “ $32 2 $42 B $52 R $62 b $72 r$23 # $33 3 $43 C $53 S $63 c $73 s$24 $ $34 4 $44 D $54 T $64 d $74 t$25 % $35 5 $45 E $55 U $65 e $75 u$26 & $36 6 $46 F $56 V $66 f $76 v$27 ‘ $37 7 $47 G $57 W $67 g $77 w$28 ) $38 8 $48 H $58 X $68 h $78 x$29 ( $39 9 $49 I $59 Y $69 I $79 y$2A * $3A : $4A J $5A Z $6A j $7A z$2B + $3B ; $4B K $5B [ $6B k $7B {$2C , $3C < $4C L $5C $6C l $7C |$2D - $3D = $4D M $5D ] $6D m $7D }$2E . $3E > $4E N $5E ^ $6E n $7E$2F / $3F ? $4F O $5F - $6F o $7F 4
  5. 5. 2.2-Diversidad de módulos LCD En la actualidad existe una gran variedad de versiones, clasificadas en dosgrupos. El primer grupo esta referido a los módulos LCD de caracteres (solamente sepodrán presentar caracteres y símbolos especiales en las líneas predefinidas en elmodulo LCD) y el segundo grupo esta referido a los módulos LCD matriciales ( Sepodrán presentar caracteres, símbolos especiales y gráficos). Los módulos LCD varíansu tamaño físico dependiendo de la marca; por lo tanto en la actualidad no existe untamaño estándar para los módulos LCD.3-Tipos de memorias del LCD Un dispositivo LCD dispone de dos tipos de memorias ambas independientes.Estas memorias se denominan DD RAM y CG RAM.3.1-DD RAM (Display Data Ram) Es la memoria encargada de almacenar los caracteres de la pantalla que se estenvisualizando en ese momento, o bien, que esten en una posición no visible. El displaytiene una capacidad de 2 lineas horizontales por 40 caracteres cada una, de los cualessolo seran visibles 2 lineas de 16 caracteres cada una. La DDRAM tiene un tamaño de2x40=80 bytes. Una vez conocida la disposición de almacenamiento del display, es facil pensaren un display de 2 líneas de 40 caracteres sobre el que se desplaza una ventana de 2líneas por 16 caracteres como se muestra en el dibujo. El orden de cuante de los caracteres seria empezando de izquierda a derecha, detal modo que el carácter 1 seria el primero de la izquierda y el 40 seria el situado más ala derecha. Para localizar los caracteres se utilizan dos coordenadas (X,Y) siendo Y el 5
  6. 6. valor vertical comprendido entre 1 y 2 (valor de línea) y X el valor horizontal (1-40) queindicara el carácter. En el ejemplo de arriba, vemos la frase ”ALUMNOS DE TELEMATICAEPSA”, pero en el display solo se visualizaria “TELEMÁTICA EPSA “ quecorresponderia a los 16 caracteres visibles. Para visualizar toda la informaciónalmacenada en el display, podremos tratar al recuadro de 2 líneas por 16 caracterescomo si se tratara de una ventana móvil. Cuando inicializamos el LCD la pantallatendría un aspecto como el de la siguiente figura. En este ejemplo, la letra E estaria situada en la posición (16,1) y la letra A en la(7,1). El mapa de memoria de la DD RAM esta constituido por dos bloques de 40bytes cada uno. El primer bloque corresponde con los 40 caracteres de la línea 1 y elsegundo bloque con los de la línea 2. Las direcciones en hexadecimal $00-$27 estánasociadas con las posiciones de almacenamiento del display (1,1) a (40,1), y lasdirecciones $40-$67 con las de almacenamiento (1,2) a (40,2). A continuación vemos elmapa de memoria DDRAM. 6
  7. 7. 3.2-CG RAM (carácter generator RAM) La CG RAM contiene los caracteres qque pueden ser definidos por el usuario, esdecir que pueden ser personalizados. Está formada por 64 posiciones, con direcciones$00-$3F. Cada posición es de 5 bits. Le memoria esta dividida en 8 bloques que corresponden a los posiblescaracteres creados por el usuario que van del 0 al 7 como se muestra en el dibujo. 7
  8. 8. Cada carácter esta constituido por una matriz de 5 columnas por 8 filas. De estemodo un 1 indica un punto de la matriz encendido, y un 0 apagado como se ve en leasiguiente figura. A continuación si quisiéramos almacenar este carácter en la posición 0 de la CGRAM, tendríamos que almacenar cada una de las líneas de 5 bits en las direcciones de laCG RAM que van de la $00 hasta la $07 como se veia en el mapa de memoria CGRAM.4-Interface con el exterior y funcionamiento del módulo4.1-Asignación de pines 8
  9. 9. A continuación podemos ver la asignación de pines en una pantalla LCD Los pines 1 y 2, son los utilizados para la alimentacón del módulo LCD. Latensión utilizada es de 5 voltios. El pin 3 se utiliza para ajustar el contraste de la pantalla LCD. Por medio de unpotenciómetro regularemos la intensidad de los caracteres, a mayor tensión mayorintensidad. Se suele utilizar un potenciómetro de unos 10 o 20 k, que regulara la mismatensión que se utiliza para la alimentación. El pin 4 se utiliza para indicar al bus de datos si la información que le llega esuna instrucción o por el contrario es un carácter. Si RS=0 indicara que en el bus dedatos hay presente una instrucción, y si RD=1, indicará que tiene un carácteralfanumérico. El pin 5 es el de escritura o lectura. Si esta a 0 el módulo escribe en pantalla eldato que haya en el bus de datos, y si esta a 1 leeremos lo que hay en el bus de datos. El pin 6 es el indicado de hacer que el módulo LCD funcione, o por el contrariono acepte ordenes de funcionamiento. Cuando E=0 no se podrá utilizar el display ycuando E=1 se podran trnsferir datos y realizar las demás operaciones. Las pines del 7 al 14 son los del bus de datos.4.2-Interface del display con un microcontrolador 9
  10. 10. Las conexiones entre un microcontrolador y una pantalla LCD, serán la del busde datos de 8 bits y las de los pines de control, es decir, E, RS y R/W. Debido a esto, elmicrocontrolador deberá utilizar 11 bits para controlar la pantalla.4.3-El bus de datos El bus de datos de un módulo LCD puede funcionar como un bus de 8 bits ocomo un bus multiplexado de 4 bits. Esto permitiria ahorrar 4 patillas almicrocontrolador utilizado pero complicaria mucho el control del LCD ya que habríaque multiplexar y demultiplexar los datos. Si se realizara la multiplexación, soloutilizadiamos los pines del D4 al D7, y primero se retransmitirían los bits mássignificativos y luego los menos significativos.4.4-El bus de control Esta formado por las señales RS, R/W y E. Su función se explica en el punto 4.1sobre el funcionamiento de los pines.4.5-Conectando un módulo LCD a un MicroprocesadorPIC16F84 o PIC16F87x 10
  11. 11. Seguidamente vamos a ver como utilizar un modulo LCD con unmicrocontrolador modelo PIC16F84. La arquitectura de un microprocesador Z-80 es uno de los componentesque ha determinado un avance en cuanto a simplificación de componentes. El programa que se utiliza en este caso tiene las rutinas de tiempocalculadas con un cristal de 4 Mhz. Las rutinas de tiempo establecidas en elprograma serían mucho mas cortas si el cristal utilizado fuese mayor de 4 Mhz,en cambio si la velocidad del cristal fuese menor a 4 Mhz , las rutinas seríanbastante mas largas. Por lo tanto, el cristal que se gaste va a condicionar almódulo LCD , pudiendo ocasionar problemas de velocidad y saturación.Declaración de constantes Es una serie de constantes utilizadas por el programa. En la siguientetabla vemos un código de algunas constantes reservadas por el propiomicrocontrolador PIC 16F84 y también otras de uso personal. Se trata de unoscomandos dirigidos al ensamblador. La sección amarilla representa los registros de funciones especiales delmicrocontrolador, la sección naranja representa los Bits del puerto "A"destinados al bus de control del modulo LCD y finalmente la sección verderepresenta las constantes que definirán los tiempos de las rutinas detemporización. DECLARACION DE CONSTANTES. CODIGO COMENTARIO PORTB EQU 0X06 Dirección del puerto B TRISB EQU 0X06 Configurador del puerto B para I/O. PORTA EQU 0X05 Dirección del puerto A TRISA EQU 0X05 Configurador del puerto A para I/O. STATUS EQU 0X03 Dirección del registro STATUS. LCD_E EQU 2 Bit del puerto A para control de E. LCD_RW EQU 1 Bit del puerto A para control de R/W. LCD_RS EQU 0 Bit del puerto A para control de RS. RETARDO1 EQU 0X0D Constante del temporizador 1 RETARDO2 EQU 0X00 Constante del temporizador 2 Reserva de Memoria RAM El PIC16F84 tiene disponible 68 Bytes de memoria RAM. La memoriacomienza desde la dirección 0X0C ( Posición numero 13 del mapa de registros )y termina en la posición 0X4F ( Posición numero 80 del mapa de registros ). 11
  12. 12. La instrucción ORG le indica al ensamblador donde debe comenzar areservar la memoria RAM que a continuación declaramos. En este caso, tan solo necesitamos dos bytes de memoria RAM. RESERVA DE MEMORIA RAM CODIGO COMENTARIO ORG 0X0C Inicio de los registros de Uso general CONT1 RES 1 Reserva un Byte para la Variable CONT1 CONT2 RES 1 Reserva un Byte para la Variable CONT2Configuración de los Puertos El siguiente código le dice al microcontrolador PIC16F84 que el puerto"A" con sus cinco líneas y el puerto "B" con sus ocho líneas serán configuradoscomo salidas para nuestro pequeño experimento. CONFIGURACION DE LOS PUERTOS CODIGO COMENTARIO ORG 0X00 BSF STATUS,5 Cambio al banco 1 MOVLW b00000000 MOVWF TRISA Configura todo el puerto A como salida. MOVLW b00000000 MOVWF TRISB Configura todo el puerto B como salida BCF STATUS,5 Cambio al banco 0 12
  13. 13. Programa Principal La sección en color rosa representan las instrucciones necesarias para lainicialización del modulo LCD. La sección en color verde representa elprograma que se encargara de escribir la palabra "IRLANDES". En la columnade COMENTARIO del programa PROGRAMA PRINCIPAL CODIGO COMENTARIO Llamada de subrutina de tiempo de 15 milisegundos. Esta Subrutina es solicitada CALL TEMPO2 en el momento que se enciende el circuito para esperar que el modulo LCD estabilice sus voltajes internos. Este comando carga en el acumulador del PIC16F84 el número binario que representa el comando en el modulo LCD para trabajar con un bus de datos de 8 Bits. Posteriormente a esta instrucción se ejecuta MOVLW b00110000 una subrutina llamada LCDI ( LCD INSTRUCCION) que estará encargada de colocar el dato en el modulo LCD ( Bus de datos ) y ejecuta la secuencia requerida para el bus de control del modulo LCD. Llamada de una subrutina que estará encargada de colocar el dato en el modulo CALL LCDI LCD ( Bus de datos ) y ejecuta la secuencia requerida para el bus de control del modulo LCD. Este comando carga en el acumulador del PIC16F84 el numero binario que representa el comando en el modulo LCD para trabajar con Activación de dos líneas en el modulo MOVLW b00111000 LCD. Posteriormente a esta instrucción se ejecuta una subrutina llamada LCDI que fue explicada en la instrucción numero 2 de esta misma tabla. Llamada de una subrutina que estará encargada de colocar el dato en el modulo CALL LCDI LCD ( Bus de datos ) y ejecuta la secuencia requerida para el bus de control del modulo LCD. Este comando carga en el acumulador del PIC16F84 el numero binario que representa el comando en el modulo LCD para trabajar con encendido de la pantalla y el cursor en MOVLW b00001110 el modulo LCD. Posteriormente a esta instrucción se ejecuta una subrutina llamada LCDI que fue explicada en la instrucción numero 2 de esta misma tabla. Llamada de una subrutina que estará CALL LCDI encargada de colocar el dato en el modulo LCD ( Bus de datos ) y ejecuta la secuencia 13
  14. 14. requerida para el bus de control del modulo LCD. Este comando carga en el acumulador del PIC16F84 el numero binario que representa el comando en el modulo LCD para trabajar con el desplazamiento del cursor a la MOVLW b00000110 derecha Posteriormente a esta instrucción se ejecuta una subrutina llamada LCDI que fue explicada en la instrucción numero 2 de esta misma tabla. Llamada de una subrutina que estará encargada de colocar el dato en el modulo CALL LCDI LCD ( Bus de datos ) y ejecuta la secuencia requerida para el bus de control del modulo LCD. MOVLW "I" Coloca el carácter ASCII en W CALL LCDC Rutina para escribir un carácter en el LCD. MOVLW "R" Coloca el carácter ASCII en W CALL LCDC Rutina para escribir un carácter en el LCD. MOVLW "L" Coloca el carácter ASCII en W CALL LCDC Rutina para escribir un carácter en el LCD. MOVLW "A " Coloca el carácter ASCII en W CALL LCDC Rutina para escribir un carácter en el LCD. MOVLW "N" Coloca el carácter ASCII en W CALL LCDC Rutina para escribir un carácter en el LCD. MOVLW "D" Coloca el carácter ASCII en W CALL LCDC Rutina para escribir un carácter en el LCD. MOVLW "E" Coloca el carácter ASCII en W CALL LCDC Rutina para escribir un carácter en el LCD. MOVLW "S" Coloca el carácter ASCII en W CICLO GOTO CICLOSubrutinasSubrutina para ejecutar una Instrucción. Es la hemos llamado LCDI y se encarga de la configuración del bus decontrol del módulo LCD, para ejecutar una instrucción presente en el bus dedatos. La instrucción es inmediatamente ejecutada por el modulo LCD cuandose activa el ENABLE. Esta subrutina es utilizada por el programa principalsolamente cuando se requiere dar una Instrucción al modulo LCD. SUBRRUTINA LCDI: ( EJECUCION DE UNA INSTRUCCION ) CODIGO: COMENTARIO LCDI BCF PORTA,LCD_RW Coloca "0" en el Pin RW. BCF PORTA,LCD_RS Coloca "0" en el Pin RS. 14
  15. 15. BSF PORTA,LCD_E Coloca "1" en el Pin E Coloca el contenido de "W" en el MOVWF PORTB bus de datos del modulo LCD. BCF PORTA,LCD_E Coloca "0" en el Pin E Llamada de una subrutina de CALL TEMPO1 tiempo de 40 micro segundos. RETURN Finaliza la Rutina de tiempo.Subrutina para escribir un dato o un carácter en el modulo LCD. Esta subrutina configura el bus de control del modulo LCD para escribirun dato que esta presente en el bus de datos del modulo LCD . El dato se escribeen la pantalla inmediatamente cuando se activa el ENABLE. Esta subrutina esutilizada por el programa principal solamente cuando se quiere escribir uncarácter en el modulo LCD. SUBRRUTINA LCDC: ( ESCRIBIR UN DATO O CARACTER ) CODIGO: COMENTARIO LCDC BCF PORTA,LCD_RW Coloca "0" en el Pin RW. BSF PORTA,LCD_RS Coloca "1" en el Pin RS. BSF PORTA,LCD_E Coloca "1" en el Pin E Coloca el contenido de "W" en el MOVWF PORTB bus de datos del modulo LCD. BCF PORTA,LCD_E Coloca "0" en el Pin E Llamada de una subrutina de CALL TEMPO1 tiempo de 40 micro segundos. RETURN Finaliza la Rutina de tiempo. Subrutina de 58 microsegundos. Es solicitada cuando se ejecuta una instrucción o un dato para dar eltiempo necesario que requiere el modulo LCD para finalizar el proceso. Estasubrutina denominada TEMPO1 tiene una curación de 58 microsegundosbasados en un cristal de 4 Mhz. SUBRRUTINA DE TIEMPO ( TEMPO1 ) CODIGO: COMENTARIO TEMPO1 MOVLW RETARDO1 MOVWF CONT1 CICLOT1 NOP DECFSZ CONT1,1 GOTO CICLOT1 RETURN 15
  16. 16. Subrutina de 15.37 milisegundos. Esta subrutina de tiempo es utilizada solamente cuando se enciende lapantalla para la estabilización de los voltajes. Esta subrutina denominadaTEMPO2 tiene una duración de 15.37 milisegundos basados en un cristal de 4Mhz. SUBRRUTINA DE TIEMPO ( TEMPO2 ) CODIGO: COMENTARIO TEMPO2 MOVLW RETARDO2 MOVWF CONT2 CICLOT2 CALL TEMPO1 DECFSZ CONT2,1 GOTO CICLOT2 RETURN Conexión gráfica de un modulo LCD a un Microcontrolador PIC16F84.. Esquema del circuito 16
  17. 17. 4.6-Secuencia de inicialización del modulo LCD La secuencia de inicialización para cualquier módulo LCD es imprescindible, ydebe ser operada en la pantalla del módulo. La inicialización se basa en una serie deinstrucciones introducidas por nosotros y posteriormente procesadas por el móduloLCD para su funcionamiento normal. Las instrucciones que están dentro de lainicialización solamente se ejecutan después que se enciende el modulo LCD y nopodrán ser cambiadas posteriormente. Ejemplos de instrucciones que solo podrán ejecutarse cuando inicializamos elmódulo LCD: - Selección de la longitud del bus de datos ( 4 Bits / 8 Bits ). - Activar el numero de líneas que se visualizaran en el modulo LCD. - Encender el Modulo LCD. Las siguientes instrucciones también podrán ser colocadas en la inicialización,con la diferencia que podrán ser cambiadas en cualquier parte del programa. - Mantener el mensaje fijo y desplazar el cursor. - Desplazar el mensaje y mantener el cursor fijo. - Hacer que el carácter señalado parpadee o no. El módulo ejecuta automáticamente una secuencia de inicio interna en el instantede aplicarle la tensión, y hay unos requisitos de estabilidad. El tiempo mínimo que tarda en estabilizarse la tensión entre 0,2 y 4,5 voltiosdebe estar comprendido entre 0,1 y 10 milisegundos. Por otro lado el tiempo mínimo de desconexión debe ser de 0,1 milisegundosantes de volver a conectar. 17
  18. 18. La secuencia de inicio ejecutada es la siguiente: 1. Se ejecuta el comando CLEAR DISPLAY borrando la pantalla. El flagBUSY se mantiene a "1" (ocupado) durante 15 mS hasta que finaliza la inicialización. 2. Se ejecuta el comando FUNCTION SET, que establece el interfaz con el Busde datos. Se elige por defecto el tamaño del bus de datos a 8 bits (DL=1) y el número derenglones del display en 1 (N=0). 3. Se ejecuta el comando DISPLAY ON/OFF CONTROL, que hace que eldisplay que en OFF (D=0); también cursor en OFF (C=0) y sin parpadeo del cursor en(B=0) 4. Se ejecuta el comando ENTRY MODE SET, que establece la dirección demovimiento del cursor con autoincremento del cursor (I/D=1) y modo normal, nodesplazamiento, del display (S=0). Si la conexión de la alimentación no reúne las condiciones que exige el móduloLCD, habría que realizar la secuencia de inicialización por software. En cualquier caso,es importante enviar al LCD la primera instrucción de trabajo después de que hayantranscurrido 15 ms, para completar dicha secuencia de inicialización.SECUENCIA TIPICA DE INICIALIZACION DEL LCD En la siguiente figura se ha representado en un diagrama la secuencia deinicialización del LCD para trabajar con un bus de datos de 8 ó 4 bits. Para el caso de 8bits no hay ningún problema, sin embargo el caso de 4 bits es un poco más complejo.Después de encender el LCD aparecerá la linea superior un poco más oscura que lainferior. Esto quiere decir que el display no ha sido inicializado todavía. En el caso de 4bits sólo se conectan los 4 bits mas significativos del LCD, dejando los otros 4 al ‘aire’.Al enviar el código 2 (Bits 0 0 1 0) el display se configura para trabajar a 4 bits. Sepuede observar cómo la linea superior deja de estar más oscura que la inferior. A partirde este momento las transferencias hay que realizarlas en dos partes: primero se envíanlos 4 bits mas significativos y después los 4 bits menos significativos. Para confirmarque la transferencia es a 4 bits hay que enviar el código $28; primero los bits 0 0 1 0 ydespués los bits 1 0 0 0. De aquí en adelante la inicialización es igual tanto para 8 bitscomo para 4, con la salvedad de que en el segundo caso hay que enviar los datosmultiplexados. 18
  19. 19. 4.7-Tiempos mínimos requeridos para que una instrucción o undato puedan ser ejecutados. Los Pines de control ( E, RS y E/W ) están relacionados ya que pormedio de ellos podemos especificar la opción de ejecutar una instrucción o leer /escribir un dato en la pantalla o la memoria RAM; sin embargo existe unacondición importante que deberá tomarse en cuenta referida directamente altiempo necesario que se necesita para cambiar de un estado a otro en los pinesde control. ( E, RS y R/W ). En el caso de que este tiempo sea mas pequeño queel tiempo mínimo requerido, entonces el modulo LCD no tendrá el tiemposuficiente para responder a las instrucciones solicitadas por el usuario y porconsecuencia se perderán los datos o instrucciones según sea el caso. Es decir, no debemos obviar la velocidad propia del módulo LCD con lapropia del microcontrolador que estemos utilizando, ya que si no se tiene encuenta la velocidad del microprocesador y esta sobrepasa la del módulo LCD,éste último no tendrá capacidad suficiente como para ir procesando y ejecutandotodo el flujo, y por lo tanto perderemos información . Para ello los programas o los circuitos electrónicos que manejan unmódulo LCD deberán respetar los siguientes diagramas de tiempo: 19
  20. 20. Diagrama de tiempo para una Instrucción: Si se quiere enviar una instrucción al módulo LCD, colocamos elcomando en el bus de datos ( pines del 7 al 14 ). Posteriormente se ejecuta eldiagrama de tiempo requerido para una instrucción en los pines de control. Este diagrama de tiempo es muy sencillo de entender, tan solo usteddeberá colocar: el Pin RS = 0, el Pin R/W = 0 y el Pin E = 0. Luego, se cambia el estado del Pin E a 1, debiendo permanecer en dichoestado al menos durante 450 ns. De no ser así el módulo LCD no podrá aceptarel comandoDiagrama de tiempo para escribir un Dato: En el caso de querer escribir un dato al módulo LCD, colocamos el datoen el bus ( pines del 7 al 14 ) como antes. Y entonces ejecutamos el diagrama detiempo requerido para escribir un dato en los pines de control. Ponemos el Pin RS = 1, el Pin R/W = 0 y el Pin E = 0. Cuando ya terminemos este proceso, se cambia el estado del Pin E = 1,debiendo permanecer en dicho estado al menos durante 450 ns. De no ser así elmódulo LCD no podrá aceptar el comandoDiagrama de tiempo para leer un Dato: En el caso de querer leer un dato de la pantalla LCD o de la memoriaLCD, los pines de control hay que configurarlos así; Pin RS = 1, Pin R/W = 1 yel Pin E = 0. 20
  21. 21. Seguidamente cambiamos el Pin E a 1, debiendo permanecer en dichoestado al menos durante 450 ns. De no ser así el módulo LCD no podrá aceptarla instrucción.Notas comunes- El pin E debe estar inicialmente en el estado lógico 0, para posteriormenteconmutar a 1, permaneciendo mínimo 450 ns.- Cuando el Pin "E" del modulo LCD tiene el flanco de bajada, se ejecuta lainstrucción o el dato presente en el bus de control. En la siguiente figura vemos los cronogramas correspondientes a una operaciónde escritura y otra de lectura de una forma un poco mas básica. Como ya hemos dichocon anterioridad los tiempos mínimos se deben respetar. Las operaciones de lectura yescritura son muy sencillas. Se ha supuesto que las transmisiones de los datos serealizaban a 8 bits. 21
  22. 22. DIAGRAMA DE MONITORIZACIÓN DE UNA LCD 22
  23. 23. 5-Comandos del LCD y ejemplo de programa La forma de controlar un el LCD es a traves de comandos que se envian alregistro de control del a LCD, seleccinado al poner la señal RS (Register Select,selecciona el registro interno que se va a leer o escribir) a nivel bajo(0). Cuando lo quese quiere es imprimir caracteres en el display o enviar información a la CG RAM paradefinir caracteres se selecciona el registro de datos poniendo RS a nivel alto (1). Existe un controlador de direcciones para la DD RAM y orto para la CG RAM,el cual contienela direccion a la que se va a acceder. Modificando el control dedirecciones es posible acceder a cualquier posición de la CG RAM como de la DDRAM. Cada vez que se realiza una acceso a memoria, el contador de direcciones seincrementa o se decrementa automáticamente, según como se haya configurado el LCD. Al LCD le lleva cierto tiempo procesar cada comando enviado. Por ello, para que seejecute el comando especificado es necesario asegurarse de que el comando anterior hafinalizado. Existen 2 estrategias para realizar esto: -La primera se basa en leer del display el bit ocupado. Si este bit se encuentra a 1 quiere decir que el LCD esta ocupado procesando el comando anterior y por tanto no puede procesar nuevos comandos. -La segunda estrategia, menos elegante pero mas comoda de implementar, consiste en realizar una pausa antes de volver a enviar el siguiente comando. Los tiempos maximos que tarda el display en procesar los comandos estanespecificados por el fabricante y tienen un valor tipico de 40µs. Si se realiza una pausa 23
  24. 24. mayor o igual a esta se tiene la garantia de que el display ha terminadote ejecutar elcomando. RESUMEN DE COMANDOS: DESCRIPCION DE LOS COMANDOS: -Borrar display: Este comando borra todas las posiciones del display virtual y se situa el display real en la posición inicial, en la que se visualizan las posiciones desde la (1,1) hasta la (16,1) y desde la (1,2) hasta la (16,2). El cursor se situa en la posición (1,1). El comando seria “$01” y su tiempo de ejecución 1.64 ms. -Cursor a Home: Enviar el cursor a la posición (1,1). El display se situa en la posicion inicial. Comando “$02” y el tiempo de ejecución 1.64ms. -Estabecer modo de funcionamiento: Actualiza el contador de direcciones en la forma especificada y establece si el display realiza los desplazamientos o no. Estas acciones se llevan a cabo cada vez que se realizan una lectura o escritura en el display. Cuando I/D=1, el controlador de direcciones se incrementa, lo que provoca que el cursor avance hacia la derecha cada vez que se imprime un carácter en el display. Cuando I/D=0 el contador se decrementa y el cursor se mueve hacia la izquierda al imprimir. Con S=1 se indica al LCD que debe mover el display una posición a la derecha cada vez que se imprime un carácter. Con S=0 el display 24
  25. 25. debe de permanecer ‘quieto’al imprimir. El comando es “0 0 0 0 0 1 I/D S” y su T.E.=40µs -Control ON/OFF: Es la funcion encargada de activar o desactivar el display, el cursor y el parpadeo. 1. Display ON/OFF: D=1 activar el LCD. Cuando D=0 el LCD funciona normalmente pero no se visualiza ninguna información. Es posible realizar impresiones, enviar comandos, pero nada quedara reflejado en pantalla. Solo cuando D=1 se puede ver algo en el display 2. Cursor ON/OFF: C=1 activa el Curso y al contrario, C=0 no se mueve. 3. Parpadeo ON/OFF: B=1 hace que los caracteres situados en la posición del cursor parpadeen. B=0 no hay parpadeo. El comando es “0 0 0 0 1 D C B” y su codigo tipico $0E, su T.E:=40µs -Desplazamiento del cursor/display: Desplaza una posición el cursor o el display. Con S/C=1 se mueve el display, S/C=0 no. R/L=1 desplaza a la derecha y R/L=0 a la izquierda. El Comando es 0 0 0 1 S/C R/L 0 0 y su T.E.= 40µs. -Modo de transferencia de la informacio: Selecciona el bus de datos del display para trabajar a 8 bits (DL=1) o a 4 bis (DL=0). Su comando es “0 0 1DL 1 0 0 0” y su T.E.=40µs. -Acceso a posiciones concretas de la CG RAM: Da acceso a las direcciones de la A5 a la A0 de la CG RAM. Esta es la direccion que se copia en el contador de direcciones de la CG RAM. La siguiente escritura en el registro de datos display (RS=1) se copiara en la posición indicada de la CG RAM. Su comando “0 1 A5 A4 A3 A2 A1 A0” y su T.E.=40µs -Acceso a posiciones concretas de la DD RAM: Es el mismo funcionamiento que en la orden anterior. Después de dicha instrucción el registro de datos se grabara en la posición indicada de la DD RAM.su comando”1 A6 A5 A4 A3 A2 A1 A0) y su T.E.=40µs Secuencia tipica de inicializacion del LCD: Para trabajar con el bus de datos de 8 bits no hay ningun problema. Pero para unbus de datos de 4 bits es un poco mas complejo. Despues de encender el LCD aparecerala linea superior un poco mas oscura que la inferior. Esto quiere decir que el display noha sido inicializado todavía. En el caso de 4 bits solo se conectan 4 bits massignificativos del LCD, dejando los otros 4 al aire. Al enviar el codigo 2 (bits 0 0 1 0)el display se configura para trabajar a 4 bits. Se puede observar como la linea superiordeja de estar mas oscura que la inferior. A partir de ese momento las tranferencias hayque realizarlas en dos partes: primero se envian 4 bits mas significativos y después los 4bits menos significativos. Para confirmar que la transferencia es a 4 bits hay que enviarel codigo $28 ; primero los bits 0 0 1 0 y después los bits 1 0 0 0. De aquí en adelante lainicializacion es igual tanto para 8 bits como para 4, con la salvedad de que en elsegundo caso hay que enviar los datos multiplexados. 25
  26. 26. 26
  27. 27. Ejemplo de programa 27
  28. 28. 28
  29. 29. 29
  30. 30. 30

×