PDF de programación - Comprendiendo las pantallas compatibles con LCD HD44780

Imágen de pdf Comprendiendo las pantallas compatibles con LCD HD44780

Comprendiendo las pantallas compatibles con LCD HD44780gráfica de visualizaciones

Actualizado el 23 de Julio del 2017 (Publicado el 17 de Julio del 2017)
586 visualizaciones desde el 17 de Julio del 2017
353,5 KB
5 paginas
Creado hace 19a (10/01/2005)
LinuxFocus article number 258
http://linuxfocus.org

Comprendiendo las pantallas
compatibles con LCD HD44780

by Jan Svenungson
<jan.svenungson(at)linux.nu>

About the author:

Jan ha sido usuario de
GNU/Linux desde 1996 y
sólo ha tenido 2 reinicios no
intencionados desde
entonces. (No cuentan los
reinicios por fallos de
corriente).

Abstract:

Este artÃ-culo tratará de enseñarte una o dos cosas sobre las pantallas
compatibles LCD HD44780.
Veremos cómo conectarla al puerto paralelo y cómo programarla con un
pequeño programa llamado LCDInfo.
No supongas que será sólo enchufar, ejecutar un programa y obtener todo
lo que necesitas en la pantalla, pero te ayudará a comprender cómo el
hardware puede hacer lo que tú quieres que haga.

_________________ _________________ _________________

Introducción

Primero, es necesario conseguir algo de hardware y algunos programas. Asumo que cuentas con un ordenador
con un puerto paralelo estándar (el de impresora) donde sea posible ejecutar GNU/Linux con gcc y glibc.
También necesitarás una pantalla LCD que sea compatible con HD44780, cableado para conectarla a tu
puerto paralelo y un potenciómetro si deseas cambiar el contraste. Seguramente, para encender la pantalla,
requerirás más potencia que la que tu puerto paralelo pueda ofrecerte, y será necesario que la tomemos de
algún otro lugar en tu ordenador. La mejor manera de hacer esto es usando un conexión estándar de +5v.
(los mismos empleados por las unidades de disco, los discos duros, etc...).

Cuando tengas conectada la pantalla LCD necesitas saber cómo funciona. PodÃ-amos haber dejado eso para
otros artÃ-culos, pero intentaré explicar algo de los interiores de la pantalla que te ayudará a programarla.

Nuestro fin último, es mostrar algo útil en la pantalla. Como referencia utilizaré un pequeño programa
llamado LCDInfo que soporta la mayorÃ-a de las capacidades de la HD44780 pero no las muestra
instantáneamente. Es una versión alpha y estoy trabajando aún en ella cuando me sobra tiempo.

1/5

Si nunca has programado en C, debes saber que serÃ-an convenientes algunos conocimientos previos puesto
que es necesario leer algo de C. Asumo que eres un principiante en C puesto que ese es mi nivel actual.

Cómo conectarla

Primero, vamos a echarle un vistazo a los diferentes pines
disponibles en el LCD y vamos a explicar qué es lo que
hace cada uno.

El pin 1 se conoce como VSS y es para ir a GND.
El pin 2 se conoce como CDD y es la fuente de corriente que
es de +5v.
El pin 3 se conoce como VLC y está conectado al
potenciómetro para decidir el contraste de la pantalla.
El pin 4 es el pin RS y dependiendo de este pin la pantalla se
dispone a recibir instrucciones o datos.
El pin 5 es el pin que controla R/W (lectura/escritura) cuando
la pantalla LCD está enviando o recibiendo.
El pin 6 es el pin de activación. Cuando funciona de baja a
alta intensidad y luego de nuevo a baja intensidad, la pantalla
LCD lee los pines 4.5 y 7−14.
Los pines 7−14 son la linea del bus de datos conocida como DB0−DB7, y es por donde se envian los bits de
datos al LCD y controla dónde y qué ha de ser escrito en la pantalla.
Los pines 15 y 16 sólo están presentes en las pantallas con retroiluminación y son simplemente +5V y
GND con una resistencia de 3.8 Ohm entre el pin 15 y +5V

Para saber donde se deberÃ-a conectar todo esto en el puerto de la impresora, puedes mirar el esquema de la
derecha donde he intentado que todo esté lo más claro posible. Haz click en el diagrama esquemático
para obtener una imagen mucho más grande.
Este esquema sólo se aplica si deseas cambiar el contraste de la pantalla. Simplemente conecté el pin 3 y
el pin 1 a GND y a mi me funcionó bastante bien. Si tienes en tu habitación una luz un tanto extraña,
quizás te convendrÃ-a añadir un potenciómetro también.

Cuando emplees fuente de alimentación del PC, por favor, házlo con sumo cuidado. Si usas la corriente del
cable equivocado, obtendrás +12V y eso "freirá" tu LCD. El cable que necesitas emplear es el rojo. El
amarillo es +12V y el negro es GND.
Si haces esto correctamente el LCD deberÃ-a tener la primera (y la tercera si existe) linea negra cuando
enciendas el PC.

Cómo funciona el LCD

Un LCD no hace nada a menos que se lo ordenes especÃ-ficamente. Simplemente espera a obtener una
activación válida (como cuando activamos un pin alto, esperamos unos instantes y lo volvemos a
desactivar). En ese momento la pantalla lee los datos o instrucciones que han de ser procesadas y vuelve a
esperar hasta tener nuevos datos para enviar o recibir.
En este artÃ-culo nunca recibiremos información de la LCD hasta que el pin R/W (L/E) se encuentre
siempre bajo, lo que quiere decir que está escribiendo.
El pin RS será bajo siempre, excepto cuando escribamos caracteres, puesto que todo se consideran

2/5

instrucciones
Esto hace que sea muy simple programar la pantalla.

Ahora que sabemos esto, comenzaremos encendiendo la pantalla y preparándola para recibir información.
Esto estará acabado cuando durante la secuencia de inicio donde le estamos diciendo a la pantalla que se
encienda, activa sus funciones para ser usada.
Si obtienes la electricidad del PC, este deberÃ-a estar encendido, de lo contrario es la primera cosa que se
deberÃ-a hacer.
El siguiente paso es el "ajuste de funciones", que depende mucho del tipo de pantalla que dispongas.
Para hacer más fácil la comprensión, explicaré exactamente que haremos cuando usemos la función
"ajuste de funciones".
DB2 es la fuente de caracteres y deberÃ-a ser más bajo que 5x7 puntos.
DB3 Son las lÃ-neas de la pantalla y deberÃ-an ser más altas ocupando dos lÃ-neas. ¿Qué pasa si
tienes 4 lÃ-neas en la pantalla? Nada, puesto que la primera y tercera lÃ-nea son las mismas en la memoria de
la pantalla.
DB4 Es lo largo de los datos y esto decide si tienes 4 o 8 DB, si conectas la pantalla de acuerdo con mis
esquemas, deberÃ-as obtener esta DB alta.
Entonces ajusta DB5 alto para decirle a la pantalla que esto es una instrucción de "ajuste de funciones", y
asegurémonos de que RS y R/W es bajo para activar una rejilla. Para los pequeños ajustes, consulta el
manual, puesto que asumo que sólo nos detenemos microsegundos cuando esperamos para que la pantalla
reaccione.

Y, ¿sobre el código?

AquÃ- veremos las partes del programa LCDInfo que es necesario para comprender como funciona la interfaz
de HD44780. Puedes descargar el programa LCDInfo al final del artÃ-culo o mirar directamente el código
en iolcd.c y lcdinfo.c haciendo click aquÃ-

Lo que necesitamos ahora son las instrucciones escritas en C y créanme cuando les digo que es fácil.
Iré paso por paso por el código, e incluso si eres un principiante en C, serás capaz de entenderlo.
Primero incluiremos algunas cabeceras y definiremos funciones (mira el código fuente para más
información). Ahora viene lo divertido.

#define D_REGISTER 0
#define I_REGISTER 2
#define WRITE_DATA 8
#define BASE 0x378

int main(void)
{
ioperm(BASE,3,1);
[CUT]
}

Esta es la primera instrucción de la función principal la cual nos da permisos para acceder al puerto
paralelo. BASE deberÃ-a ser 0x378 o algo asÃ- y eso significa que tendremos acceso a 0x378, 0x379 y 0x380
que es básicamente el puerto de la impresora.
El motivo por el que existen tres direcciones es porque el puerto está dividido entre datos, estado y control.
Para nosotros esto significa que debemos ajustar los pines de datos primero y después los pines de control,
puesto que no es posible realizar esto en un sólo comando.
Lo siguiente ha realizar es la función descrita a continuación.

void function_set(void)

3/5

{
outb(56, BASE);

Esto ajusta los pines DB a una malla de 5x7 puntos, con base a 2 lÃ-neas, etc...

outb(I_REGISTER + WRITE_DATA, BASE + 2);

Esto ajusta los pines RS y R/W para recibir instrucciones y escribir. He realizado varias variables globales de
I_REGISTER y WRITE_DATA que equivalen a 2 y 8.
Lo próximo es activar la subida y la bajada.

outb(ENABLE + I_REGISTER + WRITE_DATA, BASE + 2);
usleep(0);
outb(I_REGISTER + WRITE_DATA, BASE + 2);
}

Básicamente este código pone el activo en alto, espera y pone el activo en bajo. El comando para el
usleep(0); no es realmente el ideal pero aún no he finalizado con el código para la pantalla.
Necesitaremos algunos de tus mejores deseos cuando RS y R/W esté encendido en el código cuando he
dicho que deberÃ-a estar bajo en las instrucciones. Esto es debido a que los pines 1, 14 y 17 son de "hardware
invertido" significando que si el pin 14 está en "apagado" tan pronto como el puerto lo advierta, ¡el pin
estará en alto!.
Bien, dije que serÃ-a fácil. ¿Acaso no lo es?

Cómo obtener caracteres en la pantalla

Probablemente desearás utilizar la pantalla para algo práctico como... ¿mostrar texto?. Sin problemas.
El código es idéntico para imprimir un caracter y ajustar las funciones. Lo único que necesitamos es
cambiar alguna variable. No queremos estropear los ajustes de RS. La función print_character() se debe
parecer a esto:

void print_character(int character)
{
outb(D_REGISTER + WRITE_DATA, BASE + 2);
outb(character, BASE);
outb(ENABLE + D_REGISTER + WRITE_DATA, BASE + 2);
usleep(0);
outb(D_REGISTER + WRITE_DATA, BASE + 2);
}

Como puedes observar, he cambiado "I_REGISTER" a "D_REGISTER" y "56" a "character" pero ¿Qué
es lo que significa?. Si miras tus manuales de códigos de caracteres lo entenderás.
Lo único que necesitamos es alimentar la función con caracteres, (desde que empleamos C no necesitamos
hacerlo puesto que lo hacemos con un integrador), y entonces el caracter aparecerá en la pantalla.
¡¡¡Oh!!!

Con este código, tienes el esqueleto de un programa LCD, listo para modificar ajustándolo a tus
necesidades, mostrando la memoria libre, las conexiones HTTP activas o lo que desees. Algunos ejemplos
estan en LCDInfo Que es un programa que muestra alg
  • Links de descarga
http://lwp-l.com/pdf5493

Comentarios de: Comprendiendo las pantallas compatibles con LCD HD44780 (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