Tutorials - Elettronica

 
 

2.4" LCD 6 digit


Sono facilmente reperibili diversi tipi di moduli LCD con un numero variabile di cifre. Vediamone uno con controller HT1621.

Si tratta di un modello venduto anche da dx.com e definito SKU: 435837, indicazione sul c.s. 688750

Il modulo LCD può presentare 6 cifre a 7 segmenti, più il simbolo della batteria con tre segmenti addizionali (questo simbolo è sempre visibile, mentre i tre segmenti sono programmabili).
Inoltre, si possono accendere 3 punti decimali come visibile nella foto qui sopra.
La superficie in vetro del modulo è circa 23x58mm; i 2.4" dichiarati dal venditore si riferiscono alla lunghezza complessiva dell'LCD, compresa la sporgenza laterale dalla retro illuminazione.
Con una alimentazione di 5V e a temperatura ambiente le cifre sono chiare e ben contrastate.

Un connettore a 6 pin consente di interfacciare il modulo con un microcontroller.
Quattro fori agli angoli dello stampato facilitano il fissaggio del modulo su un pannello.

Sono disponibili tre versioni, con retro illuminazione di diverso colore: blu, verde e bianco. Una backlight , anche minima può essere necessaria per la corretta visualizzazione: le cifre sono visibili senza, ma con un angolo di visualizzazione molto stretto.
Il consumo a display spento (default all'accensione) è inferiore agli 11uA, mentre in modo operativo, è di minore di 190uA.
La retro illuminazione, nei campioni acquistati, è sempre accesa, essendo collegata tra Vdd e Vss. Però, essa è commutabile sul pin LED+ con un ponticello sul lato posteriore dello stampato.

Aprendo il ponticello e chiudendo l'altro, si collega un capo della retro illuminazione al pin LED+. Quindi, la luce si accende portando il pin a livello alto.
Questa modifica può essere necessaria in applicazioni a basso consumo in quanto, a differenza di quello che indicano le specifiche del venditore 

0.4mA senza retroilluminazione, e 4 mA con retroilluminazione

la corrente di retro illuminazione (nel modello con luce bianca) è ben 20mA.
Questo valore, però, rientra nelle possibilità di gestione della maggior parte dei microcontroller, quindi il pin LED+ può essere comandato direttamente da un I/O digitale senza interporre buffer.
Il valore della corrente può essere anche ridotto, sostituendo la resistenza serie R2 da 100ohm saldata sullo stampato o aggiungendone una esterna.
Con 470ohm in serie, a 5V di alimentazione e a temperatura ambiente, la retro illuminazione è ancora adeguata e la corrente scende a 4mA. Con 220ohm la corrente è 10mA, ma anche 5mA possono essere adeguati. La scelta dipenderà dall'applicazione.

Il controller a bordo è un HT1621, montato direttamente sullo stampato e coperto dalla classica goccia nera. La scheda non rende accessibili:

  • i pin BZ/BZ per il comando del buzzer piezo gestito da HT1621 (cosa che potrebbe essere utile in molte applicazioni).

  • il pin IRQ, per cui le funzioni di WDT e Timer non hanno effetto esterno

  • i pin dell'oscillatore, che, però, è selezionato al power on in modo RC interno

La struttura del display richiede BIAS 1/3 e 4 COM.

I segmenti sono mappati in memoria nel controller come segue:



Sono disponibili 12 indirizzi (da 0 a 11). 
Ogni indirizzo contiene 4 bit, corrispondenti ai 4 COM, quindi occorre una coppia di indirizzi per ogni cifra a 7 segmenti visualizzabile sul pannello.

Indirizzo 0-1 2-3 4-5 6-7 8-9 10-11
Digit 0 1 2 3 4 5

La posizione fisica corrispondente è questa:

 

Dalla tabella qui sopra si rileva che la corrispondenza dei bit/segmenti, raccolti in un byte, è questa:

; Sequenza:    xcbadegf
_sa = 0x10   ; 00010000  segmento a
_sb = 0x20   ; 00100000  segmento b
_sc = 0x40   ; 01000000  segmento c
_sd = 8      ; 00001000  segmento d
_se = 4      ; 00000100  segmento e
_sg = 2      ; 00000010  segmento g
_sf = 1      ; 00000001  segmento f
_dp = 0x80   ; 10000000  segmento dp o bat

7

b6

b5

b4

b3

b2

b1

b0

x

seg c

seg b

seg a

seg d

seg e

seg g

seg f

Dal punto di vista del programma, è possibile scrivere una coppia indirizzo/dato di 4 bit, con L'ID 101:

Occorre inviare 6 bit di indirizzo anche se quelli relativi al modulo stanno in 4 bit.

Si potranno scrivere anche un gruppo indirizzo/2 dati da 4 bit (ovvero un intero carattere), sia un numero qualsiasi di dati da 4bit ad indirizzi successivi auto incrementanti.

L'indirizzo viene incrementato per ogni 4 bit di dati, a partire dal primo valore inviato.

La comunicazione inizia abbassando la linea CS e si chiude quando questa viene riportata a livello alto.

Dato che l'interfaccia del modulo è composta da tre segnali:

  • CS

  • WR

  • DATA

e non comprende RD,  non è possibile la lettura. Quindi tutti i modi di Read e RMW, previsti da HT1621, non sono applicabili.

Da notare che la linea DATA, per HT1621, è bidirezionale, il che richiede che dal lato host passi in modo input quando HT1621 trasmette dati. Però, nel caso di questo modulo, dato che la lettura non è possibile, DATA sarà impostata solo come uscita sul lato del microcontroller a cui il modulo è collegato.

Sul connettore a 6 pin, oltre a questi segnali, sono presenti anche l'alimentazione e il LED+ di cui abbiamo parlato prima. Sulla serigrafia, sia di fronte che sul retro del circuito stampato, sono riportate le indicazioni delle funzione di ogni pin.


SPI?

Il venditore dichiara che il modulo dispone di una interfaccia SPI.
In effetti, osservando i diagrammi forniti dal foglio dati di HT1621, si tratta di una comunicazione seriale sincrona.

Il pin CS ha funzione analoga al SS/CS di SPI: quando si comunica con HT1621, deve essere a livello basso. Se la linea è a livello alto, il chip non accetta alcun dato.

Per la trasmissione di dati, si imposta il pin WR a livello basso, quindi si imposta il pin DATA col valore voluto e si riporta il pin WR a livello alto. La transizione consente al chip di acquisire il dato. In questo caso WR ha funzione analoga a CLK della comunicazione SPI

La somiglianza, però, si ferma qui, perchè, in pratica, esistono alcune grosse differenze:

  • Una interfaccia SPI standard ha due linee per i dati, ingresso e uscita (MOSI/MISO o SDO/SDI), mentre HT1621 dispone di una sola linea dati bidirezionale (DATA). 
    La cosa potrebbe essere corretta unendo SDO/SDI con DATA, ma interponendo un diodo Schottky  oppure una resistenza tra la linea DATA e SDO, per isolare la condizione a livello alto.

  • In SPI la linea CLK è unica, ma per HT1621 esistono DUE linee di clock: WR quando si scrive e RD quando si legge



    Nel caso del modulo trattato, dato che RD non è accessibile, si può utilizzare CLK di SPI collegato a  WR del modulo, mentre  RD è ignorato (collegato a livello alto)

Il problema principale è che la lunghezza dei dati da trasmettere è variabile a seconda della situazione:

  • un comando singolo richiede l'emissione di un ID a 3 bit, seguito da comando a 8 bit e da uno 0 finale, per un totale di 12 bit

  • una serie di comandi inviati in successione richiede l'emissione di un ID a 3 bit, seguito dai comandi a 9 bit, per un totale di 3+(n*9) bit

  • un indirizzo più un dato richiede l'emissione di un ID a 3 bit, seguito dall'indirizzo a 6 bit e dal dato a 4 bit, per un totale di 13 bit

  • se si invia un indirizzo e una sequenza di dati, si richiede l'emissione di un ID a 3 bit, seguito dall'indirizzo a 6 bit e da n dati a 4 bit, per un totale di 3 + (4*n) bit

Il modulo MSSP di un PIC a 8 bit è previsto per inviare 1 byte=8 bit. Si possono concatenare più emissioni, ma si tratterebbe comunque di moduli da 8 bit, il che non soddisfa le specifiche di HT1621.
Occorre una periferica di trasmissione sincrona che possa variare il numero di bit emessi oppure la scrittura di un driver ad hoc che non utilizzi MSSP.

In effetti, a parte la comodità di uso del modulo MSSP, HT1621 è un dispositivo abbastanza lento ed è comandabile senza problemi manipolando i bit di controllo.
Il foglio dati riporta la durata MINIMA degli impulsi di clock, che dipende dalla lettura o scrittura e dalla tensione di alimentazione.

Nel modo Write, con Vdd=5V, l'impulso del clock deve essere al minimo 1.67us e questo tempo si raddoppia con Vdd=3V.
Ovviamente, trattandosi di una trasmissione sincrona, va bene qualsiasi tempo maggiore di questi limiti, sui quali probabilmente è meglio aggiungere un qualche margine, dato che anche la temperatura e le impedenze dei collegamenti microcontroller-modulo avranno influenza.

Il foglio dati specifica che la frequenza del clock in scrittura deve essere al MASSIMO quella indicata:

Anche qui la dipendenza dalla tensione di alimentazione consiglia di curare il timing della comunicazione.

In effetti, il venditore specifica che la Vdd debba essere compresa tra 4.7 e 5.2V, in relazione alla retro illuminazione (sopratutto quella di colore blu) ed alla resistenza di polarizzazione della Vlcd che è fissa (R1=20k).


I comandi.

La tabella riporta i comandi ammessi da HT1621 ed evidenziati quelli applicabili al modulo.

Nome ID Codifica D/C Funzione Def.
READ 110 A5A4A3A2A1A0D0D1D2D3 D Read data from RAM  
WRITE 101 A5A4A3A2A1A0D0D1D2D3 D Write data to RAM  
R-M-W 101 A5A4A3A2A1A0D0D1D2D3 D Read and write RAM  
SYS_DIS 100

 

0000-0000-X C Turn system off *
SYS_EN 0000-0001-X C Turn system on  
LCD_OFF 0000-0010-X C Turn off bias generator *
LCD_ON 0000-0011-X C Turn on bias generator  
TIMER_DIS 0000-0100-X C Disable timer  
WDT_DIS 0000-0101-X C Enable WDT  
TIMER_EN 0000-0110-X C Enable timer  
WDT_EN 0000-0111-X C Enable WDT  
TONE_OFF 0000-1000-X C Tone off *
TONE_ON 0000-1001-X C Tone on  
CLR_TIMER 0000-11XX-X C Clear timer  
CLR_WDT 0000-111X-X C Clear WDT  
XTAL_32K 0001-01XX-X C Crystal oscillator  
RC_256K 0001-10XX-X C Internal RC oscillator *
EXT_256K 0001-11XX-X C External clock  
BIAS_1/2 0010-abX0-X C
  • LCD 1/2 bias option

  • ab=00: 2 commons option

  • ab=01: 3 commons option

  • ab=10: 4 commons option
 
BIAS_1/3 0010-abX1-X C
  • LCD 1/3 bias option

  • ab=00: 2 commons option

  • ab=01: 3 commons option

  • ab=10: 4 commons option
 
TONE_4K 010X-XXXX-X C Tone frequency 4kHz  
TONE_2K 011X-XXXX-X C Tone frequency 2kHz  
IRQ_DIS 100X-0XXX-X C Disable IRQ *
IRQ_EN 100X-1XXX-X C Enable IRQ  
F1 101X-X000-X C

Time base/WDT clock output:1Hz
The WDT time-out flag after: 4s

 
F2 101X-X001-X C

Time base/WDT clock output:2Hz
The WDT time-out flag after: 2s

 
F4 101X-X010-X C

Time base/WDT clock output:4Hz
The WDT time-out flag after: 1s

 
F8 101X-X011-X C

Time base/WDT clock output:8Hz
The WDT time-out flag after: 1/2s

 
F16 101X-X100-X C

Time base/WDT clock output:16Hz
The WDT time-out flag after: 1/4s

 
F32 101X-X101-X C

Time base/WDT clock output:32Hz
The WDT time-out flag after: 1/8s

 
F64 101X-X110-X C

Time base/WDT clock output:64Hz
The WDT time-out flag after: 1/16s

 
F128 101X-X111-X C

Time base/WDT clock output:128Hz
The WDT time-out flag after: 1/32s

*
TEST 1110-0000-X C Test mode, user don't use  
NORMAL 1110-0011-X C Normal mode *
  • x - indifferente

  • A5:0 - indirizzi RAM

  • D3:0 - dati RAM

  • D/C - dato o comando

  • * - default al power reset

Poichè non sono accessibili alcuni pin, i comandi utili sono 6 (più due che sono di default e non vanno modificati).
Non sono accessibili i pin BZ/BZ  e i comandi relativi al TONE non hanno effetto.
Non è accessibile il pin IR e le funzioni di WDT e Timer e quelle relative ai tempi non hanno effetto esterno.  Così pure le funzioni dell'oscillatore esterno; l'oscillatore è quello interno RC_256, attivo per default all'arrivo dell'alimentazione e non va modificato.
Così pure l'impostazione NORMAL non va modificata.
Mancando l'accesso a RD non sono applicabili le funzioni READ e RMW.

Per le caratteristiche del modulo LCD, deve essere scelto BIAS 1/3 e COM 4.

Note:

  1. Alcune impostazioni sono fissate per default all'arrivo dell'alimentazione mentre altre non lo sono. 
     
  2. All'accensione il display è disabilitato e spento, per il minimo consumo.
    Con spento si intende che non sono presenti segmenti sul display, mentre lo stato della retro illuminazione dipende dal jumper sul retro dello stampato; all'arrivo è chiuso il jumper che mantiene il LED di retro illuminazione tra Vdd e Vss, quindi sempre acceso.

Per attivare il display occorre una inizializzazione software del modulo richiederà la trasmissione dei seguenti tre comandi in successione:

  • SYS_EN               : abilita il sistema
  • BIAS 1/3 COM4  : applica bias e com necessari
  • LCD_ON              : accende il display (che non è la stessa cosa della retro illuminazione!)

NORMAL e RC_256k sono già definiti dal default e non vanno modificati.

Per la retro illuminazione, se si è modificato il jumper sullo stampato accedendo al pin LED+, occorrerà portarlo a livello alto. Se non è stata fatta la modifica, la retro illuminazione è sempre accesa con la Vdd presente.

  1. Da notare che il contenuto della memoria non è azzerato all'accensione e conterrà valori casuali che appariranno sul display come segmenti accesi a caso.
    Se necessario, si dovrà azzerare la memoria del modulo scrivendo 0 in tutte le locazioni. 

  2. HT1621 non dispone di una decodifica tra dato e segmenti, per cui i bit inviati a 1 corrispondono a segmenti accesi, quelli a 0 corrispondono a segmenti spenti. Occorre utilizzare una lookup table esterna per convertire i simboli che si intendono presentare nella corrispondente maschera di bit da visualizzare.


Driver.

Nella sezione Documentazione è presente il link ad alcune informazioni e al driver per Arduino.

Per i PIC Midrange Enhanced è stato scritto un driver in Assembly e una applicazione di prova.

 


Documentazione.

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 09/10/17.