I denne session skal vi designe en 8x8 LED-skærm med 8x8 LED-matrix og ATmega8 mikrokontroller, som kan vise alfabeter eller navne. En typisk 8x8 led matrix er vist nedenfor:
En 8x8 LED-matrix indeholder 64 LED (Light Emitting Diodes), der er arrangeret i form af en matrix, deraf navnet LED-matrix. Disse matricer kan fremstilles ved at kredsløb 64 lysdioder; denne proces er dog tidskrævende. Nu om dagen er de tilgængelige i kompakte former som vist i figuren. Disse kompakte moduler fås i forskellige størrelser og mange farver. Man kan vælge dem på bekvemmelighed.
Omkostningerne ved modul er de samme som prisen på 64 LED, så for en hobbyist er det nemmest at arbejde på. Modulets PIN-konfiguration er som vist i figuren. PIN-koder skal være nøjagtigt som vist på billedet for at undgå fejl. Vi vil diskutere modulets interne kredsløbskonfiguration detaljeret i beskrivelsen.
Komponenter
Hardware: ATMEGA8, strømforsyning (5v), AVR-ISP PROGRAMMER, 100 uF kondensator (tilsluttet via strømforsyning), 1KΩ modstand (8 stk.).
Software: Atmel studio 6.1, progisp eller flash-magi.
Kredsløbsdiagram og arbejde
Forbindelserne mellem ATMEGA8 og LED-matrixmodul er vist i nedenstående figur.
PORTD, PIN0 ------------------ PIN13 i LED-modulet
PORTD, PIN1 ------------------ PIN03 i LED-modulet
PORTD, PIN2 ------------------ PIN04 på LED-modulet
PORTD, PIN3 ------------------ PIN10 for LED-modul
PORTD, PIN4 ------------------ PIN06 for LED-modul
PORTD, PIN5 ------------------ PIN11 i LED-modulet
PORTD, PIN6 ------------------ PIN15 på LED-modulet
PORTD, PIN7 ------------------ PIN16 i LED-modul
PORTB, PIN0 ------------------ PIN09 for LED-modul
PORTB, PIN1 ------------------ PIN14 i LED-modulet
PORTB, PIN2 ------------------ PIN08 i LED-modulet
PORTB, PIN3 ------------------ PIN12 for LED-modul
PORTC, PIN0 ------------------ PIN01 på LED-modulet
PORTC, PIN1 ------------------ PIN07 i LED-modulet
PORTC, PIN2 ------------------ PIN02 på LED-modulet
PORTC, PIN3 ------------------ PIN05 fra LED-modul
Den kredsløbsdiagram af 8x8 LED matrix-display er vist i figuren nedenfor.
Der er 64 LED arrangeret i en matrixform. Så vi har 8 kolonner og 8 rækker som vist i figuren. Over disse rækker og kolonner er alle de positive terminaler i en række samlet. For hver række er der en fælles positiv terminal for alle 8 LED'er i den række. Det er vist i nedenstående figur,
Så for 8 rækker har vi 8 fælles positive terminaler, overvej den første række. Som det ses af billedet, har lysdioderne fra D1 til D8 en fælles positiv terminal og bringes ud af LED-MODUL som PIN9.
Det skal ses, at alle de almindelige positive sider af rækker ikke bringes ud af LED-MODUL på ordnet måde. Der er meget uregelmæssighed på almindelige terminaler i alle tilfælde. Man skal huske dette, når man tilslutter terminalen.
Sig, hvis vi ønsker, at en eller alle lysdioder i den første række af matrix skal være TÆNDT, så skal vi tænde for PIN9 for LED MATRIX-MODUL, ikke for PIN0.
Sig, hvis vi vil have en eller alle lysdioder i den tredje række af matrix til at være tændt, så skal vi tænde for PIN8 i LED MATRIX MODUL, ikke PIN2.
Så når vi vil have en eller alle lysdioder i en række til at være tændt, skal den tilsvarende pin på LED-MODUL tændes.
Dette er ikke forbi endnu ved blot at lade strømmen ROWS giver intet. Vi er nødt til at jorde den anden ende. Vi vil diskutere det nedenfor.
Nu ignorerer vi for dette tilfælde de fælles positive rækker og fokuserer på almindelige negative kolonner.
Så i dette modul bringes alle de negative terminaler i første kolonne sammen til PIN13. Dette er vist i nedenstående figur.
Også her er der uregelmæssigheder i modulets PIN OUTAGE. De første søjle-LED'er, der er almindelige negative, vises ved PIN13. Den anden søjle-LED, der er almindelig negativ, vises ved PIN3.
Man skal være opmærksom på stifterne, mens man tilslutter. Hvis nogen eller alle lysdioderne i den første kolonne nu skal jordforbindes, skal PIN13 i MATRIX MODULE jordforbindes. Denne vej går helt til de andre syv almindelige negative kolonner. Når begge sager er samlet, støder vi på et kredsløb som vist nedenfor,
Ovenstående kredsløb er det komplette interne diagram over LED MODUL. Sig, hvis vi vil tænde LED D10 i matrixen, er vi nødt til at tænde for modulet PIN14 og jorde PIN3 på modulet. Med dette tænder D10. Dette er vist i nedenstående figur. Dette skal først kontrolleres for MATRIX at vide alt i orden.
Sig, hvis vi vil tænde D1, er vi nødt til at tænde PIN9 for matrixen og jorde PIN13. Med den lyser LED D1. Den aktuelle retning for denne sag er vist i nedenstående figur.
Nu for den vanskelige del, overvej at vi vil tænde både D1 og D10 ad gangen. Så vi får både PIN9, PIN14 og jord begge PIN13, PIN3. Med det vil vi have D2 og D9 ON sammen med D1 og D10. Det er fordi de deler fælles terminaler. Så hvis vi vil tænde lysdioder langs diagonalen, bliver vi tvunget til at tænde alle lysdioder undervejs. Dette er vist i nedenstående figur.
Så for at fjerne dette problem vil vi kun tænde en ledet ad gangen. Sig ved t = 0m SEC, LED D1 er indstillet TIL. Ved t = 1m SEC er LED D1 indstillet OFF og LED D2 er tændt. Igen ved t = 2 m SEC slukkes LED D2 og LED D1 tændes. Dette fortsætter.
Nu er tricket, det menneskelige øje kan ikke fange en frekvens mere end 30 Hz. Det er, hvis en LED kontinuerligt tændes og slukkes med en hastighed på 30 Hz eller mere. Øjet ser lysdioden kontinuerligt TÆNDT. Dette er imidlertid ikke tilfældet. LED'en tænder og slukker konstant. Denne teknik kaldes multiplexing.
Ved at bruge multiplexing vil vi kun dreje en række ad gangen, og der vil løbende cykles rundt om de 8 rækker. Dette visualiseres som en helt tændt matrix for det blotte øje.
Sig nu, at vi vil vise “A” på matrixen.
Som sagt vil vi tænde en række på et øjeblik, Ved t = 0m SEC er PIN09 indstillet HIGH (andre ROW-pins er LAV på dette tidspunkt) på dette tidspunkt, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 er jordforbundet (andre COLUMN-stifter er HIGH på dette tidspunkt)
Ved t = 1 m SEC er PIN14 indstillet HIGH (andre ROW-pins er LAV på dette tidspunkt) på dette tidspunkt, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 er jordforbundet (andre COLUMN-stifter er HIGH på dette tidspunkt)
Ved t = 2m SEC er PIN08 indstillet HIGH (andre ROW-pins er LOW på dette tidspunkt) på dette tidspunkt, PIN13, PIN3, PIN15, PIN16 er jordforbundet (andre COLUMN-pins er HIGH på dette tidspunkt)
Ved t = 3m SEC er PIN12 indstillet HIGH (andre ROW-pins er LOW på dette tidspunkt) på dette tidspunkt, PIN13, PIN3, PIN15, PIN16 er jordforbundet (andre COLUMN-pins er HIGH på dette tidspunkt)
Ved t = 4m SEC er PIN01 indstillet HIGH (andre ROW-pins er LAV på dette tidspunkt) på dette tidspunkt er PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 jordforbundet (andre COLUMN-stifter er HIGH på dette tidspunkt)
Ved t = 5m SEC er PIN07 indstillet HIGH (andre ROW-pins er LAV på dette tidspunkt) på dette tidspunkt er PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 jordforbundet (andre COLUMN-stifter er HIGH på dette tidspunkt)
Ved t = 6m SEC er PIN02 indstillet HIGH (andre ROW-pins er LAV på dette tidspunkt) på dette tidspunkt, PIN13, PIN3, PIN15, PIN16 er jordforbundet (andre COLUMN-pins er HIGH på dette tidspunkt)
Ved t = 7m SEC er PIN05 indstillet HIGH (andre ROW-pins er LOW på dette tidspunkt) på dette tidspunkt, PIN13, PIN3, PIN15, PIN16 er jordforbundet (andre COLUMN-pins er HIGH på dette tidspunkt)
Ved denne hastighed vil displayet ses som kontinuerligt viser “A” -tegnet. Det er vist i figur.
Sådan vises alle tegn i displayet. Efter tilslutning af kredsløb på korrekt måde, som vist i kredsløbsdiagrammet. Vi kan direkte give controlleren instruktioner til at udføre multiplexing på en ordnet måde, så navnet kan vises.