Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
Wskaźniki postępu (ang. LED Light Bar Graph Displays) są zbudowane z kilkunastu diod LED, które zapalają się w ten sposób, iż tworzą słupek świetlny o różnych wysokościach. Stosuje się je powszechnie w sprzęcie audiowizualnym do wskazywania poziomu sygnałów wejściowych lub wyjściowych - człowiek lepiej reaguje na sygnały ilościowe (długość paska, wychylenie wskazówki), niż na liczby. Z tego powodu do dzisiaj wciąż używa się w lotnictwie wskaźniki analogowe zamiast czysto cyfrowych (chociaż ich obraz może być produkowany cyfrowo przez komputer pokładowy):
Sam wskaźnik można zakupić jako gotowy produkt lub zbudować samemu z pojedynczych diod LED. Diody łączy się anodami lub katodami, uzyskując w ten sposób różne schematy zasilania z wyjść układów cyfrowych:
Wspólna anoda
|
dla Ud = 1,8V otrzymujemy: Dioda świeci przy |
Wspólna katoda
|
dla Ud = 1,8V otrzymujemy: Dioda świeci przy |
Zaprojektujemy sterownik wskaźnika postępu zbudowanego z 10 czerwonych diod LED połączonych anodami - stanem aktywnym będzie stan niski. Na wejścia sterownika podamy wartość od 0 do 10 w kodzie 8421. Na wyjściu otrzymamy sygnały sterujące poszczególnymi diodami LED wskaźnika.
Funkcje logiczne wyjść q1 ... q10 określimy na podstawie tabelki:
Wartość | D | C | B | A | q1 | q2 | q3 | q4 | q5 | q6 | q7 | q8 | q9 | q10 |
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
3 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
4 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
5 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
6 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
7 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
8 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
9 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
10 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Układamy tablice Karnaugha i odczytujemy z nich zminimalizowane funkcje wyjść sterownika. Funkcje sprowadzamy do operacji NAND.
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Podsumujmy otrzymane funkcje wyjść q sterownika:
Budowę sieci rozpoczynamy od sygnałów wejściowych oraz ich zaprzeczeń:
Teraz tworzymy funkcje wyjść:
...
Numerujemy bramki:
Definiujemy sieć połączeń
Do sieci będą przekazywane kolejne dane w kodzie 8421 od 0 do 10. Na wyjściach q powinniśmy otrzymać:
Wartość | D | C | B | A | q1 | q2 | q3 | q4 | q5 | q6 | q7 | q8 | q9 | q10 |
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
3 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
4 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
5 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
6 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
7 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
8 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
9 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
10 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
C++// Symulacja sieci logicznej // transkodera BCD na 1 z 10 // (C)2020 mgr Jerzy Wałaszek // I LO w Tarnowie #include <iostream> using namespace std; // Funkcje bramek int NOT(int a) { return !a; } int NAND(int a, int b, int c = 1, int d = 1) { return !(a && b && c && d); } int main( ) { // Stany wejściowe oraz stany wyjściowe int A,B,C,D,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10; // Stany wyjściowe bramek int YB1, YB2, YB3, YB4, YB5, YB6, YB7, YB8, YB9, YB10; int YB11,YB12,YB13,YB14,YB15,YB16,YB17,YB18,YB19,YB20; int YB21,YB22,YB23,YB24,YB25,YB26; int i; cout << " D C B A | q1 q2 q3 q4 q5 q6 q7 q8 q9 q10\n" "---------+-------------------------------" << endl; // W pętli generujemy kody liczb 8421 od 0 do 10 for(i = 0; i < 11; i++) { // Wydobywamy bity kodu 8421 D = (i & 8) > 0; C = (i & 4) > 0; B = (i & 2) > 0; A = (i & 1); // Symulacja sieci YB1 = NOT(D); YB2 = NOT(C); YB3 = NOT(B); YB4 = NOT(A); YB5 = NAND(YB4,YB3,YB2,YB1); YB6 = NAND(YB3,YB2,YB1); YB7 = NAND(A,B); YB8 = NAND(YB2,YB1); YB9 = NAND(YB4,YB3); YB10 = NAND(B,C); YB11 = NAND(A,B,C); YB12 = NAND(YB4,YB3); YB13 = NAND(YB4,B,YB2,D); YB14 = NOT(YB5); YB15 = NOT(YB6); YB16 = NAND(YB7,YB2,YB1); YB17 = NOT(YB8); YB18 = NAND(YB9,C); YB19 = NAND(YB10,YB1); YB20 = NAND(YB11,YB1); YB21 = NAND(YB12,D); YB22 = NOT(YB16); YB23 = NAND(YB18,YB1); YB24 = NOT(YB19); YB25 = NOT(YB20); YB26 = NOT(YB23); q1 = YB14; q2 = YB15; q3 = YB22; q4 = YB17; q5 = YB26; q6 = YB24; q7 = YB25; q8 = YB1; q9 = YB21; q10 = YB13; // Wyświetlamy wyniki cout << " " << D << " " << C << " " << B << " " << A << " | " << q1 << " " << q2 << " " << q3 << " " << q4 << " " << q5 << " " << q6 << " " << q7 << " " << q8 << " " << q9 << " " << q10 << " " << endl; } cout << endl; return 0; } |
Wynik: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
D C B A | q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 ---------+------------------------------- 0 0 0 0 | 1 1 1 1 1 1 1 1 1 1 0 0 0 1 | 0 1 1 1 1 1 1 1 1 1 0 0 1 0 | 0 0 1 1 1 1 1 1 1 1 0 0 1 1 | 0 0 0 1 1 1 1 1 1 1 0 1 0 0 | 0 0 0 0 1 1 1 1 1 1 0 1 0 1 | 0 0 0 0 0 1 1 1 1 1 0 1 1 0 | 0 0 0 0 0 0 1 1 1 1 0 1 1 1 | 0 0 0 0 0 0 0 1 1 1 1 0 0 0 | 0 0 0 0 0 0 0 0 1 1 1 0 0 1 | 0 0 0 0 0 0 0 0 0 1 1 0 1 0 | 0 0 0 0 0 0 0 0 0 0 |
|
Uwaga:
W symulatorze wyświetlacz LED reaguje na stan niski, czyli odpowiednia dioda LED zapala się, jeśli na jej wejściu qn pojawi się stan niski 0. Sieć logiczna działa poprawnie tylko dla kodów 8421 od 0 do 10 (0000 ... 1010)
Symulator |
Obciążenia wnoszone przez poszczególne wejścia: A - 3, B - 5, C - 4, D - 3.
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.