Cuprins:

LCD cu 3 fire HD44780 pentru mai puțin de 1 dolar: 5 pași
LCD cu 3 fire HD44780 pentru mai puțin de 1 dolar: 5 pași

Video: LCD cu 3 fire HD44780 pentru mai puțin de 1 dolar: 5 pași

Video: LCD cu 3 fire HD44780 pentru mai puțin de 1 dolar: 5 pași
Video: Arduino LCD I2C - Tutorial with Arduino Uno 2024, Iulie
Anonim
LCD cu 3 fire HD44780 pentru mai puțin de 1 dolar
LCD cu 3 fire HD44780 pentru mai puțin de 1 dolar

În acest instructiv vom învăța cum putem conecta un LCD bazat pe chipsetul HD44780 la magistrala SPI și să îl conducem cu doar 3 fire pentru mai puțin de 1 USD. Deși mă voi concentra pe afișajul alfanumeric HD44780 în acest tutorial, același principiu va funcționa cam la fel pentru orice alt ecran LCD care utilizează o magistrală de date paralelă de 8 biți și poate fi foarte ușor adaptată pentru a se potrivi afișajelor cu magistrale de date de 16 biți. Ecranele alfanumerice bazate pe HD44780 (și compatibile) sunt de obicei disponibile în configurații 16x2 (2 linii formate din 16 caractere) și configurații 20x4, dar pot fi găsite în multe alte forme. Cel mai „complicat” afișaj ar fi un afișaj de 40x4, acest tip de afișaj este special deoarece are 2 controlere HD44780, unul pentru cele două rânduri superioare și unul pentru cele două rânduri inferioare. Unele LCD-uri grafice au și două controlere. LCD-urile HD44780 sunt grozave, sunt foarte ieftine, lizibile și destul de ușor de lucrat. Dar au și unele dezavantaje, aceste afișaje ocupă o mulțime de pini I / O atunci când sunt conectate la Arduino. În proiectele simple, acest lucru nu este o preocupare, dar atunci când proiectele devin mari, cu o mulțime de IO sau în cazul în care anumite pini sunt necesari pentru lucruri precum o citire analogică sau PWM, faptul că aceste LCD-uri necesită un minim de 6 pini poate deveni un problemă. Dar putem rezolva această problemă într-un mod ieftin și interesant.

Pasul 1: Obținerea componentelor

Am folosit TaydaElectronics pentru majoritatea componentelor pe care le-am folosit în acest proiect. Puteți obține aceste piese și pe eBay, dar pentru ușurință în utilizare, vă voi conecta la Tayda. Listă de cumpărături2 - pachetul 74HC595 DIP161 - Antet masculin generic - 2 pini. Acest lucru nu este necesar, am folosit acest lucru ca o modalitate de a dezactiva permanent iluminarea din spate.3 - Condensator ceramic - capacitate 0,1µF; tensiune 50V1 - Condensator electrolitic - capacitate 10µF; tensiune 35V1 - Condensator ceramic - capacitate 220pF; tensiune 50V1 - NPN-tranzistor - piesa # PN2222A * 1 - 1k Ω Resistor1 - Trimmer Potentiometer - rezistență maximă 5kΩ1 - 470 Ω Rezistor * Cu un tranzistor NPN lumina de fundal va rămâne oprită până când este pornită de software. Dacă doriți să aveți lumina de fundal aprinsă în mod implicit, utilizați un tranzistor de tip PNP. Cu toate acestea, va trebui să se facă modificări în codul bibliotecii furnizate. Subtotalul pentru această listă este de 0,744 USD. Antetul pinului nu este, de asemenea, necesar, astfel încât puteți economisi 15 cenți chiar acolo, iar subtotalul va fi de 0,6 USD.

Pasul 2: Cunoașteți-vă hardware-ul # 1

Cunoaște-ți hardware-ul # 1
Cunoaște-ți hardware-ul # 1

Iată un pin standard dintr-un LCD HD44780, de asemenea, este foarte asemănător cu unele LCD-uri grafice. HD44780 poate funcționa în două moduri: 1. Mod pe 4 biți, în care fiecare octet trimis la LCD constă din 2 părți pe 4 biți. 2. Modul pe 8 biți, pe care ne vom concentra. LCD-ul are 16 pini în total, 3 pini de control și 8 pini de date: RS - Controlează dacă dorim să trimitem o comandă sau date pe LCD. Unde „high” înseamnă date (un caracter) și „low” înseamnă un octet de comandă. R / W - Controlerul HD44780 vă permite să citiți din memoria RAM. Când acest pin este „ridicat” putem citi date din pin-urile sale de date. Când este „scăzut” putem scrie date pe ecranul LCD. Deși opțiunea de a citi de pe LCD poate fi utilă în unele cazuri, nu vom trece peste aceasta în acest tutorial și vom purta pur și simplu acest pin pentru a ne asigura că este întotdeauna în modul Scriere. E - E este pinul „Enable”, acest pin este comutat „ridicat” apoi „scăzut” pentru a scrie datele în memoria RAM și, în cele din urmă, pentru a le afișa pe ecran. DB0-7 - Acestea sunt pinii de date. În modul 4 biți folosim doar cei 4 biți înalți DB4-DB7, iar în modul 8 biți sunt utilizați toți. VSS - Acesta este pinul de masă. VCC - Acesta este pinul de alimentare, LCD rulează o sursă de alimentare de 5V, îl putem alimenta cu ușurință de la pinul Arduino + 5v. Vo - Acesta este pinul care vă permite să setați nivelul de contrast pentru afișaj, necesită un potențiometru, în mod normal este utilizat un pot de 5K Ohm. LED + - Acesta este sursa de alimentare pentru iluminarea din spate. Unele LCD-uri nu vin cu iluminare de fundal și au doar 14 pini. În majoritatea cazurilor, acest pin necesită și o conexiune de + 5 V. LED- - Acesta este terenul pentru iluminarea din spate. ** Este important să verificați foaia tehnică a afișajelor sau să inspectați PCB-ul pentru a verifica dacă există un rezistor de iluminare din spate, majoritatea LCD-urilor le vor construi -în, caz în care tot ce trebuie să faceți este să aplicați puterea la LED + și la masă la LED-. Dar în cazul în care LCD-ul dvs. nu are un rezistor încorporat pentru iluminarea din spate, este important să adăugați unul, altfel iluminarea din spate va consuma multă energie și, în cele din urmă, se va arde. În majoritatea cazurilor, modul în care acest LCD este conectat la Arduino este prin utilizarea acestuia în modul pe 4 biți și împământarea pinului R / W. În acest fel folosim pinii RS, E și DB4-DB7. Rularea în modul pe 4 biți are un alt dezavantaj mic prin faptul că este nevoie de două ori mai mult pentru a scrie date pe ecran decât ar fi necesar într-o configurație pe 8 biți. Ecranul LCD are un timp de „setare” de 37 de microsecunde, ceea ce înseamnă că trebuie să așteptați 37 de microsecunde înainte de a trimite următoarea comandă sau octet de date pe LCD. Deoarece în modul pe 4 biți trebuie să trimitem date de două ori pentru fiecare octet, timpul total necesar pentru a scrie un singur octet ajunge la 74microsecunde. Acest lucru este încă suficient de rapid, dar am vrut ca designul meu să producă cele mai bune rezultate posibile. Soluția la problema noastră cu numărul de pini folosiți se află într-un convertor Serial în Paralel …

Pasul 3: Cunoașteți-vă hardware-ul nr. 2

Cunoașteți-vă hardware-ul nr. 2
Cunoașteți-vă hardware-ul nr. 2

Ceea ce vom face este să construim un adaptor care să preia un tip serial de comunicație care iese din Arduino și să transforme datele într-o ieșire paralelă care poate fi alimentată pe ecranul nostru LCD. Intră cipul 74HC595. Acesta este un registru de schimbare foarte ieftin și simplu de operat. În esență, ceea ce face este să preia un ceas și semnale de date pe care le folosește pentru a umple un tampon intern de 8 biți cu ultimii 8 biți care au fost „conectați”. Odată ce pinul „Latch” (ST_CP) a fost adus „ridicat”, acesta mută acești biți în cele 8 ieșiri. 595 are o caracteristică foarte drăguță, are un pin de ieșire de date seriale (Q7 '), acest pin poate fi utilizat pentru a înlănțui 2 sau mai multe 595 împreună pentru a forma adaptoare Serial to Parallel care au o lățime de 16 sau mai mulți biți. Pentru acest proiect vom avea nevoie de 2 dintre aceste jetoane. Schema poate fi, de asemenea, modificată pentru a funcționa cu un singur 595 în modul pe 4 biți, dar acest lucru nu va fi acoperit de acest tutorial.

Pasul 4: Cablarea totul

Cablarea totul
Cablarea totul

Acum, că știm cum funcționează hardware-ul nostru, le putem conecta la toate. În schemă, vedem 2 595 de jetoane în lanț între ele pentru a forma o ieșire paralelă de 16 biți. Cipul inferior este de fapt cel principal, iar cel superior este legat de el în lanț. Ceea ce vedem aici este că partea de jos 595 conduce pinii de date LCD într-o configurație de 8 biți, cipul de sus controlează semnalul RS și lumina de fundal prin pornirea sau oprirea unui tranzistor. Amintiți-vă * nota despre iluminarea de fundal LCD de pe pagina Cunoașteți hardware-ul dvs. # 1, în cazul în care LCD-ul dvs. nu are un rezistor de iluminare de fundal, nu uitați să adăugați unul în circuit. În cazul meu LCD-urile am venit deja cu un rezistor încorporat, așa că am sărit peste acest pas. Contrastul se aplică printr-un vas de 5K Ohm, un pin merge la GND, al doilea merge la VCC și ștergătorul la pinul Vo de pe LCD. Condensatoarele utilizate pe liniile VCC ale LCD-urilor și 595 sunt condensatoare de decuplare, sunt acolo pentru a scăpa de interferențe. Acestea nu sunt obligatorii dacă lucrați la o placă, dar ar trebui folosite în cazul în care vă construiți propria versiune a acestui circuit pentru a fi folosită în afara „condițiilor de laborator”. R5 și C9 în acea ordine foarte specifică creează o întârziere RC, ceea ce asigură faptul că datele din ieșirile 595 au timp să se stabilizeze înainte ca pinul Activare de pe LCD să fie setat „ridicat” și să citească datele. Q7 'din partea de jos a 595 intră în datele de intrare seriale ale modelului 595 din partea de sus, aceasta creează un lanț de margarete de 595s și, astfel, o interfață de 16 biți. Cablarea până la Arduino este ușoară. Folosim o configurație cu 3 fire, folosind pinii SPI Arduino. Acest lucru permite transferuri de date foarte rapide, trimiterea a 2 octeți pe ecranul LCD durează de obicei aproximativ 8 microsecunde. Acest lucru este foarte rapid și este de fapt mult mai rapid decât timpul necesar LCD-ului pentru a procesa datele, astfel este necesară o întârziere de 30 de microsecunde între fiecare scriere. Un avantaj foarte mare al utilizării SPI este că pinii D11 și D13 sunt partajați cu alte dispozitive SPI. Aceasta înseamnă că, dacă aveți deja o altă componentă care utilizează SPI, cum ar fi un accelerometru, această soluție va utiliza doar un pin suplimentar pentru semnalul de activare. Pe pagina următoare vom vedea rezultatul. Am construit un rucsac pe o perfboard și până acum funcționează foarte bine pentru mine.

Pasul 5: Rezultatul + Biblioteca

Rezultatul + Biblioteca
Rezultatul + Biblioteca
Rezultatul + Biblioteca
Rezultatul + Biblioteca
Rezultatul + Biblioteca
Rezultatul + Biblioteca
Rezultatul + Biblioteca
Rezultatul + Biblioteca

„O imagine merită o mie de cuvinte”, sunt de acord cu această afirmație, așa că iată câteva imagini cu rezultatul final al acestui proiect. Acestea sunt imagini ale produsului completat, vizualizarea Fritzing PCB este aspectul perfboard pe care l-am folosit pentru a-mi construi rucsacul. S-ar putea să vă fie util dacă doriți să vă construiți propriul dvs. Mi-a plăcut atât de mult încât am proiectat un PCB folosind DipTrace și am comandat un lot de 10 PCB-uri. Voi avea nevoie de 2 sau 3 unități pentru mine, dar restul le voi pune la dispoziție la un preț simbolic când le voi primi. Deci, dacă cineva este interesat, vă rog să mă anunțați. * Editați: PCB-urile sunt aici și funcționează. Iată galeria de imagini complete pentru acest proiect, inclusiv PCB-urile reale. https://imgur.com/a/mUkpw#0 Desigur, nu am uitat cel mai important lucru, o bibliotecă cu care să folosesc acest circuit. Este compatibil cu biblioteca LiquidCrystal inclusă cu IDE-ul Arduino, astfel încât să puteți înlocui cu ușurință declarațiile din partea de sus a schiței și să nu trebuie să schimbați nimic altceva în schiță. Există, de asemenea, un exemplu de schiță care demonstrează modul în care funcționează fiecare funcție din bibliotecă, așa că verificați-o.

Recomandat: