DZWON

Są tacy, którzy czytają tę wiadomość przed tobą.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu

Siedmiosegmentowe wskaźniki LED są bardzo popularne wśród cyfrowych wyświetlaczy wartości i są stosowane w panelach przednich kuchenek mikrofalowych, pralki, zegary cyfrowe, liczniki, timery itp. W porównaniu do wskaźników LCD, segmentów wskaźnik ledowy świecą jasno i są widoczne z dużej odległości i pod szerokim kątem widzenia. Do podłączenia 7-segmentowego 4-cyfrowego wyświetlacza do mikrokontrolera potrzeba co najmniej 12 linii I / O. Dlatego praktycznie niemożliwe jest stosowanie tych wskaźników z mikrokontrolerami z niewielką liczbą pinów, na przykład serii od firmy. Oczywiście można skorzystać z różnych metod multipleksowania (których opis znajduje się na stronie w dziale „Schematy”), ale w tym przypadku są pewne ograniczenia dla każdej metody i często używają skomplikowanych algorytmów oprogramowania.

Rozważymy sposób podłączenia wskaźnika poprzez interfejs SPI, który będzie wymagał tylko 3 linii I / O mikrokontrolera. W takim przypadku kontrola wszystkich segmentów wskaźnika zostanie zachowana.

Do podłączenia 4-cyfrowego wskaźnika do mikrokontrolera poprzez magistralę SPI służy wyspecjalizowany chip sterownika wyprodukowany przez firmę. Mikroukład może obsługiwać osiem siedmiosegmentowych wyświetlaczy ze wspólną katodą i zawiera dekoder BCD, sterowniki segmentów, obwód multipleksujący i statyczną pamięć RAM do przechowywania wartości cyfrowych.

Prąd płynący przez segmenty wskaźnika jest ustawiany za pomocą tylko jednego zewnętrznego rezystora. Dodatkowo mikroukład wspomaga kontrolę jasności wskaźników (16 poziomów jasności) poprzez wbudowany PWM.

Obwód rozważany w artykule to obwód modułu wyświetlacza z interfejsem SPI, który może być stosowany w projektach krótkofalarstwa. Bardziej interesuje nas nie sam obwód, ale praca z mikroukładem za pośrednictwem interfejsu SPI. Zasilanie modułu +5 V doprowadzone jest na pin Vcc, linie sygnałowe MOSI, CLK i CS przeznaczone są do komunikacji urządzenia nadrzędnego (mikrokontrolera) ze slave (mikroukład MAX7219).

Mikroukład jest używany w standardowe włączeniez elementów zewnętrznych potrzebny jest tylko rezystor, który ustala prąd płynący przez segmenty, dioda ochronna do zasilania i kondensator filtrujący do zasilania.

Dane są przesyłane do mikroukładu w 16-bitowych pakietach (dwa bajty), które są umieszczane we wbudowanym 16-bitowym rejestrze przesuwnym na każdym zboczu narastającym sygnału CLK. Oznaczamy pakiet 16-bitowy D0-D15, gdzie bity D0-D7 zawierają dane, D8-D11 zawierają adres rejestru, bity D12-D15 nie mają znaczenia. Bit D15 jest najbardziej znaczącym bitem i jest pierwszym bitem do odebrania. Chociaż mikroukład jest w stanie napędzać osiem wskaźników, rozważymy pracę tylko z czterema. Sterowane są na wyjściach DIG0 - DIG3, rozmieszczonych w kolejności od prawej do lewej, odpowiadające im 4-bitowe adresy (D8-D11) to 0x01, 0x02, 0x03 i 0x04 (format szesnastkowy). Rejestr cyfr realizowany jest w oparciu o wbudowaną pamięć RAM o organizacji 8 × 8 i jest bezpośrednio adresowalny, dzięki czemu każda pojedyncza cyfra na wyświetlaczu może być aktualizowana w dowolnym momencie. Poniższa tabela zawiera adresowalne cyfry i rejestry sterujące dla MAX7219.

Zarejestrować

Adres

Wartość szesnastkowa

Bez operacji

Tryb dekodowania

Liczba wskaźników

Zamknąć

Test wskaźników

Rejestry kontrolne

Układ MAX1792 ma 5 rejestrów sterujących: tryb dekodowania, intensywność, limit skanowania, wyłączenie i test wyświetlacza.

Włączanie i wyłączanie mikroukładu

Po podłączeniu zasilania do mikroukładu wszystkie rejestry są czyszczone i przechodzi w tryb wyłączenia. W tym trybie wyświetlacz jest wyłączony. Aby przejść do normalnej pracy, ustaw bit D0 rejestru Shutdown (adres 0Сh). Ten bit można wyczyścić w dowolnym momencie, aby wyłączyć sterownik, zachowując wszystkie rejestry niezmienione. Tryb ten może być używany do oszczędzania energii lub w trybie sygnalizacji poprzez miganie wskaźnika (sekwencyjne włączanie i wyłączanie trybu wyłączenia).

Przeniesienie mikroukładu do trybu Shutdown odbywa się poprzez sekwencyjną transmisję adresu (0Ch) i danych (00h), a transfer 0Ch (adres), a następnie 01h (dane) powraca do normalnej pracy.

Tryb dekodowania

Rejestr wyboru trybu dekodowania (adres 09h) umożliwia dekodowanie kodu BCD B (wyświetlane znaki 0-9, E, H, L, P, -) lub brak dekodowania dla każdej cyfry. Każdy bit w rejestrze odpowiada jednej cyfrze, ustawienie jednostki logicznej odpowiada włączeniu dekodera na ten bit, ustawienie 0 - dekoder jest wyłączony. Jeśli używany jest dekoder BCD, to brany jest pod uwagę tylko najmniej znaczący półbajt danych w rejestrach cyfrowych (D3-D0), bity D4-D6 są ignorowane, bit D7 nie zależy od dekodera BCD i jest odpowiedzialny za włączenie przecinka dziesiętnego na wskaźniku, jeśli D7 \u003d 1. Na przykład, gdy bajty 02h i 05h są wysyłane sekwencyjnie, wskaźnik DIG1 (druga cyfra od prawej) wyświetli liczbę 5. Podobnie, gdy wysłane zostaną 01h i 89h, wskaźnik DIG0 wyświetli liczbę 9 z włączoną kropką dziesiętną. Poniższa tabela zawiera pełną listę znaków wyświetlanych podczas korzystania z układu dekodera BCD.

Symbol

Dane w rejestrach

Uwzględnione segmenty \u003d 1

Pusty

*Punkt dziesiętny jest ustawiany przez bit D7 \u003d 1

Gdy dekoder BCD jest wyłączony z działania, bity danych D7-D0 odpowiadają liniom segmentu (A-G i DP) wskaźnika.

Sterowanie jasnością wskaźników

Mikroukład umożliwia programowe sterowanie jasnością wskaźników poprzez wbudowany PWM. Wyjście PWM jest kontrolowane przez niski półbajt (D3-D0) rejestru intensywności (adres 0Ah), który umożliwia ustawienie jednego z 16 poziomów jasności. Ustawienie wszystkich bitów półbajtowych na 1 powoduje wybranie maksymalnej jasności wskaźnika.

Liczba podłączonych wskaźników

W rejestrze Scan-Limit (adres 0Bh) ustawiana jest wartość liczby bitów obsługiwanych przez mikroukład (1 ... 8). Dla naszego wariantu z 4 bitami do rejestru należy wpisać wartość 03h.

Test wskaźników

Rejestr odpowiedzialny za ten tryb znajduje się na 0Fh. Ustawiając bit D0 w rejestrze, użytkownik włącza wszystkie segmenty wskaźników, przy czym zawartość rejestrów sterujących i danych nie ulega zmianie. Aby wyłączyć tryb Display-Test, bit D0 musi mieć wartość 0.

Interfejs mikrokontrolera

Moduł wskaźnika można podłączyć do dowolnego mikrokontrolera posiadającego trzy wolne linie I / O. Jeżeli mikrokontroler ma wbudowany sprzętowy moduł SPI, to moduł wskaźnika można podłączyć do magistrali jako urządzenie podrzędne. W tym przypadku linie sygnałowe SPI interfejsu SDO (wyjście danych szeregowych), SCLK (zegar szeregowy) i SS (wybór slave) mikrokontrolera można bezpośrednio podłączyć do pinów MOSI, CLK i CS mikroukładu (modułu) MAX7219, sygnał CS jest aktywny niski.

Jeśli mikrokontroler nie ma sprzętowego interfejsu SPI, to interfejs można zorganizować programowo. Komunikacja z MAX7219 rozpoczyna się od ustawienia i przytrzymania niskiego poziomu na linii CS, po czym 16 bitów danych jest wysyłanych sekwencyjnie (najpierw najbardziej znaczący) na linii MOSI na zboczu narastającym sygnału CLK. Po zakończeniu transmisji linia CS ponownie przechodzi w stan wysoki.

W sekcji pobierania użytkownicy mogą pobrać kod źródłowy programu testowego i plik HEX oprogramowania układowego, który implementuje konwencjonalny 4-bitowy licznik z wyświetlaniem wartości na module wskaźnika z interfejsem SPI. Zastosowany mikrokontroler - interfejs jest zaimplementowany programowo, linie sygnałowe CS, MOSI i CLK modułu wskaźnika są podłączone odpowiednio do portów GP0, GP1 i GP2. Używany kompilator mikroC do mikrokontrolerów PIC (mikroElektronika

Aby komentować materiały z serwisu i uzyskać pełny dostęp do naszego forum, potrzebujesz zarejestrować .

Od czasu pojawienia się radiotechniki i elektroniki sprzężenie zwrotne urządzeniu elektronicznemu i osobie towarzyszyły różne lampki sygnalizacyjne, przyciski, przełączniki, dzwonki (sygnał gotowości mikrofali - brzęczenie!). Niektóre urządzenia elektroniczne przekazują minimum informacji, ponieważ więcej byłoby zbędne. Na przykład świecąca dioda LED na chińskiej ładowarce do telefonu wskazuje, że ładowarka jest podłączona do sieci i otrzymuje napięcie. Ale są też parametry, dla których wygodniej byłoby podać obiektywne informacje. Na przykład temperatura powietrza na zewnątrz lub godzina na budziku. Tak, wszystko to można też zrobić za pomocą świecących żarówek lub diod LED. Jeden stopień - jedna płonąca dioda lub żarówka. Ile stopni - tyle zapalonych wskaźników. Liczenie świetlików może być powszechną rzeczą, ale znowu, ile takich świateł będzie potrzebnych, aby pokazać temperaturę z dokładnością do dziesiątej części stopnia? Zresztą, jaki obszar zajmą te diody i żarówki w urządzeniu elektronicznym?

Praktyczne wyświetlacze siedmiosegmentowe powinny mieć co najmniej osiem zewnętrznych zacisków przyłączeniowych; siedem z nich zapewnia dostęp do poszczególnych segmentów fotowoltaicznych, a ósmy zapewnia wspólne połączenie dla wszystkich segmentów. W pierwszym przypadku urządzenie jest znane jako siedmiosegmentowy wspólny wyświetlacz anodowy; w tym drugim przypadku urządzenie jest znane jako siedmiosegmentowy wyświetlacz ze wspólną katodą.

Aby sterować wyświetlaczem ze wspólną anodą, sterownik musi mieć aktywne niskie wyjście, w którym każdy napęd segmentu jest zwykle wysoki, ale obniża się, aby włączyć segment. Aby sterować wspólnym wyświetlaczem katodowym, sterownik musi mieć aktywne aktywne wyjście.

A na początku XX wieku, wraz z pojawieniem się lamp elektronicznych, pojawiły się pierwsze wskaźniki wyładowań gazowych.

Za pomocą takich wskaźników można było wyświetlać cyfrowe informacje cyframi arabskimi. Wcześniej na tych lampach wykonywano różne wskazania dla instrumentów i innych urządzeń elektronicznych. Obecnie elementy wyładowcze prawie nigdy nie są nigdzie używane. Ale styl retro jest zawsze modny, więc wielu radioamatorów zbiera piękne zegarki na lampach wyładowczych dla siebie i swoich bliskich.

Pełne wyjaśnienie tego jest nieco bardziej skomplikowane, jak następuje. Gdy napięcie wynosi zero, segment jest praktycznie niewidoczny. Jednak gdy napięcie wejściowe ma znaczną wartość dodatnią lub ujemną, segment staje się skutecznie widoczny, ale jeśli napięcie sterujące jest utrzymywane przez ponad kilkaset milisekund, segment może stać się trwale widoczny i nie mieć już żadnego znaczenia.

W tych warunkach segment jest wyłączony. Zatem segment jest objęty tymi warunkami. Ta forma napędu jest powszechnie znana jako system „napędu mostkowego” z podwajaniem napięcia. Sekwencja działań w schemacie jest następująca. Prosty system kaskadowy opisany wcześniej ma poważną wadę, ponieważ wyświetlacz staje się rozmazany podczas rzeczywistego okresu zliczania, stając się stabilny i czytelny tylko po zakończeniu każdego licznika i zamknięciu bramki wejściowej. Ten „zamazany i czytelny” rodzaj wyświetlacza jest bardzo irytujący.

Wady lamp wyładowczych - jedzą dużo. Trwałość jest dyskusyjna. Na naszej uczelni liczniki częstotliwości na rurach wyładowczych są nadal używane w pomieszczeniach laboratoryjnych.

Wraz z pojawieniem się diod LED sytuacja uległa radykalnej zmianie. Same diody LED pobierają mało prądu. Jeśli umieścisz je we właściwej pozycji, możesz wyświetlić absolutnie każdą informację. Aby podkreślić wszystkie cyfry arabskie, wystarczyło tylko coś siedem (stąd nazwa wskaźnik siedmiosegmentowy) świecące paski LED, wyeksponowane w określony sposób:

Rysunek 13 przedstawia zaawansowany obwód licznika częstotliwości, który wykorzystuje blokadę wyświetlacza w celu przezwyciężenia wyżej wymienionej wady. Ten schemat działa w następujący sposób. W tym samym czasie bramka wejściowa otwiera się i liczniki zaczynają sumować impulsy sygnału wejściowego. Ten licznik działa dalej dokładnie po jednej sekundzie, aw tym okresie czterobitowe zatrzaski uniemożliwiają wyjście licznika przed dotarciem do sterowników wyświetlacza; wyświetlacz pozostaje stabilny w tym okresie.

Po kilku sekundach sekwencja powtarza się ponownie, przy czym liczniki zerują się, a następnie zliczają impulsy częstotliwości wejściowej przez jedną sekundę, podczas której wyświetlacz na bieżąco odczytuje wyniki poprzedniego zliczenia itp.

do prawie wszystkich takich siedmiosegmentowych wskaźników dodaje się również ósmy segment - punkt, aby móc pokazać wartość całkowitą i ułamkową dowolnego parametru

Zatem obwód na fig. 13 tworzy stabilny wyświetlacz, który jest aktualizowany co sekundę; w praktyce rzeczywisty okres zliczania tego i wykresu na rysunku 12 można ustawić na dowolną dekadę z wieloma lub niepełnymi sekundami, pod warunkiem, że wyświetlacz wyjściowy jest odpowiednio skalowany.

Należy zauważyć, że 3-cyfrowy licznik może wskazywać maksymalne częstotliwości 999 Hz przy podstawie jednosekundowej podstawy, 99 kHz przy podstawie czasu 100 ms, 9 kHz przy podstawie czasu 10 ms i 999 kHz przy podstawie czasu 1 ms.

teoretycznie uzyskuje się wskaźnik ośmiosegmentowy, ale w staroświecki sposób nazywany jest również wskaźnikiem siedmiosegmentowym i nie ma w tym błędu.

W skrócie, wskaźnik siedmiosegmentowy - to diody LED umieszczone względem siebie w określonej kolejności i firmowe w jednej obudowie.

Technikę tę można zrozumieć, odwołując się do fig. 14 i 15. Te przełączniki są połączone razem i zapewniają rzeczywistą pracę multipleksera i należy je traktować jako szybkie przełączniki elektroniczne, które są wielokrotnie przełączane przez pozycje 1, 2, a sekwencja operacji jest następująca. Załóżmy najpierw, że przełącznik jest na swoim miejscu.

Chwilę później przełącznik przechodzi do pozycji 3, powodując, że wyświetlacz 3 pokazuje liczbę po kilku minutach, cały cykl zaczyna się ponownie powtarzać i tak dalej, dodając nieskończoność. W praktyce około 50 takich cykli występuje co sekundę, więc oko nie widzi, że wyświetlacze włączają się i wyłączają osobno, ale postrzegają je jako wyraźnie stabilny wyświetlacz, który pokazuje liczbę 327 lub inną liczbę narzuconą przez segment danych.

Jeśli weźmiemy pod uwagę schemat pojedynczego wskaźnika siedmiosegmentowego, wygląda to tak:

Jak widać, siedmiosegmentowy wskaźnik może mieć obie wartości wspólna anoda (OA)i z wspólna katoda (OK)... Z grubsza mówiąc, jeśli mamy urządzenie siedmiosegmentowe ze wspólną anodą (OA), to w obwodzie należy zawiesić „plus” na tym wyjściu, a jeśli ze wspólną katodą (OK), to „minus” lub masę. Do którego wyjścia przykładamy napięcie, taka dioda LED zaświeci się u nas. Pokażmy to wszystko w praktyce.

W praktycznych multiplekserach szczytowy prąd wyświetlania jest wystarczająco wysoki, aby zapewnić wystarczającą jasność wyświetlacza. FIGA. 15 przedstawia przykład ulepszonej techniki multipleksowania zastosowanej do trzycyfrowego licznika częstotliwości. Ta metoda ma dwie główne zalety.

Jeśli te zaciski są aktywne w stanie wysokim, będą miały następujące cechy. FIGA. 18 i 19. Rysunek 18 przedstawia technikę tłumienia tętnień wykorzystywaną do tłumienia zera końcowego na czterocyfrowym wyświetlaczu odczytującym wielkość.

Mamy dostępne następujące wskaźniki LED:

Jak widać, urządzenia siedmiosegmentowe mogą być jedno i wielocyfrowe, to znaczy dwa, trzy, cztery siedmiosegmentowe urządzenia w jednym korpusie. Do sprawdzenia nowoczesnego siedmiosegmentowego urządzenia potrzebujemy multimetru z funkcją ciągłości diod. Szukamy ogólnego wniosku - może to być OA lub OK - wpisując, a następnie przyglądamy się wynikom wszystkich segmentów wskaźnika. Sprawdzamy trzycyfrowy rejestrator siedmiosegmentowy:

W ten sposób na wyświetlaczu pojawi się. Zasadniczo są łatwe w użyciu, zasilają je i świecą. Mogą być denerwujące, ponieważ mają jakąś polaryzację, co oznacza, że \u200b\u200bbędą działać tylko wtedy, gdy podłączysz je poprawnie. Jeśli anulujesz dodatnie i ujemne napięcia, w ogóle się nie zaświecą.

Irytujące, tak właśnie jest, jest też całkiem przydatne. Drugi drut to katoda. Katoda jest podłączona do masy. Zasadniczo do tego dojdzie. W przypadku wspólnej katody przykładasz prąd do pinów, które chcesz włączyć. Multipleksowanie. Są nawet do tego kontrolery wyświetlania, jeśli nie chcesz się martwić o przełączanie oprogramowania.

Cholera, jeden segment się pali, pozostałe segmenty sprawdzamy w ten sam sposób.

Czasami napięcie na kreskówce nie wystarcza, aby sprawdzić segmenty wskaźnika. Dlatego bierzemy zasilacz, ustawiamy na nim 5 woltów, podłączamy rezystor 1-2 kiloomów do jednego zacisku zasilacza i zaczynamy sprawdzać siedmiosegmentowe urządzenie.

Sterowanie 7-segmentowym wyświetlaczem

Więc kiedy masz 4-cyfrowy, multipleksowany 7 segmentów, wspólną anodę. Po pierwsze, musimy wiedzieć, jaki mamy typ wyświetlacza, ponieważ istnieją dwa możliwe kształty: wspólna katoda i wspólna anoda. Rzeczy potrzebne do tego samouczka. Po lewej: Graficzny widok 7-segmentowego wyświetlacza przedstawiający jeden wspólny układ okablowania wewnętrznego i wyprowadzeń.

W tym momencie zwróć uwagę na początkowe dane wyjściowe, ponieważ będziesz ich potrzebować później podczas ładowania programu. Gdyby wyświetlacz był normalną katodą, anulowalibyśmy to. U dołu artykułu jest zdjęcie obwodu działającego na mojej płytce prototypowej. Udostępniamy również bibliotekę do sterowania więcej niż jednym wyświetlaczem.

Dlaczego potrzebujemy rezystora? Po przyłożeniu napięcia do diody LED, po włączeniu zaczyna gwałtownie pobierać prąd. Dlatego w tym momencie może się wypalić. Aby ograniczyć prąd, rezystor jest połączony szeregowo z diodą LED w obwodzie. Więcej szczegółów można znaleźć w tym artykule.

Liczenie szesnastkowe na jednym 7-segmentowym wyświetlaczu

Wadą jest to, że wymagają dużej ilości zasobów. Ten konkretny wyświetlacz ma cztery cyfry i dwa wyświetlacze dwukropkowe. Jednak urządzenie zapewnia również sterowanie cyfrowe jasność wyświetlacza poprzez wewnętrzny modulator szerokopasmowy. W takich przypadkach wyjście może odbywać się na wielu 7-segmentowych wyświetlaczach.

Oszczędza to kontakty na ciele, a następnie na kontrolce. W związku z tym wspomniane są wyświetlacze ze wspólną anodą lub wspólną katodą. Wyjście pasujące do segmentu lub przecinka dziesiętnego najlepiej jest pobierać z arkusza danych do wyświetlenia. 7-segmentowy wyświetlacz, który jest przeznaczony na zwykłe 10-20 mA, będzie nadal świecił, aczkolwiek słabo. Ale to nie wymaga przypisania pinów. Ponadto dystrybucja tego segmentu opiera się na.

W ten sam sposób sprawdzamy czterocyfrowy siedmiosegmentowy rejestrator z chińskiego radia.

Myślę, że nie powinno być z tym żadnych szczególnych trudności. W obwodach urządzenia siedmiosegmentowe przylegają do rezystorów na każdym wyjściu. Wynika to również z faktu, że diody LED po przyłożeniu do nich napięcia gorączkowo zużywają prąd i przepalają się.

Zasadniczo jest to możliwe, jeśli wykorzystuje się inny cel, ale należy to wziąć pod uwagę podczas programowania. Konwersja pojedynczych cyfr na określony wzorzec wyjściowy może odbywać się za pomocą tzw. Wszystkie inne segmenty powinny być ciemne. Jeśli to pole wyboru jest zaznaczone dla wszystkich cyfr, pojawia się następująca tabela.

W program testowy Cyfry od 0 do 9 są wyświetlane sekwencyjnie na 7-segmentowym wyświetlaczu. Numer wychodzący jest przechowywany w liczniku rejestru i zwiększany o 1 w trakcie cyklu. Jeśli rejestr osiągnie 10, jest ponownie resetowany do 0. Po zwiększeniu następuje pętla oczekiwania, aby zapewnić, że upłynie określony czas w następnej wersji. Zwykle nie robisz tak długich cykli oczekiwania, ale nie chodzi tu o czekanie, ale sterowanie 7-segmentowym wyświetlaczem. Używanie do tego celu timera to zbyt duży wysiłek.

We współczesnym świecie urządzenia siedmiosegmentowe są już zastępowane wskaźnikami LCD, które mogą wyświetlać zupełnie inne informacje.

ale aby z nich korzystać, potrzebujesz pewnych umiejętności w obwodach takich urządzeń. Jak dotąd nie ma nic prostszego i tańszego niż siedmiosegmentowe kierunkowskazy LED.

Rzeczywisty problem, a tym samym interesująca część tego artykułu, pojawia się jednak bezpośrednio po pętli etykiety. Należy pamiętać, że wartość licznika musi zostać podwojona. Jest to bezpośrednio związane z faktem, że pamięć flash jest werbalna, a nie bajtowa. Drugi przykład na tej stronie robi to inaczej. Pokazuje, jak asembler może zapobiec generowaniu bajtów wypełniających za pomocą innego wpisu w tablicy. Interesujące jest również to, że obliczenia wymagają rejestru, który zawiera wartość 0.

Dlatego ta stała musi najpierw zostać załadowana do rejestru i dopiero wtedy można wykonać dodawanie przy użyciu tego rejestru. Co ciekawe, fakt ten występuje w wielu programach, a stałe w przeważającej większości przypadków są stałymi 0. Dlatego wielu programistów od samego początku rezerwuje dla tego rejestr i nazywa go rejestrem zerowym.

W tym artykule omówimy odczyt cyfrowy.
Siedmiosegmentowe wskaźniki LED są przeznaczone do wyświetlania cyfr arabskich od 0 do 9 (rys. 1).

Takie wskaźniki są jednocyfrowe, które wyświetlają tylko jedną liczbę, ale może być więcej grup siedmiosegmentowych połączonych w jedną całość (wielocyfrowe). W tym przypadku liczby są oddzielone kropką dziesiętną (ryc.2)

Niestety jest problem, ponieważ do wyświetlenia potrzeba ośmiu portów - cztery reklamy wymagałyby 32 portów. Ale jest kilka sposobów. Rejestry przesuwne są już omówione w innym samouczku. Ułatwiłoby to utworzenie wymaganych 32 linii wyjściowych za pomocą tylko trzech styków. Zasada jazdy jest taka sama, jak w przypadku sterowania pojedynczym 7-segmentowym wyświetlaczem, tylko sposób zbliżania się „pinów wyjściowych” do swoich wartości jest inny i jest określany za pomocą rejestrów przesuwnych. Na ten momentjednak musi być pokazana inna opcja sterowania.



Ryc.2.

Wskaźnik nazywany jest siedmiosegmentowym, ponieważ wyświetlany symbol jest zbudowany z oddzielnych siedmiu segmentów. Wewnątrz obudowy takiego wskaźnika znajdują się diody LED, z których każda oświetla swój własny segment.
Wyświetlanie liter i innych symboli na takich wskaźnikach jest problematyczne, dlatego do tych celów stosuje się wskaźniki 16-segmentowe.

Ponownie przyjrzymy się multipleksowaniu poniżej. Multipleksowanie oznacza, że \u200b\u200bnie wszystkie cztery wyświetlacze włączają się w tym samym czasie, ale tylko jeden na krótki czas. Jeśli zmiana między wyświetlaczami jest szybsza niż my, ludzie, jesteśmy w stanie dostrzec, wszystkie cztery światła wydają się działać jednocześnie, chociaż tylko jedno świeci się przez jeden krótki okres czasu. W ten sposób cztery wyświetlacze mogą dzielić oddzielne segmenty segmentu, a wszystko, czego potrzeba, to 4 dodatkowe linie kontrolne dla 4 wyświetlaczy, z którymi wyświetlacz jest włączony.

Jednym z aspektów tego typu sterowania jest częstotliwość multipleksowania, czyli pełny cykl przejścia z jednego wyświetlacza do drugiego. Powinien być wystarczająco wysoki, aby uniknąć migotania wyświetlacza. Ludzkie oko jest ospałe, w kinie 24 klatki na sekundę, telewizor ma być bezpieczny, że również obrazy nieruchome są spokojne, każdy segment musi być monitorowany co najmniej 100 Hz, więc łączy się co najmniej co 10 ms. Jednak w wyjątkowych przypadkach nawet 100 Hz może nadal migotać, na przykład, gdy wyświetlacz szybko się porusza lub gdy występują zakłócenia ze źródeł sztucznego światła, które działają na prąd zmienny.

Istnieją dwa rodzaje wskaźników LED.
W pierwszej z nich wszystkie katody, tj. ujemne przewody wszystkich diod LED są połączone razem i odpowiedni przewód jest przypisany do nich na obudowie.
Pozostałe przewody wskaźnika są podłączone do anody każdej z diod LED (rys. 3, a). Nazywa się to wspólnym obwodem katodowym.
Istnieją również wskaźniki, w których diody LED każdego z segmentów są połączone zgodnie ze schematem ze wspólną anodą (ryc. 3, b).



Ryc.3.

Każdy segment jest oznaczony odpowiednią literą. Rysunek 4 pokazuje ich lokalizację.

Ryc.4.

Jako przykład rozważmy dwucyfrowy siedmiosegmentowy wskaźnik GND-5622As-21 z czerwoną poświatą. Nawiasem mówiąc, są inne kolory, w zależności od modelu.
Korzystając z baterii o napięciu trzech woltów, możesz włączyć segmenty, a jeśli połączysz grupę pinów w pęczek i zastosujesz do nich moc, możesz nawet wyświetlać liczby. Ale ta metoda jest niewygodna, dlatego do sterowania siedmiosegmentowymi wskaźnikami używane są rejestry przesuwne i dekodery. Również dość często wyjścia wskaźników są podłączone bezpośrednio do wyjść mikrokontrolera, ale tylko w przypadku stosowania wskaźników o niskim poborze prądu. Rysunek 5 przedstawia fragment obwodu wykorzystujący PIC16F876A.



Ryc.5.

Do sterowania siedmiosegmentowym wyświetlaczem często używany jest dekoder K176ID2.
Ten mikroukład jest w stanie przekształcić kod binarny składający się z zer i jedynek na cyfry dziesiętne od 0 do 9.

Aby zrozumieć, jak to wszystko działa, musisz złożyć prosty diagram (rysunek 6). Dekoder K176ID2 jest wykonany w pakiecie DIP16. Posiada 7 pinów wyjściowych (piny 9-15), każdy dedykowany do określonego segmentu. Sterowanie punktowe nie jest tutaj dostępne. Ponadto mikroukład ma 4 wejścia (piny 2 - 5) do zasilania kod binarny... Szesnasta i ósma szpilka mają odpowiednio moc dodatnią i ujemną. Pozostałe trzy wnioski mają charakter pomocniczy, omówię je nieco później.



Ryc.6.

DD1 - K176ID2
R1 - R4 (10 - 100 kΩ)
HG1 - GND-5622As-21

W obwodzie znajdują się 4 przełączniki dźwigniowe (można użyć dowolnych przycisków), po ich naciśnięciu na wejścia dekodera z zasilacza plus zasilana jest jednostka logiczna. Nawiasem mówiąc, sam mikroukład jest zasilany napięciem od 3 do 15 woltów. W ten przykład Cały obwód zasilany jest 9-woltową „koronką”.

W obwodzie są również 4 rezystory. Są to tak zwane rezystory podciągające. Są potrzebne do zagwarantowania niskiego poziomu na wejściu logicznym w przypadku braku sygnału. Bez nich odczyty na wskaźniku mogą być wyświetlane nieprawidłowo. Zaleca się użycie tego samego rezystancje od 10 kOhm do 100 kOhm.

Na schemacie piny 2 i 7 wskaźnika HG1 nie są połączone. Jeśli połączysz pin DP z minusem zasilacza, zaświeci się przecinek dziesiętny. A jeśli wyślesz minus do pinu Dig.2, to druga grupa segmentów również się zaświeci (pokaże ten sam symbol).

Wejścia dekodera są rozmieszczone w taki sposób, że aby wyświetlić cyfry 1, 2, 4 i 8 na wskaźniku, wystarczy jedno naciśnięcie przycisku (płytka stykowa ma przełączniki dwustabilne odpowiadające wejściom D0, D1, D2 i D3). W przypadku braku sygnału wyświetlana jest liczba zero. Gdy sygnał jest podawany na wejście D0, wyświetlana jest liczba 1. I tak dalej. Aby wyświetlić inne liczby, wymagane jest naciśnięcie kombinacji przełączników dwustabilnych. A co dokładnie trzeba kliknąć, powie nam tabela 1.


Tabela 1.

Aby wyświetlić cyfrę „3” konieczne jest zastosowanie jednostki logicznej na wejściu D0 i D1. Jeśli dasz sygnał do D0 i D2, zostanie wyświetlona liczba „5” (rys. 6).



Ryc.6.

Oto rozszerzona tabela, w której widzimy nie tylko oczekiwaną liczbę, ale także te segmenty (a - g), które będą składać się na tę liczbę.



Tabela 2.

Pomocnicze to 1, 6 i 7 piny mikroukładu (odpowiednio S, M, K).

Na schemacie (rys. 6) szósty zacisk „M” jest uziemiony (do minusa zasilania), a na wyjściu mikroukładu występuje napięcie dodatnie do pracy ze wskaźnikiem ze wspólną katodą. Jeżeli używany jest wskaźnik ze wspólną anodą, to należy go przyłożyć do szóstego wyjścia.

Jeżeli jednostka logiczna zostanie przyłożona do 7. pinu "K", to znak wskaźnika gaśnie, zero włącza wskazanie. W schemacie ten wniosek uziemiony (do minus zasilania).

Jednostka logiczna (plus zasilanie) jest podawana na pierwsze wyjście dekodera, co pozwala na wyświetlenie przekonwertowanego kodu na wskaźniku. Ale jeśli logiczne zero zostanie przyłożone do tego pinu (S), wejścia przestaną odbierać sygnał, a aktualnie wyświetlany znak zatrzyma się na wskaźniku.

Warto zwrócić uwagę na jedną interesującą rzecz: wiemy, że przełącznik dźwigienkowy D0 zawiera cyfrę „1”, a przełącznik dźwigienkowy D1 cyfrę „2”. Jeśli naciśniesz oba przełączniki, zostanie wyświetlona cyfra 3 (1 + 2 \u003d 3). W innych przypadkach wskaźnik wyświetla sumę cyfr składających się na tę kombinację. Dochodzimy do wniosku, że wejścia dekodera są dobrze przemyślane i mają bardzo logiczne kombinacje.

Możesz także obejrzeć wideo do tego artykułu.

Na prośbę pracowników postanowiłem opowiedzieć o wspaniałej rzeczy zwanej 7-segmentowym wskaźnikiem LED. Na początek, co to jest. Oto taka rzecz. To jest jeden bit, są też dwa, trzy i cztery bity. Widziałem jeszcze sześć bitów. Po każdej cyfrze znajduje się przecinek dziesiętny. Jeśli są cztery cyfry, najczęściej po drugiej cyfrze można znaleźć dwukropek wskazujący sekundy podczas wyświetlania czasu. Po uporaniu się z kawałkami żelaza przejdźmy do badania obwodu. Co to jest ogólnie wskazanie dynamiczne i dlaczego jest potrzebne. Ponieważ wskaźnik jest 7-segmentowy, tylko 7 segmentów jest używanych do wyświetlenia cyfry. Są zawsze oznaczone łacińskimi literami. A, B, C, D, E, F, G i DP Zobacz zdjęcie. Pod każdym segmentem znajduje się dioda LED. Wszystkie diody LED są podłączone na jednym końcu. Albo anody, albo katody, a przeciwne końce są wyprowadzane. Łatwo zauważyć, że do wyświetlenia cyfry należy użyć 8 pinów. Jeden wspólny i siedem dla segmentów. Jeśli chodzi o jedną kategorię, to nie ma się nad czym zastanawiać, po prostu wieszamy wszystko na jednym porcie. A jeśli są cztery cyfry? Osiem razy cztery to trzydzieści dwa. Aha ... Tak, przejrzeć taki wskaźnik 32 mega. To nie zadziała. Istnieją dwa rozwiązania. Nasze z tobą wskazanie dynamiczne lub statyczne. Aby lepiej zrozumieć, spójrzmy na diagram włączania wskaźnika.

Schemat ten zakłada dynamiczne wskazanie. Tak, jestem dynamiczny i statyczny. Jaka jest różnica?. Wskazanie statyczne ma miejsce, gdy ustawimy każdą cyfrę na jej własną cyfrę i jest ona stale włączona, a wskazanie dynamiczne ma miejsce, gdy wyprowadzamy cyfrę do pierwszej cyfry, następnie ją wygaszamy i wyprowadzamy na drugą cyfrę, a następnie wygaszamy i wyprowadzamy na trzecią cyfrę i tak dalej, aż zrzuty się nie wyczerpią. Po ostatnim rozładowaniu wróć do pierwszego i tak dalej w kółko. Jeśli zrobisz to powoli, będziesz mógł kontemplować cyfrową pełzającą linię, a jeśli zwiększysz prędkość np. Do 50 Hz, to nie zobaczysz migotania oczu. Tak działa wyświetlacz dynamiczny. Spójrzmy teraz na obwód. Po lewej stronie ATmega8 MK, mikroukład 74ALS373 wisi za nim na porcie D. Dlaczego jest to potrzebne? Faktem jest, że wskaźnik to zaledwie 8 diod LED zmontowanych w rodzaj matrycy. Oznacza to, że wskaźnik można przedstawić jako linię 8 diod LED. A jak wiadomo diody jedzą w stosunku do MK ile ile. Oczywiście nie jest zabronione bezpośrednie podłączanie, ale lepiej jest umieścić jakiś repeater między MK a wskaźnikiem. W tym celu zdecydowałem się użyć 8-bitowego bufora zatrzaskowego. Dlaczego on. Biorąc pod uwagę, że używam wskaźnika ze wspólną anodą, czyli do zadania cyfry poziom aktywny to 0, to można by było bezpiecznie korzystać z mikroukładu ULN2003A (7 zespołów tranzystorowych według schematu Darlingtona) i nie kąpać się buforem, ale ... Ale fakt jest taki, że ULN2003A ma na pokładzie tylko tranzystory NPN i mogę używać tylko wskaźnika ze wspólną anodą, ale czy muszę go zasilić ze wspólną katodą? Tutaj pomoże bufor, ponieważ to, co tam napiszę, będzie wyjściem. Chcesz 0, chcesz 1. Nogi kontrolne są połączone w trybie translatora. Oznacza to, że bufor wyprowadza to samo wyjście, co wejście. Izolacja pseudogalwaniczna Ala. Za buforem znajdują się rezystory ograniczające prąd. Pamiętaj, to są diody LED i będą się palić bez rezystorów. Wartość rezystorów musi być nieco mniejsza niż dopuszczalna. Faktem jest, że dynamiczny wyświetlacz wyświetla znaki z określoną częstotliwością i jest to u krewnych PWM, to znaczy im wyższa częstotliwość, tym większy kontrast, że tak powiem. A przy najwygodniejszym kontraście cyfry będą świecić nieco słabiej. Dlatego rezystory muszą mieć nieco mniejszą wartość. Użyłem tylko 360 omów, ponieważ miałem jeden. Dalej za rezystorami jest nasz wskaźnik. Z drugiej strony, gdzie są anody, podłączyłem pierwsze cztery bity portu C. Więc w pewnym sensie wymyśliliśmy obwód. Omówmy teraz algorytm programu. Aby kolejno włączać cyfry wskaźnika, napiszemy oddzielną funkcję i będziemy ją wywoływać bez końca w głównej części programu. Mówiąc dokładniej, funkcja otrzyma liczbę od 0 do 9999, podzieli ją na cyfry, a następnie wyświetli każdą cyfrę w jej miejscu. Jeśli liczba ma mniej niż 4 cyfry, puste miejsca po lewej stronie zostaną wypełnione zerami. Jesteśmy wyrównani na prawej krawędzi. Przejrzymy kategorie od lewej do prawej. Aby zobaczyć jakiekolwiek akcje, używając przerwań z licznika, będziemy zwiększać wyświetlaną liczbę o jedną co sekundę. Więc zadanie jest gotowe do bitwy. # zdefiniować F_CPU 7372800UL // Częstotliwość kwarcu #zawierać #zawierać #zawierać volatile unsigned int test \u003d 9980; // Zmienna dla danych wyjściowych do wskaźnika ISR (TIMER1_COMPA_vect) // Program obsługi przerwania koincydencji timera 1 (test ++; // Zwiększ wyświetlaną liczbę if (test\u003e 9999) test \u003d 0; // Jeśli wykracza poza cztery cyfry, zero TCNT1H \u003d 0x00; // Resetuj rejestr TCNT1L \u003d 0x00; // konta ) void dig_out (int num); // Deklaracja funkcji do wyświetlania wskaźnika int main (void) (DDRC \u003d 0x0F; // Skonfiguruj porty DDRD \u003d 0xFF; // do pracy ze wskaźnikiem Port C dla cyfr, Port D dla cyfr TCCR1A \u003d 0x00; // Ustawianie timera TCCR1B \u003d 0x04; TCNT1H \u003d 0x00; TCNT1L \u003d 0x00; OCR1AH \u200b\u200b\u003d 0x70; OCR1AL \u003d 0x80; TIMSK \u003d 0x10; sei (); // Włącz przerwania while (1) (dig_out (test); // Ciągłe wywoływanie funkcji, aby wyświetlić bieżący numer )) void dig_out (int num) // Funkcja wyświetlania 4 cyfr na wskaźniku (znak bez znaku i \u003d 0; // Zmienna licznika unsigned char raz \u003d 1; // Numer bitu unsigned char dig_num \u003d (0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10); // Kody cyfrowe dla wskaźnika ze wspólną anodą unsigned char dig \u003d (0, 0, 0, 0); // Tablica wartości bitowej if (num (dig \u003d 0; dig \u003d 0; dig \u003d 0;) if (num // Wypełnij lewe cyfry zerami (dig \u003d 0; dig \u003d 0;) if (num // Wypełnij lewe cyfry zerami (dig \u003d 0;) podczas (num\u003e 999) // Uzyskaj liczbę tysięcy (dig ++; num - \u003d 1000;) podczas (num\u003e 99) // Podaj liczbę setek (dig ++; num - \u003d 100;) podczas (num\u003e 9) // Uzyskaj liczbę dziesiątek (dig ++; num - \u003d 10;) dig \u003d num; // Uzyskaj liczbę jednostek podczas gdy (raz // Obracaj, aż wypełnimy wszystkie 4 cyfry (PORTC \u003d raz; // Wybierz kategorię PORTD \u003d dig_num]; // Wydrukuj numer raz \u003d raz // Przejdź do następnej cyfry i ++; // Zwiększ indeks następnej cyfry _delay_ms (1); // 1 ms opóźnienia } } To cały kod. Nie będę go opisywał, ponieważ ma komentarze w każdej linii. Poniżej możesz pobrać archiwum z projektem dla AtmelStudio 6.2 Jeżeli nadal masz pytania to zapraszamy na forum. Cóż, dla najbardziej wybrednych filmów poniżej, cała ta bałałajka))).

Podłączenie 7-segmentowego wyświetlacza do Arduino to świetny projekt dla początkujących płytka Arduino bliższy. Ale jest to dość proste do wykonania. Dlatego nieco skomplikujemy zadanie i połączymy czterocyfrowy siedmiosegmentowy wskaźnik.



W tym przypadku użyjemy 4-cyfrowego modułu LED ze wspólną katodą.


Każdy segment w module wskaźnika jest multipleksowany, to znaczy ma wspólny punkt połączenia anody z innymi segmentami jego wyładowania. Każde z czterech wyładowań w module ma własny punkt połączenia ze wspólną katodą. Pozwala to na niezależne włączanie i wyłączanie każdej cyfry. Ponadto ta technika multipleksowania pozwala mikrokontrolerowi używać tylko jedenastu lub dwunastu pinów zamiast trzydziestu dwóch.



Segmenty diodowe wskaźnika wymagają podłączenia rezystorów ograniczających prąd przy zasilaniu napięciem 5 V na pinie logicznym. Wartość rezystora jest zwykle przyjmowana między 330 a 470 omów. Zaleca się również stosowanie tranzystorów w celu zapewnienia dodatkowego prądu, ponieważ każdy pin mikrokontrolera może dostarczyć maksymalnie 40 mA. Jeśli włączysz wszystkie segmenty rozładowania (cyfra 8), zużyty prąd przekroczy ten limit. Poniższy rysunek przedstawia schemat połączeń czterocyfrowego siedmiosegmentowego wskaźnika wykorzystującego tranzystory rezystorowe ograniczające prąd.



Poniżej schematy podłączenia wskaźnika do pinów Arduino. Wykorzystuje bipolarne tranzystory NPN BC547. Potencjometr 10 kOhm podłączony do wejścia płytki A0 pozwala na zmianę wartości wyświetlanej na wskaźniku od 0 do 1023.




Na płycie Arduino wyjścia cyfrowe D2-D8 służą w tym przypadku do sterowania segmentami od „a” do „g”, a wyjścia cyfrowe D9-D12 do sterowania bitami od D0 do D3. Należy zauważyć, że w tym przykładzie punkt nie jest używany, ale na poniższym szkicu można go użyć. Pin D13 płyty Arduino jest zarezerwowany do sterowania segmentem punktowym.



Poniżej znajduje się kod umożliwiający sterowanie 4-cyfrowym wyświetlaczem segmentowym za pomocą płytki Arduino. W nim tablica liczbowa określa kody liczb od 0 do 9 w postaci binarnej. Ten szkic obsługuje zarówno popularne mierniki katodowe (domyślne), jak i wspólne mierniki anodowe (aby to zrobić, musisz odkomentować jedną linię na końcu szkicu).


// bity reprezentujące segmenty od A do G (i punkty) dla liczb 0-9 const int numeral \u003d (// ABCDEFG / dp B11111100, // 0 B01100000, // 1 B11011010, // 2 B11110010, // 3 B01100110, // 4 B10110110, // 5 B00111110, // 6 B11100000, // 7 B11111110, // 8 B11100110, // 9); // pinezki dla punktu i każdego segmentu // DP, G, F, E, D, C, B, A const int segmentPins \u003d (13,8,7,6,5,4,3,2); const int nbrDigits \u003d 4; // ilość cyfr wskaźnika LED // cyfry 0 1 2 3 const int digitPins \u003d (9,10,11,12); void setup () (for (int i \u003d 0; i< 8; i++) { pinMode(segmentPins[i], OUTPUT); // устанавливаем выводы для сегментов и точки на выход } for(int i=0; i < nbrDigits; i++) { pinMode(digitPins[i], OUTPUT); } } void loop() { int value = analogRead(0); showNumber(value); } void showNumber(int number) { if(number == 0) { showDigit(0, nbrDigits-1) ; // отображаем 0 в правом разряде } else { // отображаем значение, соответствующее каждой цифре // крайняя левая цифра 0, правая на единицу меньше, чем число позиций for(int digit = nbrDigits-1; digit >\u003d 0; digit--) (if (number\u003e 0) (showDigit (number% 10, digit); number \u003d number / 10;)))) // Wyświetl określoną liczbę na podanej cyfrze 7-segmentowego wskaźnika void showDigit (int number, int digit) (digitalWrite (digitPins, HIGH); for (int segment \u003d 1; segment< 8; segment++) { boolean isBitSet = bitRead(numeral, segment); // isBitSet будет истинным, если данный бит будет 1 // isBitSet = ! isBitSet; // опционально // раскомментируйте опциональную строчку выше для индикатора с общим анодом digitalWrite(segmentPins, isBitSet); } delay(5); digitalWrite(digitPins, LOW); }

DZWON

Są tacy, którzy czytają tę wiadomość przed tobą.
Zapisz się, aby otrzymywać najnowsze artykuły.
E-mail
Imię
Nazwisko
Jak chcesz przeczytać The Bell
Bez spamu