Pilotare un LCD con un microcontrollore PIC

In questo breve articolo illustreremo come interfacciare un display LCD a caratteri 2x16 Hitachi compatibile (l’interfaccia ideata da Hitachi è uno standard di fatto, tanto da essere adottata anche dalle altre case costruttrici) con un controllore PIC Microchip. Del tutto simile è l’interfacciamento di display a caratteri di altre dimensioni (1x16, 2x20, 4x16, 4x20, 2x40 e 4x40) e solo un po’ più complesso quello di LCD grafici (GLCD- Grafic Liquid Crystal Display)  o di LCD touch screen.

Interfacciamento tra display LCD 2x16 ed un Controllore PIC Microchip

I  dati (caratteri ASCII) e i  comandi del display sono codici ad 8 bit; nonostante tutto gli LCD che integrano  il controllore HD44780 o compatibile a bordo possono essere interfacciati sia con 8 linee dati (8 Bit-Mode) che con 4 linee dati (4-Bit Mode). La seconda modalità consente di lasciare liberi il maggior numero di pin possibili per il controllore o processore esterno che pilota il display. Ciò è reso possibile da un’operazione di multiplexing: il byte è scomposto in due gruppi di 4 bit ciascuno dei quali è trasmesso sul bus in istanti successivi di tempo (prima i quattro bit più significativi, quindi i quattro meno significativi). Alle linee del bus dati vanno aggiunte, in entrambe le modalità, tre line di controllo e l’alimentazione. Lo schema elettrico del circuito (figura 1) è legato alle specifiche funzioni delle linee dati e di controllo; il firmware è ovviamente stilato di conseguenza.

Figura 1: schema Elettrico di interfacciamento a 4 bit PIC-LCD 2x16 Hitachi HD44780.

Figura 1: schema Elettrico di interfacciamento a 4 bit PIC-LCD 2x16 Hitachi HD44780

L’interfacciamento elettrico a 4 bit di figura è valido anche per display 1x16, 2x20, 4x20, 4x16 e 2x40 integranti lo stesso controller HD44780 o equivalente compatibile. L’interfacciamento a quattro bit necessita di 6 linee del controllore: quattro per la trasmissione dati/istruzioni e due di controllo; le altre linee normalmente impiegate nell’interfacciamento ad 8 bit sono collegate a massa (nell’interfacciamento ad 8-bit sono richiesti 11 linee: 3 di controllo ed 8 per il bus dati).

Il firmware

La stesura del firmware per pilotare un LCD si avvale, generalmente, di driver integrati nel compilatore o che l’utente programmatore inserisce esplicitamente nel file di progetto (come nel caso del compilatore CCS istallato ed integrato come plug-in nell’ambiente Mplab di Microchip). Inoltre il compilatore mette, generalmente, a disposizione una serie di funzioni di libreria per la gestione dello stesso LCD. Il programmatore  deve pertanto preoccuparsi semplicemente di richiamare tali funzioni che permettono, con una sola istruzione di alto livello, di scrivere un testo a partire da una specifica posizione sul display, di eseguire uno shifting del testo stesso, di cancellare determinati caratteri, di pulire lo schermo e così via. Dopo aver realizzato  il circuito, eseguita la stesura del firmware, compilato il sorgente e programmato il PIC (al seguente link un approfondimento del PIC16F) con il file .HEX ottenuto è possibile verificare la rispondenza del comportamento dell’LCD a quanto atteso. Se non è visualizzato nulla sul display, ma siamo certi che il circuito sia elettricamente corretto e che il PIC sia ben programmato è opportuno controllare la regolazione del contrasto agendo sull’apposito trimmer di regolazione (figura 1-pin 3-LCD). Riportiamo un esempio di firmware scritto in MikroC (figura 2) che mostra l’effetto di alcune delle funzioni integrate nel compilatore per il controllo degli LCD (schema elettrico: figura 1).

Figura 2: esempio di Firmware MikroC per il controllo di un LCD 2x16.

Figura 2: esempio di Firmware MikroC per il controllo di un LCD 2x16

In tabella 1 è riportata la serie di funzioni di libreria per il controllo, in MikroC, di LCD mediante interfaccia a 4 bit.

Tabella 1: il MikroC ed i comandi di libreria per la gestione dell’LCD (interfaccia a 4 bit).

Tabella 1: il MikroC ed i comandi di libreria per la gestione dell’LCD (interfaccia a 4 bit)

I dati in tabella sono presi dall’Help del compilatore MikroC. Ricordiamo che la prima istruzione da inviare ad un LCD è sempre quella di inizializzazione: essa permette di configurare l’LCD nella modalità di interfacciamento a 4 bit oppure ad 8 bit. Quando l’LCD è inizializzato,  il controller HD44780 pulisce automaticamente  il display; indipendentemente da ciò è opportuno eseguire un’istruzione di Clear subito dopo l’inizializzazione, operazione a seguito della quale il cursore si posiziona, automaticamente, nella prima posizione della prima riga.

 LCD_Test_FW40
Esempo di firmware MikroC per il controllo di LCD 2x16
Dimostrazione di funzionamento di alcune funzioni di libreria
—————————————————————————-
Configurazione hardware:
Controller: PIC16F877
Board: EastPIC5
Oscillatore: HS, 08.0000 MHz
Display: LCD2x16 (HD44780)
Modalità di interfacciamento: 4bit
SW: MikroC 6.0
Bus dati: Diaplsy (D7..D4) <-> PIC (RB7..RB4)
Bus controllo: RS Display <-> RB2 PIC; E Display <-> RB3 PIC
—————————————————————————-
char *text = “Firmware N.40”;
void main() {
       LCD_Init(&PORTB); //Inizializzazione
       Delay_ms(6000);
       LCD_Cmd(LCD_CLEAR); //Clear display
       Delay_ms(6000);
       LCD_Cmd(LCD_CURSOR_OFF); //Turn cursor off
       Delay_ms(6000);
       LCD_Out(1,2,text); //visualizza testo riga 1 colonna 2
       Delay_ms(6000);
       LCD_Out(2,1,”ES.LCD MikroC FW”); //Visualizza str. r2, c1
       Delay_ms(6000);
       LCD_Out(1,1,”Tips’n tricks”); //Visualizza str. r1, c1
       Delay_ms(6000);
       LCD_Out(2,1,” by A.Giannico “”); //Visualizza str. r2, c1
}
End
Listato 1

2 Commenti

  1. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 20 marzo 2017
  2. rodolfok 21 marzo 2017

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *