ArduinoElettronica digitale

LCD liquidcrystal con Arduino

Gestire un display LCD tramite un Arduino

L’utilizzo di un display LCD con Arduino è molto comune nei progetti di elettronica, in quanto permette di visualizzare informazioni in tempo reale senza la necessità di un computer. In questo articolo vedremo come utilizzare un display LCD 16×2 (oppure 20×4) con il controller Hitachi HD44780, sfruttando la libreria LiquidCrystal e utilizzando solo 6 pin digitali di Arduino.

I display LCD basati sul controller HD44780 sono composto da:

    • Una memoria DDRAM (Display Data RAM) dove vengono memorizzati i caratteri da visualizzare.
    • Una memoria CGROM (Character Generator ROM) che contiene i caratteri predefiniti.
    • Una memoria CGRAM (Character Generator RAM) per definire caratteri personalizzati.
    • Un cursore che può essere spostato per scrivere in posizioni specifiche.

Il display LCD può operare in due modalità di comunicazione:

    • 8-bit: invia dati e comandi con 8 linee dati (D0-D7).
    • 4-bit: invia dati in due blocchi da 4 bit, riducendo il numero di pin utilizzati.

La modalità 4-bit è la più comune, in quanto consente di risparmiare pin senza perdere funzionalità. Il controller HD44780 inoltre utilizza due registri principali per l’interazione con Arduino:

    • Registro Comandi (Instruction Register – IR): accetta comandi per configurare il display (es. pulire lo schermo, muovere il cursore).
    • Registro Dati (Data Register – DR): riceve i caratteri da visualizzare sul display.

I dati vengono inviati sui pin dati (D0-D7) in modalità 8-bit o solo su D4-D7 in modalità 4-bit. Per comunicare con il display, Arduino utilizza i seguenti segnali di controllo:

Pin LCD Funzione Descrizione
RS (Register Select) Seleziona il registro 0 = comando, 1 = dati
RW (Read/Write) Modalità di lettura/scrittura 0 = scrittura, 1 = lettura (di solito connesso a GND)
E (Enable) Attiva il display Un impulso da LOW a HIGH indica un’operazione

Serviranno inoltre una resistenza 1/4W da 220Ω per stabilizzare la retroilluminazione e un potenziometro (o trimmer) da 10kΩ per regolare il contrasto. Nella seguente tabella vengono riportate le connessioni necessarie.

Pin LCD Collegamento
VSS GND
VDD +5Vdc
V0 cursore potenziometro per regolazione contrasto
RS pin 7 Arduino
RW GND (scrittura permanente)
E pin 6 Arduino
D4 pin 5 Arduino
D5 pin 4 Arduino
D6 pin 3 Arduino
D7 pin 2 Arduino
A +5Vdc tramite resistenza 220Ω 
K GND

 

Per gestire il display LCD basato sul controller Hitachi HD44780 (o compatibili), è necessario utilizzare la libreria LiquidCrystal.h, una delle librerie standard di Arduino. Questa libreria consente di controllare il display in modalità 4-bit o 8-bit e offre funzioni per:

    • Scrivere testo
    • Muovere il cursore
    • Creare caratteri personalizzati
    • Gestire la retroilluminazione

Passaggi per configurare il display:

    • Inclusione della libreria:
      Includere la libreria con #include <LiquidCrystal.h>.
    • Definizione dei pin digitali:
      Collegare i pin RS, E, D4, D5, D6 e D7 ai pin di Arduino.
    • Inizializzazione del display:
      Utilizzare lcd.begin(16, 2) per impostare un display da 16 colonne e 2 righe.
    • Scrittura di testo:
      Impiegare lcd.print(“Hello, Arduino!”) per visualizzare un messaggio sulla prima riga.
    • Cambio di riga:
      Usare lcd.setCursor(0, 1) per spostare il cursore sulla seconda riga.

Per progetti più complessi, si può valutare l’uso di un modulo I2C, che riduce il numero di connessioni necessarie e facilita la gestione del display.

ESEMPIO 1:

Cablaggio e semplice attivazione di un LCD con regolazione contrasto. Backlight (retroilluminazione sempre attiva).

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // impostazione lcd

void setup() {
  lcd.begin(16, 2);
  lcd.print("MST-TUTORIAL");   
}

void loop() {
 // ........
}

ESEMPIO 2:

Cablaggio di un LCD con regolazione contrasto e controllo attivazione della backlight tramite un transistor BJT NPN pilotato dal pin digitale 8.

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // impostazione lcd
const int backlight = 8; // pin di gestione retroilluminazione

void setup() {
  pinMode(backlight,OUTPUT);
  lcd.begin(16, 2);
  
  lcd.print("MST-TUTORIAL");   
}

void loop() {
  digitalWrite(backlight,HIGH); // backlight ON
  delay(1000);
  
  digitalWrite(backlight,LOW);  // backlight OFF
  delay(1000);
}

MST-Admin

Appassionato di elettronica, elettrotecnica generale e programmazione. Fondatore del progetto MST-tutorial, desideroso di condividere con voi l'entusiasmo per l'innovazione tecnologica e la sperimentazione di novità tecniche in questi campi.

Articoli Correlati

Pulsante per tornare all'inizio