Hasta ahora para que el arduino me mostrase valores e información utilizaba el monitor que trae el IDE de arduino o el terminal linux, pero ahora siempre que puedo lo hago a través de un display LCD de 16x2 basado en el chip de Hitachi HD44780.

Para poder manejar estos display existe una librería llamada LiquidCrystal que tiene un conjunto de funciones que nos ayudan a programarlo. El problema de utilizar sólo esta librería es que nos ocupa 6 pines de la placa, por ese motivo yo utilizo un 74HC595 y la librería LiquidCrystal adaptada para funcionar de este modo mediante la librería SPI.

En esta primera parte explicaré por encima el display LCD y el integrado 74HC595.

El Display LCD

El display que utilizo es muy sencillo y barato (menos de 5$ USD). Como mencioné antes esta controlado por el chip HD44780 y puede trabajar con una entrada de datos en paralelo de 4 u 8 bits.

¿Que significa el 16x2? El primer número (16) indica el número de caracteres que tiene una fila y el segundo (2) el número de filas que tiene la pantalla. Por tanto un display 16x2 nos indica que tiene dieciséis caracteres por fila y que la pantalla tiene dos filas (32 caracteres en total distribuidos en dos filas).

En la siguiente imagen se pude ver a qué pertenece cada pin de la pantalla.

Tabla pines - funcion

Breve descripción de los pines:

  • Vss -> Polo negativo (0V)
  • Vdd -> Alimentación general (5V)
  • Vo -> Mediante un potenciometro y a través de este pin controlamos el contraste de la pantalla
  • RS -> Selecciona el registro de comandos o el de datos
  • R/W -> Escribe o lee el LCD
  • E -> Habilita/deshabilita el funcionamiento de la pantalla
  • D0 a D7 -> Entrada de datos. LSB es el bit menos significativo y MSB el bit más significativo.
  • A -> Ánodo de la retroiluminación
  • K -> Cátodo de la retroiluminación

Hay que tener en cuenta que los pines 15 y 16 no siempre  se encuentran en todos los modelos. Estos pines corresponden a la retroiluminación de la pantalla, el pin 15 es el ánodo (5V) y el pin 16 el cátodo (GND). Trabajando con 5V no es necesario conectar ninguna resistencia en estos pines.

La entrada de datos D7 es ligeramente diferente a las demás, esta entrada pude funcionar como un "busy flag" que no es más que un indicador de que el display esta ocupando realizando alguna operación y no permite la entrada de datos hasta que termine. 5V en este pin indica que esta ocupado.

Como dije el display puede trabajar en 4 u 8 bits, la librería LiquidCrystal utiliza 4 bits que son las entradas de datos de D4 a D7 del display.

Para más información sobre el funcionamiento del display lo mejor es echar un vistazo al datasheet del HD44780.

Circuito integrado 74HC595

El integrado 74HC595 es un registro de desplazamiento que nos va a permitir manejar el display LCD utilizando sólo tres pines de la placa arduino.

Como ya sabemos la transferencia de datos del display LCD se hace en paralelo, el arduino lo que hace mediante la librería SPI es enviar los bits desde el MSB al LSB en serie, el desplazamiento de registro los almacena y cuando tiene todos los bits los envía al display en paralelo.

A continuación pongo el diagrama lógico con los pines y explico qué es cada pin.

Diagrama logico 74hc959

  • A -> Esta es la entrada de datos, por aquí mandamos desde el arduino la información que queremos pasar al display. Esta comunicación es en serie.
  • Shift clock -> Este es el reloj para que la comunicación esté sincronizada.
  • Reset -> Reinicia el registro (pone a 0 todos los bits del registro).
  • Latch clock -> Este es el reloj que marca cuándo debemos enviar los datos en paralelo.
  • Output enable -> Habilita la salida en paralelo
  • Qa a Qh -> Salida de datos en paralelo
  • SQh -> Salida de datos en serie
  • VCC -> Alimentación (5V)
  • GND -> Polo negativo (0V)

Los 3 pines que conectamos al arduino son la entrada de datos serie, el shift clock y el latch clock. El pin de reset lo conectaremos a positivo para que el registro no reinicie y el Output enable a negativo para habilitar la salida en paralelo.

Para ver más información sobre el registro de desplazamiento podéis consultar el datasheet del 74HC959.

En la próxima entrada pondré un esquema de cómo se conecta todo además de algunos detalles adicionales que debemos tener en cuenta a la hora de conectar y un código de ejemplo para empezar a probar el display.