W tej sesji zaprojektujemy wyświetlacz LED 8x8 z matrycą LED 8x8 i mikrokontrolerem ATmega8, który może wyświetlać litery lub nazwy. Poniżej przedstawiono typową matrycę diod 8x8:
Matryca LED 8x8 zawiera 64 diody LED (diody elektroluminescencyjne), które są ułożone w formie matrycy, stąd nazwa matryca LED. Te matryce mogą być wykonane przez obwody 64 diod LED; jednak proces ten jest czasochłonny. Teraz dzień są dostępne w kompaktowych formach, jak pokazano na rysunku. Te kompaktowe moduły są dostępne w różnych rozmiarach i wielu kolorach. Można je wybrać dla wygody.
Koszt modułu to koszt 64 diod LED, więc dla hobbysty jest to najłatwiejsze w obsłudze. Konfiguracja PIN modułu jest pokazana na rysunku. Aby uniknąć błędów, numery PIN powinny być dokładnie takie, jak pokazano na rysunku. W opisie szczegółowo omówimy konfigurację obwodu wewnętrznego modułu.
składniki
Sprzęt: ATMEGA8, zasilacz (5v), programator AVR-ISP, kondensator 100 uF (podłączany przez zasilacz), rezystor 1KΩ (8 sztuk).
Oprogramowanie: Atmel studio 6.1, progisp lub flash magic.
Schemat obwodu i działanie
Połączenia jakie są wykonywane pomiędzy ATMEGA8 a modułem matrycy LED pokazano na poniższym rysunku.
PORTD, PIN0 ------------------ PIN13 modułu LED
PORTD, PIN1 ------------------ PIN03 modułu LED
PORTD, PIN2 ------------------ PIN04 modułu LED
PORTD, PIN3 ------------------ PIN10 modułu LED
PORTD, PIN4 ------------------ PIN06 modułu LED
PORTD, PIN5 ------------------ PIN11 modułu LED
PORTD, PIN6 ------------------ PIN15 modułu LED
PORTD, PIN7 ------------------ PIN16 modułu LED
PORTB, PIN0 ------------------ PIN09 modułu LED
PORTB, PIN1 ------------------ PIN14 modułu LED
PORTB, PIN2 ------------------ PIN08 modułu LED
PORTB, PIN3 ------------------ PIN12 modułu LED
PORTC, PIN0 ------------------ PIN01 modułu LED
PORTC, PIN1 ------------------ PIN07 modułu LED
PORTC, PIN2 ------------------ PIN02 modułu LED
PORTC, PIN3 ------------------ PIN05 modułu LED
Schemat obwodu ekranu matrycy 8x8 LED jest przedstawiony na rysunku poniżej.
Istnieje 64 diod LED ułożonych w formie matrycy. Mamy więc 8 kolumn i 8 rzędów, jak pokazano na rysunku. W tych wierszach i kolumnach wszystkie dodatnie zaciski w rzędzie są łączone. Dla każdego rzędu jest jeden wspólny zacisk dodatni dla wszystkich 8 diod LED w tym rzędzie. Pokazuje to poniższy rysunek,
Zatem dla 8 rzędów mamy 8 wspólnych zacisków dodatnich, rozważmy pierwszy rząd. Jak widać na rysunku, diody LED od D1 do D8 mają wspólny zacisk dodatni i są wyprowadzane z MODUŁU LED jako PIN9.
Należy zauważyć, że wszystkie typowe pozytywy rzędów nie są wyprowadzane z MODUŁU LED w uporządkowany sposób. W każdym przypadku występują duże nieprawidłowości na wspólnych terminalach. Należy o tym pamiętać podłączając terminal.
Powiedzmy, że jeśli chcemy, aby jedna lub wszystkie diody w pierwszym rzędzie matrycy były WŁĄCZONE, to powinniśmy zasilić PIN9 MODUŁU MATRYCY LED, a nie PIN0.
Powiedzmy, że chcemy, aby jedna lub wszystkie diody LED w trzecim rzędzie matrycy były WŁĄCZONE, to powinniśmy zasilić PIN8 MODUŁU MATRYCY LED, a nie PIN2.
Kiedy więc chcemy, aby jedna lub wszystkie diody LED w RZĘDZIE były WŁĄCZONE, odpowiedni pin MODUŁU LED był zasilany.
To jeszcze się nie skończyło, ponieważ po prostu pozostawienie mocy WIERSZE nie daje nic. Musimy uziemić drugi koniec. Omówimy to poniżej.
W tym przypadku ignorujemy typowe dodatnie wiersze i skupiamy się na wspólnych kolumnach ujemnych.
Zatem w tym module wszystkie ujemne zaciski pierwszej kolumny są połączone z PIN13. Pokazuje to poniższy rysunek.
Tutaj również występuje nieprawidłowość w BRAKU PINU modułu. Wspólny minus pierwszej kolumny diody LED jest wyprowadzony na PIN13. Druga kolumna diod LED wspólny ujemny jest wyprowadzony na PIN3.
Podczas podłączania należy zwrócić uwagę na piny. Teraz, jeśli którakolwiek lub wszystkie diody LED w pierwszej kolumnie mają być uziemione, należy uziemić PIN13 MODUŁU MATRYCY. W ten sposób wszystko przechodzi do pozostałych siedmiu wspólnych kolumn ujemnych. Kiedy oba przypadki są połączone, natrafiamy na obwód, jak pokazano poniżej,
Powyższy obwód jest pełnym schematem wewnętrznym MODUŁU LED. Powiedzmy, że jeśli chcemy włączyć diodę D10 w matrycy, musimy zasilić PIN14 modułu i uziemić PIN3 na module. W ten sposób D10 włączy się. Pokazuje to poniższy rysunek. Najpierw należy sprawdzić, czy MATRIX wie wszystko w porządku.
Powiedzmy, że jeśli chcemy włączyć D1, musimy zasilić PIN9 matrycy i uziemić PIN13. Z tą diodą LED D1 będzie się świecić. Aktualny kierunek dla tego przypadku pokazano na poniższym rysunku.
Teraz, jeśli chodzi o trudną część, rozważmy, że chcemy włączyć jednocześnie D1 i D10. Więc zasilamy oba PIN9, PIN14 i uziemiamy oba PIN13, PIN3. Dzięki temu będziemy mieli D2 i D9 ON wraz z D1 i D10. To dlatego, że mają wspólne terminale. Jeśli więc będziemy chcieli obracać diody po przekątnej, będziemy zmuszeni włączyć wszystkie diody po drodze. Pokazuje to poniższy rysunek.
Aby wyeliminować ten problem, włączymy tylko jedną diodę na raz. Powiedz, gdy t = 0m SEC, dioda D1 jest włączona. Przy t = 1m SEC dioda D1 jest wyłączana, a dioda LED D2 włączana. Ponownie, gdy t = 2 m SEC dioda D2 gaśnie, a dioda D1 zostaje włączona. To trwa.
Rzecz w tym, że ludzkie oko nie może wychwycić częstotliwości większej niż 30 Hz. To znaczy, jeśli dioda LED włącza się i wyłącza w sposób ciągły z częstotliwością 30 Hz lub więcej. Oko widzi, że dioda LED jest stale włączona. Jednak tak nie jest. Dioda LED będzie stale włączać się i wyłączać. Ta technika nazywa się multipleksowaniem.
Korzystając z multipleksowania, będziemy włączać tylko jeden wiersz na raz, a 8 rzędów będzie się cyklicznie obracać. To wizualizowane jako całkowicie WŁĄCZONA matryca gołym okiem.
Teraz powiedzmy, że chcemy wyświetlić „A” na macierzy.
Jak powiedziano, natychmiast włączymy jeden wiersz, W momencie t = 0 m SEC, PIN09 jest ustawiony na WYSOKI (inne piny ROW są w tym czasie NISKIE), PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 są uziemione (inne piny COLUMN są w tym czasie WYSOKIE)
W momencie t = 1m SEC, PIN14 jest ustawiony na WYSOKI (inne piny ROW są w tym czasie NISKIE), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 są uziemione (inne piny KOLUMNY są w tym czasie WYSOKIE)
Przy t = 2m SEC, PIN08 jest ustawiony na WYSOKI (inne piny ROW są w tym czasie NISKIE), PIN13, PIN3, PIN15, PIN16 są uziemione (inne piny KOLUMNY są w tym czasie WYSOKIE)
W momencie t = 3m SEC, PIN12 jest ustawiony na WYSOKI (inne piny ROW są w tym czasie NISKIE), PIN13, PIN3, PIN15, PIN16 są uziemione (inne piny KOLUMNY są w tym czasie WYSOKIE)
W momencie t = 4 m SEC, PIN01 jest ustawiony na WYSOKI (inne piny ROW są w tym czasie NISKIE), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 są uziemione (inne piny KOLUMNY są w tym czasie WYSOKIE)
W momencie t = 5 m SEC, PIN07 jest ustawiony na WYSOKI (inne piny ROW są w tym czasie NISKIE), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 są uziemione (inne piny KOLUMNY są w tym czasie WYSOKIE)
Przy t = 6 m SEC, PIN02 jest ustawiony na WYSOKI (inne piny ROW są w tym czasie NISKIE), PIN13, PIN3, PIN15, PIN16 są uziemione (inne piny KOLUMNY są w tym czasie WYSOKIE)
W momencie t = 7 m SEC, PIN05 jest ustawiony na WYSOKI (inne piny ROW są w tym czasie NISKIE), PIN13, PIN3, PIN15, PIN16 są uziemione (inne piny KOLUMNY są w tym czasie WYSOKIE)
Przy tej prędkości wyświetlacz będzie ciągle pokazywał znak „A”. Przedstawiono to na rysunku.
W ten sposób wszystkie znaki są wyświetlane na wyświetlaczu. Po podłączeniu obwodu w prawidłowy sposób, jak pokazano na schemacie obwodu. Możemy bezpośrednio wydać instrukcje kontrolerowi, aby przeprowadził multipleksowanie w uporządkowany sposób, aby nazwa była wyświetlana.