PDF de programación - Como manejar un Display Inteligente LCD por medio de un Microcontrolador de la Familia HC908

Imágen de pdf Como manejar un Display Inteligente LCD por medio de un Microcontrolador de la Familia HC908

Como manejar un Display Inteligente LCD por medio de un Microcontrolador de la Familia HC908gráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 16 de Octubre del 2017)
898 visualizaciones desde el 16 de Octubre del 2017
1,2 MB
26 paginas
Creado hace 14a (15/07/2009)
COMENTARIO TECNICO

Como manejar un Display Inteligente LCD por
medio de un Microcontrolador de la Familia HC908..

Por Ing. Daniel Di Lella

Depto. Técnico EduDevices – www.edudevices.com.ar
[email protected] / [email protected]

Hoy en día, es una necesidad cada vez más frecuente, la visualización de comandos y
estados de una gran variedad de equipos con el usuario final. Es evidente que, al ir
mejorando las prestaciones generales de un sistema o equipo, se hace necesario disponer de
un medio práctico de comunicar las diferentes informaciones "Usuario - Máquina".

Uno de los elementos más usados en este sentido, es el display LCD de tipo "inteligente".
Estos módulos, son la forma más eficiente de comunicación alfanumérica con el mundo
exterior. Los hay de distintos tamaños, cantidad de caracteres y cantidad de filas.
Por ejemplo, en el mercado se encuentran módulos desde 8 caracteres x 1 línea (osea una
línea de 8 caracteres) , hasta módulos de 40 caracteres x 4 líneas. Un opcional que mejora
la visibilidad en cualquier condición es el "Back - Light" o luz de fondo que puede ser del
tipo a LED (array de LEDs uniformemente distribuidos) o del tipo Electroluminicente.

El propósito del siguiente artículo, no es entrar en detalles constructivos o de presentación,
sino aportar datos útiles para poder utilizar uno de estos display con un microcontrolador
en un proyecto determinado.

Introducción:

Los módulos de display inteligentes, son denominados así, ya que poseen la "inteligencia"
necesaria como para efectuar en forma totalmente automática y transparente para el
usuario, las complejas operaciones de control, presentación y mantenimiento de los
caracteres en pantalla. Para ello, todos cuentan con controladores dedicados, integrados
a la estructura de los mismos. Estos controladores integrados, aunque de distintos
fabricantes, presentan repertorios o sets de instrucciones (lista de comandos) hacia el
mundo exterior muy similares entre sí, por lo cuál, en la mayoría de los casos, no importa la
marca del display a emplear, sino el hecho que utilicen controladores integrados
compatibles, haciendo de esta forma "genérico" el uso de un display LCD inteligente.

Líneas de Conexión:

Los display inteligentes poseen líneas de conexión con el mundo exterior que pueden
dividirse en :

- Líneas de Datos / Comandos.
- Líneas de Control

Las líneas de Datos / Comandos son las utilizadas por el display para recibir Datos o
Comandos y eventualmente pueden utilizarce para conocer el estado de ocupación del
controlador interno (display "Busy"). Según el modo empleado, pueden necesitarse 8 o 4
líneas de Datos / Comandos.
Si se utiliza el modo de 8 líneas de Datos, se tiene la ventaja de un manejo más sencillo a la
hora de implementar el software en el microcontrolador elegido, pero se paga el precio de
tener que disponer más puertos I/O del MCU para el envío de datos o comandos al display.

En cuanto a las líneas de Control, son necesarias para coordinar las distintas operaciones
que puede realizar un display LCD , a saber:

- Escritura de Datos al display (Data Word).
- Escritura de Comandos al display (Control Word).
- Lectura de estados del display (Busy, Address Counter, DD RAM, CG RAM)

Solo son necesarias 3 líneas de control para efectuar la tarea, RS , E , y R/W.

Cuando se quiere trabajar con alguno de estos displays, se pueden utilizar varias formas de
control de los mismos. Por ejemplo se puede trabajar con 8 bits o con 4 bits de palabra de
datos. También puede utilizarse el método de demora fija entre envío de caracter y
caracter, o emplear el método de lectura del estado "Busy" que proporciona el controlador
integrado en el display.

Los diagramas de tiempos correspondientes a las distintas señales de control se observan en
las siguientes figuras:

La inicialización de estos displays , puede efectuarse en forma automática por medio del
propio controlador integrado, al detectar este un Power - On Reset (P.O.R) , osea durante
el encendido del sistema, o bien por medio de comandos de software enviados al
controlador para efectuar esta tarea de inicialización. Muchas veces puede ocurrir, que la
pendiente de subida de la fuente de alimentación, no es lo suficientemente abrupta como
para garantizar que el controlador integrado detecte la condición de P.O.R. , por lo que es
conveniente tener contemplado el uso de una rutina de inicialización por software en
nuestra aplicación.

Una vez efectuado el "Reset" del display, el mismo se encuentra en condiciones de recibir
palabras de comando que personalizan la forma de presentar los sucesivos caracteres
enviados a este. Por ejemplo se pueden enviar comandos de "Clear Display" para limpiar
la presentación en pantalla, "Return Home" para posicionar al cursor en la posición
"Home" o primer carácter superior izquierdo, etc, etc. En las siguientes figuras, pueden
verse la lista completa de los mismos y algunos ejemplos de uso de estos.

A continuación veremos una aplicación típica de manejo de display a 8 bits de datos, la
forma de envío de los distintos caracteres es por el método de demora fija, utilizando para
ello un microcontrolador de la línea FLASH HC908 de Freescale.

El MCU elegido es el MC908GP32 pero la aplicación es valida para cualquier MCU de la
familia.

Si bien el método de demora fija, es el menos eficiente en cuanto a velocidad de
transferencia de información desde el MCU al display, es también el más sencillo de
implementar por el usuario sin experiencia previa. Si el lector evaluara conveniente el uso
de un método más eficiente para una aplicación específica, sugerimos consultar la nota de
aplicación de Freescale AN 1745 (www.freescale.com ) y la Información técnica disponible
en el Web Site de la marca del display que se haya elegido.

LCD 16 caracteres x 2
líneas

8

R/W RS E

+5VDC

VDD

V0

VSS



PTA0
A
PTA7

HC908
GP32

PTC0
PTC1
PTC2

***********************************************************************
* DISP8BIT.ASM – PROGRAMA DE APLICACION PARA DISPLAY LCD *
* 16 CARACTERES X 2 LINEAS *
* El display aquí usado es marca WINTEK modelo WM-C1602Q1GLY *
* pero puede aplicarse a cualquier tipo de display LCD inteligente *
*
*
* Se utilizará un MC908GP32CP para esta aplicación, con la siguiente config. *
* de puertos:
*
*
*
* PORTA ---- PTA0 a PTA7 como salida de datos a conectar a DB0 a DB7 respec. *
*
*
* PORTC ---- PTC0 a PTC2 como salida líneas de control de la siguiente forma: *
*
*
*
* PTC0 ---- R/W
* PTC1 ---- RS
*
* PTC2 ---- E
*
************************************************************************

base 10T ;Base Decimal por Default
include "gp32head.asm" ;Equates grales. p/ GP32

***************
* EQUATES *
***************
RAMSPACE EQU $0040 ;Comienzo de la RAM en el GP32
FLASHSPACE EQU $8000 ;Comienzo de la FLASH en el GP32

*****************
* VARIABLES RAM *
*****************
ORG RAMSPACE ;Comienzo de la RAM
TEMPA RMB 1 ;Almacenamiento Temporal del ACC
TEMPX RMB 1 ;Almacenamiento temporal de X
TEMPHX RMB 2 ;Almacenamiento Temporal del H:X
PANTALLAS RMB 1 ;Cdor. Tot. de pantallas a mostrar
DELAY1S RMB 1 ;Cdor. Delay de 1 seg. (20 x 50mS)

;-------------------------------------------------
;INICIALIZACIÓN DEL 908GP32
;Setup de los Configuration Registers
;-------------------------------------------------
START MOV #$0B,CONFIG1 ;Set LVI5OR3 and COPD, enable STOP
MOV #$03,CONFIG2 ;Selecciono Fbus como SCI clock
NOP
NOP
MOV #$00,PORTA
MOV #$FF,DDRA ;PORT A todo como SALIDA
MOV #00,PORTA
MOV #$00,PORTB
MOV #$00,DDRB ;PORT B todo como entrada
MOV #$00,PORTB
MOV #$00,PORTC
MOV #$0F,DDRC ;PORT C PTC0/3 ->OUT, PTC4/6 ->IN
MOV #$00,PORTC
MOV #$00,PORTD
MOV #$00,DDRD ;PORT D todo como entrada
MOV #$00,PORTD
MOV #$00,PTAPUE ;PORT A sin PULL UPS
MOV #$00,PTCPUE ;PORT C sin PULL UPS
MOV #$00,PTDPUE ;PORT D sin PULL UPS

SEI ; I MASK = 1 -> NO USO INTs
; para esta aplicación

****************************************
* PREPARO EL DISPLAY p/ POWER ON RESET *
* del mismo (Ver gráficos aparte) y su *
* inicialización de comandos *
****************************************
JSR DLY50 ;DELAY 50MS DESPUES DEL POWER-ON
LDA #$38 ;FUNTION SET -8 BITS - 2LINE - 5X7
JSR WCTRL
JSR DLY50 ;DELAY 50MS
LDA #$38 ;FUNTION SET - 8BITS - 2LINE - 5X7
JSR WCTRL
JSR DLY50
LDA #$38 ;FUNTION SET - 8BITS - 2LINE - 5X7
JSR WCTRL
LDA #$38 ;FUNTION SET - 8BITS - 2LINE - 5X7
JSR WCTRL
LDA #$08 ;DISPLAY OFF
JSR WCTRL
LDA #$01 ;CLEAR DISPLAY
JSR WCTRL
LDA #$06 ;ENTRY MODE - INC ADDR - NO SHIFT
JSR WCTRL
*********************
* INICIALIZO EL LCD *
*********************
LDA #$01 ;CLEAR DISPLAY
JSR WCTRL
LDA #$02 ;HOME CURSOR
  • Links de descarga
http://lwp-l.com/pdf7194

Comentarios de: Como manejar un Display Inteligente LCD por medio de un Microcontrolador de la Familia HC908 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad