Obsługa wyświetlaczy 7-segmentowych


Tomasz Bartuś



2023-05-05
Wyświetlacze 7-segentowe

Wstęp

Wszechobecne diody LED po ułożeniu ich w odpowiednie układy geometryczne mogą posłużyć do wyświelania danych liczbowych - czasu, parametrów różnych urządzeń elektronicznych i innych. Z tym prostym pomyslem związana jest popularność tzw wyświetlaczy 7-segmentowych (Fig. 1).

Wyświetlacz 7-sgmentowy SA15-11SRWA
Fig. 1. Wyświetlacz 7-sgmentowy SA15-11SRWA

Typowe moduły wyświetlaczy 7-segmentowych (SevSeg) składają się z siedmiu diod LED ułożonych w kształt litery "B" (Fig. 2). Dodatkowo najczęściej umieszczana jest jeszcze jedna dioda tzw. DP (ang. Decimal Point) umożliwiająca wyświetlenie kropki tworzącej znak dzisiętny. Siedem diod LED tworzy segmenty o standardowych nazwach: a, b, c, d, e, f, g.

Oznaczenia segmentów oraz pinout układu wyświetlacza 7-sgmentowego SA15-11SRWA
Fig. 2. Oznaczenia segmentów oraz pinout układu wyświetlacza 7-sgmentowego SA15-11SRWA

Wyświetlacze 7-segmentowe LED są produkowane w różnych rozmiarach i kolorach świecenia diod. W celu ograniczenia liczby pinów są one produkowane w dwóch wariantach - ze wspólną anodą (ang. Common Anode (CA)) lub wspólną katodą (ang. Common Cathode (CC)) (Fig. 3). W odmianie ze wspólną anodą każda z diod LED wyświetlacza ma jedną wspólną anodę i osobne wyprowadzenia katod, a w układach ze wspólną katodą jest odwrotnie. Konsekwencją różnej budowy wyświetlaczy jest odmienne sterowanie wyświetlaniem segmentów. W wyświetlaczach ze wspólną anodą, w związku z tym, że na wszystkie anody diod LED podawany jest potencjał wysoki - zaświecanie diod odbywa się przez podanie na odpowiednią katodę potencjału masy (poprzez rezystor ograniczający napięcie i prąd). Z kolei w wyświetlaczach ze wspólną katodą na katodach mamy na stałe podłączony potencjał masy, a diodami sterujemy podając na stosowne anody potencjał dodatni.

Fig. 3. Wyświetlacze 7-segmentowe ze wspólną anodą (z lewej) i ze wspólną katodą (z prawej)

Wyświetlanie znaków alfanumerycznych polega na wprowadzeniu w stan przewodzenia diod LED odpowiednich segmentów. Jak już wspomniano, wyświetlaczami ze wspólna anodą sterujemy podając na katody niskie stany logiczne "0", a wyświetlaczami ze wspólna katodą podając na anody wysokie stany logiczne "1" (Tab. 1).

Tab. 1. Sygnały sterujące wyświetlaczami 7-segmentowymi ze wspólną anodą (CA) i ze wspólną katodą (CC)
Znak Wyświetlacz Segment (zob. Fig. 2) Liczba dziesiętna
a b c d e f g DP
0 CA 0 0 0 0 0 0 1 1 3
CC 1 1 1 1 1 1 0 0 252
1 CA 1 0 0 1 1 1 1 1 159
CC 0 1 1 0 0 0 0 0 96
2 CA 0 0 1 0 0 1 0 1 37
CC 1 1 0 1 1 0 1 0 218
3 CA 0 0 0 0 1 1 0 1 13
CC 1 1 1 1 0 0 1 0 242
4 CA 1 0 0 1 1 0 0 1 153
CC 0 1 1 0 0 1 1 0 102
5 CA 0 1 0 0 1 0 0 1 73
CC 1 0 1 1 0 1 1 0 182
6 CA 0 1 0 0 0 0 0 1 65
CC 1 0 1 1 1 1 1 0 190
7 CA 0 0 0 1 1 1 1 1 31
CC 1 1 1 0 0 0 0 0 224
8 CA 0 0 0 0 0 0 0 1 1
CC 1 1 1 1 1 1 1 0 254
9 CA 0 0 0 0 1 0 0 1 9
CC 1 1 1 1 0 1 1 0 246

Aplikacje

Podczas pracy z wyświetlaczami 7-segmentowymi LED oraz układami mikrokontrolerów np. Arduino należy zwrócić uwagę na podstawowe parametry prądowo-napięciowe. Układy Arduino korzystają z logiki 5-Voltowej i posiadają ograniczenie prądowe pinów cyfrowych (GPIO) 20mA. Umożliwienie przepływu większego prądu może spowodować zniszczenie układu mikrokontrolera. Sterowanie wyświetlaczami za pomoca pinów cyfrowych Arduino będzie więc zasilało je napięciem 5V z ograniczeniem prądowym 20mA. Należy obliczyć wielkość rezystorów, które będą podłączone do diod wyświetlaczy i które ograniczą prąd i obniżą napięcie zasilania do odpowiedniego dla danego typu diod użytych w wyświetlaczu. Dla prezentowanego wyświetlacza 7-segmentowego SA15-11SRWA nota katalogowa informuje, że napięcia przewodzenia są inne dla diod segmentów a-g (3,6-4,6V), a inne dla diody DP (1,8-2,3V). Dla uproszczenia przyjmijmy, że dla wszystkich diod wyświetlacza zastosujemy jedną wartość napięcia przewodzenia 1,85V. Aby obniżyć napięcie zasilania 5V do oczekiwanego 1,85V musimy je obniżyć o 5V - 1,85V = 3,15V. Musimy więc użyć takiego rezystora aby przy znanym ograniczeniu prądowym 20mA utworzył on spadek napięcia 3,15V. Z prawa Ohma R = U / I, możemy obliczyć jego wartość. Podstawiając do wzoru R = 3,15V / 0,02A otrzymujemy rezystancję 157Ω. Teraz możemy przystąpić do budowy pierwszego układu.

Projekt 1. Obsługa wyświetlacza 7-segmentowego - wersja bez rejestrów przesuwczych

Pierwszy układ aplikacyjny wyświetlacza 7-segmentowego wykonano przy użyciu wyświetlacza ze wspólną anodą SA15-11SRWA, układu mikrokontrolera i przy założeniu braku dodatkowych urządzeń sterujących (Fig. 4). Jego zadaniem będzie wyświetlanie w pętli cyfr od 0 do 9.

Prosty układ do testowania wyświetlacza ze wspólną anodą SA15-11SRWA
Fig. 4. Prosty układ do testowania wyświetlacza ze wspólną anodą SA15-11SRWA

Lista elementów

  • mikrokontroler Arduino Nano,
  • wyświetlacz 7-segmentowy SA15-11SRWA lub inny,
  • rezystory ograniczające prąd 150Ω - 8 szt.,
  • płytka prototypowa,
  • przewody/mostki.

Montaż układu

Do zasilania układu będzie wykorzystane złącze USB mikrokontrolera. Anody segmentów wyświetlacza SA15-11SRWA podłączono do +5V zasilania (Fig. 2, 5, 6). Będą poprzez rezystory ograniczające prąd 160Ω sterowane niskim stanem podawanym na piny cyfrowe układu Arduino D2-D9 (Tab. 2).

Schemat 7-sgmentowego wyświetlacza ze wspólną anodą SA15-11SRWA
Fig. 5. Schemat 7-sgmentowego wyświetlacza ze wspólną anodą SA15-11SRWA
Schemat montażowy prostego układu sterującego wyświetlaczem 7-segmentowym ze wspólną anodą SA15-11SRWA
Fig. 6. Schemat montażowy prostego układu sterującego wyświetlaczem 7-segmentowym ze wspólną anodą SA15-11SRWA
Tab. 2. Połączenia wyświetlacza SA15-11SRWA do Arduino
Wyświetlacz Arduino
pin segment pin
1 Anoda +5V
2 e D6
3 d D5
4 c D4
5 Anoda +5V
6 b D3
7 a D2
8 DP D9
9 f D7
10 g D8

Szkic

W szkicu zdefiniowano funkcje wyświetlające cyfry 1-9 (number_one(), number_two(),..., number_nine()). Korzystając z Tab. 1, dla każdej wyświetlanej cyfry, zdefiniowano w nich, które z segmentów mają zostać zaświecone, a które wygaszone. W pętli loop() funkcje te są kolejno wykonywane z półsekundowymi przerwami.

Projekt 2. Obsługa wyświetlacza 7-segmentowego z wykorzystaniem rejestru przesuwczego

Podobnie jak w projekcie pierwszym do sterowania wyświetlaczem 7-segmentowym wykorzystamy mirokontroler Arduino NANO. Tym razem jednak, zamiast sterować każdym segmentem LED za pomocą osobnego pinu GPIO, wykorzystamy rejestr przesuwny 74HC595 i transmisję równoległą.

Układ do testowania wyświetlacza 7-segmentowego LED SA15-11SRWA z rejestrem przesuwnym
Fig. 7. Układ do testowania wyświetlacza 7-segmentowego LED SA15-11SRWA z rejestrem przesuwnym

Lista elementów

  • mikrokontroler Arduino Nano,
  • rejestr przesuwny 74HC595,
  • wyświetlacz 7-segmentowy SA15-11SRWA lub inny,
  • rezystory ograniczające prąd 150Ω - 8 szt.,
  • płytka prototypowa,
  • przewody/mostki.

Montaż układu

Schemat montażowy prostego układu sterującego wyświetlaczem 7-segmentowym ze wspólną anodą SA15-11SRWA z rejestrem przesuwnym
Fig. 8. Schemat montażowy układu sterującego wyświetlaczem 7-segmentowym ze wspólną anodą SA15-11SRWA z rejestrem przesuwnym
Tab. 3. Połączenia wyjść rejestru przesuwnego 74HC595 z wejściami wyświetlacza SA15-11SRWA
rejestr przesuwny wyświetlacz
wyjście pin segment pin
QA 15 a 7
QB 1 b 6
QC 2 c 4
QD 3 d 3
QE 4 e 2
QF 5 f 9
QG 6 g 10
QH 7 DP 8

Szkic

Szkic wysyła do rejestru przesuwnego 74HC595 w pętli kolejne elementy zdefiniowanej tablicy digits[]. Elementy tablicy to liczby w układzie dziesiętnym, które w rzeczywistości są zakodowanymi sygnałami sterującymi wyświetlaczem (zob. Tab. 1). W związku z tym, że korzystamy z wyświetlacza ze wspólną anodą, w tabeli interesują nas wyłącznie kody wierszy CA. Funkcja shiftOut() w kolejnych taktach sygnału zegarowego, szeregowo, po jednym bicie, wysyła na pin cyfrowy 4 mikrokontrolera (wyjście danych) bajt danych. Atrybut LSBFIRST funkcji odpowiada za to aby do rejestru przesuwnego przesyłać bity elementów tablicy w kolejności od najmłodszego (LSB - skrajnie lewy) do najstarszego (MSB - (najbardziej prawy).

Wykorzystane materiały

Boxall J., 2014. Arduino. 65 praktycznych projektów. Helion, Gliwice.
Ewelina, 2017. Rejestr przesuwny 74HC595.
Ewelina, 2017. Sterowanie wyświetlaczem siedmiosegmentowym. Programowanie strukturalne.
 
 

Doktorat

Spis treści
Rozdzialy
Abstrakt [pl]
Abstract [eng]