Sadržaj:

3-žični HD44780 LCD za manje od 1 dolara: 5 koraka
3-žični HD44780 LCD za manje od 1 dolara: 5 koraka

Video: 3-žični HD44780 LCD za manje od 1 dolara: 5 koraka

Video: 3-žični HD44780 LCD za manje od 1 dolara: 5 koraka
Video: POER PTC20 WIFI - Идеальный термостат, для домашней автоматики, с управлением по WIFI! Полный обзор. 2024, Srpanj
Anonim
3-žični HD44780 LCD za manje od 1 dolara
3-žični HD44780 LCD za manje od 1 dolara

U ovom ćemo uputstvu naučiti kako možemo spojiti LCD zasnovan na HD44780 čipsetu na SPI sabirnicu i voziti ga sa samo 3 žice za manje od 1 USD. Iako ću se u ovom vodiču usredotočiti na alfanumerički zaslon HD44780, isti princip će raditi približno isto za svaki drugi LCD koji koristi 8 -bitnu paralelnu sabirnicu podataka i može se vrlo lako prilagoditi zaslonima sa 16 -bitnim sabirnicama podataka. Alfanumerički zasloni temeljeni na HD44780 (i kompatibilni) obično su dostupni u konfiguracijama 16x2 (2 retka koja se sastoje od 16 znakova) i 20x4, ali se mogu pronaći u mnogo više oblika. Najkompliciraniji zaslon bio bi zaslon veličine 40 x 4, ova vrsta zaslona je posebna jer ima 2 kontrolera HD44780, jedan za gornja dva reda i jedan za dva donja reda. Neki grafički LCD -i imaju i dva kontrolera. HD44780 LCD -i su odlični, vrlo su jeftini, čitljivi i s njima je prilično jednostavno raditi. No, oni također imaju neke nedostatke, ovi zasloni zauzimaju puno I/O pinova kada su spojeni na Arduino. U jednostavnim projektima to ne zabrinjava, ali kad projekti postanu veliki, s puno IO -a ili gdje su potrebne određene igle za stvari poput analognog čitanja ili PWM -a, činjenica da ovi LCD -i zahtijevaju najmanje 6 pinova može postati problem. No ovaj problem možemo riješiti na jeftin i zanimljiv način.

Korak 1: Dobivanje komponenti

Koristio sam TaydaElectronics za većinu komponenti koje sam koristio u ovom projektu. Ove dijelove možete nabaviti i na ebayu, ali radi lakše upotrebe povezat ću vas s Taydom. Lista za kupovinu2 - paket 74HC595 DIP161 - Generičko muško zaglavlje - 2 pina. To nije potrebno, ovo sam upotrijebio kao način da trajno onemogućim pozadinsko osvjetljenje.3 - Keramički kondenzator - kapacitet 0,1 μF; napon 50V1 - Elektrolitički kondenzator - kapacitet 10µF; napon 35V1 - Keramički kondenzator - kapacitet 220pF; napon 50V1 - NPN -tranzistor - dio # PN2222A* 1 - 1k Ω Otpornik1 - Potenciometar trimera - maksimalni otpor 5kΩ1 - 470 Ω Otpornik* S NPN tranzistorom pozadinsko osvjetljenje će ostati isključeno sve dok ga softver ne uključi. Ako želite prema zadanim postavkama uključiti pozadinsko osvjetljenje, upotrijebite tranzistor tipa PNP. Ipak, morat će se izvršiti promjene u kodu ponuđene knjižnice. Ukupni iznos za ovaj popis je 0,744 USD. Zaglavlje igle također nije potrebno, tako da možete spremiti 15 centi upravo tamo, a međuzbir će biti 0,6 USD.

Korak 2: Upoznajte svoj hardver #1

Upoznajte svoj hardver #1
Upoznajte svoj hardver #1

Ovdje je standardni pin iz HD44780 LCD -a, također je vrlo sličan nekim grafičkim LCD -ima. HD44780 može raditi u dva načina: 1. 4-bitni način, gdje se svaki bajt poslan na LCD sastoji od 2 4-bitna dijela. 2. 8-bitni način rada, na koji ćemo se usredotočiti. LCD ima ukupno 16 pinova, 3 kontrolne igle i 8 podatkovnih pinova: RS - Kontrolira želimo li poslati naredbu ili podatke na LCD. Gdje 'visoko' znači podatak (znak), a 'nisko' znači bajt naredbe. R/W - HD44780 kontroler omogućuje vam čitanje iz RAM -a. Kad je ovaj pin 'visok', možemo čitati podatke s njegovih igle za podatke. Kad je 'nisko', možemo zapisati podatke na LCD. Iako mogućnost čitanja s LCD -a može biti korisna u nekim slučajevima, u ovom vodiču nećemo prelaziti preko toga, već ćemo jednostavno uzemljiti ovaj pin kako bismo bili sigurni da je uvijek u načinu pisanja. E - E je pin "Omogući", ovaj pin se prebacuje 'visoko' pa 'nisko' za upisivanje podataka u RAM i na kraju ih prikazuje na ekranu. DB0-7 - To su podatkovni pinovi. U 4 -bitnom načinu rada koristimo samo 4 visoka bita DB4 -DB7, a u 8 -bitnom načinu rada svi oni se koriste. VSS - Ovo je uzemljeni pin. VCC - Ovaj pin za napajanje, LCD se napaja od 5V napajanja, lako ga možemo napajati iz Arduinovog + 5v pina. Vo - Ovo je pin koji vam omogućuje postavljanje razine kontrasta za zaslon, potreban je potenciometar, obično se koristi lonac od 5K Ohm. LED + - Ovo je izvor napajanja za pozadinsko osvjetljenje. Neki LCD -i nemaju pozadinsko osvjetljenje i imaju samo 14 pinova. U većini slučajeva ovaj pin također zahtijeva +5v vezu. LED- - Ovo je osnova za pozadinsko osvjetljenje. ** Važno je provjeriti podatkovnu tablicu zaslona ili pregledati njegovu tiskanu ploču kako biste provjerili ima li otpornika za pozadinsko osvjetljenje, većina LCD -a će ih imati ugrađene -u tom slučaju sve što trebate učiniti je priključiti napajanje na LED+ i uzemljiti na LED-. No, u slučaju da vaš LCD nema ugrađeni otpornik za pozadinsko osvjetljenje, važno je da ga dodate, jer će u protivnom pozadinsko osvjetljenje potrošiti mnogo energije i na kraju će izgorjeti. U većini slučajeva način na koji je ovaj LCD spojen na Arduino je upotreba u 4-bitnom načinu rada i uzemljenje R/W pina. Na ovaj način koristimo pinove RS, E i DB4-DB7. Pokretanje u 4-bitnom načinu rada ima još jedan mali nedostatak u tome što je potrebno dvostruko više vremena za upisivanje podataka na zaslon nego što bi trebalo u 8-bitnoj konfiguraciji. LCD ima vrijeme 'taloženja' 37 mikrosekundi, što znači da morate čekati 37 mikrosekundi prije slanja sljedeće naredbe ili podatkovnog bajta na LCD. Budući da u 4-bitnom načinu rada moramo poslati podatke dva puta za svaki bajt, ukupno vrijeme potrebno za pisanje jednog bajta ide do 74 mikrosekundi. Ovo je još uvijek dovoljno brzo, ali želio sam da moj dizajn proizvede najbolje moguće rezultate. Rješenje našeg problema s brojem upotrijebljenih pinova leži u serijskom u paralelnom pretvaraču …

Korak 3: Upoznajte svoj hardver #2

Upoznajte svoj hardver #2
Upoznajte svoj hardver #2

Ono što ćemo učiniti je izgraditi adapter koji uzima serijski tip komunikacije koji dolazi iz Arduina i pretvara podatke u paralelni izlaz koji se može unositi na naš LCD. Dolazi čip 74HC595. Ovo je vrlo jeftin i jednostavan za rad registar smjena. U biti, ono što radi je prihvaćanje takta i podatkovnih signala koje koristi za popunjavanje unutarnjeg 8 -bitnog međuspremnika s 8 posljednjih bitova koji su bili 'Clocked in'. Nakon što je pin "Latch" (ST_CP) "visoko" pomakne te bitove u svojih 8 izlaza. 595 ima vrlo lijepu značajku, ima iglu za serijski izlaz podataka (Q7 '), ovaj pin se može koristiti za povezivanje 2 ili više 595 zajedno kako bi se formirali serijski do paralelni adapteri široki 16 ili više bitova. Za ovaj projekt trebat će nam 2 od ovih čipova. Shema se također može izmijeniti za rad s jednim 595 u 4-bitnom načinu, ali ovo neće biti obuhvaćeno ovim vodičem.

Korak 4: Ožičite sve

Ožičenje
Ožičenje

Sada kada znamo kako funkcionira naš hardver, možemo sve to povezati. Na shemi vidimo 2 595 čipova koji su međusobno povezani kako bi tvorili 16 -bitni paralelni izlaz. Donji čip je zapravo glavni, a gornji je s tratinčicom okovan na njega. Ono što ovdje vidimo je da donji 595 pokreće podatkovne pinove LCD-a u 8-bitnoj konfiguraciji, a gornji čip kontrolira RS signal i pozadinsko osvjetljenje uključivanjem ili isključivanjem tranzistora. Zapamtite *napomenu o LCD pozadinskom osvjetljenju na stranici Upoznajte svoj hardver #1, u slučaju da vaš LCD nema otpornik za pozadinsko osvjetljenje, ne zaboravite ga dodati u svoj krug. U mom slučaju LCD-i koje sam već dobio s ugrađenim otpornikom pa sam preskočio ovaj korak. Kontrast se primjenjuje kroz posudu od 5K ohma, jedan pin ide na GND, drugi ide na VCC, a brisač na Vo pin na LCD -u. Kondenzatori koji se koriste na VCC vodovima LCD -a i 595 -a su odvojeni kondenzatori, oni su tu da se riješe smetnji. Oni nisu nužni ako radite na osnovnoj ploči, ali ih treba koristiti u slučaju da izgradite vlastitu verziju ovog kruga koja će se koristiti izvan "laboratorijskih uvjeta". R5 i C9 tim vrlo specifičnim redoslijedom stvaraju RC kašnjenje, koje osigurava da se podaci na izlazima 595 -a imaju vremena stabilizirati prije nego što je pin Enable na LCD -u postavljen 'visoko' i pročita podatke. Q7 'donjeg 595 ulazi u serijski unos podataka 595 na vrhu, što stvara lanac od 595s, a time i 16 -bitno sučelje. Ožičenje do Arduina je jednostavno. Koristimo 3-žičnu konfiguraciju, koristeći Arduino SPI pinove. To omogućuje vrlo brz prijenos podataka, slanje 2 bajta na LCD obično traje oko 8 mikrosekundi. Ovo je vrlo brzo, a zapravo je mnogo brže od vremena koje je potrebno LCD -u za obradu podataka, pa je potrebno kašnjenje od 30 mikrosekundi između svakog pisanja. Jedna vrlo velika prednost korištenja SPI -a je ta što se pinovi D11 i D13 dijele s drugim SPI uređajima. To znači da ako već imate drugu komponentu koja koristi SPI, kao što je akcelerometar, ovo rješenje će koristiti samo jedan dodatni pin za signal omogućavanja. Na sljedećoj stranici vidjet ćemo rezultat. Napravio sam ruksak na ploči i do sada mi je jako dobro funkcionirao.

Korak 5: Rezultat + biblioteka

Knjižnica Rezultat +
Knjižnica Rezultat +
Knjižnica Rezultat +
Knjižnica Rezultat +
Knjižnica Rezultat +
Knjižnica Rezultat +
Knjižnica Rezultat +
Knjižnica Rezultat +

"Slika vrijedi tisuću riječi", slažem se s ovom tvrdnjom, pa evo nekoliko slika krajnjeg rezultata za ovaj projekt. Ovo su slike gotovog proizvoda, prikaz Fritzing PCB -a je izgled perfarda koji sam koristio za izradu svog ruksaka. Možda će vam biti korisno ako želite izgraditi vlastiti. Toliko mi se svidjelo da sam dizajnirao PCB pomoću DipTrace -a i naručio seriju od 10 PCB -a. Trebat će mi 2 ili 3 jedinice za sebe, ali ostatak ću učiniti dostupnim po simboličnoj cijeni kad ih primim. Pa ako nekoga zanima neka mi javi. * Edit: PCB -ovi su ovdje i rade. Evo cijele galerije slika za ovaj projekt, uključujući stvarne PCB -ove. https://imgur.com/a/mUkpw#0 Naravno da nisam zaboravio najvažniju stvar, knjižnicu s kojom će se koristiti ovaj sklop. Kompatibilan je s bibliotekom LiquidCrystal uključenom u Arduino IDE, tako da možete jednostavno zamijeniti deklaracije na vrhu skice i ne morate mijenjati ništa drugo u skici. Postoji i primjer skice koja pokazuje kako funkcionira svaka funkcija u knjižnici, pa je provjerite.

Preporučeni: