Le unità di visualizzazione sono i dispositivi di output più importanti nei progetti integrati e nei prodotti elettronici. L'LCD 16x2 è una delle unità di visualizzazione più utilizzate. LCD 16x2 significa che ci sono due righe in cui possono essere visualizzati 16 caratteri per riga e ogni carattere occupa uno spazio matrice 5X7 sull'LCD. In questo tutorial collegheremo il modulo LCD 16X2 al microcontrollore 8051 (AT89S52). L'interfacciamento dell'LCD con il microcontrollore 8051 potrebbe sembrare piuttosto complesso per i neofiti, ma dopo aver compreso il concetto sembrerebbe molto semplice e facile. Anche se potrebbe essere necessario del tempo perché è necessario comprendere e collegare 16 pin del display LCD al microcontrollore. Quindi prima capiamo i 16 pin del modulo LCD.
Possiamo dividerlo in cinque categorie, pin di alimentazione, pin di contrasto, pin di controllo, pin di dati e pin di retroilluminazione.
Categoria |
Pin NO. |
Nome pin |
Funzione |
Pin di alimentazione |
1 |
VSS |
Pin di terra, collegato a terra |
2 |
VDD o Vcc |
Pin di tensione + 5V |
|
Perno di contrasto |
3 |
V0 o VEE |
Regolazione del contrasto, collegata a Vcc tramite una resistenza variabile. |
Pin di controllo |
4 |
RS |
Registro Seleziona Pin, RS = 0 Modalità comando, RS = 1 Modalità dati |
5 |
RW |
Pin di lettura / scrittura, RW = 0 Modalità di scrittura, RW = 1 Modalità di lettura |
|
6 |
E |
Abilita, un impulso da alto a basso deve abilitare l'LCD |
|
Pin dati |
7-14 |
D0-D7 |
Pin dati, memorizza i dati da visualizzare sul display LCD o le istruzioni di comando |
Perni di retroilluminazione |
15 |
LED + o A |
Per alimentare la retroilluminazione + 5V |
16 |
LED o K |
Retroilluminazione a terra |
Tutti i pin sono chiaramente comprensibili dal loro nome e dalle loro funzioni, tranne i pin di controllo, quindi sono spiegati di seguito:
RS: RS è il pin di selezione del registro. Dobbiamo impostarlo a 1, se stiamo inviando alcuni dati da visualizzare sul display LCD. E lo imposteremo a 0 se inviamo alcune istruzioni di comando come cancella lo schermo (codice esadecimale 01).
RW: Questo è il pin di lettura / scrittura, lo imposteremo a 0, se scriveremo dei dati sull'LCD. E impostalo a 1, se stiamo leggendo dal modulo LCD. Generalmente è impostato a 0, perché non è necessario leggere i dati dal display LCD. Solo un'istruzione "Ottieni stato LCD", deve essere letta alcune volte.
E: Questo pin viene utilizzato per abilitare il modulo quando gli viene fornito un impulso da alto a basso. Dovrebbe essere fornito un impulso di 450 ns. La transizione da HIGH a LOW rende il modulo ABILITATO.
Ci sono alcune istruzioni di comando preimpostate nell'LCD, le abbiamo usate nel nostro programma sottostante per preparare l'LCD (nella funzione lcd_init ()). Di seguito vengono fornite alcune importanti istruzioni di comando:
Codice esadecimale |
Comando al registro istruzioni LCD |
0F |
LCD acceso, cursore acceso |
01 |
Schermo di visualizzazione chiaro |
02 |
Torna a casa |
04 |
Decrementa il cursore (sposta il cursore a sinistra) |
06 |
Cursore di incremento (sposta il cursore a destra) |
05 |
Sposta il display a destra |
07 |
Sposta il display a sinistra |
0E |
Display acceso, cursore lampeggiante |
80 |
Forza il cursore all'inizio della prima riga |
C0 |
Forza il cursore all'inizio della seconda riga |
38 |
2 linee e matrice 5 × 7 |
83 |
Posizione linea 1 cursore 3 |
3C |
Attiva la seconda riga |
08 |
Display OFF, cursore OFF |
C1 |
Salta alla seconda riga, posizione 1 |
OC |
Display ON, cursore OFF |
C1 |
Salta alla seconda riga, posizione 1 |
C2 |
Salta alla seconda riga, posizione 2 |
Schema del circuito e spiegazione
Lo schema del circuito per l' interfacciamento LCD con il microcontrollore 8051 è mostrato nella figura sopra. Se hai una conoscenza di base dell'8051, allora devi conoscere EA (PIN 31), XTAL1 e XTAL2, RST pin (PIN 9), Vcc e Ground Pin del microcontrollore 8051. Ho usato questi Pin nel circuito sopra. Se non ne hai la minima idea, ti consiglio di leggere questo articolo Interfacciamento LED con il microcontrollore 8051 prima di passare all'interfaccia LCD.
Quindi oltre a questi pin sopra abbiamo collegato i pin dati (D0-D7) dell'LCD al microcontrollore della porta 2 (P2_0 - P2_7). E i pin di controllo RS, RW ed E al pin 12,13,14 (pin 2,3,4 della porta 3) del microcontrollore rispettivamente.
Il PIN 2 (VDD) e il PIN 15 (alimentazione retroilluminazione) dell'LCD sono collegati alla tensione (5v) e il PIN 1 (VSS) e il PIN 16 (massa retroilluminazione) sono collegati a massa.
Il pin 3 (V0) è collegato alla tensione (Vcc) tramite una resistenza variabile di 10k per regolare il contrasto dell'LCD. La gamba centrale del resistore variabile è collegata al PIN 3 e le altre due gambe sono collegate all'alimentazione di tensione e alla terra.
Spiegazione del codice
Ho provato a spiegare il codice tramite commenti (nel codice stesso).
Come ho spiegato in precedenza sulla modalità di comando e la modalità dati, puoi vedere che durante l'invio del comando (funzione lcd_cmd) abbiamo impostato RS = 0, RW = 0 e un impulso da HIGH a LOW viene dato a E rendendolo 1, quindi 0 Anche quando si inviano dati (funzione lcd_data) a LCD abbiamo impostato RS = 1, RW = 0 e un impulso da HIGH a LOW viene dato a E rendendolo da 1 a 0. La funzione msdelay () è stata creata per creare un ritardo in millisecondi e chiamato frequentemente nel programma, viene chiamato in modo che il modulo LCD possa avere tempo sufficiente per eseguire le operazioni interne ei comandi.
È stato creato un ciclo while per stampare la stringa, che chiama ogni volta la funzione lcd_data per stampare un carattere fino all'ultimo carattere (terminatore nullo- '\ 0').
Abbiamo utilizzato la funzione lcd_init () per preparare il display LCD utilizzando le istruzioni di comando preimpostate (spiegate sopra).