Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manejo de Display LCD Con Microcontrol Ad or HC08
Manejo de Display LCD Con Microcontrol Ad or HC08
(Eduardo Ortiz)
Este documento es una gua bsica para trabajar con un display LCD
alfanumrico utilizando un micro Freescale de la familia HC08, para
aquellos que se estn iniciando en el uso de estos
microcontroladores.
Se muestra el conexionado fundamental, y se ver un ejemplo de
programa como rutina de prueba del display. Se asume que el lector
est iniciado en ste tipo de micros (arquitectura, set de
instrucciones, etc.) y tiene al menos una idea del funcionamiento de
los display LCD.
En este ejemplo, usaremos un display LCD alfanumrico de 2 lneas
con 16 caracteres cada una. Trabajaremos con envo de datos de 8
bits (paralelo), ya que es ms simple para comprender el manejo del
display al principio.
El objetivo es, entonces, escribir algunos caracteres en ambas
lneas del display, para comprender el funcionamiento y
constatar la correcta comunicacin entre micro y LCD. Con
sta base, luego se podrn hacer programas de mayor
complejidad.
Tendremos, entonces, los siguientes pines para manejo del display:
-
Procedimiento Bsico
En este sencillo programa, debemos realizar los siguientes pasos:
1- Inicializar el microcontrolador y sus variables.
2- Inicializar el display LCD
3- Enviar cuatro caracteres a escribirse en la lnea superior del
display, y cuatro caracteres en la lnea inferior.
;%00111000
;Function Set- 8-bit,2-line,5X7
;%00111000
;Function Set- 8-bit,2-line,5X7
;%00111000
;Function Set- 8-bit,2-line,5X7
JSR DELAY50
LDA #$0C
JSR WCTRL
;Display on, Cursor off
LDA #$06
JSR WCTRL
;Entry mode- Inc addr, no shift
LDA #$01
;Clear Display
JSR WCTRL
*Fin de inicializacin del Display
Como se ve, el primer comando se enva tres veces (ver hoja de
datos para ms detalles) y luego de cada envo se llama una rutina
delay de 50mS. Este tiempo supera ampliamente el especificado
por cualquier fabricante, y lo haremos de sta manera para
seguridad en sta prueba. En desarrollos posteriores ser
conveniente optimizar este retardo al valor necesario. Tambin se
llama la DELAY50 antes de mandar la primera instruccin, para
permitir que se estabilice todo el hardware antes de comenzar este
proceso.
Segn los comentarios, con la primera instruccin (repetida tres
veces) le estamos diciendo al display que trabajaremos con
palabra de ocho bits, en display de dos lneas, y con tamao de
carcter de 5x7 puntos.
La siguiente instruccin enviada ($0C) enciende el display e
inhabilita la muestra del cursor, que no usaremos ahora.
La instruccin siguiente ($06) ordena al display que incremente la
direccin de muestra. Esto es, luego de escribir un carcter, el
display automticamente apuntar a la direccin siguiente para
que escribamos el que sigue. Por lo tanto, los caracteres de datos
que enviemos se irn escribiendo uno detrs del otro, de izquierda
a derecha.
Por ltimo, enviamos el comando de borrado ($01) que limpia la
DDRAM y por lo tanto toda muestra que hubiere en la pantalla. De
esta forma, ya estamos listos para enviar datos (letras, nmeros,
smbolos) al display, y probar su funcionamiento.
Cabe acotar que existen otros mtodos de retardo ms ptimos
que el uso de una rutina delay, pero ste sirve a nuestro
propsito actual.
WCTRL
STA PTB
BSET ED,PTD
;E-> 1
NOP
BCLR ED,PTD
;E-> 0
RTS
**************************************************
WCTRL toma lo que viene en el ACC y lo saca por el Puerto PTB.
Luego habilita el display haciendo ED=1, espera sin hacer nada
(instruccin NOP del micro: no operacin) y vuelve a inhabilitar el
display con ED=0. El paso siguiente (RTS) es el retorno de esta
rutina. La demora que da el NOP, depender del cristal utilizado.
Eventualmente debemos colocar en ese lugar varios NOP para
ensanchar el pulso de habilitacin, si la frecuencia del clock es alta
(conviene remitirse a la hoja de datos del display para ver su
tiempo de habilitacin mnimo), pero si usamos un cristal de 4,00
Mhz no tendremos ningn problema.
Veamos ahora la WDAT:
*************************************************
*Rutina que escribe un caracter de dato en el display. El
*dato viene en el acumulador.
*************************************************
WDAT
STA PTB
BSET RS,PTD
;RS->1
BSET ED,PTD
;ED->1
NOP
BCLR ED,PTD
;ED->0
BCLR RS,PTD
;RS->0
RTS
**************************************************
WDAT es muy similar a WCTRL. La diferencia radica en que
avisamos al display que el carcter enviado ser un dato y no una
instruccin, haciendo RS=1 antes de habilitar, y RS=0 luego de
inhabilitar.
01$
O
41$
I
02$
D
42$
E
03$ 04$ 05$ 06$ 07$ 08$ 09$ 0A$ 0B$ 0C$ 0D$ 0E$ 0F$
O
43$ 44$ 45$ 46$ 47$ 48$ 49$ 4A$ 4B$ 4C$ 4D$ 4E$ 4F$
N
JSR
WCTRL ;Function Set- 8-bit,2-line,5X7
JSR
DELAY50
LDA #$38
;%00111000
JSR
WCTRL ;Function Set- 8-bit,2-line,5X7
JSR
DELAY50
LDA #$0C
JSR
WCTRL ;Display on, Cursor off
LDA #$06
JSR
WCTRL ;Entry mode- Inc addr, no shift
LDA #$01
;Clear Display
JSR
WCTRL
*Fin de inicializacin del Display
********************************************************
JSR
CARTEL1
LOOP1
STA
COPCTL
;reset del COP
BRA LOOP1
*********************************************
;Escribir aqu las rutinas WCTRL, WDAT, CARTEL1, DELAY50
********************************************
*AREA DE VECTORES
ORG VectorStart
FDB start
; ADC Conversion Complete Vector
FDB start
; Keyboard Vector
FDB 0,0,0,0,0,0,0,0 ; (No Vectors Assigned $FFE2-$FFF1)
FDB start
; TIM1 Overflow Vector
FDB start
; TIM1 Channel 1 Vector
FDB start
; TIM1 Channel 0 Vector
FDB start
; (No Vector Assigned $FFF8-$FFF9)
FDB start
; ~IRQ1
FDB start
; SWI Vector
FDB start
; Reset Vector
*********************************************
Conclusin
Esta es una muy bsica explicacin de cmo hacer funcionar un
display mediante un microcontrolador Freescale. Existen formas de
escribir los datos aprovechando muchas ventajas de sta familia,
como el uso del par H:X para indexar cadenas de caracteres, y otras
mejoras adicionales. Tambin es posible comunicarse con el display
usando solo cuatro bits de dato, con lo cual ahorramos puertos del
micro para otras aplicaciones.
Lo importante es comprender el concepto y siempre trabajar
desde lo ms sencillo a lo ms complicado, e ir probado las
rutinas y listados de programa paso a paso. Es la nica
manera de avanzar sobre seguro.
Autor:
Eduardo Ortiz (usuario de e-magister, del grupo de Electricidad y
Electrnica).
Acepto y espero preguntas, comentarios, correcciones y sugerencias!
Espero haber sido til, y poder seguir enviando documentos acerca
de los nobles microcontroladores Freescale.