Sommario:

LCD a 3 fili HD44780 per meno di 1 dollaro: 5 passaggi
LCD a 3 fili HD44780 per meno di 1 dollaro: 5 passaggi

Video: LCD a 3 fili HD44780 per meno di 1 dollaro: 5 passaggi

Video: LCD a 3 fili HD44780 per meno di 1 dollaro: 5 passaggi
Video: TUTORIAL LCD Hitachi HD 44780 2024, Dicembre
Anonim
LCD a 3 fili HD44780 per meno di 1 dollaro
LCD a 3 fili HD44780 per meno di 1 dollaro

In questo tutorial impareremo come collegare un LCD basato sul chipset HD44780 al bus SPI e guidarlo con solo 3 fili per meno di $1. Sebbene in questo tutorial mi concentrerò sul display alfanumerico HD44780, lo stesso principio funzionerà più o meno allo stesso modo per qualsiasi altro LCD che utilizza un bus dati parallelo a 8 bit e può essere adattato molto facilmente per adattarsi a display con bus dati a 16 bit. I display alfanumerici basati su HD44780 (e compatibili) sono generalmente disponibili in configurazioni 16x2 (2 righe composte da 16 caratteri) e 20x4, ma possono essere trovati in molte altre forme. Il display più "complicato" sarebbe un display 40x4, questo tipo di display è speciale in quanto ha 2 controller HD44780, uno per le due righe superiori e uno per le due righe inferiori. Alcuni LCD grafici hanno anche due controller. Gli LCD HD44780 sono fantastici, sono molto economici, leggibili e abbastanza facili da usare. Ma hanno anche alcuni inconvenienti, questi display occupano molti pin I/O quando sono collegati ad Arduino. Nei progetti semplici questo non è un problema, ma quando i progetti diventano grandi, con molto IO o dove sono necessari determinati pin per cose come una lettura analogica o PWM, il fatto che questi LCD richiedano un minimo di 6 pin può diventare un problema. Ma possiamo risolvere questo problema in modo economico e interessante.

Passaggio 1: ottenere i componenti

Ho usato TaydaElectronics per la maggior parte dei componenti che ho usato in questo progetto. Puoi ottenere queste parti anche su ebay, ma per facilità d'uso, ti collegherò a Tayda. Lista della spesa2 - Pacchetto 74HC595 DIP161 - Intestazione maschio generica - 2 pin. Questo non è necessario, l'ho usato come un modo per disabilitare permanentemente la retroilluminazione.3 - Condensatore ceramico - capacità 0.1µF; tensione 50V1 - Condensatore Elettrolitico - capacità 10µF; tensione 35V1 - Condensatore ceramico - capacità 220pF; tensione 50V1 - Transistor NPN - parte # PN2222A*1 - 1k Ω Resistore1 - Potenziometro trimmer - resistenza massima 5kΩ1 - 470 Ω Resistore* Con un transistor NPN la retroilluminazione rimarrà spenta fino a quando non viene attivata dal software. Se si desidera avere la retroilluminazione attivata per impostazione predefinita, utilizzare un transistor di tipo PNP. Tuttavia, sarà necessario apportare modifiche al codice della libreria fornita. Il totale parziale per questo elenco è $ 0,744. Anche l'intestazione del pin non è richiesta, quindi puoi risparmiare 15 centesimi proprio lì e il subtotale sarà di $ 0,6.

Passaggio 2: conosci il tuo hardware n. 1

Conosci il tuo hardware n. 1
Conosci il tuo hardware n. 1

Ecco un pin standard di un LCD HD44780, è anche molto simile ad alcuni LCD grafici. L'HD44780 può funzionare in due modalità: 1. Modalità a 4 bit, in cui ogni byte inviato all'LCD è costituito da 2 parti a 4 bit. 2. Modalità a 8 bit, su cui ci concentreremo. Il display LCD ha 16 pin in totale, 3 pin di controllo e 8 pin dati: RS - Controlla se vogliamo inviare un comando o dati al display LCD. Dove 'alto' indica un dato (un carattere) e 'basso' indica un byte di comando. R/W - Il controller HD44780 consente di leggere dalla sua RAM. Quando questo pin è "alto" possiamo leggere i dati dai suoi pin di dati. Quando è 'basso' possiamo scrivere i dati sull'LCD. Sebbene l'opzione per leggere dall'LCD possa essere utile in alcuni casi, non la esamineremo in questo tutorial e metteremo semplicemente a terra questo pin per assicurarci che sia sempre in modalità di scrittura. E - E è il pin "Abilita", questo pin viene commutato su 'alto' e poi su 'basso' per scrivere i dati nella sua RAM ed eventualmente visualizzarli sullo schermo. DB0-7 - Questi sono i pin di dati. In modalità a 4 bit utilizziamo solo i 4 bit alti DB4-DB7 e in modalità a 8 bit vengono utilizzati tutti. VSS - Questo è il pin di terra. VCC - Questo è il pin di alimentazione, il display LCD funziona con un alimentatore a 5 V, possiamo facilmente alimentarlo dal pin +5v di Arduino. Vo - Questo è il pin che consente di impostare il livello di contrasto per il display, richiede un potenziometro, normalmente viene utilizzato un potenziometro da 5K Ohm. LED+ - Questo è il fonte di alimentazione per la retroilluminazione. Alcuni LCD non sono dotati di retroilluminazione e hanno solo 14 pin. Nella maggior parte dei casi questo pin richiede anche una connessione +5v. LED- - Questa è la massa per la retroilluminazione.** È importante controllare la scheda tecnica del display o ispezionare il suo PCB per verificare la presenza di un resistore di retroilluminazione, la maggior parte degli LCD li avrà costruiti -in, nel qual caso tutto ciò che devi fare è dare alimentazione a LED+ e terra a LED-. Ma nel caso in cui il tuo LCD non abbia un resistore integrato per la retroilluminazione, è importante aggiungerne uno, altrimenti la retroilluminazione consumerà molta energia e alla fine si brucerà. Nella maggior parte dei casi il modo in cui questo LCD è collegato ad Arduino è utilizzandolo in modalità a 4 bit e mettendo a terra il pin R/W. In questo modo utilizziamo i pin RS, E e DB4-DB7. L'esecuzione in modalità a 4 bit ha un altro piccolo svantaggio in quanto impiega il doppio del tempo per scrivere i dati sullo schermo rispetto a una configurazione a 8 bit. Il display LCD ha un tempo di "regolazione" di 37 microsecondi, questo significa che devi attendere 37 microsecondi prima di inviare il comando o il byte di dati successivo al display LCD. Poiché in modalità a 4 bit dobbiamo inviare dati due volte per ogni byte, il tempo totale necessario per scrivere un singolo byte arriva fino a 74 microsecondi. Questo è ancora abbastanza veloce, ma volevo che il mio design producesse i migliori risultati possibili. La soluzione al nostro problema con il numero di pin utilizzati risiede in un convertitore da seriale a parallelo…

Passaggio 3: conosci il tuo hardware n. 2

Conosci il tuo hardware #2
Conosci il tuo hardware #2

Quello che faremo è costruire un adattatore che prenda un tipo di comunicazione seriale in uscita da Arduino e converta i dati in un'uscita parallela che può essere alimentata al nostro LCD. In arrivo il chip 74HC595. Questo è un registro a scorrimento molto economico e semplice da usare. In sostanza, ciò che fa è ricevere un segnale di clock e dati che utilizza per riempire un buffer interno a 8 bit con gli ultimi 8 bit che sono stati "sincronizzati". Una volta che il pin 'Latch' (ST_CP) è stato portato 'alto', sposta questi bit nelle sue 8 uscite. Il 595 ha una caratteristica molto interessante, ha un pin di uscita dati seriale (Q7'), questo pin può essere usato per collegare a margherita 2 o più 595 insieme per formare adattatori da seriale a parallelo che sono larghi 16 o più bit. Per questo progetto avremo bisogno di 2 di questi chip. Lo schema può anche essere modificato per funzionare con un singolo 595 in modalità a 4 bit, ma questo non sarà trattato in questo tutorial.

Passaggio 4: cablare tutto

Cablando tutto
Cablando tutto

Ora che sappiamo come funziona il nostro hardware, possiamo cablare il tutto. Nello schema vediamo 2 595 chip collegati a margherita per formare un'uscita parallela a 16 bit. Il chip inferiore è in realtà quello principale e quello superiore è collegato ad esso. Quello che vediamo qui è che il 595 inferiore sta pilotando i pin dati dell'LCD in una configurazione a 8 bit, il chip superiore controlla il segnale RS e la retroilluminazione accendendo o spegnendo un transistor. Ricorda la *nota sulla retroilluminazione LCD nella pagina Conosci il tuo hardware n. 1, nel caso in cui il tuo LCD non abbia un resistore di retroilluminazione, non dimenticare di aggiungerne uno nel tuo circuito. Nel mio caso gli LCD sono già dotati di un resistore integrato, quindi ho saltato questo passaggio. Il contrasto viene applicato tramite un potenziometro da 5K Ohm, un pin va a GND il secondo va a VCC e il tergicristallo al pin Vo sull'LCD. I condensatori utilizzati sulle linee VCC dell'LCD e del 595 sono condensatori di disaccoppiamento, sono lì per eliminare le interferenze. Non sono indispensabili se stai lavorando su una breadboard, ma dovrebbero essere usati nel caso in cui costruisci la tua versione di questo circuito da utilizzare al di fuori delle "condizioni di laboratorio". R5 e C9 in quell'ordine molto specifico creano un ritardo RC, che assicura che i dati nelle uscite del 595 abbiano il tempo di stabilizzarsi prima che il pin Enable sull'LCD sia impostato su "alto" e legga i dati. Q7' del 595 in basso va nell'ingresso dati seriale del 595 in alto, questo crea una daisy chain di 595 e quindi un'interfaccia a 16 bit. Il cablaggio ad Arduino è facile. Usiamo una configurazione a 3 fili, usando i pin SPI di Arduino. Ciò consente trasferimenti di dati molto veloci, l'invio di 2 byte al display LCD richiede solitamente circa 8 microsecondi. Questo è molto veloce, ed è in realtà molto più veloce del tempo impiegato dall'LCD per elaborare i dati, quindi è necessario un ritardo di 30 microsecondi tra ogni scrittura. Un grande vantaggio dell'utilizzo di SPI è che i pin D11 e D13 sono condivisi con altri dispositivi SPI. Ciò significa che se hai già un altro componente che utilizza SPI, come un accelerometro, questa soluzione utilizzerà solo un pin in più per il segnale di abilitazione. Nella prossima pagina vedremo il risultato. Ho costruito uno zaino su una perfboard e finora mi sta funzionando molto bene.

Passaggio 5: il risultato + libreria

Il risultato + Libreria
Il risultato + Libreria
Il risultato + Libreria
Il risultato + Libreria
Il risultato + Libreria
Il risultato + Libreria
Il risultato + Libreria
Il risultato + Libreria

"Un'immagine vale più di mille parole", sono d'accordo con questa affermazione, quindi ecco alcune immagini del risultato finale per questo progetto. Queste sono le immagini del prodotto completato, la vista Fritzing PCB è il layout della perfboard che ho usato per costruire il mio zaino. Potresti trovarlo utile se vuoi costruirne uno tuo. Mi è piaciuto così tanto che ho progettato un PCB usando DipTrace e ho ordinato un lotto di 10 PCB. Avrò bisogno di 2 o 3 unità per me, ma metterò a disposizione il resto a un prezzo simbolico quando le riceverò. Quindi se qualcuno è interessato me lo faccia sapere. * Modifica: i PCB sono qui e funzionano. Ecco la galleria di immagini completa per questo progetto, inclusi i PCB reali. https://imgur.com/a/mUkpw#0 Ovviamente non ho dimenticato la cosa più importante, una libreria con cui usare questo circuito. È compatibile con la libreria LiquidCrystal inclusa con l'IDE Arduino, quindi puoi facilmente sostituire le dichiarazioni nella parte superiore del tuo schizzo e non dover modificare nient'altro nel tuo schizzo. C'è anche uno schizzo di esempio che dimostra come funziona ogni funzione nella libreria, quindi dai un'occhiata.

Consigliato: