Innholdsfortegnelse:

3-Wire HD44780 LCD for mindre enn 1 dollar: 5 trinn
3-Wire HD44780 LCD for mindre enn 1 dollar: 5 trinn

Video: 3-Wire HD44780 LCD for mindre enn 1 dollar: 5 trinn

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

I denne instruksen vil vi lære hvordan vi kan koble en LCD basert på HD44780 -brikkesettet til SPI -bussen og kjøre den med bare 3 ledninger for mindre enn $ 1. Selv om jeg vil fokusere på den alfanumeriske HD44780 -skjermen i denne opplæringen, vil det samme prinsippet fungere stort sett det samme for alle andre LCD -skjermer som bruker en 8 -biters parallell databuss, og den kan veldig lett tilpasses skjermer med 16 -biters databusser. De HD44780 (og kompatible) baserte alfanumeriske skjermer er vanligvis tilgjengelige i 16x2 (2 linjer bestående av 16 tegn) og 20x4 konfigurasjoner, men finnes i mange flere former. Den mest 'kompliserte' skjermen vil være en 40x4 skjerm. Denne typen skjerm er spesiell siden den har 2 HD44780 -kontrollere, en for de to øverste radene og en for de to nederste radene. Noen grafiske LCD -skjermer har også to kontrollere. HD44780 LCD -skjermene er flotte, de er veldig billige, lesbare og ganske enkle å jobbe med. Men de har også noen ulemper. Disse skjermene tar mange I/O -pinner når de er koblet til Arduino. I enkle prosjekter er dette ikke en bekymring, men når prosjekter blir store, med mye IO, eller hvor visse pinner er nødvendige for ting som analog lesing eller PWM, kan det faktum at disse LCD -skjermene krever minst 6 pinner bli en problem. Men vi kan løse dette problemet på en billig og interessant måte.

Trinn 1: Hente komponentene

Jeg brukte TaydaElectronics for de fleste komponentene jeg brukte i dette prosjektet. Du kan også få disse delene på ebay, men for enkel brukervennlighet vil jeg koble deg til Tayda. Shopping List2 - 74HC595 pakke DIP161 - Generisk hannhodet - 2 pins. Dette er ikke nødvendig, jeg brukte dette som en måte å permanent deaktivere bakgrunnsbelysning.3 - Keramisk kondensator - kapasitans 0.1µF; spenning 50V1 - Elektrolytisk kondensator - kapasitans 10µF; spenning 35V1 - Keramisk kondensator - kapasitans 220pF; spenning 50V1 - NPN -transistor - del # PN2222A* 1 - 1k Ω Motstand1 - Trimmerpotensiometer - maksimal motstand 5kΩ1 - 470 Ω motstand* Med en NPN -transistor vil bakgrunnslyset forbli av til det slås på av programvare. Hvis du vil ha bakgrunnsbelysningen som standard, bruk en transistor av PNP -type. Endringer i koden til biblioteket som tilbys, må imidlertid gjøres. Delsummen for denne listen er $ 0,744. Pin -overskriften er heller ikke nødvendig, så du kan spare 15 cent der og summen vil være $ 0,6.

Trinn 2: Kjenn maskinvaren din #1

Kjenn maskinvaren din #1
Kjenn maskinvaren din #1

Her er en standard pin fra en HD44780 LCD, den er også veldig lik noen grafiske LCD -skjermer. HD44780 kan fungere i to moduser: 1. 4-bits modus, hvor hver byte som sendes til LCD-skjermen består av 2 4-biters deler. 2. 8-biters modus, som vi vil fokusere på. LCD -skjermen har totalt 16 pinner, 3 kontrollpinner og 8 datapinner: RS - Kontrollerer om vi vil sende en kommando eller data til LCD -skjermen. Hvor 'høy' betyr data (et tegn) og 'lav' betyr en kommandobyte. R/W - HD44780 -kontrolleren lar deg lese fra RAM -en. Når denne pinnen er 'høy' kan vi lese data fra datapinnene. Når den er 'lav' kan vi skrive data til LCD -skjermen. Selv om muligheten til å lese fra LCD -skjermen kan være nyttig i noen tilfeller, vil vi ikke gå over det i denne opplæringen, og vi vil ganske enkelt jorde denne pinnen for å sikre at den alltid er i skrivemodus. E - E er 'Aktiver' -nålen Denne pinnen veksles 'høy' og deretter 'lav' for å skrive dataene til RAM -en og til slutt vise den på skjermen. DB0-7 - Dette er datapinnene. I 4 -biters modus bruker vi bare de 4 høye bitene DB4 -DB7, og i 8 -biters modus brukes alle. VSS - Dette er bakkenålen. VCC - Dette er strømpinnen, LCD -en går fra en 5V strømforsyning, vi kan enkelt mate den med strøm fra Arduino + 5v pin. Vo - Dette er pinnen som lar deg stille kontrastnivået for displayet, det krever et potensiometer, normalt brukes en 5K Ohm gryte. LED + - Dette er strømkilde for bakgrunnsbelysningen. Noen LCD -skjermer har ikke bakgrunnsbelysning, og har bare 14 pinner. I de fleste tilfeller krever denne pinnen også en +5v -tilkobling. LED- - Dette er bakken for bakgrunnsbelysningen. ** Det er viktig å sjekke skjermdatabladet eller inspisere kretskortet for å se om det er en motlys i motstanden, de fleste LCD -skjermer vil få dem bygget -I så fall er alt du trenger å gjøre å koble til LED+ og jord til LED-. Men i tilfelle LCD-skjermen din ikke har en innebygd motstand for bakgrunnsbelysningen, er det viktig at du legger til en, ellers vil bakgrunnsbelysningen forbruke mye strøm og den vil til slutt brenne ut. I de fleste tilfeller er denne LCD-skjermen koblet til Arduino ved å bruke den i 4-biters modus og jording av R/W-pinnen. På denne måten bruker vi pinnene RS, E og DB4-DB7. Å kjøre i 4-bits modus har en annen liten ulempe ved at det tar dobbelt så lang tid å skrive data til skjermen som det ville ta i en 8-bits konfigurasjon. LCD-skjermen har en "settling" -tid på 37 mikrosekunder, dette betyr at du må vente 37 mikrosekunder før du sender den neste kommandoen eller databyte til LCD-skjermen. Siden vi i 4-bits modus må sende data to ganger for hver byte, går den totale tiden det tar å skrive en enkelt byte opp til 74 mikrosekunder. Dette er fortsatt raskt nok, men jeg ønsket at designet mitt skulle gi best mulig resultat. Løsningen på problemet vårt med antall pinner som brukes ligger i en seriell til parallell omformer …

Trinn 3: Kjenn maskinvaren din #2

Kjenn maskinvaren din #2
Kjenn maskinvaren din #2

Det vi skal gjøre er å bygge en adapter som tar en seriell kommunikasjonstype som kommer ut av Arduino og konverterer dataene til en parallell utgang som kan mates til LCD -skjermen. Inn kommer 74HC595 -brikken. Dette er et veldig billig og enkelt å betjene skiftregister. I hovedsak er det å ta inn en klokke og datasignaler som den bruker for å fylle en intern 8 -biters buffer med de 8 siste bitene som ble 'klokket inn'. Når "Latch" (ST_CP) -pinnen er brakt "høy", flytter den disse bitene inn i de åtte utgangene. 595 har en veldig fin funksjon, den har en seriell data out pin (Q7 '), denne pinnen kan brukes til å kjede 2 eller flere 595 sammen for å danne Serial to Parallel adaptere som er 16 eller flere bits brede. For dette prosjektet trenger vi 2 av disse sjetongene. Skjematikken kan også endres for å fungere med en enkelt 595 i 4-bits modus, men dette dekkes ikke av denne opplæringen.

Trinn 4: Koble til alt

Kabling av det hele
Kabling av det hele

Nå som vi vet hvordan maskinvaren vår fungerer, kan vi koble alt sammen. I skjematikken ser vi 2 595 chips daisy lenket sammen for å danne en 16 biters parallell utgang. Den nederste brikken er faktisk den viktigste, og den øvre er tusenfryd lenket til den. Det vi ser her er at bunnen 595 driver LCD-datapinnene i en 8-bits konfigurasjon, den øverste brikken styrer RS-signalet og bakgrunnsbelysningen ved å slå en transistor på eller av. Husk *notatet om LCD -bakgrunnsbelysningen på Kjenn maskinvare nr. 1 -siden, i tilfelle LCD -skjermen ikke har en motlys for motlys, ikke glem å legge til en i kretsen din. I mitt tilfelle LCD-skjermene har jeg allerede kommet med en innebygd motstand, så jeg hoppet over dette trinnet. Kontrasten påføres gjennom en 5K Ohm -pott, en pinne går til GND den andre går til VCC og viskeren til Vo -pinnen på LCD -skjermen. Kondensatorene som brukes på LCD- og 595s VCC -linjer, kobler fra kondensatorer, de er der for å bli kvitt forstyrrelser. De er ikke et must hvis du jobber med et brødbrett, men bør brukes hvis du bygger din egen versjon av denne kretsen som skal brukes utenfor "laboratorieforhold". R5 og C9 i den helt spesifikke rekkefølgen skaper en RC -forsinkelse, som sørger for at dataene i 595s utganger har tid til å stabilisere seg før Aktiver pinnen på LCD -skjermen settes 'høy' og leser dataene. Q7 'i bunnen 595 går inn i seriell datainngang på 595 på toppen, dette skaper en tusenfrydkjede på 595s og dermed et 16 -biters grensesnitt. Det er enkelt å koble til Arduino. Vi bruker en 3-leder konfigurasjon, ved hjelp av Arduinos SPI-pinner. Dette gir mulighet for svært raske dataoverføringer, og å sende 2 byte til LCD -skjermen tar vanligvis omtrent 8 mikrosekunder. Dette er veldig raskt, og det er faktisk mye raskere enn tiden det tar på LCD -skjermen å behandle dataene, og derfor er det nødvendig med en forsinkelse på 30 mikrosekunder mellom hver skriving. En veldig stor fordel med å bruke SPI er at pinnene D11 og D13 deles med andre SPI -enheter. Dette betyr at hvis du allerede har en annen komponent som bruker SPI, for eksempel et akselerometer, vil denne løsningen bare bruke en ekstra pin for aktiveringssignalet. På neste side vil vi se resultatet. Jeg har bygget en ryggsekk på et perfboard, og det fungerer veldig bra for meg så langt.

Trinn 5: Resultatet + bibliotek

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

"Et bilde er verdt tusen ord", jeg er enig i denne påstanden, så her er noen bilder av sluttresultatet for dette prosjektet. Dette er bilder av det ferdige produktet. Fritzing PCB -visning er perfboardoppsettet jeg brukte til å bygge sekken min. Du kan finne det nyttig hvis du vil bygge ditt eget. Jeg likte det så godt at jeg designet en PCB ved hjelp av DipTrace og bestilte en batch på 10 PCB. Jeg trenger 2 eller 3 enheter for meg selv, men vil gjøre resten tilgjengelig for en symbolsk pris når jeg mottar dem. Så hvis noen er interessert, vennligst gi meg beskjed. * Rediger: PCB -ene er her, og de fungerer. Her er hele bildegalleriet for dette prosjektet, inkludert selve PCB -ene. https://imgur.com/a/mUkpw#0 Selvfølgelig glemte jeg ikke det viktigste, et bibliotek å bruke denne kretsen med. Det er kompatibelt med LiquidCrystal -biblioteket som følger med Arduino IDE, slik at du enkelt kan erstatte deklarasjonene øverst på skissen og slippe å endre noe annet i skissen din. Det er også et eksempelskisse som viser hvordan hver funksjon i biblioteket fungerer, så sjekk det.

Anbefalt: