2. HobbiePic.Com
11-. Conectando un modulo LCD a un Microcontrolador PIC16F84.
q 11.1-. Declaración de constantes que serán utilizadas en el programa del PIC16F84.
q 11.2-. Reserva de Memoria RAM.
q 11.3-. Configuración de los Puertos.
q 11.4-. Programa Principal.
q 11.5-. Subrrutinas:
r 11.5.1-. Subrrutina para ejecutar una Instrucción.
r 11.5.2-. Subrrutina para escribir un dato o un carácter en el modulo LCD.
r 11.5.3-. Subrrutina de 58 microsegundos.
r 11.5.4-. Subrrutina de 15.37 milisegundos.
r 11.5.6-. Programas para el Microcontrolador.
HAZ CLICK AQUI PARA IR AL CAPITULO III
12-. Controlando un modulo LCD Serialmente, Introducción.
q 12.1-. Diagrama esquemático de la conexión de un modulo LCD serialmente
funcionando con un microcontrolador PIC16F84.
q 12.2-. Notas importantes.
q 12.3-. Teoría básica de como funciona el circuito Integrado 4094.
q 12.4-. Teoría básica de como funciona todo el circuito en general.
q 12.5-. Explicación del programa básico para trabajar con un microcontrolador
PIC16F84 serialmente con un modulo LCD.
q 12.6-. Listado del programa básico.
CAPITULO IV
13-. Introducción a los módulos LCD de matriz de Puntos.
PCB ELECTRONICS SYSTEMS
Los Aceitunos, Av. 69A N-. 80B-105
Maracaibo - Zulia - Venezuela
Teléfonos: Fax: (061)-753-51-10 PROVISIONAL - (014)-361-9181
E-MAIL: phorlakis@cantv.net
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%200.asp (2 of 2) [07/07/2001 05:55:24 p.m.]
4. HobbiePic.Com
modulo LCD.
2-. Diversidad de algunos módulos LCD:
En la actualidad los módulos LCD existen una gran variedad de versiones clasificados en dos
grupos. El primer grupo esta referido a los módulos LCD de caracteres ( solamente se podrán
presentar caracteres y símbolos especiales en las lineas predefinidas en el modulo LCD) y el
segundo grupo esta referido a los módulos LCD matriciales ( Se podrán presentar caracteres,
símbolos especiales y gráficos). Los módulos LCD varían su tamaño físico dependiendo de la
marca; por lo tanto en la actualidad no existe un tamaño estándar para los módulos LCD.
Para el caso de la empresa VARITRONIX especializada en la fabricación de LCD, existen
configuraciones mínimas desde una linea con un mínimo de ocho caracteres y por el
contrario, existen configuraciones desde 4 lineas hasta 40 caracteres por cada linea. La
siguiente imagen muestra las dimensiones de una configuración típica de un modulo LCD de
dos lineas por 16 caracteres por cada linea incluyendo los detalles de la matriz de como esta
conformado un carácter.
Otro patrón importante es el tamaño de los caracteres donde las dimensiones de la matriz que
forma los caracteres tienen longitudes diferentes. La siguiente imagen muestra la matriz
utilizada para poder representar un símbolo o un carácter alfa numérico en un modulo LCD.
Esta matriz define algunos aspectos importantes del carácter o el símbolo que están
mostrando. Los aspectos que define esta matriz son:
Aspectos importantes que define la matriz de
Matriz de punto para un solo
puntos para un solo caracter en un modulo
carácter en un modulo LCD
LCD
1-. Altura del carácter definida por dos variables:
Alto de cada punto que conforma la matriz y
longitud de separación entre cada punto que
conforma la matriz.
2-. Ancho del Carácter definido por dos
variables: Ancho de cada punto que conforma la
matriz y longitud de separación entre cada punto
que conforma la matriz.
3-. Calidad gráfica del carácter ( A mayor
cantidad de puntos dentro de la matriz, mayor
será la calidad visual del carácter presentado por
el modulo LCD.
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%201.asp (2 of 16) [07/07/2001 06:00:58 p.m.]
5. HobbiePic.Com
Los primeros módulos LCD tenían los caracteres de color negro y el fondo de la pantalla era
de color verdoso claro. Posteriormente se crearon otros colores en donde los caracteres eran
de color plata y así sucesivamente fueron variando los colores en el fondo y en los caracteres
incluyendo una luz posterior para los módulos LCD denominada Back Light diseñada
especialmente para mejorar la visualización de la pantalla sobre todo en lugares muy oscuros.
El Back Light existe en varias versiones de colores, entre los mas conocidos tenemos el color
verdoso y el azul cielo; pero hasta la fecha los Back Light tienen un alto consumo de
corriente. Teóricamente según un reportaje realizado por Edison Duque C. en la revista
Colombiana de Electrónica y Computadores N-. 12 del Tercer año dice: Los pines que le
suministran la corriente al Back Light se le deben suministrar 5 Voltios pero a una frecuencia
aproximada de 60 Hz. para evitar que se presenten altas temperaturas en el modulo LCD. La
siguiente imagen representa un modulo LCD del tipo matricial y que tienen encendida la luz
posterior ( Back Light ).
Ahora la tecnología esta disponible en color para los módulos LCD desde 4 colores hasta los
256 y las combinaciones de ellos.
3-. Identificación de los pines de conexión de un modulo LCD no Matricial:
Los pines de conexión de un modulo LCD han sido estandarizados por el cual en la mayoría
de ellos son exactamente iguales siempre y cuando la linea de caracteres no sobrepase los
ochenta caracteres por linea. En el caso de que esto suceda, localice la hoja de características
del fabricante. Por otro lado es de suma importancia localizar exactamente cual es el Pin
Numero 1 ya que en algunos módulos se encuentra hacia la izquierda y en otros módulos se
encuentra a la derecha. En caso de no estar seguro de la asignación de los pines, localice la
hoja de características del fabricante.
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.
0= Escribir en el modulo LCD.
4 RS 0/1 I
1= Leer del modulo LCD
0= Entrada de una Instrucción.
5 R/W 0/1 I
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.
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%201.asp (3 of 16) [07/07/2001 06:00:58 p.m.]
6. HobbiePic.Com
3.1-. 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 como deberán estar conectados los tres primeros pines. La
resistencia representada como R3 es un potenciometro variable que puede oscilar entre 10 K y
20 K indiferentemente.
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. Para entender mejor el
funcionamiento del Pin numero 5, tenemos un ejemplo practico que aclara este ultimo punto.
Supongase que usted tiene armado un circuito electrónico con un modulo LCD incluyendo un
teclado muy limitado que tan solo tiene 5 teclas ( Mover Cursor arriba, Mover cursor a la
derecha, mover cursor abajo, mover cursor a la izquierda y Enter ). La finalidad de este
teclado es poderse desplazar por toda la pantalla y seleccionar una opción con la tecla de
ENTER. Si nuestro circuito electrónico por ejemplo le pregunta al usuario por medio del
modulo LCD lo siguiente:
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%201.asp (4 of 16) [07/07/2001 06:00:59 p.m.]
7. HobbiePic.Com
Que refresco desea ?
Coca Cola / Pepsi Cola
Usted tendría que ubicar el cursor para seleccionar una de las dos opciones presentadas en
pantalla. En el momento que usted presiona la tecla de Enter le dice a nuestro pequeño
circuito que ya la opción esta seleccionada. He aquí la importancia del Pin numero 5 ya que
usted podrá leer la selección que hizo nuestro usuario directamente del bus de datos del
modulo LCD.
Si el Pin numero 5 = 0 el modulo LCD escribe en pantalla el dato que esta presente el el Bus;
pero si el Pin numero 5 = 1 significa que usted necesita leer el dato que esta presente el 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 desabilite 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 lineas 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.
4-. 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
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%201.asp (5 of 16) [07/07/2001 06:01:00 p.m.]
8. HobbiePic.Com
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:
4.1-. 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.
4.2-. 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.
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%201.asp (6 of 16) [07/07/2001 06:01:00 p.m.]
9. HobbiePic.Com
4.3-. 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.
Nota importante:
Notese 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 instruccion o el dato presente en el bus de control.
5-. 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 lineas 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
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%201.asp (7 of 16) [07/07/2001 06:01:00 p.m.]
10. HobbiePic.Com
( 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á hacerce 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).
6-. 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:
q Selección de la longitud del bus de datos ( 4 Bits / 8 Bits ).
q Activar el numero de lineas que se visualizaran el el modulo LCD.
q 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.
q Mantener el mensaje fijo y desplazar el cursor.
q Desplazar el mensaje y mantener el cursor fijo.
q Hacer que el carácter señalado parpadee o no.
7-. Conjunto de Instrucciones básicas de un modulo LCD:
La siguiente tabla representa el conjunto de instrucciones de un modulo LCD, en ella se
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%201.asp (8 of 16) [07/07/2001 06:01:00 p.m.]
11. HobbiePic.Com
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
CODIGO Tiempo de
Instrucción. Descripción
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 ejecución
Borra la pantalla y retorna
Borrar Pantalla 0 0 0 0 0 0 0 0 0 1 el cursor a la dirección 0 ( 1.64 mS.
Home )
Retorna el cursor al inicio (
Cursor Home 0 0 0 0 0 0 0 0 1 * 1.64 mS.
Dirección o)
Donde I/D=0 Decremente
la posición del cursor,
I/D=1 incrementa la
posición del cursor,. S=0
Modo de entrada de
0 0 0 0 0 0 0 1 I/D S El texto de la pantalla no 40 uS.
caracteres
se desplaza, S=1 El texto
de la pantalla se desplaza
en el momento que se
escribe un carácter
Donde D=0 Pantalla
apagada, D=1 Pantalla
encendida, C=0 Cursor
apagado, C=1 Cursor
Apagado y encendido
0 0 0 0 0 0 1 D C B encendido, B=0 40 uS..
de la pantalla.
Intermitencia del cursor
apagado, B=1
Intermitencia del cursor
encendido.
Cursor and Display
0 0 0 0 0 1 S/C R/L * * 40 uS.
Shift
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 &
0 1 BF AC 1 uS.
address
Write data to CG or
1 0 Escribir el Dato 120 uS.
DD RAM
Read data to CG or DD
1 1 Leer el Dato 40 uS.
RAM
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=1 Incrementa el Cursor en una I/D=0 Decrementa el Cursor en una
I/D
posición posición.
D D=1 Pantalla Encendida D=0 Pantalla Apagada.
C C=1 Cursor Encendido. C=0 Cursor Apagado.
B=1 Intermitencia del cursor
B B=0 Intermitencia del cursor apagado
encendida.
S/C S/C=1 Mover todo el texto. S/C=0 Mover el cursor.
R/L=1 Mover todo el texto a la
R/L R/L=1 Mover todo el texto a la derecha.
izquierda.
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=1 Matriz para el carácter de 5 X 10
F F=0 Matriz del carácter de 5 x 7 Dost
dots
N N=1 Activación de dos lineas. N=0 Activación de 1 linea
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
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%201.asp (9 of 16) [07/07/2001 06:01:01 p.m.]
12. HobbiePic.Com
8-. Posición de los caracteres en la pantalla según el numero de lineas del modulo LCD:
En la actualidad existen diversidad de módulos LCD por ejemplo tenemos pantallas con una
sola linea con tan solo ocho caracteres y módulos con 4 lineas con 40 caracteres por cada
linea. Estos son algunos ejemplos básicamente. Ahora en los módulos LCD según la cantidad
de lineas cada uno de los caracteres tiene una posición numérica dentro del DD-RAM (
Display Data RAM ). Comencemos con algunos ejemplos basados para módulos LCD de una
sola linea.
8.1-. Display de Una Linea x 40 Caracteres, dirección DD-RAM
Ubicación física del carácter en el modulo LCD
Tamaño de la pantalla
Posición del Carácter Dirección DD-RAM
1Linea X 08 Caracteres 00 al 07 00h al 07h
1Linea X 16 Caracteres 00 al 15 00h al 0Fh
1Linea X 20 Caracteres 00 al 19 00h al 13h
1Linea X 24 Caracteres 00 al 23 00h al 17h
1Linea X 32 Caracteres 00 al 31 00h al 1Fh
1Linea X 40 Caracteres 00 al 39 00h al 27h
DISPLAY DE UNA LINEA X 40 CARACTERES
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...................... 40
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 ...LINEA 1... 27
8.2-. Display de dos Lineas x 40 Caracteres, dirección DD-RAM
Para un modulo LCD que contenga dos lineas tenemos la siguiente ubicación física de los
caracteres en la pantalla.
Ubicación física del carácter en el modulo LCD
Tamaño de la pantalla
Posición del Carácter Dirección DD-RAM
LINEA 1 LINEA 2
2 Linea X 16 Caracteres 00 al 15 00h al 0Fh + 40h al 4Fh
2 Linea X 20 Caracteres 00 al 19 00h al 13h + 40h al 53h
2 Linea X 24 Caracteres 00 al 23 00h al 17h + 40h al 57h
2 Linea X 32 Caracteres 00 al 31 00h al 1Fh + 40h al 5Fh
2 Linea X 40 Caracteres 00 al 39 00h al 27h + 40h al 67h
DISPLAY DE DOS LINEAS X 40 CARACTERES
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ...................... 40
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D LINEA 1 27
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D LINEA 2 29
8.3-. Display de Cuatro Lineas x 40 Caracteres, Dirección DD-RAM:
Para un modulo LCD que contenga cuatro lineas sucede algo diferente e interesante con
respecto a la ubicación física que debe tener cada carácter en la pantalla del modulo LCD ya
que en realidad el final del la linea numero 1 tiene su continuación en la linea numero 3; pero
el final de la linea numero 2, tiene su continuación en la linea numero 4.
Ubicación física del carácter en el modulo LCD
Tamaño de la pantalla Posición del
Dirección DD-RAM
Carácter
4 Linea X 16 Caracteres 00 al 15 00h al 0Fh + 40h al 4Fh + 14h al 23h + 54h al 63h
4 Linea X 20 Caracteres 00 al 19 00h al 13h + 40h al 53h + 14h al 27h + 54h al 67h
4 Linea X 24 Caracteres 00 al 23 00h al 17h + 40h al 57h + 14h al 2Bh + 54h al 6Bh
4 Linea X 32 Caracteres 00 al 31 00h al 20h + 40h al 5Fh + 14h al 33h + 54h al 73h
4 Linea X 40 Caracteres 00 al 39 00h al 27h + 40h al 67h + 14h al 59h + 54h al 7Bh
DISPLAY DE 4 LINEAS X 40 CARACTERES
http://www.hobbiepic.com/COMO%20FUNCION...SAS/Modulos%20LCD/Modulos%20LCD%201.asp (10 of 16) [07/07/2001 06:01:01 p.m.]
13. HobbiePic.Com
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ...................... 40
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D LINEA 1 27
50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 7A 7B 7C 7D LINEA 3 77
40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D LINEA 2 4F
78 79 80 LINEA 4 29
9-. Caracteres que podrán ser presentados en la pantalla del modulo LCD:
La siguiente tabla representan los caracteres que podrán ser mostrados en un modulo LCD.
Cada uno de los caracteres tienen su representación binaria de ocho bits. Por ejemplo si usted
necesita el carácter"A" deberá representarlo con el siguiente código 01000001 por otro lado si
quisiera utilizar el carácter"T" deberá representarlo por el código 01010100. Este código
deberá ser colocado en el Bus de Datos del Modulo LCD ( Lineas del 7 al 14 ).
TABLA DE CARACTERES
10-. Ejemplo de como hacer funcionar el modulo LCD por medio de un método manual:
Ahora podemos realizar un ejemplo practico de como hacer funcionar el modulo LCD de una
manera manual paso a paso incluyendo la inicialización hasta presentar una serie de
caracteres en la pantalla. La siguiente imagen muestra el pequeño circuito que tendrá que
montar para realizar la practica. Si la imagen no la puede observar bien, puedes hacer Click
Aquí para obtener una imagen mas detallada del circuito.
http://www.hobbiepic.com/COMO%20FUNCION...SAS/Modulos%20LCD/Modulos%20LCD%201.asp (11 of 16) [07/07/2001 06:01:01 p.m.]
14. HobbiePic.Com
En la imagen anterior, mostramos el circuito básico que usted necesita montar en un
ProtoBoard para realizar el experimento. En circuito deberá ser alimentado con 5 Voltios DC.
En esta sección practica procederemos a escribir en el modulo LCD la palabra PCB
ELECTRONICS SYSTEMS. Observemos los pasos y sus procedimientos de una forma
manual:
Una vez que este montado el circuito esquemático que mostramos en la imagen anterior,
proceda a realizar los siguientes pasos:
q PASO 1: Corte toda la energia al circuito del modulo LCD y coloque todos los suiches del circuito a
tierra; es decir los suiches denominados SW DIP-2 ( Lineas de control ) y SW DIP-8 ( Bus de datos )
colocados o conectados a tierra ( Gnd ).
q PASO 2: En el circuito esquematico no tenemos un interruptor, por lo tanto tan solo suministre la
energía al circuito del Modulo LCD con una tension de 5 Voltios DC. A partir de aqui se deberá
tomar en cuenta la resistencia variable denominada R1 que representa un potenciometro de 10 K.
Como puede observarse en el circuito, la parte central del potenciometro esta conectado al pin numero
3 del modulo LCD. La parte central del potenciometro podra ser ajustado entre 0 voltios y 5 voltios. A
medida de que el voltaje el el Pin numero 3 del modulo LCD se acerque a los 5 voltios se observara
con mayor detalle las matrices que forman a los caracteresen el modulo LCD; pero si el voltaje
suministrado para el Pin numero 3 del modulo se acerca a 0 Voltios, el modulo aparentara que no esta
encendido por que las matrices que forman a los caracteres tienen muy poca intensidad para poder ser
observados, por lo tanto, para comenzar con nuestro pequeño experimento recomendamos ubicar el
potenciometro en la parte central y posteriormente se ajustara cuando el modulo este funcionando.
Otro punto importante referente al modulo LCD cuando es encendido, es que se debera esperar unos
15 mili Segundos que se utilizan para estabilizar todas las tensiones dentro del modulo LCD.
q PASO 3: Ahora debemos especificar al modulo LCD si va a trabajar en el formato de 8 Bits o de 4
Bits. Es importante saber que los modulos LCD cuando son encendidos, vienen por defecto para
trabajar con un bus de datos de 8 bits la cual no sera necesario especificar esta instruccion; pero como
estamos realizando un experimento manual con nuestro modulo LCD ejecutaremos la instruccion
indiferentemente con la finalidad de que pueda ser observado los procedimientos necesarios.
Para trabajar con un bus de datos de 8 bits se debera colocar el siguiente codigo en el bus de
datos y bus de control.
CODIGO: BUS DE DATOS DE 8 BITS
BUS DE
BUS DE DATOS
CONTROL
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 1 1 X X X X
En el bus de datos, especificamente en los pines DB3, DB2, DB1, DB0 tienen como valor
asignado una letra "X". En la teoria electronica la letra "X" representa cualquier valor entre
http://www.hobbiepic.com/COMO%20FUNCION...SAS/Modulos%20LCD/Modulos%20LCD%201.asp (12 of 16) [07/07/2001 06:01:01 p.m.]
15. HobbiePic.Com
"0" y "1" indiferentemente. Una vez que este colocado el codigo en el bus de datos y el bus de
control, proceda a presionar ( Una sola Vez ) el pulsador denominado SW1. Este pulsador esta
conectado con el pin 6 del modulo LCD especificamente en el "ENABLE" y la condicion
minima que requiere es que el pulsador debera estar presionado por lo menos 450 nano
segundos.
q PASO 4: La siguiente instruccion sera para especificarle al modulo LCD con cuantas lineas desea
usted trabajar. para ello debera escribir el siguiente codigo en el bus de datos y el bus de control:
CODIGO: ACTIVACION DE NUMERO DE LINEAS
BUS DE
BUS DE DATOS
CONTROL
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 1 1 N F X X
El Pin numero 10 que representa a DB3 tiene la letra "N" la cual tan solo usted debera saber si
va a trabajar con una linea o con dos lineas. Para N=0 el modulo LCD trabajara con una linea
y para N=1 el modulo LCD trabajara con dos lineas. Este ultimo punto esta dirigido solamente
para los modulos LCD que tienen por lo menos 4 lineas fisicamente, como hemos explicado
anteriormente, para un modulo LCD de 4 lineas ( Fisicamente ), internamente tan solo tiene
dos ya que la primera linea del moldulo LCD esta conformada por la linea N-. 1 y N-. 3
fisicamente del modulo LCD y la linea N-. 2 esta conformada por la linea N-. 2 y N-. 4 del
modulo LCD. Entonces podemos concluir para este paso 4 que solamente sera necesario si
usted esta utilizando un modulo LCD de 4 y de 2 lineas ( Fisicamente ). Para nuestro pequeño
experimente, coloque a N=1 y F=0.
q PASO 5: La siguiente instruccion sera para encender la pantalla y el cursor; para ello debera
escribirse el siguiente codigo en el bus de datos y en el bus de control:
CODIGO: ACTIVACION DEL CURSOR Y LA PANTALLA
BUS DE
BUS DE DATOS
CONTROL
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 1 1 1 0
Para ejecutar el codigo colocado en el bus de datos y el bus de control volvemos nuevamente a
presionar el pulsador denominado SW1.
q PASO 6: Finalmente, la ultima instruccion de la inicializacion se refiere que cuando se escriba un
caracter en la pantalla, el cursor se desplase automaticamente a la derecha.
CODIGO: SHIFT Y CURSOR A LA DERECHA
BUS DE
BUS DE DATOS
CONTROL
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
0 0 0 0 0 0 0 1 1 0
Hasta aqui hemos terminado la inicializacion basica de un modulo LCD, ahora podemos
proceder a escribir "PCB ELECTRONICS".
q PASO 7: Ahora podemos escribir nuestros caracteres con la secuencia como se señala en la siguiente
tabla:
CODIGO: ESCRIBIR PCB ELECTRONICS
BUS DE
BUS DE DATOS
CONTROL
CARACTER RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
P 1 0 0 1 0 1 0 0 0 0
ACTIVAR EL SUICHE SW1 = ENABLE
C 1 0 0 1 0 0 0 0 1 1
ACTIVAR EL SUICHE SW1 = ENABLE
B 1 0 0 1 0 0 0 0 1 0
ACTIVAR EL SUICHE SW1 = ENABLE
ESPACIO 1 0 1 1 1 1 1 1 1 0
ACTIVAR EL SUICHE SW1 = ENABLE
E 1 0 0 1 0 0 0 1 0 1
ACTIVAR EL SUICHE SW1 = ENABLE
L 1 0 0 1 0 0 1 1 0 0
ACTIVAR EL SUICHE SW1 = ENABLE
E 1 0 0 1 0 0 0 1 0 1
ACTIVAR EL SUICHE SW1 = ENABLE
C 1 0 0 1 0 0 0 0 1 1
ACTIVAR EL SUICHE SW1 = ENABLE
T 1 0 0 1 0 1 0 1 0 0
ACTIVAR EL SUICHE SW1 = ENABLE
R 1 0 0 1 0 1 0 0 1 0
ACTIVAR EL SUICHE SW1 = ENABLE
http://www.hobbiepic.com/COMO%20FUNCION...SAS/Modulos%20LCD/Modulos%20LCD%201.asp (13 of 16) [07/07/2001 06:01:02 p.m.]
16. HobbiePic.Com
O 1 0 0 1 0 0 1 1 1 1
ACTIVAR EL SUICHE SW1 = ENABLE
N 1 0 0 1 0 0 1 1 1 0
ACTIVAR EL SUICHE SW1 = ENABLE
I 1 0 0 1 0 0 1 0 0 1
ACTIVAR EL SUICHE SW1 = ENABLE
C 1 0 0 1 0 0 0 0 1 1
ACTIVAR EL SUICHE SW1 = ENABLE
S 1 0 0 1 0 1 0 1 0 0
ACTIVAR EL SUICHE SW1 = ENABLE
NOTAS:
1-. Activar el suiche que hemos denominado como SW1 la cual su funcion es enviar un "1"
logico miestras el suiche se encuentre presionado, podria causar fallas de rebote; esto quiere
decir que podria aparecer varios caracteres en la pantalla si el efecto de rebote se hace
presente.
2-. El tiempo minimo que necesita el pulsador SW1 sera de 450 nano segundos. Este tiempo
no tendra nada de importancia para este procedimiento manual, pero si tendra muchisima
importancia para cuando el sistema funcione con un microprocesador o un microcontrolador.
HAZ CLICK AQUI PARA IR AL CAPITULO II
Amigo Visitante, si usted tiene alguna sugerencia, comentario de nuestro trabajo, cualquier
cosa que nos quiera informar, le agradeceríamos mucho que se pusiera en contacto con
nosotros por medio del siguiente correo electrónico: phorlakis@cantv.net En el
correo, por favor coloque de que Pais pertenece y su ciudad donde vive y finalmente en que se
especializa usted ?.
PCB ELECTRONICS SYSTEMS
Los Aceitunos, Av. 69A N-. 80B-105
Maracaibo - Zulia - Venezuela
Teléfonos: Fax: (061)-753-51-10 PROVISIONAL - (014)-361-9181
E-MAIL: phorlakis@cantv.net
http://www.hobbiepic.com/COMO%20FUNCION...SAS/Modulos%20LCD/Modulos%20LCD%201.asp (14 of 16) [07/07/2001 06:01:02 p.m.]
18. HobbiePic.Com
11.1-. Declaración de constantes que serán utilizadas en el programa del PIC16F84:
El siguiente código representa algunas constantes reservadas del microcontrolador PIC16F84
y otras de asignación personal. Estas instrucciones son para el ensamblador y las constantes
tratadas serán usadas básicamente en todo nuestro programa. La sección azul representa los
registros de funciones especiales del microcontrolador, la sección amarilla representa los Bits
del puerto "A" destinados al bus de control del modulo LCD y finalmente la sección morada
representa las constantes que definirán los tiempos de las rutinas de temporizació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
11.2-. Reserva de Memoria RAM:
El PIC16F84 tiene disponible 68 Bytes de memoria RAM. La memoria comienza desde la
dirección 0X0C ( Posición numero Décima Tercera del mapa de registros ) y termina en la
posición 0X4F ( Posición numero 80 del mapa de registros ).
La instrucción ORG le indica al ensamblador donde debe comenzar a reservar la memoria
RAM que a continuación declaramos.
Para nuestro pequeño experimento, 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 CONT2
11.3-. Configuración de los Puertos:
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%202.asp (2 of 7) [07/07/2001 06:01:57 p.m.]
19. HobbiePic.Com
El siguiente código le dice al microcontrolador PIC16F84 que el puerto "A" con sus cinco
lineas y el puerto "B" con sus ocho lineas serán configurados como salidas para nuestro
pequeño experimento.
CONFIGURACION DE LOS PUERTOS:
CODIGO: COMENTARIO
ORG 0X00
BSF STATUS,5 Cambio al banco 1
MOVLW b'00000000'
MOVWF TRISA Configura todo el puerto A como salida.
MOVLW b'00000000'
MOVWF TRISB Configura todo el puerto B como salida
BCF STATUS,5 Cambio al banco 0
11.4-. Programa Principal:
El programa principal en nuestro pequeño proyecto, lo hemos dividido en dos secciones de
colores. La sección en color azul representan las instrucciones necesarias para la
inicialización del modulo LCD. La sección en color amarillo representa el programa que se
encargara de escribir la palabra "PCB ELECTRONICS". En la columna de COMENTARIO
del programa, hemos agregado una pequeña información para que usted entienda que es lo
que sucede cuando se ejecuta la instrucción señalada.
PROGRAMA PRINCIPAL:
CODIGO: COMENTARIO
Llamada de sub-rrutina de tiempo de 15
milisegundos. Esta Subrrutina es solicitada en el
CALL TEMPO2 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 numero binario que representa el
comando en el modulo LCD para trabajar con un
bus de datos de 8 Bits. Posteriormente a esta
MOVLW b'00110000' instrucción se ejecuta una subrrutina 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 sub-rrutina que estará encargada
de colocar el dato en el modulo LCD ( Bus de
CALL LCDI
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
MOVLW b'00111000' Activación de dos lineas en el modulo LCD.
Posteriormente a esta instrucción se ejecuta una
subrrutina llamada LCDI que fue explicada en la
instrucción numero 2 de esta misma tabla.
Llamada de una sub-rrutina que estará encargada
de colocar el dato en el modulo LCD ( Bus de
CALL LCDI
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
MOVLW b'00001110' encendido de la pantalla y el cursor en el modulo
LCD. Posteriormente a esta instrucción se ejecuta
una subrrutina llamada LCDI que fue explicada
en la instrucción numero 2 de esta misma tabla.
Llamada de una sub-rrutina que estará encargada
de colocar el dato en el modulo LCD ( Bus de
CALL LCDI
datos ) y ejecuta la secuencia requerida para el
bus de control del modulo LCD.
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%202.asp (3 of 7) [07/07/2001 06:01:57 p.m.]
20. HobbiePic.Com
Este comando carga en el acumulador del
PIC16F84 el numero binario que representa el
comando en el modulo LCD para trabajar con el
MOVLW b'00000110' desplazamiento del cursor a la derecha
Posteriormente a esta instrucción se ejecuta una
subrrutina llamada LCDI que fue explicada en la
instrucción numero 2 de esta misma tabla.
Llamada de una sub-rrutina que estará encargada
de colocar el dato en el modulo LCD ( Bus de
CALL LCDI
datos ) y ejecuta la secuencia requerida para el
bus de control del modulo LCD.
MOVLW "P" Coloca el carácter ASCII en W
CALL LCDC Rutina para escribir un carácter en el LCD.
MOVLW "C" Coloca el carácter ASCII en W
CALL LCDC Rutina para escribir un carácter en el LCD.
MOVLW "B" Coloca el carácter ASCII en W
CALL LCDC Rutina para escribir un carácter en el LCD.
MOVLW "" 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 "L" 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 "T" 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 "O" 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 "I" Coloca el carácter ASCII en W
CALL LCDC Rutina para escribir un carácter en el LCD.
MOVLW "C" 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 CICLO
11.5-. Subrrutinas:
11.5.1-. Subrrutina para ejecutar una Instrucción.
Esta subrrutina que la hemos llamado LCDI configura el bus de control del modulo LCD para
ejecutar una instrucción que esta presente en el bus de datos. La instrucción es
inmediatamente ejecutada por el modulo LCD cuando se activa el ENABLE. Esta subrrutina
es utilizada por el programa principal solamente 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.
BSF PORTA,LCD_E Coloca "1" en el Pin E
Coloca el contenido de "W" en el bus de
MOVWF PORTB
datos del modulo LCD.
BCF PORTA,LCD_E Coloca "0" en el Pin E
Llamada de una sub-rutina de tiempo de 40
CALL TEMPO1
micro segundos.
RETURN Finaliza la Rutina de tiempo.
11.5.2-. Subrrutina para escribir un dato o un carácter en el modulo LCD.
Esta subrrutina configura el bus de control del modulo LCD para escribir un dato que esta
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%202.asp (4 of 7) [07/07/2001 06:01:57 p.m.]
21. HobbiePic.Com
presente en el bus de datos del modulo LCD . El dato se escribe en la pantalla
inmediatamente cuando se activa el ENABLE. Esta subrrutina es utilizada por el programa
principal solamente cuando se quiere escribir un caracter 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 bus de
MOVWF PORTB
datos del modulo LCD.
BCF PORTA,LCD_E Coloca "0" en el Pin E
Llamada de una sub-rutina de tiempo de 40
CALL TEMPO1
micro segundos.
RETURN Finaliza la Rutina de tiempo.
11.5.3-. Subrrutina de 58 microsegundos.
Esta subrrutina de tiempo es solicitada cuando se ejecuta una instrucción o un dato para dar el
tiempo necesario que requiere el modulo LCD para finalizar el proceso. Esta sub-rrutina
denominada TEMPO1 tiene una curación de 58 microsegundos basados 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
11.5.4-. Subrrutina de 15.37 milisegundos.
Esta subrrutina de tiempo es utilizada solamente cuando se enciende la pantalla para la
estabilizacion de los voltajes. Esta sub-rrutina denominada TEMPO2 tiene una duracion de
15.37 milisegundos basados en un cristal de 4 Mhz.
SUBRRUTINA DE TIEMPO ( TEMPO2 )
CODIGO: COMENTARIO
TEMPO2 MOVLW RETARDO2
MOVWF CONT2
CICLOT2 CALL TEMPO1
DECFSZ CONT2,1
GOTO CICLOT2
RETURN
Estas son todas las instrucciones que usted necesita para controlar un modulo LCD con un
microcontrolador PIC16F84. La información presentada en esta sección ha sido probada que
funciona correctamente.
Para facilitarle a usted el tiempo de transcripción de los programas de prueba para nuestro
pequeño experimento, podrá obtener los archivos originales por DOWNLOAD. Tan solo
haga doble click con el mouse en el nombre respectivo para obtener el archivo.
Nombre del Archivo Comentario
LCD1.ASM Archivo principal en lenguaje asembler.
LCD1.HEX Archivo compilado.
Una pequeña explicación referida a los dos archivos tendrá algo de importancia en el cual el
archivo denominado LCD1.ASM es un archivo que podrá ser observado en cualquier editor
de textos. El archivo LCD1.HEX es la traducción en lenguaje de maquina del archivo
LCD1.ASM y es el que necesita el microcontrolador.
HAZ CLICK AQUI PARA IR AL CAPITULO III MODULOS LCD
CONECTADOS SERIALMENTE CON UN PIC16F84
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%202.asp (5 of 7) [07/07/2001 06:01:57 p.m.]
22. HobbiePic.Com
Amigo Visitante, si usted tiene alguna sugerencia, comentario de nuestro trabajo, cualquier cosa que nos
quiera informar, le agradeceríamos mucho que se pusiera en contacto con nosotros por medio del siguiente
correo electrónico: phorlakis@cantv.net En el correo, por favor coloque de que Pais pertenece y su
ciudad donde vive y finalmente en que se especializa usted ?.
PCB ELECTRONICS SYSTEMS
Los Aceitunos, Av. 69A N-. 80B-105
Maracaibo - Zulia - Venezuela
Teléfonos: Fax: (061)-753-51-10 PROVISIONAL - (014)-361-9181
E-MAIL: phorlakis@cantv.net
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%202.asp (6 of 7) [07/07/2001 06:01:57 p.m.]
25. HobbiePic.Com
Si la imagen presentada anteriormente no la puede observar bien, puedes obtener una copia
haciendo click aquí. El tamaño del archivo es de 137 Kb.
NOTAS IMPORTANTES ANTES DE COMENZAR:
q En el diagrama esquemático, el circuito integrado 4094 no tiene planteado los pines de
suministro de voltaje la cual beberán ser tomados en cuenta a la hora de montarlo en un
protoboard para las respectivas pruebas.
q El circuito planteado en esta sección, solamente tendrá la capacidad de poder enviar un
dato al modulo LCD ( Escribir caracteres en la pantalla ) y enviar alguna instrucción
especifica de modulo; pero no tendrá la capacidad de leer información almacenada
dentro del modulo LCD.
q Para utilizar este circuito electrónico ( Método Serial ) se requiere que la persona tenga
un mínimo de conocimientos del las funciones de cada uno de los pines de control del
modulo LCD.
Para entender este circuito electrónico primero comenzaremos con observar que el
microcontrolador PIC16F84 utiliza los pines RB0, RB1 y RB2 para transferir el dato
serialmente y para controlar el bus de control del modulo LCD.
Ahora explicaremos la teoría básica que se requiere para escribir un carácter el la pantalla del
modulo LCD con este método:
El circuito integrado 4094 es conocido como un integrado que recibe una información en
forma serial y es organizada en forma paralela desde Q1 hasta Q8 que representan las salidas.
Este tipo de circuito integrado esta clasificado como un registro de desplazamiento y esta
conformado por 8 Flip Flops interconectados serialmente. La información que esta
almacenada en los flip flops experimentan un corrimiento hacia la derecha o hacia la
izquierda con cada pulso de reloj. Un bit almacenado en un flip flop de la cadena se transfiere
o se desplaza ( Derecha o Izquierda ) al flip flop siguiente o adyacente.
Por ejemplo, si nosotros queremos escribir el carácter"A" en el modulo LCD, tenemos que
saber que la representación binaria del carácter"A = 01000001", un programa interno en el
microcontrolador ( diseñado por el programador ) deberá tomar cada uno de los bits que
conforman el carácter"A" comenzando por el bit menos significativo; es decir, primero toma
el "1", seguidamente el "0", "0", "0", "0", "0", "1" y finalmente el ultimo bit "0". Cada uno de
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%203.asp (2 of 8) [07/07/2001 06:02:53 p.m.]
26. HobbiePic.Com
estos bits son emitidos por el Pin del microcontrolador denominado RB1 el cual esta
conectado con el Circuito Integrado 4094 en el Pin numero 2 denominado "D". Cada vez que
se emita un Bit, el microcontrolador (RB0) también emite un pulso de reloj al Pin No. 3 del
C.I. 4094. El Bit que esta presente en el Pin No. 2 es tomado y colocado en los registros
internos del CI 4094.
Cuando la palabra completa de 8 Bits se encuentra dentro de los registros del C.I. 4094 se
procede a emitir un pulso desde el microcontrolador (RB2) que esta conectado con el Pin No.
1 del C.I. 4094 (STR), este pulso autoriza al C.I. 4094 a colocar el dato completo de 8 bits en
las salidas desde Q1 hasta Q8.
Ahora tenemos nuestro carácter"A" presente en las salidas del C.I. 4094 lo cual quiere decir
que ya se encuentra presente el carácter"A" en el bus de datos del modulo LCD. El dato será
leído por el modulo LCD si su bus de control esta configurado para ello. Observemos en
nuestro circuito que Pin R/W del modulo LCD esta conectado a tierra y el Pin "E" del modulo
LCD esta conectado directamente a RB2 del microcontrolador, finalmente el Pin "RS" esta
conectado a un pequeño circuito conformado por un transistor. Ahora sabemos que para poder
escribir un dato en la pantalla del modulo LCD tenemos que tener configurado el Pin R/W =
0, RS=1 y el Pin denominado E del modulo LCD deberá colocarse en E = 1 durante 450 nano
segundos y volverlo a colocar en E = 0 para que tome el dato presente en el bus para escribir
el carácter en el modulo LCD.
Ahora aquí viene la parte interesante de nuestro circuito en el cual le tenemos que decirle al
modulo LCD que tome el carácter"A" presente en el bus de datos. Observe primero que el Pin
No 8 del microcontrolador (RB2) esta conectado a dos partes diferentes en el circuito,
primero esta conectado al Pin No 1 del C.I. 4093 (STR) y segundo esta conectado al modulo
LCD en el Pin No. 6 denominado "E", lo cual quiere decir que el Pin RB2 del
microcontrolador es utilizado para dos funciones:
La primera función del Pin No. 8 del Microcontrolador (RB2) es emitir un pulso para que sea
recibido por el Pin N-. 1 del C.I. 4094 (STR) en el momento que la palabra completa de 8 bits
se encuentre presente dentro del registro de desplazamiento. Esta palabra de 8 bits aparece en
la salida del C.I. 4094 en los pines desde Q1 hasta Q8 en el momento que STR recibe el
Pulso.
La segunda función del Pin No. 8 del Microcontrolador (RB2) viene inmediatamente después
de haber realizado la primera función. En el momento que se ejecuta la primera función, el
dato esta presente en las salidas del C.I. 4094 por ende el dato estará presente en el bus de
datos del modulo LCD; pero para poder escribir un carácter en la pantalla del modulo, se
tiene como condición obligatoria que el Pin No. 6 del modulo LCD "E" deberá permanecer en
E=1 durante 450 nano segundos, en este momento se debe volver a cambiar el estado logico
de "E" a 0, haciendo que el modulo capture el caracter "A" y lo escriba en la pantalla.
Por otra parte, el Pin No. 4 (RS) del bus de control del modulo LCD deberá estar colocado en
"1" para escribir un carácter en la pantalla. En nuestro circuito el Pin RS del modulo LCD
esta controlado por el Pin RB0 del microcontrolador por medio de un pequeño circuito
conformado por C1, Q1, R1 y R4. Se podrá observar que RB0 del microcontrolador también
estará encargado de emitir el tren de pulsos que requiere el C.I. 4094 para capturar el dato en
sus registros.
Si queremos escribir un carácter, primero debemos colocar RB0 = 1 durante 500 micro
segundos para que se cargue el condensador C1, permitiendo que el transistor Q1 se active y
coloque a RS = 1. Seguidamente se envía el tren de pulsos que esta relacionado con los bits
que conforman el dato. Este tren de pulsos no altera el voltaje del capacitor C1 asegurandose
de esta manera RS = 1 durante un tiempo dentro el cual se debe activar el Pin denominado
"E" del modulo LCD para escribir el carácter en la pantalla.
Si queremos enviar una instrucción al modulo LCD, primero debemos colocar RB0 = 0 para
que el condensador proceda a descargarse, desactivando el transistor Q1 y colocando a RS =
0 y se procede de igual manera con el tren de pulsos que esta relacionado con los bits que
conforman a la instrucción.
http://www.hobbiepic.com/COMO%20FUNCIONA...OSAS/Modulos%20LCD/Modulos%20LCD%203.asp (3 of 8) [07/07/2001 06:02:53 p.m.]