Julkort med inbyggd retro videospel för under $10 (17 / 17 steg)
Steg 17: Beskrivning av hur kretsen fungerar.
8 x 8 LED matrix displayen ansluts (tro det eller ej) i en matris. Detta innebär att du inte bara har 2 anslutningar för varje led (av vilka det finns 64 LED) istället, lysdioder är anslutna så att vi kan lysa upp varje LED i matrisen och det gör vi bara kräver 16 anslutningar (snarare än 128 gör det individuellt)
Du kommer att märka bilden till vänster har 64 LED är ansluten i ett 8 x 8 ledde matrisen. Det finns 8 kolumner där katoder är alla anslutna tillsammans och också 8 rader där anoderna är alla anslutna tillsammans. Bilden till höger kommer att användas att visa hur vi får matrix att göra vad vi vill.
(Se Foto 1)Låt oss börja trevlig och enkel. Vad händer om vi ville vända på bara övre höger LED. Tja. Vi skulle behöva marken rätt de flesta katoden och sedan ansluta topp anoden till våra strömförsörjning (+ 5v) genom en resistor, precis som denna nästa bild:
(SE BILD 2)Du kanske också har gissat att om vi ansluter + 5v till den översta raden av anoder då varje anoden upp toppen kommer att ha + 5v ansluten till den. Anledningen till att bara översta högra lysdioden tänds är att vi har endast anslutna marken till höger de flesta kolumn med katoder. Vi behöver den kombination av + 5v och jord för att slutföra kretsen för att slå på vilken LED eller lysdioder att vi vill ha.
Vad händer om vi ville vända på en hel kolumn av LED? Vi kommer du vill ansluta din matris enligt följande:
(Se foto 3)
Eller kanske vill du slå på en hel rad?
(Se foto 4)Jag kommer att använda denna nästa krets för att förklara saker lite längre.
(SE BILD 5)För att hjälpa oss med scanning displayen, använder vi en 7442 1 av 10 dekoder.
(Se bild 6)7442 är ett 16 pin chip, naturligtvis har en + 5v anslutning och marken för att driva upp. Det har också fyra ingångar nämligen A, B, C och D. Slutligen, har 10 utgångar - 0, 1, 2, 3, 4, 5, 6, 7, 8 och 9. Det är en enkel chip att arbeta med. Resultaten varierar beroende på vilken kombination av 1 och 0 är på ingångarna. Alla utgångar av detta chip kommer att vara en hög utom en logik. Att en beror på indata. Här är ett diagram som visar vad resultatet blir för alla kombinationer av ingångar
(Se bild 7)
ta en titt på 7442 utdata, vi kan göra en av utgångarna lågt (eller ganska mycket ansluta den till marken) genom att ge en viss kombination på indata. Om vi ville utgång 0 låg då vi skulle mata in 0000 eller om vi ville utgång 6 låg vi sedan skulle ingång 0110 osv...
Vi kräver bara 8 (av 10) utgångar från detta chip till detta använder vi dessa 8 kombinationer på ingång:
000
001
010
011
100
101
110
111
Detta innebär att vi inte behöver använda fjärde inmatningsraden (D) så det är därför jag har anslutit det direkt till marken och endast de första tre ingångarna (A, B och C) är anslutna till mikrokontroller så vi kan styra dem. Så innebär det att vi har en av dessa åtta kombinationer på ingångarna:
0000
0001
0010
0011
0100
0101
0110
0111
Så förhoppningsvis kan du se att med hjälp av detta chip, vi kan 'Aktivera' en kolumn med katoder i taget genom att ansluta en kolumn i taget till marken (logik 0) och att göra detta är det bara krävs 3 I/O linjer från mikrokontroller - utan 7442, vi skulle ha krävt 8 I/O linjer och vi har bara sju att skona (eftersom PORTB används för anoderna och PORTA stift 5 kan inte vara en utgång)
Så nu arbetar vi för att rita en bild på skärmen. Här är vad vi vill göra:
(Se bild 8)
Nu du kan mycket väl fråga "som är en vacker bild, men hur drar vi en bild med alla dessa LED är lyste upp på en gång om vi kan bara 'Aktivera' en kolumn i taget?"
Vi kommer jag är glad att du ställde denna fråga! Det är lite av ett trick till det.
Det du ser på 8 x 8 matrisen är ett ansikte. MEN inte alla kolumner är på samtidigt - infact endast en kolumn dras åt gången men vi scanna igenom kolumnerna så fort, att det mänskliga ögat det bara ser ut som en stadig bild.
Om vi skulle sakta ner hur snabbt vi scanna via displayen, skulle du se något liknande nästa foto.
(Se bild 9)
Du kommer att märka att vi aktivera en kolumn, sedan placera åtta databitar på databussen och det visar informationen på just den en kolumnen. Då vi flytta till nästa spalt i linje och sedan placera en annan åtta databitar på databussen för kolumnen. Vi Fortsätt med detta tills vi kommer till slutet. Det är en komplett bildruta.
Om vi gör detta mycket snabbare skulle våra hjärnor uppfattar detta som en stadig bild. Liknar hur din TV eller datorskärm fungerar.
Jag hoppas denna discription hjälper!