Spisu treści:

Jak sterować wieloma diodami LED z kilku pinów mikrokontrolera.: 6 kroków (ze zdjęciami)
Jak sterować wieloma diodami LED z kilku pinów mikrokontrolera.: 6 kroków (ze zdjęciami)

Wideo: Jak sterować wieloma diodami LED z kilku pinów mikrokontrolera.: 6 kroków (ze zdjęciami)

Wideo: Jak sterować wieloma diodami LED z kilku pinów mikrokontrolera.: 6 kroków (ze zdjęciami)
Wideo: Wprowadzenie do mikrokontrolerów AVR - od elektroniki do programowania 2024, Listopad
Anonim
Jak sterować wieloma diodami LED z kilku pinów mikrokontrolera
Jak sterować wieloma diodami LED z kilku pinów mikrokontrolera

Korzystając z faktu, że wiele pinów mikrokontrolera ma trzy stany (+ V, GND lub „wysoka impedancja”, możesz sterować diodami LED N * (N-1) z pinów N. Tak więc mały mikrokontroler 8-pinowy, taki jak PIC12Fxxx lub ATtiny11, może sterować 20 diod LED na pięciu dostępnych pinach wyjściowych i nadal pozostaje jeden pin na jakiś rodzaj wejścia. Zobacz także

Krok 1: 20 diod LED na 5 pinach

20 diod LED na 5 pinach
20 diod LED na 5 pinach

Aktualny zbiór mikrokontrolerów o niskiej liczbie pinów (6 pinów do 20 pinów włączonych)

cały pakiet) są atrakcyjne cenowo i „słodkie”, ale pojawia się pytanie, jak najlepiej wykorzystać te piny do typowych zastosowań, takich jak sterowanie diodami LED. Metoda bezpośredniego łączenia do sterowania diodami LED wymaga jednego styku dla każdej diody LED. Tradycyjny schemat multipleksowania, w którym rzędy anod LED są napędzane przez jeden zestaw kołków N, a wspólna katoda każdego rzędu jest napędzana przez inny zestaw kołków M, pozwala zapalić diody LED N * M z kołkami N + M. Jednak na procesorze z tylko 5 lub mniej wyjściami (jak w przypadku większości 8-pinowych mikrokontrolerów), to ledwo daje więcej wyjść niż napęd bezpośredni.

Krok 2: Charlieplexing

Charlieplexing
Charlieplexing

Zakładając, że styki wyjściowe są rzeczywiście trójstanowe (aktywna wysoka, aktywna niska i wysoka impedancja (wejście)) możliwe jest również współdzielenie sterowników wierszy i kolumn oraz sterowanie diodami LED N * (N-1) tylko za pomocą N pinów. Jeden pin jest podłączony do wspólnych katod rzędu diod LED i jest zasilany w niskim stanie, a pozostałe piny N-1 są podłączone do anod i albo ustawione wysoko, aby oświetlić tę kolumnę, albo pozostawione jako wejścia, aby pozostawić diodę LEDwyłączoną. Maxim nazywa tę technikę „Charlieplexing” i opisuje ją w (1); Microchip wspomina o tym również w swoim dokumencie (2) (i implementuje również na płycie PICKit 1.) (1) „Charlieplexing - Reduced Pin-Count LED Display Multiplexing” https://www.maxim-ic.com/appnotes. cfm/appnote_number/1880(2) „Tips 'n Tricks 8-pinowe mikrokontrolery FLASH PIC”https://ww1.microchip.com/downloads/en/DeviceDoc/40040b.pdf(3) rgbfil

Krok 3: Wprowadzenie do pracy

Jak to działa
Jak to działa
Jak to działa
Jak to działa

To napędza 20 diod LED z ATtiny11. Wcześniejsza wersja tej tablicy była

faktycznie zbudowany i pojawia się jako zdjęcie na stronie głównej. Obawiam się, że obraz schematu jest dość beznadziejny; potrzebujesz Eagle, aby powiedzieć ci, które sygnały są połączone, gdzie.

Krok 4: Mniejszy i bardziej wszechstronny…

Mniejszy i bardziej wszechstronny…
Mniejszy i bardziej wszechstronny…

Ponieważ większość tablicy zajmuje tablica LED, możemy zrobić miejsce

na chip Attiny LUB mikrochip PIC12F. Zmniejsz diody LED do 3 mm i przejdź do płytki dwustronnej, a otrzymamy coś około 27x44 mm Niestety, ta płyta nie została jeszcze przetestowana…

Krok 5: Mały Bitty

itty Bitty
itty Bitty

Microchip ma oczywiście swoje 6-pinowe układy PIC10F, zdolne do napędzania

zaledwie 6 diod LED z 3 pinów wyjściowych. Ma to około 16mm średnicy. Przejście na 603 diody LED pozwala nieco zmniejszyć, ale nie jestem pewien, o co chodzi.

Krok 6: Oprogramowanie

Oprogramowanie robi się nieco bałaganiarskie z kilku powodów:

1) w przypadku pokazanych płytek, diody LED są rozmieszczone w sposób dogodny dla układu płytki, a nie w „poprawnej” kolejności bitów. IMO, jest to sposób na robienie rzeczy, ale oznacza to, że wiersz 1 niekoniecznie oznacza bit 1, a kolumna 3 nie oznacza bitu 3. Wymaga to poziomu mapowania między zwykłym adresowaniem wierszy/kolumn a bity, które wymagają ustawienia. 2) Ponieważ te same bity są używane dla anod i katod, wspólne połączenie (rzędowe) dla niektórych bitów może znajdować się w środku bitów sterowanych (kolumnowych). Oznacza to, że musisz przesuwać bity kolumn w zależności od tego, czy są przed, czy za bitem wiersza dla tego zestawu kolumn. 3) Musisz wyprowadzić słowa wyjściowe zarówno dla rejestru ioport, jak i rejestru kierunku portu. Załączony kod ASM dla ATtiny11 to „weryfikacja koncepcji”. Jest żenująco niezoptymalizowany i słabo skomentowany, ale to wszystko, co do tej pory napisałem.

Zalecana: