Innehållsförteckning:

3-trådig HD44780 LCD för mindre än 1 dollar: 5 steg
3-trådig HD44780 LCD för mindre än 1 dollar: 5 steg

Video: 3-trådig HD44780 LCD för mindre än 1 dollar: 5 steg

Video: 3-trådig HD44780 LCD för mindre än 1 dollar: 5 steg
Video: HUSKYLOCK™ S15 - 3-trådig smal flatlocksöm 2024, November
Anonim
3-tråds HD44780 LCD för mindre än 1 dollar
3-tråds HD44780 LCD för mindre än 1 dollar

I den här instruktionsboken lär vi oss hur vi kan ansluta en LCD -skärm baserad på HD44780 -chipset till SPI -bussen och köra den med endast 3 ledningar för mindre än $ 1. Även om jag kommer att fokusera på den alfanumeriska HD44780 -skärmen i denna handledning, kommer samma princip att fungera i stort sett samma för alla andra LCD -skärmar som använder en 8 -bitars parallell databuss, och den kan mycket enkelt anpassas för att passa skärmar med 16 -bitars databussar. De HD44780 (och kompatibla) alfanumeriska skärmarna är vanligtvis tillgängliga i 16x2 (2 rader bestående av 16 tecken) och 20x4 konfigurationer, men finns i många fler former. Den mest "komplicerade" skärmen skulle vara en 40x4 -skärm, denna typ av skärm är speciell eftersom den har 2 HD44780 -kontroller, en för de övre två raderna och en för de två nedre raderna. Vissa grafiska LCD -skärmar har också två kontroller. HD44780 LCD -skärmar är fantastiska, de är mycket billiga, läsbara och ganska lätta att arbeta med. Men de har också några nackdelar, dessa skärmar tar upp många I/O -stift när de är anslutna till Arduino. I enkla projekt är detta inte ett problem, men när projekt blir stora, med mycket IO, eller där vissa stift behövs för saker som en analog läsning eller PWM, kan det faktum att dessa LCD -skärmar kräver minst 6 stift bli en problem. Men vi kan lösa detta problem på ett billigt och intressant sätt.

Steg 1: Skaffa komponenterna

Jag använde TaydaElectronics för de flesta komponenter som jag använde i detta projekt. Du kan också få dessa delar på ebay, men för enkel användning kommer jag att länka dig till Tayda. Shopping List2 - 74HC595 -paket DIP161 - Generisk manlig rubrik - 2 stift. Detta krävs inte, jag använde detta som ett sätt att permanent inaktivera bakgrundsbelysning.3 - Keramisk kondensator - kapacitans 0.1µF; spänning 50V1 - Elektrolytkondensator - kapacitans 10µF; spänning 35V1 - Keramisk kondensator - kapacitans 220pF; spänning 50V1 - NPN -transistor - del # PN2222A* 1 - 1k Ω Resistor1 - Trimmerpotentiometer - maximalt motstånd 5kΩ1 - 470 Ω motstånd* Med en NPN -transistor kommer bakgrundsbelysningen att vara avstängd tills den slås på av programvara. Om du vill ha bakgrundsbelysningen som standard använder du en transistor av PNP -typ. Ändringar i koden för det tillhandahållna biblioteket måste dock göras. Delsumma för denna lista är $ 0,744. Stifthuvudet krävs inte heller, så du kan spara 15 cent där och summan blir $ 0,6.

Steg 2: Känn din hårdvara #1

Lär känna din hårdvara #1
Lär känna din hårdvara #1

Här är en standardstift från en HD44780 LCD, den liknar också mycket på vissa grafiska LCD -skärmar. HD44780 kan fungera i två lägen: 1. 4-bitars läge, där varje byte som skickas till LCD-skärmen består av 2 4-bitars delar. 2. 8-bitars läge, som vi kommer att fokusera på. LCD -skärmen har totalt 16 stift, 3 kontrollnålar och 8 datastiften: RS - Styr om vi vill skicka ett kommando eller data till LCD -skärmen. Där "hög" betyder data (ett tecken) och "lågt" betyder en kommandobyte. R/W - Med HD44780 -styrenheten kan du läsa från dess RAM. När denna pin är "hög" kan vi läsa data från dess datapinnar. När den är "låg" kan vi skriva data till LCD -skärmen. Även om alternativet att läsa från LCD -skärmen kan vara användbart i vissa fall, kommer vi inte att gå igenom det i den här självstudien, och vi kommer helt enkelt att jorda denna pin för att säkerställa att den alltid är i skrivläge. E - E är "Aktivera" -nålen, denna stift växlar 'hög' sedan 'låg' för att skriva data till dess RAM -minne och så småningom visa dem på skärmen. DB0-7 - Det här är datastiften. I 4 -bitarsläge använder vi bara de 4 höga bitarna DB4 -DB7, och i 8 -bitarsläget används alla. VSS - Detta är jordstiftet. VCC - Detta är strömstiften, LCD -skärmen går från en 5V strömförsörjning, vi kan enkelt mata den från Arduino + 5v -stiftet. Vo - Detta är stiftet som låter dig ställa in kontrastnivån för displayen, det kräver en potentiometer, normalt används en 5K Ohm -gryta. LED + - Detta är strömkälla för bakgrundsbelysningen. Vissa LCD -skärmar har inte bakgrundsbelysning och har bara 14 stift. I de flesta fall kräver denna pin också en +5v -anslutning. LED- - Detta är grunden för bakgrundsbelysningen. ** Det är viktigt att kontrollera bildskärmens datablad eller inspektera dess kretskort för att leta efter ett motljusmotstånd, de flesta LCD -skärmar kommer att ha dem byggda -i så är allt du behöver göra att slå på LED+ och jorda till LED-. Men om din LCD-skärm inte har ett inbyggt motstånd för bakgrundsbelysningen är det viktigt att du lägger till ett, annars kommer bakgrundsbelysningen att förbruka mycket ström och det kommer så småningom att brinna ut. I de flesta fall är den här LCD-skärmen ansluten till Arduino genom att använda den i 4-bitars läge och jorda R/W-stiftet. På så sätt använder vi stiften RS, E och DB4-DB7. Att köra i 4-bitars läge har en annan liten nackdel genom att det tar dubbelt så lång tid att skriva data till skärmen som det skulle ta i en 8-bitars konfiguration. LCD-skärmen har en "avvecklingstid" på 37 mikrosekunder, det betyder att du måste vänta 37 mikrosekunder innan du skickar nästa kommando eller databyte till LCD-skärmen. Eftersom vi i 4-bitars läge måste skicka data två gånger för varje byte, går den totala tiden det tar att skriva en enda byte upp till 74 mikrosekunder. Detta är fortfarande tillräckligt snabbt, men jag ville att min design skulle ge bästa möjliga resultat. Lösningen på vårt problem med antalet stift som används ligger i en seriell till parallell omvandlare …

Steg 3: Känn din hårdvara #2

Känn din hårdvara #2
Känn din hårdvara #2

Vad vi ska göra är att bygga en adapter som tar en seriell typ av kommunikation som kommer ut från Arduino och omvandlar data till en parallell utgång som kan matas till vår LCD. In kommer 74HC595 -chipet. Detta är ett mycket billigt och enkelt att använda skiftregister. I huvudsak är det att ta in en klocka och datasignaler som den använder för att fylla en intern 8 bitars buffert med de 8 sista bitarna som "klockades in". När "Latch" (ST_CP) -nålen har kommit "hög" flyttar den dessa bitar till sina 8 utgångar. 595 har en mycket trevlig funktion, den har en seriell data ut -stift (Q7 '), den här stiftet kan användas för att koppla ihop 2 eller fler 595: er tillsammans för att bilda seriella till parallella adaptrar som är 16 eller fler bitar breda. För detta projekt behöver vi 2 av dessa marker. Schemat kan också modifieras för att fungera med en enda 595 i 4-bitars läge, men detta täcks inte av denna handledning.

Steg 4: Anslut allt

Koppla upp allt
Koppla upp allt

Nu när vi vet hur vår hårdvara fungerar kan vi koppla ihop allt. I schemat ser vi 2 595 chips daisy kedjade ihop för att bilda en 16 bitars parallell utgång. Det nedre chipet är faktiskt det huvudsakliga, och det övre är tusenskakat. Det vi ser här är att botten 595 driver LCD-datapinnarna i en 8-bitars konfiguration, det översta chipet styr RS-signalen och bakgrundsbelysningen genom att slå på eller stänga av en transistor. Kom ihåg *anteckningen om LCD -bakgrundsbelysningen på Vet din maskinvara #1 -sida, om din LCD -skärm inte har ett motljusmotstånd, glöm inte att lägga till en i din krets. I mitt fall LCD-skärmarna har jag redan kommit med ett inbyggt motstånd, så jag hoppade över det här steget. Kontrasten appliceras genom en 5K Ohm -gryta, en stift går till GND den andra går till VCC och torkaren till Vo -stiftet på LCD -skärmen. Kondensatorerna som används på LCD: ns och 595: s VCC -linjer avkopplar kondensatorer, de är där för att bli av med störningar. De är inte ett måste om du arbetar på en brödbräda, men bör användas om du bygger din egen version av denna krets som ska användas utanför "labbetingelser". R5 och C9 i den mycket specifika ordningen skapar en RC -fördröjning, som ser till att data i 595: s utgångar har tid att stabiliseras innan Aktivera stift på LCD -skärmen sätts 'hög' och läser data. Q7 'i botten 595 går in i den seriella datainmatningen på 595 på toppen, detta skapar en daisy -kedja på 595s och därmed ett 16 -bitars gränssnitt. Anslutning till Arduino är lätt. Vi använder en 3-trådskonfiguration med Arduinos SPI-stift. Detta möjliggör mycket snabba dataöverföringar, att skicka 2 byte till LCD -skärmen tar vanligtvis cirka 8 mikrosekunder. Detta är mycket snabbt, och det är faktiskt mycket snabbare än den tid det tar på LCD -skärmen att bearbeta data, så en fördröjning på 30 mikrosekunder behövs mellan varje skrivning. En mycket stor fördel med att använda SPI är att stiften D11 och D13 delas med andra SPI -enheter. Det betyder att om du redan har en annan komponent som använder SPI, till exempel en accelerometer, kommer denna lösning bara att använda en extra stift för aktiveringssignalen. På nästa sida kommer vi att se resultatet. Jag har byggt en ryggsäck på en perfektbräda och det fungerar väldigt bra för mig hittills.

Steg 5: Resultatet + bibliotek

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

"En bild är värd tusen ord", jag håller med om detta påstående, så här är några bilder på slutresultatet för detta projekt. Det här är bilder på den färdiga produkten, Fritzing PCB -vyn är perfboard -layouten som jag använde för att bygga min ryggsäck. Du kan tycka att det är användbart om du vill bygga ditt eget. Jag gillade det så mycket att jag konstruerade ett kretskort med DipTrace och beställde ett parti med 10 kretskort. Jag kommer att behöva 2 eller 3 enheter för mig själv men kommer att göra resten tillgängligt för ett symboliskt pris när jag får dem. Så om någon är intresserad så säg till. * Edit: PCB: erna är här och de fungerar. Här är hela bildgalleriet för detta projekt, inklusive själva PCB. https://imgur.com/a/mUkpw#0 Naturligtvis glömde jag inte det viktigaste, ett bibliotek att använda den här kretsen med. Det är kompatibelt med LiquidCrystal -biblioteket som ingår i Arduino IDE, så att du enkelt kan ersätta deklarationerna högst upp på din skiss och inte behöver ändra något annat i din skiss. Det finns också en exempelskiss som visar hur varje funktion i biblioteket fungerar, så kolla in det.

Rekommenderad: