
¿Qué es un LCD HITACHI HD44780?
Las pantallas LCD (Liquid Cristal Display) son una de las formas más sencillas y económicas de dotar de un display a un autómata.
El Hitachi HD44780 es uno de los controladores de LCDs más ampliamente extendidos por su sencillez y bajo precio.
El HD44780 está diseñado para controlar LCDs monocromos de hasta 80 caracteres alfanuméricos y símbolos. También dispone de una pequeña memoria RAM para configurar nuestros propios caracteres o dibujos.
Las pantallas LCD con el controlador HD44770 se fabrican en distintos tamaños, siendo comunes 16×02 (2 líneas de 16 caracteres), 20×02, 20×04 y 40×02.
Las pantallas LCD disponen de retroiluminación trasera en azul o en verde. El contraste puede ser variado conectando un potenciómetro al LCD.
Conectar directamente un LCD a Arduino requiere una gran cantidad de pines. Suele ser aconsejable emplear un adaptador I2C.
Precio
Los LCD con controlador HD44770 son componentes barato. Su precio varía en función del tamaño y el número de caracteres.
Podemos encontrar el tamaño 16×02 (LCD1602), muy habitual, por 1.4€, en vendedores internacionales de Ebay o AliExpress. El LCD de 20×4 (LCD2004) es, lógicamente, algo más caro. Podemos encontrarlo por 3.4€.
Esquema eléctrico
Como hemos adelantado, conectar un Arduino a una pantalla LCD HD44770 sin usar un adaptador I2C requiere una gran cantidad de cables. El esquema de conexión visto desde el LCD a los pines de Arduino es el siguiente.
Mientras que la conexión desde el lado de Arduino quedaría así.
Si quisiéramos controlar el contraste de la pantalla, añadiríamos un potenciómetro para regular la tensión en V0.
Ejemplos de código
El IDE de Arduino incorpora de serie la librería LiquidCrystal, para controlar pantallas LCD HD44770 de forma sencilla.
Por ejemplo, el siguiente sketch muestra el uso de las funciones de la librería para mostrar los textos “Linea 1” y “Linea 2” en una pantalla de 16×02.
/* Conexión PIN2 - LCD4 (RS) PIN3 - LCD5 (R/W) PIN4 - LCD6 (E) PIN8 - LCD11 (D4) PIN9 - LCD12 (D5) PIN10 - LCD13 (D6) PIN11 - LCD14 (D7) */ #includeLiquidCrystal lcd(2, 3, 4, 8, 9, 10, 11); //(RS,RW, E, D4,D5, D6, D7) void setup() { lcd.begin(16, 2); // Inicia un LCD 16x02 (columnas,fila) lcd.setCursor(0, 0); // Pone el cursor en las coordenadas (0,0) lcd.print("Linea 1"); // Escribe el LCD lcd.setCursor(0, 1); // Ponemos el cursor en la segunda Fila lcd.print("Linea 2"); // Escribe el LCD } void loop() { //Apagar cursor lcd.noCursor(); delay(500); //Apagar encender cursor lcd.cursor(); delay(500); }
El siguiente sketch usa las funciones scroll para desplazar un texto horizontalmente en la pantalla.
/* Conexión PIN2 - LCD4 (RS) PIN3 - LCD5 (R/W) PIN4 - LCD6 (E) PIN8 - LCD11 (D4) PIN9 - LCD12 (D5) PIN10 - LCD13 (D6) PIN11 - LCD14 (D7) */ #includeLiquidCrystal lcd(2, 3, 4, 8, 9, 10, 11); //(RS,RW, E, D4,D5, D6, D7) void setup() { lcd.begin(16, 2); lcd.print("¡Hola mundo!"); delay(1000); } void loop() { //mover 13 posiciones (longitud del texto) a la izquierda //para sacar el texto de la pantalla por la izquierda for (int positionCounter = 0; positionCounter < 13; positionCounter++) { lcd.scrollDisplayLeft(); delay(150); } //mover 29 posiciones (longitud del texto + ancho del display) a la derecha //para sacar el texto de la pantalla por la derecha for (int positionCounter = 0; positionCounter < 29; positionCounter++) { lcd.scrollDisplayRight(); delay(150); } //mover 16 posiciones (29-13) a la izquierda //para devolver el texto a la posición inicial for (int positionCounter = 0; positionCounter < 16; positionCounter++) { lcd.scrollDisplayLeft(); delay(150); } delay(1000); }
La librería LiquidCrystal contiene más ejemplos sobre su uso. Resulta aconsejable examinar su código, en general son sencillos de entender.
Si te ha gustado esta entrada y quieres leer más puedes consultar el resto de tutoriales de Arduino