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, Juli
Anonim
3-žični HD44780 LCD za manje od 1 dolara
3-žični HD44780 LCD za manje od 1 dolara

U ovom uputstvu ćemo 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 prikaz HD44780, isti princip će raditi približno isto za bilo koji drugi LCD koji koristi 8 -bitnu paralelnu sabirnicu podataka i može se vrlo lako prilagoditi ekranima sa 16 -bitnim sabirnicama podataka. Alfanumerički displeji zasnovani na HD44780 (i kompatibilni) obično su dostupni u konfiguracijama 16x2 (2 retka koja se sastoje od 16 znakova) i 20x4, ali se mogu naći u mnogo više oblika. Najkomplikovaniji ekran bio bi ekran veličine 40x4, ova vrsta ekrana je posebna jer ima 2 HD44780 kontrolera, 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 lako raditi. Ali oni imaju i neke nedostatke, ovi ekrani zauzimaju puno I/O pinova kada su spojeni na Arduino. U jednostavnim projektima to ne zabrinjava, ali kada projekti postanu veliki, s velikim brojem 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. Ali ovaj problem možemo riješiti na jeftin i zanimljiv način.

Korak 1: Dobijanje 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. Ovo nije potrebno, koristio sam ovo 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* Pozadinsko osvjetljenje će se ugasiti dok se softver ne uključi. Ako želite da pozadinsko osvjetljenje bude uključeno prema zadanim postavkama, koristite tranzistor tipa PNP. Ipak, morat će se napraviti promjene u kodu biblioteke koja se nudi. Ukupni iznos za ovu listu je 0,744 USD. Zaglavlje igle takođe nije potrebno, tako da možete uštedjeti 15 centi upravo tamo, a međuzbir će iznositi 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, koji je također vrlo sličan nekim grafičkim LCD -ovima. HD44780 može raditi u dva načina: 1. 4-bitni način, gdje se svaki bajt poslan LCD-u sastoji od 2 4-bitna dijela. 2. 8-bitni način rada, na koji ćemo se fokusirati. LCD ima ukupno 16 pinova, 3 kontrolne pinove i 8 pinova podataka: RS - Kontrolira želimo li poslati naredbu ili podatke na LCD. Gdje 'visoko' znači podatak (znak), a 'nisko' znači komandni bajt. R/W - HD44780 kontroler vam omogućava čitanje iz RAM -a. Kada je ovaj pin "visok", možemo čitati podatke sa njegovih pinova za podatke. Kada je 'nisko', možemo zapisati podatke na LCD. Iako opcija čitanja s LCD -a može biti korisna u nekim slučajevima, nećemo je prelaziti u ovom vodiču, 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' da upiše podatke u svoju RAM memoriju i na kraju ih prikaže na ekranu. DB0-7 - Ovo su pinovi za podatke. 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, možemo ga jednostavno napajati sa Arduinovog + 5v pina. Vo - Ovo je pin koji vam omogućava da postavite nivo kontrasta za ekran, 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 ekrana ili pregledati njegovu PCB 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 troš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 ekran nego što bi to trebalo u 8-bitnoj konfiguraciji. LCD ima vrijeme „taloženja“od 37 mikrosekundi, što znači da morate čekati 37 mikrosekundi prije slanja sljedeće naredbe ili bajta podataka 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 suštini, on uzima sat i signale podataka koje koristi za popunjavanje internog 8 -bitnog međuspremnika sa 8 posljednjih bitova koji su bili 'Clocked in'. Nakon što je pin 'Latch' (ST_CP) postavljen 'visoko', on premješta ove bitove u svojih 8 izlaza. 595 ima vrlo lijepu značajku, ima pin za serijski izlaz podataka (Q7 '), ovaj pin se može koristiti za povezivanje 2 ili više 595 zajedno za formiranje serijskih na paralelnih adaptera koji su široki 16 ili više bitova. Za ovaj projekt trebat će nam 2 od ovih čipova. Shema se također može izmijeniti da radi s jednim 595 u 4-bitnom načinu, ali ovo neće biti pokriveno 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 formirali 16 -bitni paralelni izlaz. Donji čip je zapravo glavni, a gornji je s tratinčicom prikovan za njega. Ono što ovdje vidimo je da donji 595 pokreće pinove podataka 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 svoje kolo. U mom slučaju, LCD-i su već isporučeni sa 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 LCD i 595 VCC linijama 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 napravite vlastitu verziju ovog kruga koja će se koristiti izvan "laboratorijskih uvjeta". R5 i C9 u tom vrlo specifičnom redoslijedu 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 na '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 trožilnu konfiguraciju, koristeći Arduino SPI pinove. Ovo omogućava vrlo brz prijenos podataka, slanje 2 bajta na LCD obično traje oko 8 mikrosekundi. Ovo je vrlo brzo i 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 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, poput akcelerometra, ovo rješenje će koristiti samo jedan dodatni pin za signal za omogućavanje. Na sljedećoj stranici vidjet ćemo rezultat. Napravio sam ruksak na perforaciji i do sada mi je jako dobro funkcionirao.

Korak 5: Rezultat + biblioteka

Biblioteka Result +
Biblioteka Result +
Biblioteka Result +
Biblioteka Result +
Biblioteka Result +
Biblioteka Result +
Biblioteka Result +
Biblioteka Result +

"Slika vrijedi hiljadu riječi", slažem se s ovom tvrdnjom, pa evo nekoliko slika krajnjeg rezultata ovog projekta. Ovo su slike gotovog proizvoda, prikaz sa Fritzing PCB -a je perfboard izgled koji sam koristio za izradu svog ruksaka. Možda će vam biti od koristi ako želite napraviti vlastitu. 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 dobijem. Pa ako je neko zainteresovan 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, biblioteku sa kojom se može koristiti ovo kolo. 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 biblioteci, pa je provjerite.

Preporučuje se: