Winstar offre un’ampia gamma di moduli LCD carattere standard (Character LCD Module) per applicazioni industriali ed embedded. Le serie disponibili includono WH0802, WH1202, WH1601, WH1602, WH1604, WH2002, WH2004, WH2402 e WH4002. Grazie alla possibilità di utilizzare un numero minimo di pin di controllo, questi moduli semplificano l’integrazione del display e la selezione del microcontrollore (MCU) più adatto.
I comuni moduli LCD carattere presenti sul mercato richiedono spesso l’aggiunta di una scheda di conversione per supportare l’interfaccia I2C, come mostrato nella Figura 1. Questa soluzione comporta un aumento dello spessore del modulo LCM, ulteriori fasi nel processo produttivo e una possibile riduzione della resa di produzione.
Figura 1: Modulo LCD carattere comunemente utilizzato sul mercato con scheda di conversione aggiuntiva per il supporto dell’interfaccia I2C.
Figura 2: Il modulo LCD carattere WH1602 di Winstar supporta le interfacce I2C e SPI senza utilizzare una scheda di conversione aggiuntiva.
Senza aggiungere una scheda di conversione, è sufficiente collegare la scheda di sviluppo Arduino Uno per controllare direttamente i seguenti moduli LCD carattere Winstar tramite diverse interfacce di comunicazione.
- WINSTAR WH1602 LCM: 16 caratteri × 2 righe
- WINSTAR WH2002 LCM: 20 caratteri × 2 righe
- WINSTAR WH2004 LCM: 20 caratteri × 4 righe
Queste tre serie LCM integrano il controller LCD RW1063 e supportano sia l’interfaccia seriale (I2C e SPI) sia l’interfaccia parallela (6800).
Nota: per maggiori informazioni sulle interfacce dei display, consultare "Guida alle interfacce dei display".
Definizione dei pin dell'LCM
| N. pin |
Simbolo |
Descrizione |
| No.1 |
Vss |
Massa |
| No.2 |
Vdd |
Alimentazione per la logica |
| No.3 |
V0 |
Regolazione del contrasto |
| No.4 |
RS |
Selezione comando/dati |
| No.5 |
RW |
Segnale di selezione lettura/scrittura solo per interfaccia 6800 a 8/4 bit |
| No.6 |
E |
Segnale Enable solo per interfaccia 6800 a 8/4 bit |
| No.7 |
DB0/SA0 |
Linea dati bus 0 solo per interfaccia 6800 a 8 bit
Linea di impostazione indirizzo SA0 per interfaccia I2C |
| No.8 |
DB1/SA1 |
Linea dati bus 1 solo per interfaccia 6800 a 8 bit
Linea di impostazione indirizzo SA1 per interfaccia I2C |
| No.9 |
DB2 |
Linea dati bus 2 solo per interfaccia 6800 a 8 bit |
| No.10 |
DB3 |
Linea dati bus 3 solo per interfaccia 6800 a 8 bit |
| No.11 |
DB4 |
Linea dati bus 4 solo per interfaccia 6800 a 8/4 bit |
| No.12 |
DB5/CSB/CSB |
Linea dati bus 5 solo per interfaccia 6800 a 8/4 bit
Linea di selezione CSB Enable per interfaccia I2C e SPI |
| No.13 |
DB6/SDA/SCLK |
Linea dati bus 6 solo per interfaccia 6800 a 8/4 bit
Linea dati SDA per interfaccia I2C
Segnale di clock SCLK per interfaccia SPI |
| No.14 |
DB7/SCL/SID |
Linea dati bus 7 solo per interfaccia 6800 a 8/4 bit
Linea clock SCL per interfaccia I2C
Linea dati SID per interfaccia SPI |
| No.15 |
A+ |
Alimentazione per retroilluminazione (B/L) + |
| No.16 |
K- |
Alimentazione per retroilluminazione (B/L) - |
Tabella 1:Definizione dei pin LCM
Per il pin V0 indicato nella tabella precedente, viene utilizzato un potenziometro da 20 kΩ per regolare il contrasto dei caratteri. Durante il test, se il testo non è visibile oppure viene visualizzata continuamente l'immagine di sfondo, regolare il contrasto tramite il potenziometro.
Il metodo di collegamento del potenziometro V0 è illustrato nella Figura 3:
Figura 3:Metodo di collegamento del potenziometro V0
Come collegare l'LCM alla scheda di sviluppo Arduino Uno
La Figura 4 mostra i metodi di collegamento delle quattro interfacce di comunicazione LCM (I2C, SPI, 6800 a 8 bit/4 bit) con Arduino Uno. È possibile notare che le interfacce I2C e SPI richiedono solo un numero ridotto di pin GPIO per controllare i moduli LCD carattere.
Per l'interfaccia I2C, poiché Arduino Uno dispone di resistenze di pull-up interne sui pin I2C, non è necessario collegare ulteriori resistenze di pull-up ai pin SDA e SCL. Se nel programma la resistenza di pull-up interna viene disabilitata, è necessario collegare una resistenza di pull-up esterna.
(a) Collegamento interfaccia I2C

(b) Collegamento interfaccia SPI

(c) Collegamento interfaccia 6800-4 bit

(d) Collegamento interfaccia 6800-8 bit

Figura 4: Metodi di collegamento delle quattro interfacce di comunicazione LCM con Arduino Uno.
Comandi LCM
Non tutte le interfacce di comunicazione supportano l'intero set di comandi dell'LCM. Nel caso dell'interfaccia SPI, non sono presenti la linea di controllo RW e i pin MISO, pertanto il comando di lettura non è supportato. Durante la scrittura, la linea di controllo RS determina se i dati inviati sono dati di comando oppure dati di visualizzazione.
Anche nell'interfaccia I2C non è presente la linea di controllo RW, pertanto non sono supportati i comandi di lettura. Prima di inviare dati di comando o dati di visualizzazione, è necessario trasmettere il codice di controllo comando (A0=0) oppure il codice di controllo dati (A0=1) per definire se il byte successivo inviato corrisponde a un comando o a un dato di visualizzazione.
Temporizzazione delle interfacce SPI e I2C
Le Figure 5 e 6 mostrano i diagrammi temporali relativi al controllo dell'LCM tramite interfaccia SPI. È possibile notare che l'SPI utilizzata dall'LCM non corrisponde alla classica interfaccia SPI normalmente disponibile nei microcontrollori (MCU). È necessario infatti un ulteriore segnale RS per determinare se il byte attualmente trasmesso rappresenta un comando oppure un dato. I dati dei bit (BIT7~BIT0) sulla linea dati (SID) cambiano quando la linea di clock (SCLK) si trova a livello Low. I dati dei bit (BIT7~BIT0) vengono acquisiti quando la linea di clock (SCLK) si trova a livello High.

Figura 5:Temporizzazione della scrittura comando SPI

Figura 6:Temporizzazione della scrittura dati SPI
Le Figure 7 e 8 mostrano i diagrammi temporali relativi al controllo dell'LCM tramite interfaccia I2C. Ad eccezione del segnale Chip Select Bar (CSB), il controllo tramite interfaccia I2C prevede l'invio di tre byte ogni volta che viene scritto un comando oppure un dato di visualizzazione. Tra questi, il bit A0 del secondo byte determina se il terzo byte corrisponde a un comando oppure a un dato di visualizzazione.

Figura 7:Temporizzazione della scrittura comandi I2C

Figura 8:Temporizzazione della scrittura dati I2C
Codice
L'LCM può essere compilato e utilizzato direttamente modificando le impostazioni del programma.
Step1: impostare il numero massimo di caratteri visualizzabili su una singola riga dell'LCM.
Ad esempio, la seguente impostazione configura una riga con un massimo di 16 caratteri.

Step2: impostare il numero massimo di righe dell'LCM.
Ad esempio, la seguente impostazione configura l'LCM con 2 righe.

Step3: impostare l'interfaccia dell'LCM.
Ad esempio, la seguente impostazione seleziona l'interfaccia I2C.

Step4: compilare il programma e caricarlo sulla scheda di sviluppo Arduino Uno.
La Figura 9 mostra un esempio delle schermate visualizzate da tre LCM.
Quando il contrasto del display risulta troppo chiaro o troppo scuro, è possibile regolare il potenziometro collegato al pin V0 per ottenere il livello di contrasto appropriato, come mostrato nella Figura 10.
(a) Contrasto chiaro
Sono visibili solo caratteri poco definiti. |
(b) Contrasto appropriato |
(c) Contrasto scuro
Ogni carattere presenta un'ombra evidente. |
 |
 |
 |
 |
 |
 |
 |
 |
 |
| Figura 9:Esempio delle schermate visualizzate da tre LCM |

Figura 10:Regolazione del pin V0
Per ricevere il codice demo completo, contattaci.