In deze sessie gaan we een 8x8 LED-display ontwerpen met 8x8 LED-matrix en ATmega8-microcontroller, die alfabetten of namen kan weergeven. Een typische 8x8 led-matrix wordt hieronder weergegeven:
Een 8x8 LED-matrix bevat 64 LED's (Light Emitting Diodes) die zijn gerangschikt in de vorm van een matrix, vandaar de naam LED-matrix. Deze matrices kunnen worden gemaakt door 64 LED's te schakelen; dat proces is echter tijdrovend. Nu per dag zijn ze verkrijgbaar in compacte vormen, zoals weergegeven in de afbeelding. Deze compacte modules zijn verkrijgbaar in verschillende maten en veel kleuren. Men kan ze op gemak kiezen.
De kosten van de module zijn hetzelfde als de kosten van 64 LED's, dus voor een hobbyist is dit het gemakkelijkst om aan te werken. De PIN-configuratie van de module is zoals weergegeven in de afbeelding. De pincodes moeten exact hetzelfde zijn als in de afbeelding om fouten te voorkomen. We zullen de interne circuitconfiguratie van de module in detail in de beschrijving bespreken.
Componenten
Hardware: ATMEGA8, Voeding (5v), AVR-ISP PROGRAMMER, 100 uF condensator (aangesloten over voeding), 1KΩ weerstand (8 stuks).
Software: Atmel studio 6.1, progisp of flash magie.
Schakelschema en werking
De verbindingen die worden gemaakt tussen ATMEGA8 en LED-matrixmodule worden weergegeven in de onderstaande afbeelding.
PORTD, PIN0 ------------------ PIN13 van LED-module
PORTD, PIN1 ------------------ PIN03 van LED-module
PORTD, PIN2 ------------------ PIN04 van LED-module
PORTD, PIN3 ------------------ PIN10 van LED-module
PORTD, PIN4 ------------------ PIN06 van LED-module
PORTD, PIN5 ------------------ PIN11 van LED-module
PORTD, PIN6 ------------------ PIN15 van LED-module
PORTD, PIN7 ------------------ PIN16 van LED-module
PORTB, PIN0 ------------------ PIN09 van LED-module
PORTB, PIN1 ------------------ PIN14 van LED-module
PORTB, PIN2 ------------------ PIN08 van LED-module
PORTB, PIN3 ------------------ PIN12 van LED-module
PORTC, PIN0 ------------------ PIN01 van LED-module
PORTC, PIN1 ------------------ PIN07 van LED-module
PORTC, PIN2 ------------------ PIN02 van LED-module
PORTC, PIN3 ------------------ PIN05 van LED-module
Het schakelschema van 8x8 LED-matrixdisplay wordt weergegeven in de onderstaande afbeelding.
Er zijn 64 LED's gerangschikt in een matrixvorm. We hebben dus 8 kolommen en 8 rijen, zoals weergegeven in de afbeelding. Over die rijen en kolommen worden alle positieve klemmen op een rij samengebracht. Voor elke rij is er één gemeenschappelijke positieve pool voor alle 8 LED's in die rij. Het wordt getoond in onderstaande figuur,
Dus voor 8 rijen hebben we 8 gemeenschappelijke positieve terminals, overweeg de eerste rij. Zoals op de afbeelding te zien is, hebben de LED's van D1 tot D8 een gemeenschappelijke positieve pool en worden ze uit LED MODULE gehaald als PIN9.
Het moet duidelijk zijn dat alle algemene positieven van rijen niet op een ordelijke manier uit de LED-MODULE worden gehaald. Er zijn in alle gevallen zeer onregelmatigheden op gemeenschappelijke terminals. Hiermee moet u rekening houden bij het aansluiten van de terminal.
Stel dat we willen dat een of alle LED's in de eerste RIJ van de matrix AAN zijn, dan moeten we de PIN9 van de LED MATRIX MODULE van stroom voorzien en niet PIN0.
Stel dat we willen dat een of alle LED's in de derde RIJ van de matrix AAN zijn, dan moeten we de PIN8 van de LED MATRIX-MODULE van stroom voorzien en niet PIN2.
Dus wanneer we willen dat een of alle LED's in een RIJ AAN zijn, wordt de bijbehorende pin van de LED-MODULE gevoed.
Dit is nog niet voorbij door gewoon de macht te verlaten levert ROWS niets op. We moeten het andere uiteinde aarden. We zullen het hieronder bespreken.
Voor dit geval negeren we de gemeenschappelijke positieve rijen en concentreren we ons op algemene negatieve kolommen.
Dus in die module worden alle negatieve terminals van de eerste kolom samengebracht naar de PIN13. Dit wordt weergegeven in onderstaande afbeelding.
Ook hier is er een onregelmatigheid in de PIN-UITGANG van de module. Het gemeenschappelijk negatief van de eerste kolom LED's wordt weergegeven bij PIN13. Het gemeenschappelijk negatief van de LED's van de tweede kolom wordt weergegeven op PIN3.
Let bij het aansluiten op de pinnen. Als nu een of alle LED's in de eerste kolom moeten worden geaard, moet PIN13 van MATRIX MODULE worden geaard. Op deze manier gaan alle andere zeven gemeenschappelijke negatieve kolommen. Wanneer beide gevallen bij elkaar zijn geplaatst, komen we een circuit tegen zoals hieronder weergegeven,
Het bovenstaande circuit is het complete interne diagram van de LED-MODULE. Stel dat als we LED D10 in de matrix willen inschakelen, we de PIN14 van de module moeten voeden en de PIN3 op de module moeten aarden. Hiermee wordt de D10 ingeschakeld. Dit wordt weergegeven in onderstaande figuur. Dit moet eerst worden gecontroleerd, zodat MATRIX alles in orde weet.
Stel dat als we D1 willen inschakelen, we PIN9 van de matrix moeten voeden en de PIN13 moeten aarden. Met die LED gaat D1 branden. De huidige richting voor dit geval wordt weergegeven in de onderstaande afbeelding.
Nu voor het lastige deel, bedenk dat we zowel D1 als D10 tegelijk willen inschakelen. Dus we voeden zowel PIN9, PIN14 als zowel PIN13, PIN3. Daarmee hebben we D2 en D9 AAN, samen met D1 en D10. Het is omdat ze gemeenschappelijke terminals delen. Dus als we leds langs de diagonaal willen draaien, zullen we gedwongen worden om onderweg alle leds aan te zetten. Dit wordt weergegeven in onderstaande afbeelding.
Om dit probleem op te lossen, schakelen we dus slechts één led tegelijk in. Zeg bij t = 0m SEC, LED D1 is AAN. Op t = 1m SEC is LED D1 UIT en LED D2 AAN. Opnieuw op t = 2 m SEC, wordt LED D2 UIT gezet en LED D1 AAN. Dit gaat door.
De truc is nu dat het menselijk oog geen frequentie van meer dan 30 HZ kan vastleggen. Dat wil zeggen als een LED continu AAN en UIT gaat met een snelheid van 30Hz of meer. Het oog ziet de LED als continu AAN. Dit is echter niet het geval. De LED zal constant AAN en UIT gaan. Deze techniek wordt multiplexen genoemd.
Door multiplexing te gebruiken, zullen we slechts één rij tegelijk draaien en zal er continu rond de 8 rijen worden gefietst. Dit gevisualiseerd als een volledig ingeschakelde matrix voor het blote oog.
Stel nu dat we "A" op de matrix willen weergeven.
Zoals gezegd zullen we een rij in een oogwenk AAN zetten, Op t = 0m SEC, is PIN09 ingesteld op HOOG (andere RIJ-pinnen zijn op dit moment LAAG), PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 zijn geaard (andere KOLOM-pinnen zijn op dit moment HOOG)
Op t = 1m SEC, PIN14 is ingesteld HOOG (andere RIJ pinnen zijn momenteel LAAG), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 zijn geaard (andere KOLOM pinnen zijn op dit moment HOOG)
Op t = 2m SEC, PIN08 is ingesteld op HOOG (andere RIJ-pinnen zijn op dit moment LAAG), op dit moment zijn PIN13, PIN3, PIN15, PIN16 geaard (andere KOLOM-pinnen zijn op dit moment HOOG)
Op t = 3m SEC, PIN12 is ingesteld HOOG (andere RIJ pinnen zijn op dit moment LAAG) op dit moment, PIN13, PIN3, PIN15, PIN16 zijn geaard (andere KOLOM pinnen zijn op dit moment HOOG)
Op t = 4m SEC, PIN01 is ingesteld op HOOG (andere RIJ-pinnen zijn op dit moment LAAG), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 zijn geaard (andere KOLOM-pinnen zijn op dit moment HOOG))
Op t = 5m SEC, PIN07 is ingesteld op HOOG (andere RIJ-pinnen zijn op dit moment LAAG), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 zijn geaard (andere KOLOM-pinnen zijn op dit moment HOOG))
Op t = 6m SEC, PIN02 is ingesteld HOOG (andere RIJ pinnen zijn op dit moment LAAG) op dit moment, PIN13, PIN3, PIN15, PIN16 zijn geaard (andere COLUMN pinnen zijn op dit moment HOOG)
Op t = 7m SEC, is PIN05 ingesteld op HOOG (andere RIJ-pinnen zijn op dit moment LAAG) op dit moment, zijn PIN13, PIN3, PIN15, PIN16 geaard (andere KOLOM-pinnen zijn op dit moment HOOG)
Bij deze snelheid ziet u dat het display continu een "A" -teken toont. Het wordt getoond in figuur.
Dit is hoe alle karakters in het display worden getoond. Nadat het circuit op de juiste manier is aangesloten, zoals weergegeven in het schakelschema. We kunnen de controller direct instructies geven om de multiplexing op een ordelijke manier uit te voeren zodat de naam wordt weergegeven.