Bity w elektronice
Sterowanie wyświetlaczem cyfrowym LED


Bramki logiczne
Cyfrowe układy scalone TTL i CMOS
Zasilanie układów TTL i CMOS
Zjawisko hazardu w sieciach logicznych
  Projekty
Bramka sterowana OR - AND - EXOR - NAND
Czytnik klawiatury numerycznej
Konwerter kodu 8421 na kod Gray'a
Konwerter kodu Gray'a na kod 8421
8-bitowy generator bitu parzystości
Konwerter kodu BCD na kod Aikena
Konwerter kodu Aikena na kod BCD
Sterowanie wyświetlaczem kostki do gry
Sterowanie wyświetlaczem cyfrowym LED
Konwerter kodu BCD na kod 1 z 10
Sterownik wskaźnika postępu z 10 diod LED
4-bitowy multiplekser
4-bitowy demultiplekser
1-bitowy sumator

Opis

Wyświetlacze cyfrowe LED (ang. Light Emitting Diode - dioda emitująca światło, LED display, digital LED display, BCD to seven segment decoder/driver) są powszechnie stosowane w różnym sprzęcie elektronicznym - radia, telewizory, zasilacze, urządzenia pomiarowe, termometry cyfrowe, zegary itp. Zbudowane są z diod LED, które pod wpływem przyłożonego napięcia (około 2...2,4V) świecą różnymi kolorami, najczęściej na czerwono, chociaż obecnie inne kolory również stają się popularne.

Świecenie diody LED nie ma nic wspólnego z procesami termicznymi, jak np. w żarówce. Pod wpływem przepływu elektronów przez specjalnie dobrany półprzewodnik następuje wzbudzanie jego atomów i generacja fotonów o ściśle określonych długościach fal, które wydostają się na zewnątrz dając efekt świecenia diody. Procesy te są bardzo szybkie - diodę LED można załączać i wyłączać miliony razy na sekundę (własność tę wykorzystują np. nadajniki światłowodowe). Ponieważ w trakcie świecenia dioda nie rozgrzewa się do wysokich temperatur, jej bezawaryjny czas pracy jest bardzo długi - około 50...100 tysięcy godzin. Więcej na temat diod LED znajdziesz tutaj.

Budowa cyfrowego wyświetlacza LED

Typowy, cyfrowy wyświetlacz LED zbudowany jest z 7 segmentów, za pomocą których można wyświetlać wszystkie cyfry oraz kilkanaście liter i innych znaków (do liter stosuje się wyświetlacze alfanumeryczne, które posiadając dodatkowe segmenty pozwalają wyświetlać wszystkie litery alfabetu).

 

 

Każdy segment jest podświetlany przez oddzielną diodę LED. Aby zaoszczędzić na liczbie wyprowadzeń wyświetlacza, wewnętrznie diody są ze sobą połączone katodami (wyświetlacz o wspólnej katodzie - ang. common cathode) lub anodami (wyświetlacz o wspólnej anodzie - ang. common anode).

 

Wspólna katoda
    Wspólna anoda
   

 

Wyświetlacz o wspólnej katodzie zaświeca segmenty, jeśli na ich wejścia sterujące podamy poziom wysoki. Z kolei wyświetlacz o wspólnej anodzie reaguje na poziom niski na wejściach sterujących. Należy na ten fakt zwrócić uwagę przy konstruowaniu urządzenia cyfrowego. Praktycznie wszystkie wyświetlacze LED są produkowane w obu wariantach połączeń.

Określenie funkcji logicznych

W tym projekcie zbudujemy sterownik wyświetlacza LED ze wspólną katodą. Na początek określmy sygnały wejściowe i wyjściowe

 

 

Sterownik posiada cztery wejścia D, C, B, A, na które podajemy cyfrę dziesiętną w kodzie BCD. W odpowiedzi na wyjściach a, b, c, d, e, f i g pojawiają się sygnały sterujące odpowiednimi segmentami wyświetlacza LED. Poniższa tabelka definiuje sygnały wyjściowe w funkcji sygnałów wejściowych.

 

wejście wyjście cyfra
D C B A a b c d e f g
0 0 0 0 1 1 1 1 1 1 0
0 0 0 1 0 1 1 0 0 0 0
0 0 1 0 1 1 0 1 1 0 1
0 0 1 1 1 1 1 1 0 0 1
0 1 0 0 0 1 1 0 0 1 1
0 1 0 1 1 0 1 1 0 1 1
0 1 1 0 1 0 1 1 1 1 1
0 1 1 1 1 1 1 0 0 1 0
1 0 0 0 1 1 1 1 1 1 1
1 0 0 1 1 1 1 1 0 1 1

 

Na podstawie tabelki tworzymy tablice Karnaugha dla poszczególnych sygnałów wyjściowych i dokonujemy minimalizacji funkcji logicznych, sprowadzając je do funkcji NAND.

 

Obszar a1
00 01 11 10
00 1 0 1 1
01 0 1 1 1
11 X X X X
10 1 1 X X

a1 = D

Obszar a2
00 01 11 10
00 1 0 1 1
01 0 1 1 1
11 X X X X
10 1 1 X X

a2 = B

Obszar a3
00 01 11 10
00 1 0 1 1
01 0 1 1 1
11 X X X X
10 1 1 X X

a3 = AC

Obszar a4
00 01 11 10
00 1 0 1 1
01 0 1 1 1
11 X X X X
10 1 1 X X

a4 = A C

 

 

Obszar b1
00 01 11 10
00 1 1 1 1
01 1 0 1 0
11 X X X X
10 1 1 X X

b1 = C

Obszar b2
00 01 11 10
00 1 1 1 1
01 1 0 1 0
11 X X X X
10 1 1 X X

b2 = A B

Obszar b3
00 01 11 10
00 1 1 1 1
01 1 0 1 0
11 X X X X
10 1 1 X X

b3 = AB

   

 

Obszar c1
00 01 11 10
00 1 1 1 0
01 1 1 1 1
11 X X X X
10 1 1 X X

c1 = B

Obszar c2
00 01 11 10
00 1 1 1 0
01 1 1 1 1
11 X X X X
10 1 1 X X

c2 =A

Obszar c3
00 01 11 10
00 1 1 1 0
01 1 1 1 1
11 X X X X
10 1 1 X X

c3 = C

   

 

Obszar d1
00 01 11 10
00 1 0 1 1
01 0 1 0 1
11 X X X X
10 1 1 X X

d1 = D

Obszar d2
00 01 11 10
00 1 0 1 1
01 0 1 0 1
11 X X X X
10 1 1 X X

d2 = AB

Obszar d3
00 01 11 10
00 1 0 1 1
01 0 1 0 1
11 X X X X
10 1 1 X X

d3 = B C

Obszar d4
00 01 11 10
00 1 0 1 1
01 0 1 0 1
11 X X X X
10 1 1 X X

d4 = ABC

Obszar d5
00 01 11 10
00 1 0 1 1
01 0 1 0 1
11 X X X X
10 1 1 X X

d5 = A C

 

Obszar e1
00 01 11 10
00 1 0 0 1
01 0 0 0 1
11 X X X X
10 1 0 X X

e1 = AB

Obszar e2
00 01 11 10
00 1 0 0 1
01 0 0 0 1
11 X X X X
10 1 0 X X

e2 = A C

     

 

Obszar f1
00 01 11 10
00 1 0 0 0
01 1 1 1 1
11 X X X X
10 1 1 X X

f1 = A B

Obszar f2
00 01 11 10
00 1 0 0 0
01 1 1 1 1
11 X X X X
10 1 1 X X

f2 = C

Obszar f3
00 01 11 10
00 1 0 0 0
01 1 1 1 1
11 X X X X
10 1 1 X X

f3 = D

   

 

Obszar g1
00 01 11 10
00 0 0 1 1
01 1 1 0 1
11 X X X X
10 1 1 X X

g1 = B C

Obszar g2
00 01 11 10
00 0 0 1 1
01 1 1 0 1
11 X X X X
10 1 1 X X

g2 = D

Obszar g3
00 01 11 10
00 0 0 1 1
01 1 1 0 1
11 X X X X
10 1 1 X X

g3 = AB

Obszar g4
00 01 11 10
00 0 0 1 1
01 1 1 0 1
11 X X X X
10 1 1 X X

g4 = B C

 

 

Podsumujmy otrzymane funkcje logiczne dla poszczególnych wyjść sterownika:

 

 

Testowy program w języku C++

Przed budową sieci logicznej sprawdzimy poprawność funkcji za pomocą prostego programu w języku C++. Program wygeneruje kolejne wartości sygnałów wejściowych D, C, B i A, a następnie na ich podstawie wyliczy wartości sygnałów wyjściowych a, b, c , d, e, f i g.  Jeśli otrzymamy zgodność z tabelką, to funkcje są wyprowadzone poprawnie.

 

// Test funkcji dla sterownika wyświetlacza LED
//---------------------------------------------
// (C)2007 mgr Jerzy Wałaszek I-LO w Tarnowie
//---------------------------------------------

#include <iostream>

using namespace std;

int main()
{
  bool A,B,C,D,a,b,c,d,e,f,g;
  int i;
  
  cout << " D C B A | a b c d e f g | X \n"
          "---------+---------------+---\n";
  for(i = 0; i < 10; i++)
  {

// obliczamy sygnały wejściowe

    D = (i & 8) > 0;
    C = (i & 4) > 0;
    B = (i & 2) > 0;
    A = (i & 1) > 0;
    
// obliczamy sygnały wyjściowe

    a = !((!B&&!D)&&!(A&&C)&&!(!A&&!C));
    b = !(C&&!(!A&&!B)&&!(A&&B));
    c = !(!A&&B&&!C);
    d = !(!D&&!(!A&&B)&&!(!C&&!(A&&!B))&&!(A&&!B&&C));
    e = !!(!A&&!(!B&&C));
    f = !(!(!A&&!B)&&!C&&!D);
    g = !(!(!B&&C)&&!D&&!(B&&!(A&&C)));
    
// wyświetlamy wyniki

    cout << " " 
         << D << " " << C << " " << B << " " << A << " | "
         << a << " " << b << " " << c << " " << d << " "
         << e << " " << f << " " << g << " | " << i << endl;
  }
  cout << endl;
  return 0;
}
 D C B A | a b c d e f g | X
---------+---------------+--
 0 0 0 0 | 1 1 1 1 1 1 0 | 0
 0 0 0 1 | 0 1 1 0 0 0 0 | 1
 0 0 1 0 | 1 1 0 1 1 0 1 | 2
 0 0 1 1 | 1 1 1 1 0 0 1 | 3
 0 1 0 0 | 0 1 1 0 0 1 1 | 4
 0 1 0 1 | 1 0 1 1 0 1 1 | 5
 0 1 1 0 | 1 0 1 1 1 1 1 | 6
 0 1 1 1 | 1 1 1 0 0 1 0 | 7
 1 0 0 0 | 1 1 1 1 1 1 1 | 8
 1 0 0 1 | 1 1 1 1 0 1 1 | 9
D C B A a b c d e f g X
0 0 0 0 1 1 1 1 1 1 0 0
0 0 0 1 0 1 1 0 0 0 0 1
0 0 1 0 1 1 0 1 1 0 1 2
0 0 1 1 1 1 1 1 0 0 1 3
0 1 0 0 0 1 1 0 0 1 1 4
0 1 0 1 1 0 1 1 0 1 1 5
0 1 1 0 1 0 1 1 1 1 1 6
0 1 1 1 1 1 1 0 0 1 0 7
1 0 0 0 1 1 1 1 1 1 1 8
1 0 0 1 1 1 1 1 0 1 1 9

 

Otrzymane wyniki zgadzają się z tabelką sygnałów wejściowych i wyjściowych sterownika, zatem wyprowadzone funkcje są poprawne i możemy przystąpić do budowy sieci logicznej.

Symulacja sieci logicznej

Zestawienie elementów

Obciążenia wnoszone przez poszczególne wejścia: A - 5,  B - 5, C - 5,  D - 1,

SN7400 x 3

SN7404 x 1

SN7410 x 2

SN7420 x 1

 

Scalony sterownik wyświetlacza LED - SN7448

Sieć logiczna sterownika wyświetlacza cyfrowego LED wymaga zastosowania aż 7 układów scalonych TTL. Ponieważ wyświetlacze LED są powszechnie stosowane w różnym sprzęcie cyfrowym, przemysł elektroniczny produkuje scalone sterowniki, które zawierają taką sieć wewnątrz pojedynczego układu, udostępniając dodatkowe funkcje. Takim właśnie scalonym sterownikiem jest na przykład układ scalony TTL SN7448 (również SN7446, SN7447 i SN7449 - sterują wyświetlaczami o wspólnej anodzie).

 

SN7448

 

Układ SN7448 pozwala bezpośrednio sterować 7 segmentowym wyświetlaczem LED o wspólnej katodzie, czyli realizuje podobne funkcje do naszego sterownika. Typowa aplikacja dla tego układu jest następująca:

 

 

Sygnały sterujące LT, BI/RBO i RBI (LT - LED Test,  BI - Blanking Input - wejście wygaszające,  RBO - Ripple-Blanking Output - wyjście sztafetowego wygaszania, RBI - Ripple-Blanking Input - wejście sztafetowego wygaszania) umożliwiają testowanie wyświetlacza oraz wygaszanie początkowych zer w układach sterujących większą liczbą wyświetlaczy cyfr. Więcej informacji na temat tego układu znajdziesz w katalogach producenta. Poniższa tabelka przedstawia zależności pomiędzy sygnałami wejściowymi i wyjściowymi dla układu SN7448. Zwróć uwagę na uboższe o jeden segment wyświetlanie cyfr 6, 7 i 9.

 

Wejścia BI/RBO Wyjścia LED Uwagi
LT RBI D C B A a b c d e f g
1 1 0 0 0 0 1 1 1 1 1 1 1 0 Cyfry
1 X 0 0 0 1 1 0 1 1 0 0 0 0
1 X 0 0 1 0 1 1 1 0 1 1 0 1
1 X 0 0 1 1 1 1 1 1 1 0 0 1
1 X 0 1 0 0 1 0 1 1 0 0 1 1
1 X 0 1 0 1 1 1 0 1 1 0 1 1
1 X 0 1 1 0 1 0 0 1 1 1 1 1
1 X 0 1 1 1 1 1 1 1 0 0 0 0
1 X 1 0 0 0 1 1 1 1 1 1 1 1
1 X 1 0 0 1 1 1 1 1 0 0 1 1
1 X 1 0 1 0 1 0 0 0 1 1 0 1 Znaki
specjalne
1 X 1 0 1 1 1 0 0 1 1 0 0 1
1 X 1 1 0 0 1 0 1 0 0 0 1 1
1 X 1 1 0 1 1 1 0 0 1 0 1 1
1 X 1 1 1 0 1 0 0 0 1 1 1 1
1 X 1 1 1 1 1 0 0 0 0 0 0 0
X X X X X X 0 0 0 0 0 0 0 0 Wygaszenie
1 0 0 0 0 0 0 0 0 0 0 0 0 0 Wygaszenie zera
0 X X X X X 1 1 1 1 1 1 1 1 Test diod LED

 

  



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.