Tutorials - Elettronica

 
 

Caratteri CGRAM nei display LCD
 a matrice


Dot-matrix LCD.

Per prima cosa, rivediamo la struttura interna del controller che gestisce il modulo LCD:

 
 
 
Dallo schema a blocchi osserviamo che i circuiti integrati del genere HD44780 hanno tre differenti aree di memoria:
  • CGROM, ovvero generatore di caratteri in ROM (memoria a sola lettura, non cancellabile)
  • CGRAM, ovvero generatore di caratteri in RAM, memoria modificabile
  • DDRAM, che è l' area di memoria che corrisponde ai caratteri visualizzati sul display
Alcuni controller compatibili implementano una ulteriore zona di memoria:
  • SEGRAM, cioè un' area programmabile per visualizzare icone a segmenti
 
Tutti questi controller, comunque, gestiscono caratteri nel formato 5x8 o 5x11 punti (5 colonne x 8 linee o 11 linee), le cui matrici sono disponibili nel generatore di caratteri in ROM (CGROM). 
 
Il procedimento di presentazione di un carattere sul display è composta da alcune semplici azioni:
  1. Il controller, attraverso il bus dati (DB0-DB7) riceve dall' host un codice esadecimale che viene posto in un buffer di ingresso. Lo stato della linea RS stabilisce se si tratta di un comando o di un dato da visualizzare. 
  2. Se si tratta di un dato, il codice viene salvato nella DDRAM, della capacità tipica di 80 celle da 8 bit ciascuna. Tutte o parte di queste celle, a seconda delle dimensioni del pannello LCD, corrispondono ai caratteri visualizzati.
  3. Per la visualizzazione vera e propria, il controller invia i dati in DDRAM come indirizzi di un generatore di caratteri (CG), la cui uscita è composta da 40 bit.
     
  4. Questi bit sono trattati da un sistema di shift register parallelo-seriale, che, attraverso le opportune temporizzazioni, il controller utilizza per l'accensione di punti sul pannello LCD. I 40 bit di uscita dal CG vengono organizzati come matrice di 8 linee e 5 colonne. I bit a 1 corrispondono ad un punto visualizzato, i bit a zero sono punti vuoti.

Nell' esempio qui sotto, il generatore di caratteri utilizza i codici ASCII, per cui byte 41h in ingresso come dato, corrisponde alla visualizzazione della lettera A maiuscola.

Quindi, l' operazione di scrittura di un carattere consiste semplicemente nell' inviare un dato corrispondente al carattere desiderato nella DDRAM ed il controller si occupa autonomamente delle complesse operazioni di gestione del pannello LCD.  Volendo scrivere sul display la lettera 'A', basterà la sequenza di istruzioni:

movlw  0x41
call   senddatatolcd

dove senddatatolcd  è una subroutine che trasferisce il dato dall'accumulatore W alla DDRAM del controller.
Durante questa operazione le linee RS e RW dovranno assumere il giusto livello, comunicando al controller che si tratta di una scrittura dati:

 

Comando

Controllo

 

Dato

Funzione Tempo di
esecuzione
Write data to DDRAM RS RW   D7 D6 D5 D4 D3 D2 D1 D0

Invia un dato alla DDRAM per la visualizzazione

37-100us
1 0   dato alla DDRAM

Come accennato, la DDRAM ha una ampiezza di 80 bytes, a cui corrisponde un carattere nell' area visibile sul pannello LCD a seconda del numero di linee e caratteri per linea disponibili. 
Ad esempio, per un display da 4 linee di 20 caratteri ciascuna, tutti e 80 i bytes in memoria DDRAM saranno visibili. In un display da 1 riga per 8 caratteri, solamente 8 locazioni DDRAM saranno visualizzate.

 


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 05/12/12.