Conectar Arduino a un display LCD HITACHI HD44780


arduino-lcd-hitachi-hd44780

¿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 16x02 (2 líneas de 16 caracteres), 20x02, 20x04 y 40x02.

Anuncio:

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 a bus I2C, como vimos la entrada conectar un LCD a Arduino por I2C.

Precio

Los LCD con controlador HD44770 son componentes baratos. Su precio varía en función del tamaño y el número de caracteres.

Podemos encontrar el tamaño 16x02 (LCD1602), muy habitual, por 1.1€, en vendedores internacionales de Ebay o AliExpress. El LCD de 20x4 (LCD2004) es, lógicamente, algo más caro. Podemos encontrarlo por 3.4€.

arduino-lcd-hitachi-hd44780-componente

Esquema montaje

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.

arduino-lcd-hitachi-hd44780-esquema

Mientras que la conexión desde el lado de Arduino quedaría así.

arduino-lcd-hitachi-hd44780-conexion

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. La librería LiquidCrystal varios ejemplos sobre su uso. Resulta aconsejable examinarlos, en general es sencilla de utilizar.

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 16x02.

/* Conexión
PIN2 - LCD4 (RS)
PIN3 - LCD5 (R/W)
PIN4 - LCD6 (E)

PIN8 - LCD11 (D4)
PIN9 - LCD12 (D5)
PIN10 - LCD13 (D6)
PIN11 - LCD14 (D7)
*/

#include <LiquidCrystal.h>			

LiquidCrystal 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)
*/	
#include <LiquidCrystal.h>

LiquidCrystal 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);
}

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección Tutoriales de Arduino
5 3 votes
Article Rating

Anuncio:

Previous Usar Arduino para reprogramar el bootloader de otro Arduino
Next Arreglar el aviso "Tarjeta SIM extraída" en Samsung Galaxy S4
1 Comment
oldest
newest
Inline Feedbacks
View all comments
luisllamas
4 years ago

Hola Jorge, te recomiendo consultar las entradas básicas sobre entradas digitales (https://www.luisllamas.es/entradas-digitales-en-arduino/) y salidas digitales (https://www.luisllamas.es/salidas-digitales-en-arduino/)