Documente Academic
Documente Profesional
Documente Cultură
Teoría de funcionamiento:
En el LCD se pueden mostrar datos como la hora y la fecha, así como valores de
variables tales como nivel, presión, gasto, temperatura, etc. El LCD puede también
emplearse para programar parámetros internos del sistema, de acuerdo a su
aplicación o para mostrar al usuario las opciones del sistema mientras lo opera.
El módulo LCD lleva integrado a sus circuitos una memoria ROM conocida como
“generador de caracteres” que habrá de generar los patrones de la matriz de
puntos (5 x 7 ó 7 x 9) que forman los caracteres en la pantalla. También tiene una
RAM interna que almacena los caracteres y los exhibe en el módulo LCD.
Hardware:
Operación:
* con RS=1, se escribe los datos en código ASCII en las 8 líneas RB0 a RB7, con
el mismo procedimiento señalado arriba. Los caracteres van apareciendo en el
mismo orden en el que se mandan. Para un LCD de dos renglones, cada renglón
debe de manejarse con un comando independiente. Para escribir en el primer
renglón, debe previamente de enviarse el comando 80H y para el segundo
renglón, un C0H
* Las señales de control RS y EN, se manejan por medio de los pines RA1 y RA2
del 16F84.
Conexión:
Existen, entre otros, dos tipos de displays LCD:
Firmware:
; ARCHIVO LCD2.ASM
; CODIGO FUENTE PARA EL MICROCONTROLADOR EDUPIC-16F84
; CPU configuration
; (It's a 16F84, XT OSCILADOR
; watchdog timer off, power-up timer on)
;PA1 se usa como señal de control RS comando=0, datos=1
;PA2 se usa como señal de control EN pulso de 50 ms.
;PB0..PB7 se usan como señales de datos.
processor 16f84
include <p16f84.inc>
__config _XT_OSC & _WDT_OFF & _PWRTE_ON
org 0
lcd: movlw H'00'
bsf STATUS,RP0 ;BANCO 1
movwf TRISB ;bits de puerto B, salidas
movwf TRISA ;bits de puerto A, salidas
bcf STATUS,RP0 ;BANCO 0
call comand ;incializa LCD. envía 4 comandos
movlw D'15' ;16 caracteres
movwf valor
call primer ;escribe primer renglón
movlw D'15'
movwf valor
call segund ;escribe segundo renglón
loop: goto loop
primer: movlw renglon1
call puco ;envía comando de renglón 1
malla1: movfw valor
call tabla1 ;regresa con dato de tabla en W.
call puda ;escribe caracter en LCD
decfsz valor,f
goto malla1
return
segund: movlw renglon2
call puco ;envía comando de renglón 2
malla2: movfw valor
call tabla2 ;regresa con dato de tabla en W.
call puda ;escribe caracter en LCD
decfsz valor,f
goto malla2
return
comand: movlw eight ;envía 4 comandos
call puco
movlw clear
call puco
movlw home
call puco
movlw cursor
call puco
return
puco: movwf PORTB ;escribe comando en puertoB
call delay ;50 milisegundos
movlw H'04' ;RS=0, EN=1
movwf PORTA
call delay
movlw H'00' ;RS=0, EN=0
movwf PORTA
call delay
movlw H'04'
movwf PORTA
call delay
return
puda: movwf PORTB ;escribe dato en puertoB
call delay ;50 milisegundos
movlw H'06' ;RS=1, EN=1
movwf PORTA
call delay
movlw H'02' ;RS=1, EN=0
movwf PORTA
call delay
movlw H'06'
movwf PORTA
call delay
return
delay: movlw D'100' ;50 milisegundos
movwf K
mallaK: movwf J
mallaJ: decfsz J,f
goto mallaJ
decfsz K,f
goto mallaK
return
tabla1: addwf PCL,f
retlw ''
retlw ''
retlw '4'
retlw '8'
retlw 'F'
retlw '6'
retlw '1'
retlw ''
retlw 'C'
retlw 'I'
retlw 'P'
retlw 'U'
retlw 'D'
retlw 'E'
retlw ''
retlw ''
tabla2: addwf PCL,f
retlw ''
retlw 'E'
retlw 'T'
retlw 'N'
retlw 'A'
retlw 'T'
retlw 'O'
retlw 'L'
retlw 'F'
retlw ''
retlw 'O'
retlw 'T'
retlw 'N'
retlw 'U'
retlw 'P'
retlw ''
end
Indice
1. Objetivos
2. Introducción
3. Diversidad de algunos módulos LCD
4. Identificación de los pines de conexión de un modulo LCD no matricial
5. Interpretación del significado de los Pines del Modulo LCD
6. Tiempos mínimos requeridos para que una instrucción o un dato
puedan ser ejecutados.
7. Bus de Datos de 4 y 8 Bits de Longitud
8. Inicialización del modulo LCD
9. Conjunto de Instrucciones básicas de un modulo LCD:
10. Conexión de un modulo LCD a un Microcontrolador PIC16F84.
11. El programa
12. Archivo .LST
13. Conclusiones
Objetivos
Introducción
Antes de aparecer los módulos LCD, nuestros diseños electrónicos utilizaban los
Displays de siete segmentos para poder mostrar la información, además de su
gran limitación de poder mostrar los caracteres alfa numéricos y símbolos
especiales, también consumían demasiada corriente y ocupaban demasiado
espacio físico. Posteriormente aparecieron otros tipos de displays mas complejos
que podían mostrar algunos caracteres y símbolos; pero tenían de igual manera
mucho consumo de corriente y espacio físico desperdiciado.
Finalmente aparecieron los módulos LCD o pantallas de cristal liquido (ver grafico)
la cual tiene la capacidad de mostrar cualquier carácter alfa numérico. Estos
dispositivos ya vienen con su pantalla y toda la lógica de control pre-programada
en la fabrica y lo mejor de todo es que el consumo de corriente es mínimo y no se
tendrán que organizar tablas especiales como se hacia anteriormente con los
displays de siete segmentos.
Las aplicaciones de los módulos LCD son infinitas ya que podrán ser aplicados en
la informática, comunicaciones, telefonía, instrumentación, robótica, automóviles,
equipos industriales, etc. Todo queda a su imaginación la gran cantidad de
aplicaciones que tiene un modulo LCD.
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.
Los pines de conexión de un modulo LCD han sido estandarizados por lo cual en
la mayoría de ellos son exactamente iguales siempre y cuando la línea de
caracteres no sobrepase los ochenta caracteres por línea. 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.
Pin N-. Sismología Nivel I/O Función
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.
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 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.
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.
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.
Gráfico 4. Diagrama de tiempos para una instrucción.
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.
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.
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.
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.
Todo modulo LCD deberá inicializarse, esta inicialización indicara como deberá
operar la pantalla. La inicialización representa 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:
CODIGO Tiempo
Instrucción. Descripción de
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 ejecución
Borra la
pantalla y
Borrar retorna el
0 0 0 0 0 0 0 0 0 1 1.64 mS.
Pantalla cursor a la
dirección 0
( Home )
Retorna el
cursor al
Cursor
0 0 0 0 0 0 0 0 1 * inicio 1.64 mS.
Home
( Dirección
o)
Donde D=0
Pantalla
apagada,
D=1 Pantalla
encendida,
C=0 Cursor
apagado,
Apagado y
C=1 Cursor
encendido
0 0 0 0 0 0 1 D C B encendido, 40 uS..
de la
B=0
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
Set CG
RAM 0 0 0 1 ACG 40 uS.
address
Set DD
RAM 0 0 1 ADD 40 uS.
address
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 1 1 Leer el Dato 40 uS.
DD RAM
Tabla 2: NOMENCLATURAS
La tabla número tres, esta referida a las abreviaturas utilizadas en la tabla numero
uno
Tabla 3: ABREVIATURAS
Abreviatura
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.
Gráfico 9. Paquete MPLAB
El programa
list p=16f84
indf equ 0h
tmro equ 1
pc equ 2
status equ 3
fsr equ 4
ptoa equ 5
ptob equ 6
z equ 2h
c equ 0h
w equ 0h
r equ 1h
e equ 1h
rs equ 0h
org 0
goto inicio
org 05
movwf r13
goto decre
retlw 0
goto dato2
movwf ptob
call retardo
bcf ptoa,e
call retardo
retlw 0
retlw "c"
retlw "u"
retlw "r"
retlw "s"
retlw "o"
retlw "e"
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 "p"
retlw "i"
retlw "c"
retlw 0
tris ptoa
movlw 00
tris ptob
call control
movlw 07h
call control
movlw 0ch
call control
muestra movlw 0
movwf r0c
call tabla2
call dato
movlw 09fh
movwf r0d
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
VALUE
00004
00021
00025
00028
00032
00035
00037
00044
00083
00088
00095
00098
0045 080C 00099 ciclo movf r0c,w
00104
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
Autor:
Caracteristicas principales:
-Pantalla de caracteres ASCII, además de los caracteres Kanji y Griegos.
-Desplazamiento de los caracteres hacia la izquierda o la derecha.
-Proporciona la dirección de la posición absoluta o relativa del caracter.
-Memoria de 40 caracteres por línea de pantalla.
-Movimiento del cursor y cambio de su aspecto.
-Permite que el usuario pueda programar 8 caracteres.
-Conexión a un procesador usando un interfaz de 4 u 8 bits
Descripción de pines:
ABREVIATURAS
Abreviaturas empleadas en los códigos anteriores:
1 - Desplaza la visualización cada vez que se escribe un dato
S
0 - Modo normal
1 - Incremento del cursor
I/D
0 - Decremento del cursor
1 - Desplaza el display
S/C
0 - Mueve el cursor
1 - Desplazamiento a la derecha
R/L
0 - Desplazamiento a la izquierda
1 - Módulo ocupado
BF
0 - Módulo disponible
1 - Bus de datos de 8 bits
DL
0 - Bus de datos de 4 bits
1 - LCD de dos líneas
N
0 - LCD de una línea
1 - Carácter de 5 x 10 puntos
F
0 - Carácter de 5 x 7 puntos
1 - Parpadeo del cursor ON
B
0 - Parpadeo del cursor OFF
1 - Cursor ON
C
0 - Cursor OFF
1 - Display ON
D
0 - Display OFF
X Indeterminado
Juego de caracteres:
Genera un pulso de 1µS por PORTB,2 patita 6
(Enable) del LCD. Si se usa una velocidad de
LCD_E
micro diferente de 4MHz habrá que ajustar
este tiempo.
Chequea si el LCD esta ocupado (BUSY) y
LCD_BUSY
retorna de la rutina cuando ya no lo este.
Pone al LCD en modo de recibir comandos ,
LCD_REG
espera a que no este ocupado y va a LCD_E.
Pone el LCD en modo datos y manda el byte
LCD_DATOS
presente en W que será mostrado en pantalla.
LCD_INI Inicializacion del modulo LCD segun los
tiempo marcados por el fabricante. Bus de 8
bits, 2 lineas de visualizacion y caracteres de
5 x 7 puntos.
Configura los puertos del PIC para ser usados
LCD_PORT
con el LCD.
Rutina
LCD.lib
LCD 2x16
acabar nop
goto acabar ;Buclee infinito
PROGRAMA : LCD.LIB
; Funcion : Libreria de funciones para controlar un display
; LCD de 2x16 lineas complatible con Hitachi.
;
; Revision : 1.0 Programa para : PIC16F84
; CPU Clock : 4 MHz Reloj instruccion : 1 us
; WDT : Deshabilitado Tipo de reloj : XT
; Code Prot : OFF
;****************************************** http://www.x-robotics.com *******
;MOVLW b'00000000'
;MOVWF INTCON ;Desactiva interrupciones
BCF RA,0 ;Desactiva RS del modulo LCD
BCF RA,2 ;Desactiva E del modulo LCD
;****************************************************************************
;DELAY_5MS genera una temporizacion de 5mS necesario para la secuencia de
;inicio del LCD