Descargar

Control de un módulo LCD con PIC16F84a (página 2)

Enviado por Mauricio Orozco


Partes: 1, 2

Pin N-.

Sismología

Nivel

I/O

Función

 

1

VSS

0 Vlts. Tierra ( GND ).

2

VCC

+ 5 Vlts. DC.

3

Vee = Vc

Ajuste del Contraste.

4

RS

0/1

I

0= Escribir en el modulo LCD.

1= Leer del modulo LCD

5

R/W

0/1

I

0= Entrada de una Instrucción.

1= Entrada de un dato.

6

E

1

I

Habilitación del modulo LCD

7

DB0

0/1

I/O

BUS DE DATO LINEA 1 ( LSB ).

8

DB1

0/1

I/O

BUS DE DATO LINEA 2

9

DB2

0/1

I/O

BUS DE DATO LINEA 3

10

DB3

0/1

I/O

BUS DE DATO LINEA 4

11

DB4

0/1

I/O

BUS DE DATO LINEA 5

12

DB5

0/1

I/O

BUS DE DATO LINEA 6

13

DB6

0/1

I/O

BUS DE DATO LINEA 7

14

DB7

0/1

I/O

BUS DE DATO LINEA 8 (MSB).

15

A

LED (+) Back Light

16

K

LED (-) Back Light.

Interpretación del significado de los Pines del Modulo LCD

El Pin numero 1 y 2 están destinados para conectarle los 5 Voltios que requiere el modulo para su funcionamiento y el Pin numero 3 es utilizado para ajustar el contraste de la pantalla; es decir colocar los caracteres mas oscuros o mas claros para poderse observar mejor.

Observe la siguiente imagen de cómo deben estar conectados los tres primeros pines. La resistencia representada como R3 es un potenciómetro variable que puede oscilar entre 10 K y 20 K indiferentemente.

edu.red

Gráfico 3. Configuración de pines del módulo LCD

El Pin numero 4: denominado "RS" trabaja paralelamente al Bus de datos del modulo LCD ( Bus de datos son los Pines del 7 al 14 ). Este bus es utilizado de dos maneras, ya que usted podrá colocar un dato que representa una instrucción o podrá colocar un dato que tan solo representa un símbolo o un carácter alfa numérico; pero para que el modulo LCD pueda entender la diferencia entre un dato o una instrucción se utiliza el Pin Numero 4 para tal fin.

Si el Pin numero 4 = 0 le dirá al modulo LCD que esta presente en el bus de datos una instrucción, por el contrario, si el Pin numero 4 = 1 le dirá al modulo LCD que esta presente un símbolo o un carácter alfa numérico.

El Pin numero 5: denominado "R/W" trabaja paralelamente al Bus de datos del modulo LCD ( Bus de datos son los Pines del 7 al 14 ). También es utilizado de dos maneras, ya que usted podrá decirle al modulo LCD que escriba en pantalla el dato que esta presente en el Bus; por otro lado también podrá leer que dato esta presente en el Bus.

Si el Pin numero 5 = 0 el modulo LCD escribe en pantalla el dato que esta presente el Bus; pero si el Pin numero 5 = 1 significa que usted necesita leer el dato que esta presente el bus del modulo LCD.

El Pin numero 6: denominado "E" que significa habilitación del modulo LCD tiene una finalidad básica: conectar y desconectar el modulo. Esta desconexión no estará referida al voltaje que le suministra la corriente al modulo; la desconexión significa tan solo que se hará caso omiso a todo lo que este presente en el bus de datos de dicho modulo LCD.

En la mayoría de los circuitos electrónicos modernos que incluyan elementos electrónicos como Microcontroladores, Memorias y Módulos LCD, utilizan el mismo bus de datos. Esto es para no tener un bus de datos independientemente por cada elemento electrónico, esto implicaría que los circuitos electrónicos sean mucho mas grandes por la cantidad de conexiones necesaria a cada uno de los elementos.

Ahora como los Microcontroladores, memorias y módulos LCD utilizan el mismo bus de datos, deberá existir en cada uno de ellos un Pin de habilitación "E" que permita desconectar y conectar cuando sea necesario. Por ejemplo si usted necesita trabajar con la memoria RAM para obtener o escribir cierta información, será necesario que deshabilite el modulo LCD para que no presente basura en la pantalla, o se ejecuten instrucciones no deseadas.

Los Pines desde el numero 7 hasta el numero 14 representan 8 líneas que se utilizan para colocar el dato que representa una instrucción para el modulo LCD o un carácter alfa numérico. El Bus de datos es de 8 Bits de longitud y el Bit menos significativo esta representado en el Pin numero 7, el Pin mas significativo esta representado en el Pin numero 14

Los Pines 15 y 16: estarán destinados para suministrar la corriente al Back Light. Es importante conocer que no todos los módulos LCD disponen del Back Light aunque tenga los pines de conexión en el circuito impreso.

Tiempos mínimos requeridos para que una instrucción o un dato puedan ser ejecutados.

Los Pines de control ( E, RS y E/W ) están estrechamente relacionados ya que por medio de ellos podemos especificar si queremos ejecutar una instrucción o leer / escribir un dato en la pantalla o la memoria RAM; sin embargo existe una condición importante que deberá tomarse en cuenta referida directamente al tiempo necesario que se necesita para cambiar de un estado a otro en los pines de control. ( E, RS y R/W ). En el caso de que este tiempo sea mas pequeño que el tiempo mínimo requerido, entonces el modulo LCD no tendrá el tiempo suficiente para responder a las instrucciones solicitadas por el usuario y por consecuencia se perderán los datos o instrucciones según sea el caso.

En otras palabras, las personas suelen cometer un error común cuando se esta intentando hacer funcionar un modulo LCD en el cual no consideran la velocidad de proceso del microprocesador o el microcontrolador específicamente en los pines de control ( E, RS y R/W ), esto quiere decir que si usted tuviera conectado un modulo LCD a un microcontrolador que tiene una velocidad de proceso demasiado alta en los pines de control, cuando se ejecuta una solicitud de cualquier tipo ( escritura / lectura e Instrucción. ), el modulo LCD no tendrá la capacidad de entender la solicitud hecha por el microcontrolador ya que esta se ejecuto demasiado rápida. Para ello los programas o los circuitos electrónicos que manejan un modulo LCD deberán respetar los siguientes diagramas de tiempo:

Diagrama de tiempo para una Instrucción:

Para enviarle una instrucción al modulo, primero hay que colocar la instrucción en el bus de datos ( Pines del 7 al 14 ). Una vez que esta presente la instrucción en el bus de datos se procede a ejecutar el diagrama de tiempo requerido para una instrucción en los pines de control. Este diagrama de tiempo es muy sencillo de entender, tan solo usted deberá colocar el Pin RS = 0, el Pin R/W = 0 y el Pin E = 0; Una vez colocados los pines con las tensiones mencionadas, proceda a cambiar el estado del Pin E = 1. El nuevo estado de este Pin "E" deberá permanecer por lo menos 450 ns antes de volver a cambiar de estado para que la pantalla pueda entender la instrucción.

edu.red

Gráfico 4. Diagrama de tiempos para una instrucción.

Diagrama de tiempo para escribir un dato:

Para escribir un dato en el modulo LCD, primero hay que colocar el dato en el bus ( Pines del 7 al 14 ). Una vez que esta presente el dato en el bus se procede a ejecutar el diagrama de tiempo requerido para escribir un dato en los pines de control. Este diagrama de tiempo es muy sencillo de entender, tan solo usted deberá colocar el Pin RS = 1, el Pin R/W = 0 y el Pin E = 0; Una vez colocados los pines con las tensiones mencionadas, proceda a cambiar el estado del Pin E = 1. El nuevo estado de este Pin "E" deberá permanecer por lo menos 450 ns antes de volver a cambiar de estado para que la pantalla pueda entender la instrucción.

edu.red

Gráfico 5. Diagrama de tiempos para escribir un dato

Diagrama de tiempo para leer un dato

Para leer un dato de la pantalla o la memoria RAM en el modulo LCD, los pines de control deberán estar colocados como sigue: Pin RS = 1, Pin R/W = 1 y el Pin E = 0. Una vez colocados los pines con las tensiones mencionadas, proceda a cambiar el estado del Pin E =1. El nuevo estado de este Pin "E" deberá permanecer por lo menos 450 ns antes de volver a cambiar de estado para que la pantalla pueda entender la instrucción.

edu.red

Gráfico 6. Diagrama de tiempo para leer un dato

Nota importante:

Nótese que en los tres diagramas de tiempos el Pin denominado como "E" tiene que estar previamente en el estado lógico "CERO", posteriormente se cambia el estado lógico a "UNO" la cual permanecerá por lo menos unos 450 nano segundos y finalmente vuelve al estado lógico" CERO ", en el preciso momento que el Pin "E" del modulo LCD tiene el flanco de bajada, es cuando se ejecuta la instrucción o el dato presente en el bus de control.

Bus de Datos de 4 y 8 Bits de Longitud

El Bus de datos de un modulo LCD puede ser configurado para trabajar con 4 Bits y con 8 Bits. Para los diseños electrónicos que están limitados por la cantidad de líneas utilizadas en el Bus de datos, podrán utilizar un bus de datos con una longitud de 4 Bits; sin embargo si este no fuera su caso, podrá utilizar el bus de datos completo de 8 Bits. Las señales de control ( RS – R/W – E ) y los diagramas de tiempo explicados anteriormente, trabajan igual sea para un bus de datos de 4 Bits o de 8 Bits. Sin embargo, si usted esta interesado en trabajar el bus de datos con una longitud de 8 Bits, deberá saber que cuando se enciende el modulo LCD la configuración para 8 Bits entra por defecto; es decir que no necesitara programarse, pero la configuración del bus de datos con una longitud de 4 Bits requiere una secuencia cuidadosa de instrucciones previas inmediatamente después de encender el modulo LCD.

La longitud escogida para trabajar el bus de datos deberá hacerse en el principio de la programación del modulo LCD. En la siguiente imagen se puede observar la inicialización de un modulo LCD para trabajar con un bus de datos de 8 (izquierda) y 4 Bits (Derecha).

edu.red

Gráfico 7. Inicializaciones para bus de datos de 4 u 8 bits

Inicialización del modulo LCD

Todo modulo LCD deberá inicializarse, esta inicialización indicara como deberá operar la pantalla. La inicialización representan las instrucciones que deberán ser ejecutadas por el modulo LCD antes de su funcionamiento normal. Las instrucciones que están dentro de la inicialización solamente se ejecuta después que se enciende el modulo LCD y no podrán ser cambiadas posteriormente. Por ejemplo tenemos algunos parámetros que pueden ser ejecutados en la inicialización antes de comenzar a funcionar nuestro modulo LCD:

Selección de la longitud del bus de datos ( 4 Bits / 8 Bits ).

Activar el numero de líneas que se visualizaran el 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.

Conjunto de Instrucciones básicas de un modulo LCD:

La siguiente tabla representa el conjunto de instrucciones de un modulo LCD, en ella se muestran toda la información necesaria que se requiere para cada instrucción, pero posteriormente se da una explicación mas amplia de algunas de ellas.

TABLA N-. 1: INSTRUCCIONES BASICAS

Instrucción.

CODIGO

Descripción

Tiempo de ejecución

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

Borrar Pantalla

0

0

0

0

0

0

0

0

0

1

Borra la pantalla y retorna el cursor a la dirección 0 ( Home )

1.64 mS.

Cursor Home

0

0

0

0

0

0

0

0

1

*

Retorna el cursor al inicio ( Dirección o)

1.64 mS.

Modo de entrada de caracteres

0

0

0

0

0

0

0

1

I/D

S

Donde I/D=0 Decremente la posición del cursor, I/D=1 incrementa la posición del cursor,. S=0 El texto de la pantalla no se desplaza, S=1 El texto de la pantalla se desplaza en el momento que se escribe un carácter

40 uS.

Apagado y encendido de la pantalla.

0

0

0

0

0

0

1

D

C

B

Donde D=0 Pantalla apagada, D=1 Pantalla encendida, C=0 Cursor apagado, C=1 Cursor encendido, B=0 Intermitencia del cursor apagado, B=1 Intermitencia del cursor encendido.

40 uS..

Cursor and Display Shift

0

0

0

0

0

1

S/C

R/L

*

*

40 uS.

Funtion Set

0

0

0

0

1

DL

N

F

*

*

40 uS.

Set CG RAM address

0

0

0

1

ACG

40 uS.

Set DD RAM address

0

0

1

ADD

40 uS.

Ready busy flag & address

0

1

BF

AC

1 uS.

Write data to CG or DD RAM

1

0

Escribir el Dato

120 uS.

Read data to CG or DD RAM

1

1

Leer el Dato

40 uS.

La tabla numero dos, esta referida a las nomenclaturas utilizadas en la tabla numero uno

Tabla 2: NOMENCLATURAS

Nomenclatura

Variable = 1

Variable = 0

I/D

I/D=1 Incrementa el Cursor en una posición

I/D=0 Decrementa el Cursor en una posición.

D

D=1 Pantalla Encendida

D=0 Pantalla Apagada.

C

C=1 Cursor Encendido.

C=0 Cursor Apagado.

B

B=1 Intermitencia del cursor encendida.

B=0 Intermitencia del cursor apagado

S/C

S/C=1 Mover todo el texto.

S/C=0 Mover el cursor.

R/L

R/L=1 Mover todo el texto a la izquierda.

R/L=1 Mover todo el texto a la derecha.

DL

DL=1 Bus de datos de 8 Bits.

DL=0 Bus de datos de 4 Bits.

S

S=1 Desplazamiento del texto.

S=0 No desplazamiento del texto

BF

BF=1 Operación Interna en progreso.

BF=0 No puede aceptar instrucción

F

F=1 Matriz para el carácter de 5 X 10 dots

F=0 Matriz del carácter de 5 x 7 Dost

N

N=1 Activación de dos líneas.

N=0 Activación de 1 línea

La tabla numero tres, esta referida a las abreviaturas utilizadas en la tabla numero uno

Tabla 3: ABREVIATURAS

Abreviatura

 

DD RAM

Display Data RAM

CG RAM

Generador de Caracteres RAM

Conexión de un modulo LCD a un Microcontrolador PIC16F84.

En la actualidad los microcontroladores son los elementos electrónicos de mayor utilidad y ahora describimos en detalle como utilizar un modulo LCD con un microcontrolador de la empresa Microchip modelo PIC16F84.

La conexión entre un módulo LCD y un microcontrolador PIC16F84 debe realizarse como se ilustra en la siguiente gráfica:

edu.red

Gráfico 8. Esquema del circuito

Para ilustrar el uso del módulo LCD hemos desarrollado un programa que pasa un aviso deslizante en la pantalla de cristal liquido. Para ello hemos utilizado el paquete de software MPLAB.

edu.red

Gráfico 9. Paquete MPLAB

El programa

El código fuente del programa en ensamblador es el siguiente:

;practica numero 4 del laboratorio

;manejo de un modulo LCD

list p=16f84

indf equ 0h

tmro equ 1

pc equ 2

status equ 3

fsr equ 4

ptoa equ 5

ptob equ 6

r0c equ 0ch

r0d equ 0dh

r13 equ 13h

z equ 2h

c equ 0h

w equ 0h

r equ 1h

e equ 1h

rs equ 0h

org 0

goto inicio

org 05

retardo movlw 0ffh

movwf r13

decre decfsz r13,r

goto decre

retlw 0

control bcf ptoa,rs

goto dato2

dato bsf ptoa,rs

dato2 bsf ptoa,e

movwf ptob

call retardo

bcf ptoa,e

call retardo

retlw 0

tabla2 addwf pc,r

retlw "c"

retlw "u"

retlw "r"

retlw "s"

retlw "o"

retlw " "

retlw "d"

retlw "e"

retlw " "

retlw "m"

retlw "i"

retlw "c"

retlw "r"

retlw "o"

retlw "c"

retlw "o"

retlw "n"

retlw "t"

retlw "r"

retlw "o"

retlw "l"

retlw "a"

retlw "d"

retlw "o"

retlw "r"

retlw "e"

retlw "s"

retlw " "

retlw "p"

retlw "i"

retlw "c"

retlw " "

retlw " "

retlw " "

retlw " "

retlw " "

retlw 0

inicio movlw 0fch

tris ptoa

movlw 00

tris ptob

begin movlw 30h

call control

movlw 07h

call control

movlw 0ch

call control

muestra movlw 0

movwf r0c

ciclo movf r0c,w

call tabla2

call dato

movlw 09fh

movwf r0d

reta1 call retardo

call retardo

decfsz r0d,r

goto reta1

incf r0c,r

movlw 28h

xorwf r0c,w

btfss status,z

goto ciclo

goto muestra

end

Archivo .LST

El archivo .LST generado al ensamblar el código fuente es:

LOC OBJECT CODE LINE SOURCE TEXT

VALUE

00001 ;practica numero 4 del laboratorio

00002 ;manejo de un modulo LCD

00003 list p=16f84

00004

00000000 00005 indf equ 0h

00000001 00006 tmro equ 1

00000002 00007 pc equ 2

00000003 00008 status equ 3

00000004 00009 fsr equ 4

00000005 00010 ptoa equ 5

00000006 00011 ptob equ 6

0000000C 00012 r0c equ 0ch

0000000D 00013 r0d equ 0dh

00000013 00014 r13 equ 13h

00000002 00015 z equ 2h

00000000 00016 c equ 0h

00000000 00017 w equ 0h

00000001 00018 r equ 1h

00000001 00019 e equ 1h

00000000 00020 rs equ 0h

00021

0000 00022 org 0

0000 2839 00023 goto inicio

0005 00024 org 05

00025

0005 30FF 00026 retardo movlw 0ffh

0006 0093 00027 movwf r13

00028

0007 0B93 00029 decre decfsz r13,r

0008 2807 00030 goto decre

0009 3400 00031 retlw 0

00032

000A 1005 00033 control bcf ptoa,rs

000B 280D 00034 goto dato2

00035

000C 1405 00036 dato bsf ptoa,rs

00037

000D 1485 00038 dato2 bsf ptoa,e

000E 0086 00039 movwf ptob

000F 2005 00040 call retardo

0010 1085 00041 bcf ptoa,e

0011 2005 00042 call retardo

0012 3400 00043 retlw 0

00044

0013 0782 00045 tabla2 addwf pc,r

0014 3463 00046 retlw "c"

0015 3475 00047 retlw "u"

0016 3472 00048 retlw "r"

0017 3473 00049 retlw "s"

0018 346F 00050 retlw "o"

0019 3420 00051 retlw " "

001A 3464 00052 retlw "d"

001B 3465 00053 retlw "e"

001C 3420 00054 retlw " "

001D 346D 00055 retlw "m"

001E 3469 00056 retlw "i"

001F 3463 00057 retlw "c"

0020 3472 00058 retlw "r"

0021 346F 00059 retlw "o"

0022 3463 00060 retlw "c"

0023 346F 00061 retlw "o"

0024 346E 00062 retlw "n"

0025 3474 00063 retlw "t"

0026 3472 00064 retlw "r"

0027 346F 00065 retlw "o"

0028 346C 00066 retlw "l"

0029 3461 00067 retlw "a"

002A 3464 00068 retlw "d"

002B 346F 00069 retlw "o"

002C 3472 00070 retlw "r"

002D 3465 00071 retlw "e"

002E 3473 00072 retlw "s"

002F 3420 00073 retlw " "

0030 3470 00074 retlw "p"

0031 3469 00075 retlw "i"

0032 3463 00076 retlw "c"

0033 3420 00077 retlw " "

0034 3420 00078 retlw " "

0035 3420 00079 retlw " "

0036 3420 00080 retlw " "

0037 3420 00081 retlw " "

0038 3400 00082 retlw 0

00083

0039 30FC 00084 inicio movlw 0fch

003A 0065 00085 tris ptoa

003B 3000 00086 movlw 00

003C 0066 00087 tris ptob

00088

003D 3030 00089 begin movlw 30h

003E 200A 00090 call control

003F 3007 00091 movlw 07h

0040 200A 00092 call control

0041 300C 00093 movlw 0ch

0042 200A 00094 call control

00095

0043 3000 00096 muestra movlw 0

0044 008C 00097 movwf r0c

00098

0045 080C 00099 ciclo movf r0c,w

0046 2013 00100 call tabla2

0047 200C 00101 call dato

0048 309F 00102 movlw 09fh

0049 008D 00103 movwf r0d

00104

004A 2005 00105 reta1 call retardo

004B 2005 00106 call retardo

004C 0B8D 00107 decfsz r0d,r

004D 284A 00108 goto reta1

004E 0A8C 00109 incf r0c,r

004F 3028 00110 movlw 28h

0050 060C 00111 xorwf r0c,w

0051 1D03 00112 btfss status,z

0052 2845 00113 goto ciclo

0053 2843 00114 goto muestra

00115

00116 end

SYMBOL TABLE

LABEL VALUE

__16F84A 00000001

begin 0000003D

c 00000000

ciclo 00000045

control 0000000A

dato 0000000C

dato2 0000000D

decre 00000007

e 00000001

fsr 00000004

indf 00000000

inicio 00000039

muestra 00000043

pc 00000002

ptoa 00000005

ptob 00000006

r 00000001

r0c 0000000C

r0d 0000000D

r13 00000013

reta1 0000004A

retardo 00000005

rs 00000000

status 00000003

tabla2 00000013

tmro 00000001

w 00000000

z 00000002

Conclusiones

  • Al trabajar con un módulo LCD, debemos configurar su bus de datos como de 4 u 8 bits.

  • El módulo LCD posee puertos para la entrada de datos y a través de ellos se pueden ingresar caracteres a la pantalla (R/W=0) o se puede leer de él (R/W=1).

  • Un módulo LCD posee dentro de sí mismo un microcontrolador.

  • Se pueden enviar a la pantalla del móculo LCD la mayoría de los caracteres de una tabla ASCII.

 

 

Autor:

Mauricio Alberto Orozco Salguero

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente