Indholdsfortegnelse:

3-Wire HD44780 LCD for mindre end 1 dollar: 5 trin
3-Wire HD44780 LCD for mindre end 1 dollar: 5 trin

Video: 3-Wire HD44780 LCD for mindre end 1 dollar: 5 trin

Video: 3-Wire HD44780 LCD for mindre end 1 dollar: 5 trin
Video: #5 Жидкокристаллический дисплей I2C || ESP8266 FLPROG ЛЕСТНИЧНАЯ ЛОГИКА 2024, Juli
Anonim
3-Wire HD44780 LCD for mindre end 1 dollar
3-Wire HD44780 LCD for mindre end 1 dollar

I denne instruktive vil vi lære, hvordan vi kan tilslutte en LCD baseret på HD44780 -chipsættet til SPI -bussen og køre den med kun 3 ledninger for mindre end $ 1. Selvom jeg vil fokusere på det alfanumeriske display HD44780 i denne vejledning, vil det samme princip fungere stort set det samme for enhver anden LCD, der bruger en 8 bit parallel databus, og den kan meget let tilpasses til skærme med 16 bit databusser. De HD44780 (og kompatible) baserede alfanumeriske skærme er normalt tilgængelige i 16x2 (2 linjer bestående af 16 tegn) og 20x4 konfigurationer, men kan findes i mange flere former. Den mest 'komplicerede' skærm ville være en 40x4 skærm, denne slags skærm er speciel, da den har 2 HD44780 controllere, en til de to øverste række og en til de nederste to rækker. Nogle grafiske LCD'er har også to controllere. HD44780 LCD'erne er fantastiske, de er meget billige, læsbare og ret nemme at arbejde med. Men de har også nogle ulemper, disse skærme optager mange I/O -ben, når de er tilsluttet Arduino. I enkle projekter er dette ikke en bekymring, men når projekter bliver store, med meget IO, eller hvor der er brug for bestemte ben til ting som f.eks. En analog læsning eller PWM, kan det faktum, at disse LCD -skærme kræver mindst 6 ben, blive en problem. Men vi kan løse dette problem på en billig og interessant måde.

Trin 1: Hent komponenterne

Jeg brugte TaydaElectronics til de fleste af de komponenter, jeg brugte i dette projekt. Du kan også få disse dele på ebay, men for nem betjening vil jeg linke dig til Tayda. Shopping List2 - 74HC595 pakke DIP161 - Generisk hanhoved - 2 ben. Dette er ikke påkrævet, jeg brugte dette som en måde til permanent at deaktivere baggrundslys.3 - Keramisk kondensator - kapacitans 0.1µF; spænding 50V1 - Elektrolytisk kondensator - kapacitans 10µF; spænding 35V1 - Keramisk kondensator - kapacitans 220pF; spænding 50V1 - NPN -Transistor - del # PN2222A* 1 - 1k Ω Modstand1 - Trimmerpotentiometer - maksimal modstand 5kΩ1 - 470 Ω Modstand* Med en NPN -transistor forbliver baggrundslyset slukket, indtil det tændes af software. Hvis du vil have baggrundsbelysningen som standard, skal du bruge en transistor af PNP -type. Ændringer i koden til biblioteket skal dog foretages. Subtotalen for denne liste er $ 0,744. Pin -overskriften er heller ikke påkrævet, så du kan spare 15 cent lige dér, og delsummen vil være $ 0,6.

Trin 2: Kend din hardware #1

Kend din hardware #1
Kend din hardware #1

Her er en standardnål ud af en HD44780 LCD, den ligner også meget på nogle grafiske LCD'er. HD44780 kan fungere i to tilstande: 1. 4-bit-tilstand, hvor hver byte, der sendes til LCD-skærmen, består af 2 4-bit-dele. 2. 8-bit-tilstand, som vi vil fokusere på. LCD'en har i alt 16 ben, 3 kontrolnåle og 8 datastifter: RS - Kontrollerer, om vi vil sende en kommando eller data til LCD'et. Hvor 'høj' betyder data (et tegn) og 'lav' betyder en kommandobyte. R/W - HD44780 -controlleren giver dig mulighed for at læse fra dets RAM. Når denne pin er 'høj' kan vi læse data fra dens datapinde. Når det er 'lavt', kan vi skrive data til LCD'et. Selvom muligheden for at læse fra LCD i nogle tilfælde kan være nyttig, vil vi ikke gå over det i denne vejledning, og vi vil ganske enkelt jordføre denne pin for at sikre, at den altid er i skrivemåde. E - E er 'Aktiver' -nålen, denne pin skiftes 'høj' og derefter 'lav' for at skrive dataene til dens RAM og til sidst vise dem på skærmen. DB0-7 - Disse er datastifterne. I 4 -bit -tilstand bruger vi kun de 4 høje bits DB4 -DB7, og i 8 -bit -tilstand bruges alle. VSS - Dette er jordstiften. VCC - Dette strømstiften, LCD'et kører fra en 5V strømforsyning, vi kan let tilføre den strøm fra Arduino's + 5v pin. Vo - Dette er stiften, som giver dig mulighed for at indstille kontrastniveauet for displayet, det kræver et potentiometer, normalt bruges en 5K Ohm pot. LED + - Dette er strømkilde til baggrundsbelysningen. Nogle LCD -skærme har ikke baggrundsbelysning og har kun 14 ben. I de fleste tilfælde kræver denne pin også en +5v forbindelse. LED- - Dette er grunden til baggrundsbelysningen. ** Det er vigtigt at kontrollere displayets datablad eller inspicere dets printkort for at kontrollere, om der er en modlys i modlys, de fleste LCD'er får dem bygget -i så er det eneste du skal gøre at tilslutte strøm til LED+ og jord til LED-. Men hvis din LCD ikke har en indbygget modstand til baggrundsbelysningen, er det vigtigt, at du tilføjer en, ellers vil baggrundslyset forbruge meget strøm, og det vil i sidste ende brænde ud. I de fleste tilfælde er denne LCD tilsluttet Arduino ved at bruge den i 4-bit-tilstand og jordforbindelse af R/W-stiften. På denne måde bruger vi ben RS, E og DB4-DB7. Kørsel i 4-bit-tilstand har en anden lille ulempe ved, at det tager dobbelt så lang tid at skrive data til skærmen, som det ville tage i en 8-bit konfiguration. LCD'et har en "afregningstid" på 37 mikrosekunder, hvilket betyder, at du skal vente 37 mikrosekunder, før du sender den næste kommando eller databyte til LCD'et. Da vi i 4-bit-tilstand skal sende data to gange for hver byte, går den samlede tid, det tager at skrive en enkelt byte, op til 74 mikrosekunder. Dette er stadig hurtigt nok, men jeg ville have, at mit design gav de bedst mulige resultater. Løsningen på vores problem med antallet af ben, der bruges, ligger i en seriel til parallel konverter …

Trin 3: Kend din hardware #2

Kend din hardware #2
Kend din hardware #2

Hvad vi vil gøre, er at bygge en adapter, der tager en seriel kommunikationstype, der kommer ud af Arduino og konverterer dataene til en parallel udgang, som kan føres til vores LCD. Ind kommer 74HC595 -chippen. Dette er et meget billigt og enkelt at betjene skiftregister. I det væsentlige, hvad det gør, er at optage et ur og datasignaler, som det bruger til at fylde en intern 8 -bit buffer med de 8 sidste bits, der blev 'klokket ind'. Når 'Latch' (ST_CP) pin er blevet bragt 'high', flytter den disse bits ind i sine 8 udgange. 595 har en meget flot funktion, den har en seriel data out pin (Q7 '), denne pin kan bruges til at daisy kæde 2 eller flere 595'ere sammen for at danne Serial to Parallel adaptere, som er 16 eller flere bits brede. Til dette projekt skal vi bruge 2 af disse chips. Skematikken kan også ændres til at fungere med en enkelt 595 i 4-bit-tilstand, men dette dækkes ikke af denne vejledning.

Trin 4: Tilslut det hele

Tilslutning af det hele
Tilslutning af det hele

Nu hvor vi ved, hvordan vores hardware fungerer, kan vi koble det hele sammen. I skematikken ser vi 2 595 chips, daisy, der er kædet sammen for at danne et 16 bit parallelt output. Den nederste chip er faktisk den vigtigste, og den øverste er daisy lænket til den. Hvad vi ser her er, at bunden 595 driver LCD-datapinnene i en 8-bit konfiguration, den øverste chip styrer RS-signalet og baggrundsbelysningen ved at tænde eller slukke en transistor. Husk *notatet om LCD -baggrundsbelysningen på Kend din hardware #1 -side, hvis din LCD ikke har en baggrundsbelysningsmodstand, glem ikke at tilføje en i dit kredsløb. I mit tilfælde LCD'erne er jeg allerede kommet med en indbygget modstand, så jeg sprang over dette trin. Kontrasten påføres gennem en 5K Ohm pot, en pin går til GND den anden går til VCC og viskeren til Vo pin på LCD'et. Kondensatorerne, der bruges på LCD'erne og 595's VCC -linjer, afkobler kondensatorer, de er der for at slippe af med interferens. De er ikke et must, hvis du arbejder på et brødbræt, men skal bruges, hvis du bygger din egen version af dette kredsløb, der skal bruges uden for "laboratorieforhold". R5 og C9 i den helt specifikke rækkefølge skaber en RC -forsinkelse, som sørger for, at dataene i 595's udgange når at stabilisere sig, før Aktiver pin på LCD'et sættes 'højt' og læser dataene. Q7 'i bunden 595 går ind i seriel datainput på 595 på toppen, dette skaber en daisy kæde på 595s og dermed en 16 bit grænseflade. Tilslutning til Arduino er let. Vi bruger en 3-leder konfiguration ved hjælp af Arduinos SPI-ben. Dette giver mulighed for meget hurtige dataoverførsler, afsendelse af 2 bytes til LCD'et tager normalt omkring 8 mikrosekunder. Dette er meget hurtigt, og det er faktisk meget hurtigere end den tid, det tager LCD at behandle dataene, og derfor er en forsinkelse på 30 mikrosekunder nødvendig mellem hver skrivning. En meget stor fordel ved at bruge SPI er, at benene D11 og D13 deles med andre SPI -enheder. Det betyder, at hvis du allerede har en anden komponent, der bruger SPI, f.eks. Et accelerometer, bruger denne løsning kun en ekstra pin til aktiveringssignalet. På den næste side ser vi resultatet. Jeg har bygget en rygsæk på et perfboard, og det fungerer meget godt for mig indtil videre.

Trin 5: Resultatet + bibliotek

Resultatet + bibliotek
Resultatet + bibliotek
Resultatet + bibliotek
Resultatet + bibliotek
Resultatet + bibliotek
Resultatet + bibliotek
Resultatet + bibliotek
Resultatet + bibliotek

"Et billede er tusind ord værd", jeg er enig i dette udsagn, så her er nogle billeder af slutresultatet for dette projekt. Dette er billeder af det færdige produkt, Fritzing PCB -visningen er det perfboard -layout, jeg brugte til at bygge min rygsæk. Du kan finde det nyttigt, hvis du vil bygge dit eget. Jeg kunne lide det så meget, at jeg designede et printkort ved hjælp af DipTrace og bestilte et parti på 10 PCB. Jeg skal bruge 2 eller 3 enheder til mig selv, men vil stille resten til rådighed til en symbolsk pris, når jeg modtager dem. Så hvis nogen er interesseret, så lad mig det vide. * Edit: PCB'erne er her, og de fungerer. Her er hele billedgalleriet til dette projekt, inklusive de faktiske printkort. https://imgur.com/a/mUkpw#0 Selvfølgelig glemte jeg ikke det vigtigste, et bibliotek at bruge dette kredsløb med. Det er kompatibelt med LiquidCrystal -biblioteket, der følger med Arduino IDE, så du nemt kan erstatte deklarationerne øverst på din skitse og ikke behøver at ændre noget andet i din skitse. Der er også et eksempel på en skitse, der viser, hvordan hver funktion i biblioteket fungerer, så tjek det.

Anbefalede: