Está en la página 1de 18

MODULO LCD

MODULO LCD

www.teleline.terra.es/personal/fremiro

Pg .1

MODULO LCD

MODULO LCD
INTRODUCCIN Las siguientes pginas intentan dar una breve descripcin del funcionamiento del mdulo LCD incluido en el sistema de evaluacin PIC Trainer el WM-C1602M. Se trata de un mdulo microcontrolado capaz de representar 2 lneas de 16 caracteres cada una. A travs de 8 lneas de datos se le enva el carcter ASCII que se desea visualizar as como ciertos cdigos de control que permiten realizar diferentes efectos de visualizacin. Igualmente mediante estas lneas de datos el mdulo devuelve informacin de su estado interno. Con otras tres seales adicionales se controla el flujo de informacin entre el mdulo LCD y el equipo informtica que lo gestiona. A continuacin se presenta la descripcin de seales empleadas por el mdulo LCD as como el nmero de patilla a la que corresponden. Pin n Smbolo Conexin Descripcin 1 Vss Vss Patilla de tierra de alimentacin 2 Vdd Vdd Patilla de alimentacin de +5V 3 Vo Vo Patilla de contraste del cristal lquido. Normalmente se conecta a un potencimetro a travs del cual se aplica una tensin variable entre 0 y +5V que permite regular el contraste del cristal lquido. 4 RS RA0 Seleccin del registro de control/registro de datos: RS =0 Seleccin del registro de control RS=1 Seleccin del registro de datos

R/W

7-14

D0-D7

Seal de lectura/escritura R/W=0 El Mdulo LCD es escrito R/W=1 El Mdulo LCD es ledo RA2 Seal de activacin del mdulo LCD: E=0 Mdulo desconectado E=1 Modulo conectado RB0-RB7 Bus de datos bi-direccional. A travs de estas lneas se realiza la transferencia de informacin entre el mdulo LCD y el sistema informtico que lo gestiona
Pg .2

RA1

www.teleline.terra.es/personal/fremiro

MODULO LCD

INTEREASE CON-EL PIC TRAINER El internase entre este mdulo LCD y el sistema PIC TRAINER se realiza, de acuerdo con el esquema del equipo de siguiente manera: RBO-RB7 : Estn conectadas a las lneas de datos DO-D7 del mdulo. A travs por tanto, de la puerta B, se envan cdigos ASCII o de control al mdulo o, se recibe por parte de este, el estado interno del mismo. EL Port B habr que programarlo como salida cuando se vayan a enviar cdigos ASCII o de control y como entrada cuando se desee conocer el estado interno del mdulo. RA0: Se conecta con la seal de control R/S. Sacando un nivel lgico "0" por esta lnea se selecciona el registro de control del mdulo. Sacando un nivel lgico " 1 " se selecciona el registro de datos. Esta lnea debe programarse como salida. RA1: Se conecta con la seal R/W. Sacando un nivel lgico "0" por ella, el mdulo es escrito con la informacin presente en ese momento en el Port B que deber actuar como salida. Sacando un " 1 " se lee el estado interno del mdulo LCD. Dicho estado se recibe a travs del Port B que deber estar programado como entrada. La lnea RA1 debe programarse como salida. RA2: Se conecta con la seal E. Cuando se aplica un nivel "1" el mdulo queda habilitado y es posible por tanto la transferencia de informacin entre el Port B y las lneas de datos DO-D7. Aplicando un "0" el mdulo queda desconectado y sus lneas de datos DO-D7 en alta impedancia. RA2 debe programarse tambin como salida.
www.teleline.terra.es/personal/fremiro Pg .3

MODULO LCD

JUEGO DE INSTRUCCIONES: Seguidamente se presenta una serie de comando o instruciones que permiten configurar diferentes opciones de trabajo del mdulo LCD y conseguir con ello distintos efectos de visualizacin El juego de instrucciones consiste en diferentes cdigos que se introducen a travs del Bus de datos del mdulo LCD conectado al Port B de PIC Trainer CLEAR DISPLAY Borra el mdulo LCD y coloca el cursor en la primera posicin (direccin 0). Pone el bit I/D a "1" por defecto. Cdigo: RA0 RS 0 RA1 RW 0 RB7 DB7 0 RB6 DB6 0 RB5 DB5 0 RB4 DB4 0 RB3 DB3 0 RB2 DB2 0 RB1 DB1 0 RB0 DB0 1

Tiempo de ejecucin:1.64 mS HOME Coloca el cursor en la posicin de inicio (direccin 0) y hace que el display comience a desplazarse desde la posicin original. El contenido de la memoria RAM de datos de visualizacin (DD RAM) permanecen invariables. La direccin de la memoria RAM de datos para la visualizacin (DD RAM) es puesta a 0. Cdigo: RA0 RS 0 RA1 RW 0 RB7 DB7 0 RB6 DB6 0 RB5 DB5 0 RB4 DB4 0 RB3 DB3 0 RB2 DB2 0 RB1 DB1 1 RB0 DB0 X

Tiempo de ejecucin:1.64 mS

www.teleline.terra.es/personal/fremiro

Pg .4

MODULO LCD

ENTRY MODE SET Establece la direccin de movimiento del cursor y especifica si la visualizacin se va desplazando a la siguiente posicin de la pantalla o no. Estas operaciones se ejecutan durante la lectura o escritura de la DD RAM o CG RAM. Para visualizar normalmente poner el bit S a " 0 ". Cdigo: RA0 RS 0 RA1 RW 0 RB7 DB7 0 RB6 DB6 0 RB5 DB5 0 RB4 DB4 0 RB3 DB3 0 RB2 DB2 1 RB1 DB1 I/D RB0 DB0 S

Tiempo de ejecucin:40 S DISPLAY ON/OFF CONTROL Activa o desactiva poniendo en ON/OFF tanto al display (D) como al cursor (C) y se establece si este ltimo debe o no parpadear (B). Cdigo: RA0 RS 0 RA1 RW 0 RB7 DB7 0 RB6 DB6 0 RB5 DB5 0 RB4 DB4 0 RB3 DB3 1 RB2 DB2 D RB1 DB1 C RB0 DB0 B

Tiempo de ejecucin:40 S CURSOR OR DISPLAY SHIFT Mueve el cursor y desplaza el display sin cambiar el contenido de la memoria de datos de visualizacin DD RAM. Cdigo: RA0 RS 0 RA1 RW 0 RB7 DB7 0 RB6 DB6 0 RB5 DB5 0 RB4 DB4 1 RB3 DB3 S/C RB2 DB2 R/L RB1 DB1 X RB0 DB0 X

Tiempo de ejecucin:40 S
www.teleline.terra.es/personal/fremiro Pg .5

MODULO LCD

FUNCTION SET Establece el tamao de interfase con el bus de datos (DL), nmero de lneas del display (N) y tipo de carcter (F). Cdigo: RA0 RS 0 RA1 RW 0 RB7 DB7 0 RB6 DB6 0 RB5 DB5 1 RB4 DB4 DL RB3 DB3 N RB2 DB2 F RB1 DB1 X RB0 DB0 X

Tiempo de ejecucin:40 S SET THE CGRAM ADDRESS El mdulo LCD adems de tener definidos todo el conjunto de caracteres ASCII, permite al usuario definir 4 u 8 caracteres grficos. La composicin de estos caracteres se va guardando en una memoria llamada CG RAM con capacidad para 64 bytes. Cada carcter grfico definido por el usuario se compone de 16 u 6 bytes que se almacenan en sucesivas posiciones de la CG RAM. Mediante esta instruccin se establece la direccin de la memoria CG RAM a partir de la cual se irn almacenando los bytes que definen un carcter grfico. Ejecutado este comando todos los datos que se escriban o se lean posteriormente, lo hacen desde esta memoria CG RAM.

Cdigo: RA0 RS 0 RA1 RW 0 RB7 DB7 0 RB6 DB6 1 RB5 DB5 RB4 DB4 RB3 DB3 RB2 DB2 RB1 DB1 RB0 DB0

Direccin de la CG RAM

Tiempo de ejecucin:40 s

www.teleline.terra.es/personal/fremiro

Pg .6

MODULO LCD

SET THE DD RAM ADDRESS Los caracteres o datos que se van visualizando, se van almacenando previamente en una memoria llamada DD RAM para de aqu pasar a la pantalla. Mediante esta instruccin se establece la direccin de memoria DD RAM a partir de la cual se irn almacenado los datos a visualizar. Ejecutado este comando, todos los datos que se escriban o lean posteriormente los hacen desde esta memoria DD RAM. Las direcciones de la 80h a la 8Fh corresponden con los 16 caracteres del primer rengln y de la C0h a la CFh con los 16 caracteres del segundo rengln, para este modelo. Cdigo:

RA0 RS 0

RA1 RW 0

RB7 DB7 1

RB6 DB6

RB5 DB5

RB4 DB4

RB3 DB3

RB2 DB2

RB1 DB1

RB0 DB0

Direccin de la RAM Tiempo de ejecucin:40 s

READ BUSY FLAG & ADDRESS Cuando el mdulo LCD est ejecutando cualquiera de estas instrucciones, tarda un cierto tiempo de ejecucin en el que no se le debe mandar ninguna otra instruccin. Para ello dispone de un flag llamado BUSY (BF) que indica que se est ejecutando una instruccin previa. Esta instruccin de lectura informa del estado de dicho flag adems de proporcionar el valor del contador de direcciones de la CG RAM o de la DD RAM segn la ltima que se haya empleado. Cdigo: RA0 RS 0 RA1 RW 1 RB7 DB7 BF RB6 DB6 RB5 DB5 RB4 DB4 RB3 DB3 RB2 DB2 RB1 DB1 RB0 DB0

Direccin de la CG RAM o de la DDRAM Tiempo de ejecucin:1 s

www.teleline.terra.es/personal/fremiro

Pg .7

MODULO LCD

WRITE DATA TO CG OR DDRAM Mediante este comando se escribe en la memoria DD RAM los datos que se quieren presentar en pantalla y que sern los diferentes cdigos ASCII de los caracteres a visualizar. Igualmente se escribe en la memoria CG RAM los diferentes bytes que permiten confeccionar caracteres grficos a gusto del usuario. El escribir en uno u otro tipo de memoria depende de si se ha empleado previamente la instruccin de direccionamiento DD RAM o la de direccionamiento CG RAM. Cdigo: RA0 RS 1 RA1 RW 0 RB7 DB7 RB6 DB6 RB5 DB5 RB4 DB4 RB3 DB3 RB2 DB2 RB1 DB1 RB0 DB0

Cdigo ASCII o byte del carcter grfico Tiempo de ejecucin:40 s

READ DATA FRW CG OR DD RAM Mediante este comando se lee de la memoria DD RAM los datos que haya almacenados y que sern los cdigos ASCII de los caracteres visualizados. Igualmente se lee de la memoria CG RAM los diferentes bytes con los que se ha confeccionado un determinado carcter grfico. El leer de uno u otro tipo de memoria depende de si se ha empleado previamente la instruccin de direccionamiento de la DD RAM o la de direccionamiento CG RAM.

Cdigo: RA0 RS 1 RA1 RW 1 RB7 DB7 RB6 DB6 RB5 DB5 RB4 DB4 RB3 DB3 RB2 DB2 RB1 DB1 RB0 DB0

Cdigo ASCII o byte del carcter grfico Tiempo de ejecucin:40 s

www.teleline.terra.es/personal/fremiro

Pg .8

MODULO LCD

ABREVIATURAS Se listan a continuacin las abreviaturas empleadas en los cdigos anteriores y su significado: Abreviatura S=1 S=0 I/D=1 I/D=0 S/C=1 S/C=0 R/L=1 R/L=0 BF=1 BF=0 DL=1 DL=0 N=1 N=0 F=1 F=0 B=1 C=1 D=1 X=1 Descripcin Desplaza la visualizacin cada vez que se escribe un dato. Modo normal Incremento del cursor Decremento del cursor Desplaza el display Mueve el cursor Desplazamiento a la derecha Desplazamiento a la izquierda Mdulo ocupado Mdulo disponible Bus de datos de 8 bits Bus de datos de 4 bits LCD de dos lneas LCD de una lnea Carcter de 5 x 10 puntos Carcter de 5 x 7 puntos Parpadeo de cursor ON Cursor ON Display ON Interlineado

www.teleline.terra.es/personal/fremiro

Pg .9

MODULO LCD

JUEGO DE CARACTERES Es el mostrado en la siguiente Figura. Las posiciones marcadas como CG RAM (n) corresponden a uno de los 8 posibles caracteres grficos definidos por el usuario.

www.teleline.terra.es/personal/fremiro

Pg .10

MODULO LCD

www.teleline.terra.es/personal/fremiro

Pg .11

MODULO LCD

CARACTERES GRAFICOS El usuario puede definir hasta 8 caracteres de 5 x 7 puntos o 4 de 5 x 10. Se seleccionan y visualizan aplicando a la DD RAM cualquier valor entre 00 y 07 08 y 0Fh como si de un cdigo ASCII se tratara. Se definen introduciendo en sucesivas direcciones de la CG RAM unos bytes cuyos patrones binarios definen el carcter tal y como se muestra en la siguiente Tabla. Un carcter de 5 x 7 necesita de 8 octetos en la CG RAM para ser definido, uno de 5 x 10 necesita de 16. La CG RAM es una memoria de 64 posiciones en total. En el ejemplo de la Tabla, para definir la R en 5 x 7 se introducen 8 octetos en las 8 primeras posiciones (0 a la 7) de la CG RAM. Cada bit de cada uno de esos octetos que valga nivel "1" implica que su correspondiente pixel en el LCD se active. Como es el primer conjunto de 8 bytes es decir, el primer carcter de la CG RAM, este se selecciona aplicando el cdigo 00 en la DD RAM como si fuera cualquier otro cdigo ASCII.

www.teleline.terra.es/personal/fremiro

Pg .12

MODULO LCD

SECUENCIA DE INCIALIZACIN El mdulo LCD ejecuta automticamente una secuencia de inicio interna en el instante de aplicarle la tensin de alimentacin si se cumplen los requisitos de alimentacin expuestos en el siguiente cronograma.

Dichos requisitos consisten en que el tiempo que tarde en estabilizarse la tensin desde 0.2 V hasta los 4.5V mnimos necesarios sea entre 0.1 mS y 10 mS. Igualmente el tiempo de desconexin debe ser como mnimo de 1 mS antes de volver a conectar. La secuencia de inicio ejecutada es la siguiente:

1.

Se ejecuta el comando CLEAR DISPLAY borrando la pantalla. El flag BUSY


se mantiene a "1" (ocupado) durante 15 mS hasta que finaliza la inicializacin.

2. Se ejecuta el comando FUNCTION SET, que establece el interfaz con el Bus de datos. Se elige por defecto el tamao del bus de datos a 8 bits (DL=1) y el nmero de renglones del display en 1 (N=0). 3. Se ejecuta el comando DISPLAY ON/OFF CONTROL, que hace que el display que en OFF (D=0); tambin cursor en OFF (C=0) y sin parpadeo del cursor en (B=0) 4. Se ejecuta el comando ENTRY MODE SET, que establece la direccin de movimiento del cursor con autoincremento del cursor (I/D=1) y modo normal, no desplazamiento, del display (S=0). Si la conexin de la alimentacin no reune las condiciones que exige el mdulo LCD, habra que realizar la secuencia de inicializacin por software. En cualquier caso, es importante enviar al LCD la primera instruccin de trabajo

www.teleline.terra.es/personal/fremiro

Pg .13

MODULO LCD

despus de que hayan transcurrido 15 ms, para completar dicha secuencia de inicializacin.

DIAGRAMA DE TIEMPOS Es el mostrado en la figura siguiente. Junto con la tabla que acompaa se conocen los tiempos de las seales para diferentes chips controladores de mdulos

LCD.

www.teleline.terra.es/personal/fremiro

Pg .14

MODULO LCD

RUTINAS DE CONTROL En este apartado se presentan una serie de rutinas escritas en el ensamblador MPASM de MICROCHIP con objeto de proporcionar al usuario una idea de cmo gestionar las diferentes actividades a realizar con el mdulo LCD. Estn realizadas basndose en un PIC 16X84 a 4 MHz de velocidad.

LCD_E Genera un pulso por la patilla RA2 (seal E) para activar al mdulo LCD. El pulso es de lS de duracin trabajando a 4 MHz. En caso de frecuencias mayores de trabajo habr que aumentar este tiempo para no rebasar la duracin mnima impuesta por el fabricante del LCD. LCD_E bsf RA,2 nop bcf RA,2 retum ;Activa seal E ;Espera de 1S ;Desactiva seal E

LCD-BUSY Chequea el estado del flag Busy del LCD y espera a que finalice cualquier instruccin previa antes de retomar. LCD-BUSY bsf RA,1 bsf STATUS,S movlw 0xff movwf TRISB bcf STATUS,S bsf RA,2 nop L_BUSY btfsc RB,7 goto L_BUSY bcf RA,2 bsf STATUS,5 clrf TRISB bcf STATUS.5 bcf RA,1 retum ;Pone el LCD en modo lectura ;Selecciona el banco 1 ;Port B activo de entrada ;Selecciona el banco 0 ;Activa el LCD (seal E) ;Chequea el bit busy ;Est 1 " (ocupado) ;Desactiva el LCD (seal E) ;Selecciona el banco 1 ;Port B activo de salida ;Selecciona el banco 0 ;Pone el LCD en modo escrita

www.teleline.terra.es/personal/fremiro

Pg .15

MODULO LCD

LCD_REG Deposita el cdigo de instruccin presente en el registro W del PIC sobre el PortB. Espera que el LCD ejecute la ltima operacin y genera el pulso de activacin en la seal E.

LCD_REG

bcf movwf call goto

RA,0 RB LCD_BUSY LCD_E

;Desactiva RS (modo instruccin) ;Saca el cdigo de instruccin ;Espera que se libere el LCD ;Genera pulso en la seal E

LCD_DATOS Deposita el cdigo ASCII del carcter a visualizar presente en el registro W, sobre el Port B. Espera a que el LCD ejecute la ltima operacin y genera el pulso de activacin en la seal E. LCD_DATOS bcf movwf call bsf goto RA,0 RB LCD_BUS RA,0 LCD_E ;Desactiva RS (modo instruccin) ;Valor ASCU a sacar por RB ;Espera que se libere el LCD ;Activa RS (modo dato) ;Genera pulso en la seal E

LCD_INI Realiza la inicializacin del mdulo LCD segn los tiempos marcados por el fabricante (15 mS). En este ejemplo se inicia con un internase de 8 bits de bus de datos, 2 lneas de visualizacin y caracteres de 5 x 7 puntos. LCD-INI movlw b'001110001 call LCD_REG ;Cdigo de instruccin call DELAY_5MS ;Temporiza 5 mS movlw b'001110001 call LCD_REG ;Cdigo de instruccin call DELAY_5MS ;Temporiza 5 mS movlw b'00111000' call LCD-REG ;Cdigo de instruccin call DELAY-5MS ;Temporiza 5 mS return

www.teleline.terra.es/personal/fremiro

Pg .16

MODULO LCD

DELAY_5MS Genera una temporizacin de 5 mS. Se emplean dos variables llamadas DATO_A y DATO_B que se decrementan hasta completar la temporizacin. DELAY_5MS movlw 0x1A movwf DATO-B ;Carga la variable DATO -B clrf DATO_A ;Carga la variable DATO-A DELAY-1 decfsz DATO_A,1 ;Decrementa la variable DATO-A goto DELAY-1 decfsz DATO_B,1 ;Decrementa la variable DATO-B goto DELAY_1 return DELAY 10 ms Genera, con ayuda del TMRO y el preescaler de 256, una temporizacin de unos l0 mS que se repite tantas veces como indique la variable TEMPO1.

DELAYI0

bcf movlw movwf DELAY10_1 btfss goto decfsz goto


return

INTCON,2 0xD8 TMER0 INTCON,2 DELAY10_1 TEMPO1,1 DELAY10

;flag de estado del TMRO ;Carga TMRO para que cuente 39 ;Espera overflow del TMRO ;Repite TEMPO1 veces

DELAY 1 s En base a la rutina anterior se realiza una temporizacin de 1s cargando en la variable TEMPO1 el valor 100 (64h). DELAYIS movlw 0x64 movwf TEMP01 ;Caiga la variable TEMIP01 call DELAYLS return

www.teleline.terra.es/personal/fremiro

Pg .17

MODULO LCD

INSTRUCCIONES CON EL LCD


Instruccin RS 0 0 R/W 0 0 DB7 0 0 DB6 0 0 DB5 0 0 Cdigo DB4 0 0 DB3 0 0 DB2 0 0 DB1 0 1 DB0 1 * Descripcin Tiempo max de ejecucin 82s1.64ms 40s1.64ms

Clear Display Returm home

Entry mode set

I/D

Display ON/OFF control

Cursor or display shift Funtion set

0 0

0 0

0 0

0 0

0 1

1 DL

S/C N

R/L F

* *

* *

CG RAM address set

Direccin CGRAM

DD RAM address set

Direccin de la DDRAM

Read Busy Flag and Address Write data into the CG RAM or the DDRAM Read data from the CG RAM or the DDRAM

BF

Direccin de DDRAM o CGRAM

Dato a escribir

Dato a leer

Borra el display y coloca el cursor en la primera posicin 0 DDRAM Coloca el cursor en la posicin de inicio y hace que el display comience a desplazarse desde la posicin original. El contenido de la DDRAM no vara Establece el sentido de desplazamiento de la informacin en el display. Esta operacin se realiza durante la lectura o escritura de la DDRAM Activa o desactiva poniendo en ON/OFF tanto el display D=0 (off) o D=1(on),como el cursor C=0(off) o C=1(on) y establece si este debe parpadear o no B=0(off) o B=1(on) Mueve el cursor y desplaza el display sin cambiar el contenido de la DDRAM Establece el tamao de interfase con el bus de datos(DL),el nmero de lneas del display(N) y la font de los caracteres Establece la direccin de CGRAM a partir de la cual se almacenan los caracteres de usuario Estable la direccin DDRAM a partir de la cual se almacenan los datos a visualizar Lectura del flag de Busy e indica de la direccin de la CGRAM o DDRAM ltima empleada. Escribe en DDRAM o CGRAM los datos que se quieren presentar en el LCD Lee de la DDRAM o CGRAM los datos que se direccionen DDRAM: Dispaly Data RAM CGRAM: Character Generator RAM ACC : Address of CGRAM ADD : Address od DDRAM AC: Address counter used for botch DDRAM and CGRAM

40s

40s

40s 40s

40s

40s

1s

40s

40s

I/D = 1 Incrementa la direccin del cursor I/D = 0 Decrementa la direccin del cursor S =1 Desplaza la visualizacin cada vez que se escribe un dato S/C = 1 Se desplaza la visualizacin S/C = 0 Se desplaza el cursor R/L = 1 Desplazamiento a la derecha R/L = 0 Desplazamiento a la izquierda DL = 1 Trabaja con bus de datos de 8 bits DL = 0 Trabaja con bus de datos de 4 bits N = 1 La presentacin se hace en 2 lneas N = 0 La presentacin se hace en 1 lnea F = 1 Caracteres de 5x10 dots F= 0 Caracteres de 5x7 dots BF =1 LCD ocupado en una operacin interna BF = 0 LCD disponible para aceptar instrucciones D = 1 Pantalla activa (ON) C = 1 Cursor activo (ON) * Indeterminado

www.teleline.terra.es/personal/fremiro

Pg .18