Taula de continguts:

LCD de 3 fils HD44780 per menys d'un dòlar: 5 passos
LCD de 3 fils HD44780 per menys d'un dòlar: 5 passos

Vídeo: LCD de 3 fils HD44780 per menys d'un dòlar: 5 passos

Vídeo: LCD de 3 fils HD44780 per menys d'un dòlar: 5 passos
Vídeo: Введение в LCD2004 ЖК-дисплей с модулем I2C для Arduino 2024, Desembre
Anonim
LCD HD44780 de 3 fils per menys d'un dòlar
LCD HD44780 de 3 fils per menys d'un dòlar

En aquest instructiu aprendrem com podem connectar una pantalla LCD basada en el chipset HD44780 al bus SPI i conduir-la amb només 3 cables per menys d’1 dòlar. Tot i que em centraré en la pantalla alfanumèrica HD44780 en aquest tutorial, el mateix principi funcionarà pràcticament igual per a qualsevol altra pantalla LCD que utilitzi un bus de dades paral·lel de 8 bits i es pot adaptar molt fàcilment per adaptar-se a pantalles amb busos de dades de 16 bits. Les pantalles alfanumèriques basades en HD44780 (i compatibles) solen estar disponibles en configuracions de 16x2 (2 línies de 16 caràcters) i 20x4, però es poden trobar en moltes altres formes. La pantalla més "complicada" seria una pantalla de 40x4, aquest tipus de pantalla és especial ja que té 2 controladors HD44780, un per a les dues files superiors i un per a les dues files inferiors. Alguns LCD gràfics també tenen dos controladors. Les pantalles LCD HD44780 són fantàstiques, són molt barates, llegibles i fàcils de treballar. Però també tenen alguns inconvenients, aquestes pantalles ocupen molts pins d'E / S quan es connecten a l'Arduino. En els projectes simples això no és preocupant, però quan els projectes es fan grans, amb molta IO o quan es necessiten certs pins per a coses com ara una lectura analògica o PWM, el fet que aquests LCD requereixin un mínim de 6 pins pot convertir-se en un problema. Però podem resoldre aquest problema d’una manera barata i interessant.

Pas 1: Obtenció dels components

He utilitzat TaydaElectronics per a la majoria dels components que he utilitzat en aquest projecte. També podeu obtenir aquestes peces a ebay, però per facilitar-ne l’ús, us enllaço amb Tayda. Llista de compres2 - paquet DIP161 74HC595 - Capçalera genèrica masculina - 2 pins. Això no és necessari, ho he fet servir per desactivar permanentment la retroil·luminació. 3 - Condensador de ceràmica - capacitat 0,1 µF; tensió 50V1 - Condensador electrolític - capacitat 10µF; tensió 35V1 - Condensador ceràmic - capacitat 220pF; voltatge 50V1 - Transistor NPN - part # PN2222A * 1 - Resistència 1k Ω1 - Potenciòmetre retallador - Resistència màxima Resistència 5kΩ1 - 470 Ω * Amb un transistor NPN la llum de fons romandrà apagada fins que el programari l’encengui. Si voleu tenir la llum de fons encès per defecte, utilitzeu un transistor de tipus PNP. Tanmateix, caldrà fer canvis al codi de la biblioteca proporcionada. El total total d’aquesta llista és de 0,744 $. La capçalera del pin tampoc no és necessària, de manera que podeu estalviar 15 centaus aquí mateix i el subtotal serà de 0,6 $.

Pas 2: coneixeu el vostre maquinari núm. 1

Conegueu el vostre maquinari núm. 1
Conegueu el vostre maquinari núm. 1

Aquí teniu un pin estàndard d’un LCD HD44780, també és molt similar a alguns LCD gràfics. L'HD44780 pot funcionar en dos modes: 1. Mode de 4 bits, on cada byte enviat a la pantalla LCD consta de 2 parts de 4 bits. 2. Mode de 8 bits, en el qual ens centrarem. La pantalla LCD té 16 pins en total, 3 pins de control i 8 pins de dades: RS: controla si volem enviar una ordre o dades a la pantalla LCD. Quan "alt" significa dades (un caràcter) i "baix" significa un byte d'ordre. R / W: el controlador HD44780 permet llegir des de la seva memòria RAM. Quan aquest pin és "alt" podem llegir les dades dels pins de dades. Quan és "baix" podem escriure dades a la pantalla LCD. Tot i que l’opció de llegir des de la pantalla LCD pot ser útil en alguns casos, no la revisarem en aquest tutorial i simplement posarem a terra aquest pin per assegurar-nos que sempre estigui en mode d’escriptura. E - E és el pin “Habilita”, aquest pin es commuta "alt" i "baix" per escriure les dades a la memòria RAM i, finalment, mostrar-les a la pantalla. DB0-7 - Aquests són els pins de dades. En el mode de 4 bits només fem servir els 4 bits elevats DB4-DB7, i en el mode de 8 bits s’utilitzen tots. VSS: aquest és el pin de terra. VCC: aquest és el pin d’alimentació;, podem alimentar-lo fàcilment amb el pin + 5v de l’Arduino. Vo - Aquest és el pin que permet establir el nivell de contrast per a la pantalla, requereix un potenciòmetre, normalment s’utilitza una olla de 5K Ohm. LED + - Aquest és el pin font d'alimentació per a la llum de fons. Alguns LCD no inclouen llum de fons i només tenen 14 pins. En la majoria dels casos, aquest pin també requereix una connexió de + 5 V. LED - Aquest és el terreny per a la llum de fons. ** És important comprovar el full de dades de la pantalla o inspeccionar el seu PCB per comprovar si hi ha una resistència de llum de fons, la majoria dels LCD els tindran construïts. -en aquest cas, tot el que heu de fer és aplicar energia al LED + i connectar-lo a terra-. Però en el cas que el vostre LCD no tingui una resistència incorporada per a la llum de fons, és important que n'afegiu una, si no, la llum de fons consumirà molta energia i, finalment, es cremarà. En la majoria dels casos, la manera com es connecta aquesta pantalla LCD a l'Arduino és mitjançant l'ús en mode de 4 bits i la connexió a terra del pin R / W. D’aquesta manera utilitzem els pins RS, E i DB4-DB7. Executar-se en mode de 4 bits té un altre petit desavantatge, ja que triga el doble de temps a escriure dades a la pantalla que en una configuració de 8 bits. La pantalla LCD té un temps de "resolució" de 37 microsegons, això vol dir que heu d'esperar 37 microsegons abans d'enviar la següent comanda o byte de dades a la pantalla LCD. Com que en el mode de 4 bits hem d’enviar dades dues vegades per cada byte, el temps total que es necessita per escriure un sol byte puja fins als 74 microsegons. Encara és prou ràpid, però volia que el meu disseny produís els millors resultats possibles. La solució al nostre problema amb el nombre de pins utilitzats es troba en un convertidor de sèrie a paral·lel …

Pas 3: coneixeu el vostre maquinari núm. 2

Conegueu el vostre maquinari núm. 2
Conegueu el vostre maquinari núm. 2

El que farem és construir un adaptador que agafi un tipus de comunicació de sèrie que surt de l’Arduino i converti les dades en una sortida paral·lela que es pugui alimentar al nostre LCD. El xip 74HC595 entra. Es tracta d’un registre de torns molt barat i senzill d’operar. En essència, el que fa és prendre un rellotge i senyals de dades que utilitza per omplir una memòria intermèdia de 8 bits amb els darrers 8 bits que van ser "clocked in". Una vegada que el pin "Latch" (ST_CP) s'ha posat "alt", mou aquests bits a les seves 8 sortides. El 595 té una característica molt bonica, té un pin de sortida de dades sèrie (Q7 '), aquest pin es pot utilitzar per marcar 2 o més 595 junts per formar adaptadors de sèrie a paral·lel que tinguin una amplada de 16 o més bits. Per a aquest projecte necessitarem 2 d'aquests xips. L'esquema també es pot modificar perquè funcioni amb un sol 595 en mode de 4 bits, però aquest tutorial no el cobrirà.

Pas 4: cablejar-ho tot

Cablejant-ho tot
Cablejant-ho tot

Ara que ja sabem com funciona el nostre maquinari, podem connectar-ho tot. A l'esquema veiem 2 595 xips margarida encadenats formant una sortida paral·lela de 16 bits. El xip inferior és en realitat el principal i el superior està encadenat en margarida. El que veiem aquí és que la part inferior 595 condueix els pins de dades de la pantalla LCD en una configuració de 8 bits, el xip superior controla el senyal RS i la llum de fons activant o desactivant un transistor. Recordeu la nota * sobre la retroiluminació LCD activada. Conegueu la pàgina de maquinari núm. 1, en cas que el vostre LCD no tingui resistència de retroiluminació, no oblideu afegir-ne una al circuit. En el meu cas, les pantalles LCD ja he vingut amb una resistència incorporada, de manera que he saltat aquest pas. El contrast s’aplica a través d’un pot de 5K Ohm, un passador va a GND, el segon va a VCC i el netejador al passador Vo de la pantalla LCD. Els condensadors que s’utilitzen a les línies VCC del LCD i del 595 són condensadors de desacoblament, hi són per desfer-se de les interferències. No són imprescindibles si esteu treballant en una taula de treball, sinó que s’han d’utilitzar en cas que creeu la vostra pròpia versió d’aquest circuit per utilitzar-la fora de les "condicions de laboratori". R5 i C9 en aquest ordre molt específic creen un retard de RC, que assegura que les dades de les sortides del 595 tinguin temps per estabilitzar-se abans que el pin Habilita a la pantalla LCD estigui "alt" i llegeixi les dades. Q7 'del 595 inferior entra a l'entrada de dades sèrie del 595 a la part superior, això crea una cadena de margarides de 595 s i, per tant, una interfície de 16 bits. Connectar-se a l’Arduino és fàcil. Utilitzem una configuració de 3 fils mitjançant els pins SPI d’Arduino. Això permet transferències de dades molt ràpides, l’enviament de 2 bytes a la pantalla LCD sol trigar uns 8 microsegons. Això és molt ràpid i, en realitat, és molt més ràpid que el temps que triga la pantalla LCD a processar les dades, de manera que es necessita un retard de 30 microsegons entre cada escriptura. Un dels grans avantatges de fer servir SPI és que els pins D11 i D13 es comparteixen amb altres dispositius SPI. Això significa que si ja teniu un altre component que utilitza SPI, com ara un acceleròmetre, aquesta solució només utilitzarà un pin addicional per al senyal d'activació. A la pàgina següent veurem el resultat. He construït una motxilla sobre un perfboard i fins ara em funciona molt bé.

Pas 5: el resultat + biblioteca

El resultat + Biblioteca
El resultat + Biblioteca
El resultat + Biblioteca
El resultat + Biblioteca
El resultat + Biblioteca
El resultat + Biblioteca
El resultat + Biblioteca
El resultat + Biblioteca

"Una imatge val més que mil paraules", estic d'acord amb aquesta afirmació, així que aquí teniu algunes imatges del resultat final d'aquest projecte. Aquestes són imatges del producte completat, la visualització de Fritzing PCB és el disseny perfecte que vaig utilitzar per construir la motxilla. Potser us serà útil si voleu construir el vostre propi. M’ha agradat tant que he dissenyat un PCB amb DipTrace i he demanat un lot de 10 PCB. Necessitaré 2 o 3 unitats per a mi, però faré que la resta estigui disponible per un preu simbòlic quan les rebi. Així que si hi ha algú interessat, si us plau, feu-m'ho saber. * Edició: els PCB ja són aquí i funcionen. Aquí teniu la galeria d'imatges completa d'aquest projecte, inclosos els PCB reals. https://imgur.com/a/mUkpw#0 Per descomptat, no vaig oblidar el més important, una biblioteca amb què utilitzar aquest circuit. És compatible amb la biblioteca LiquidCrystal inclosa amb l'IDE Arduino, de manera que podeu substituir fàcilment les declaracions de la part superior del vostre esbós i no haver de canviar res més al vostre esbós. També hi ha un esbós d’exemple que demostra el funcionament de cada funció de la biblioteca, així que consulteu-ho.

Recomanat: