INHOUDSOPGAWE:

3-draads HD44780 LCD vir minder as 1 dollar: 5 stappe
3-draads HD44780 LCD vir minder as 1 dollar: 5 stappe

Video: 3-draads HD44780 LCD vir minder as 1 dollar: 5 stappe

Video: 3-draads HD44780 LCD vir minder as 1 dollar: 5 stappe
Video: BERNINA Overlocker L 460 / L 450: inrijgen en naaien, 3-draads overlock 2024, Julie
Anonim
3-draads HD44780 LCD vir minder as 1 dollar
3-draads HD44780 LCD vir minder as 1 dollar

In hierdie instruksies leer ons hoe ons 'n LCD, gebaseer op die HD44780 -skyfiestel, aan die SPI -bus kan koppel en dit met slegs 3 drade vir minder as $ 1 kan ry. Alhoewel ek in hierdie tutoriaal op die alfanumerieke HD44780 -skerm sal fokus, sal dieselfde beginsel byna dieselfde werk vir enige ander LCD wat 'n 8 -bisse parallelle databus gebruik, en dit kan baie maklik aangepas word vir skerms met 16 -bits databusse. Die alfanumeriese skerms op HD44780 (en versoenbaar) is gewoonlik beskikbaar in 16x2 (2 reëls bestaande uit 16 karakters) en 20x4 konfigurasies, maar kan in baie meer vorms gevind word. Die mees 'ingewikkelde' skerm is 'n 40x4 -skerm. Hierdie soort skerm is spesiaal omdat dit 2 HD44780 -beheerders het, een vir die boonste twee rye en een vir die onderste twee rye. Sommige grafiese LCD's het ook twee beheerders. Die HD44780 LCD's is wonderlik, dit is baie goedkoop, leesbaar en redelik maklik om mee te werk. Maar hulle het ook 'n paar nadele; hierdie skerms neem baie I/O -penne in beslag wanneer hulle aan die Arduino gekoppel is. In eenvoudige projekte is dit nie 'n bron van kommer nie, maar as projekte groot word, met baie IO, of waar sekere penne nodig is vir dinge soos 'n analoog lees of PWM, kan die feit dat hierdie LCD's minstens 6 penne benodig 'n probleem. Maar ons kan hierdie probleem op 'n goedkoop en interessante manier oplos.

Stap 1: Kry die komponente

Ek het TaydaElectronics gebruik vir die meeste komponente wat ek in hierdie projek gebruik het. U kan hierdie dele ook op eBay kry, maar vir die gemak van gebruik skakel ek u met Tayda. Shopping List2 - 74HC595 -pakket DIP161 - Generiese manlike kop - 2 penne. Dit is nie nodig nie, ek het dit gebruik as 'n manier om die agtergrond permanent uit te skakel.3 - Keramiek kondensator - kapasitansie 0.1µF; spanning 50V1 - Elektrolitiese kondensator - kapasitansie 10µF; spanning 35V1 - Keramiek kondensator - kapasitansie 220pF; spanning 50V1 - NPN -Transistor - onderdeel # PN2222A* 1 - 1k Ω Weerstand1 - Trimmerpotensiometer - maksimum weerstand 5kΩ1 - 470 Ω Weerstand* Met 'n NPN -transistor bly die agtergrond af totdat dit deur sagteware aangeskakel word. As u die agtergrond standaard wil aanskakel, gebruik dan 'n PNP -tipe transistor. Daar moet egter veranderinge in die kode van die biblioteek verskaf word. Subtotaal vir hierdie lys is $ 0,744. Die penkop is ook nie nodig nie, dus u kan daar 15 sent bespaar en die subtotaal is $ 0,6.

Stap 2: Ken u hardeware #1

Ken jou hardeware #1
Ken jou hardeware #1

Hier is 'n standaard pen uit 'n HD44780 LCD, dit is ook baie soortgelyk aan sommige grafiese LCD's. Die HD44780 kan in twee modusse werk: 1. 4-bis-modus, waar elke greep wat na die LCD gestuur word, uit 2-bis-dele bestaan. 2. 8-bis-modus, waarop ons sal fokus. Die LCD het in totaal 16 penne, 3 bedieningspenne en 8 datapennetjies: RS - Beheer of ons 'n opdrag of data na die LCD wil stuur. Waar 'hoog' data ('n karakter) beteken en 'laag' 'n opdragbyte beteken. R/W - Met die HD44780 -beheerder kan u vanaf sy RAM lees. As hierdie pen 'hoog' is, kan ons data van sy datapennetjies lees. As dit 'laag' is, kan ons data na die LCD skryf. Alhoewel die opsie om van LCD af te lees in sommige gevalle nuttig kan wees, sal ons nie in hierdie tutoriaal daaroor gaan nie, en ons sal hierdie pen eenvoudig grond om te verseker dat dit altyd in die skryfmodus is. E - E is die 'Aktiveer' -pen, word hierdie speld 'hoog' dan 'laag' aangeskakel om die data na sy RAM te skryf en dit uiteindelik op die skerm te vertoon. DB0-7 - Dit is die datapennetjies. In die 4 -bis -modus gebruik ons slegs die 4 hoë bisse DB4 -DB7, en in die 8 -bis -modus word almal gebruik. VSS - Dit is die grondpen., ons kan dit maklik van die Arduino se + 5v -pen voorsien. Vo - Dit is die pen waarmee u die kontrasvlak vir die skerm kan stel, dit benodig 'n potensiometer, gewoonlik word 'n 5K Ohm -pot gebruik. LED + - Dit is die kragbron vir die agtergrond. Sommige LCD's het nie 'n agtergrond nie, en het slegs 14 penne. In die meeste gevalle benodig hierdie pen ook 'n +5v -aansluiting. LED- - Dit is die grond vir die agterlig. ** Dit is belangrik om die datablad van die skerms na te gaan of sy printplaat te ondersoek om te kyk of daar 'n weerligweerstand is; die meeste LCD's sal dit laat bou In hierdie geval hoef u net LED+ te voed en op LED-. Maar as u LCD nie 'n ingeboude weerstand vir die agtergrond het nie, is dit belangrik dat u een byvoeg, anders verbruik die agtergrond baie krag en sal dit uiteindelik uitbrand. In die meeste gevalle is die manier waarop hierdie LCD aan die Arduino gekoppel is, deur dit in die 4-bis-modus te gebruik en die R/W-pen te grond. Op hierdie manier gebruik ons penne RS, E en DB4-DB7. Om in die 4-bis-modus te werk, het nog 'n klein nadeel, aangesien dit twee keer so lank neem om data op die skerm te skryf as wat dit in 'n 8-bis-konfigurasie sou neem. Die LCD het 'n "vestigingstyd" van 37 mikrosekondes, dit beteken dat u 37 mikrosekondes moet wag voordat u die volgende opdrag of databyte na die LCD stuur. Aangesien ons in die 4-bis-modus twee keer vir elke byte data moet stuur, styg die totale tyd wat dit neem om 'n enkele byte te skryf tot 74 mikrosekondes. Dit is nog steeds vinnig genoeg, maar ek wou hê dat my ontwerp die beste resultate lewer. Die oplossing vir ons probleem met die aantal penne wat gebruik word, lê in 'n Serial to Parallel -omskakelaar …

Stap 3: Ken u hardeware #2

Ken u hardeware #2
Ken u hardeware #2

Wat ons sal doen, is om 'n adapter te bou wat 'n seriële kommunikasie uit die Arduino neem en die data omskakel in 'n parallelle uitset wat na ons LCD kan gevoer word. Die 74HC595 -chip kom in. Dit is 'n baie goedkoop en maklik om te bedien skofregister. In wese neem dit 'n horlosie en datasignale in wat dit gebruik om 'n interne 8 -bis -buffer te vul met die 8 laaste bisse wat 'ingeklok' is. Sodra die 'Latch' (ST_CP) pen 'hoog' gebring is, skuif hierdie stukkies na sy 8 uitsette. Die 595 het 'n baie goeie funksie, dit het 'n seriële data -out -pen (Q7 '); hierdie pen kan gebruik word om 2 of meer 595's saam te ketting om Serial to Parallel -adapters te vorm wat 16 of meer bits breed is. Vir hierdie projek benodig ons 2 van hierdie skyfies. Die skema kan ook aangepas word om te werk met 'n enkele 595 in die 4-bis-modus, maar dit word nie deur hierdie tutoriaal gedek nie.

Stap 4: Bedraad alles

Alles bedek
Alles bedek

Noudat ons weet hoe ons hardeware werk, kan ons dit alles bedraad. In die skema sien ons 2 595 skyfies, daisy, wat aan mekaar vasgeketting is om 'n parallelle uitset van 16 bis te vorm. Die onderste chip is eintlik die belangrikste, en die boonste is daisy vasgeketting daaraan. Wat ons hier sien, is dat die onderste 595 die datapennetjies van die LCD in 'n 8-bis-konfigurasie bestuur, die boonste chip beheer die RS-sein en agtergrond deur 'n transistor aan of af te skakel. Onthou die *opmerking oor die LCD -agtergrond op Ken u hardeware nommer 1 -bladsy, in die geval dat u LCD nie 'n weerligweerstand het nie, moenie vergeet om een in u stroombaan te voeg nie. In my geval het die LCD's al 'n ingeboude weerstand, en ek het hierdie stap oorgeslaan. Die kontras word toegepas deur 'n 5K Ohm pot, een pen gaan na GND die tweede gaan na VCC en die veër na die Vo pin op die LCD. Die kondensators wat op die LCD's en 595 se VCC -lyne gebruik word, ontkoppel kondensators, hulle is daar om van interferensie ontslae te raak. Dit is nie 'n moet as u aan 'n broodbord werk nie, maar dit moet gebruik word as u u eie weergawe van hierdie kring bou wat buite 'laboratoriumtoestande' gebruik kan word. R5 en C9 in die spesifieke volgorde skep 'n RC -vertraging, wat verseker dat die data in die 595 se uitsette tyd het om te stabiliseer voordat die Aktiveer -pen op die LCD 'hoog' gestel word en die data lees. Q7 'van die onderste 595 gaan in op die seriële data -invoer van die 595 aan die bokant, dit skep 'n daisy -ketting van 595s en dus 'n 16 bit -koppelvlak. Dit is maklik om na die Arduino te gaan. Ons gebruik 'n 3-draads konfigurasie met behulp van Arduino se SPI-penne. Dit maak baie vinnige data -oordrag moontlik, en die stuur van 2 grepe na die LCD neem gewoonlik ongeveer 8 mikrosekondes. Dit is baie vinnig, en dit is eintlik baie vinniger as die tyd wat dit neem om die data te verwerk, dus is 'n vertraging van 30 mikrosekondes nodig tussen elke skryf. Een baie groot voordeel van die gebruik van SPI is dat penne D11 en D13 met ander SPI -toestelle gedeel word. Dit beteken dat as u reeds 'n ander komponent het wat SPI gebruik, soos 'n versnellingsmeter, hierdie oplossing slegs een ekstra pen vir die inschakelsein gebruik. Op die volgende bladsy sien ons die resultaat. Ek het 'n rugsak op 'n perfboard gebou en dit werk tot dusver baie goed vir my.

Stap 5: Die resultaat + biblioteek

Die resultaat + biblioteek
Die resultaat + biblioteek
Die resultaat + biblioteek
Die resultaat + biblioteek
Die resultaat + biblioteek
Die resultaat + biblioteek
Die resultaat + biblioteek
Die resultaat + biblioteek

"'N Foto is duisend woorde werd", ek stem saam met hierdie stelling, so hier is 'n paar beelde van die eindresultaat van hierdie projek. Dit is beelde van die voltooide produk; die Fritzing PCB -aansig is die perfboard -uitleg wat ek gebruik het om my rugsak te bou. U kan dit nuttig vind as u u eie wil bou. Ek het so baie daarvan gehou dat ek 'n PCB met DipTrace ontwerp het en 'n bondel 10 PCB's bestel het. Ek het 2 of 3 eenhede vir myself nodig, maar sal die res teen 'n simboliese prys beskikbaar stel as ek dit ontvang. So laat weet my as iemand belangstel. * Wysig: Die PCB's is hier, en dit werk. Hier is die volledige fotogalery vir hierdie projek, insluitend die werklike PCB's. https://imgur.com/a/mUkpw#0 Natuurlik het ek nie die belangrikste vergeet nie, 'n biblioteek om hierdie kring mee te gebruik. Dit is verenigbaar met die LiquidCrystal -biblioteek wat by die Arduino IDE ingesluit is, sodat u die verklarings bo -aan u skets maklik kan vervang en niks anders in u skets hoef te verander nie. Daar is ook 'n voorbeeldskets wat demonstreer hoe elke funksie in die biblioteek werk, dus kyk gerus.

Aanbeveel: