Bity w elektronice
Czytnik klawiatury numerycznej


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

W tym artykule zaprojektujemy prosty czytnik klawiatury numerycznej (trochę mniej skomplikowanej od tej po lewej stronie). Nasz układ będzie odczytywał wciśnięcia pojedynczych klawiszy numerycznych 0,1,...,9 i zamieniał je na kod binarny 8421, który pojawi się na wyjściu urządzenia.

Kod 8421 jest naturalnym, czterobitowym kodem. Jeśli bity zapiszemy numerując je od ostatniego: b8 b4 b2 b1, to bit o stanie 1 posiada wartość: b8 = 8, b4 = 4, b2 = 2 i b1 = 1 - stąd nazwa kodu 8421. Bit o stanie 0 ma wartość 0. Na przykład zapis:    0110

oznacza liczbę 6, ponieważ b8 = 0, b4 = 4, b2 = 2 i b1 = 0. Gdy zsumujemy poszczególne wagi, otrzymamy 6. Poniższa tabelka podaje wartości kolejnych cyfr dziesiętnych w kodzie 8421.

 

Kod 8421 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001  
Cyfra 0 1 2 3 4 5 6 7 8 9  

 

Umówimy się, iż nasz czytnik będzie dawał na wyjściu kod 1111, gdy żaden klawisz nie jest naciśnięty. Łatwo zauważyć, iż 1111 nie reprezentuje w kodzie 8421 żadnej cyfry dziesiętnej - jest to zatem "bezpieczna" wartość. Każdy klawisz będzie zwykłym włącznikiem, który, w przypadku naciśnięcia, zewrze linię klawisza do masy, czyli wymusi poziom logiczny 0. Gdy klawisz nie jest naciśnięty, włącznik jest rozwarty i dzięki opornikowi na linii klawisza utrzymuje się poziom logiczny 1.

 

 

Określenie funkcji logicznych

Na linii klawisza aktywny zatem jest poziom logiczny 0 (oznacza wciśnięcie klawisza). Określmy sygnały wejściowe i wyjściowe dla naszego czytnika klawiatury:

 

 

Ponieważ nasz układ ma kilka sygnałów wyjściowych, każdy z nich rozważymy jako osobną funkcję logiczną danych wejściowych. Interesuje nas, kiedy sygnał wyjściowy bn przyjmuje wartość 0 (tak, 0, gdyż w tym projekcie stan 1 jest stanem nieaktywnym - pracujemy w tzw. logice ujemnej):

 

b1 = 0, gdy naciśnięto klawisz: K0, K2, K4, K6, K8
b2 = 0, gdy naciśnięto klawisz: K0, K1, K4, K5, K8, K9
b4 = 0, gdy naciśnięto klawisz: K0, K1, K2, K3, K8, K9
b8 = 0, gdy naciśnięto klawisz: K0, K1, K2, K3, K4, K5, K6, K7

 

W każdym innym przypadku odpowiedni sygnał wyjściowy jest równy 1. Stąd otrzymujemy wzory:

 

 

Dlaczego takie? Odpowiedź jest bardzo prosta. Jeśli którykolwiek z klawiszy będzie naciśnięty, to jego linia Kn przyjmie stan 0, a pozostałe linie będą w stanie 1. Wtedy wartość koniunkcji też wyniesie 0. Otrzymane funkcje zamieniamy na NAND negując dwukrotnie:

 

 

Symulacja sieci logicznej

 

Zwróć uwagę, iż nasza sieć została zaprojektowana tylko dla pojedynczych klawiszy. Jeśli użytkownik naciśnie naraz kilka klawiszy, to odczyt nie jest poprawny.

 

Zestawienie elementów

SN7400 x 1

SN7430 x 4


Scalony dekoder klawiatury - SN74147

Jeśli klawiatura wyposażona jest tylko w 9 klawiszy (od 1 do 9), to zamiast bramek można zastosować scalony konwerter 1 z 9 na kod 8421. Układ ten ma symbol SN74147 i pracuje w logice ujemnej (aktywny jest stan 0).

SN74147 - transkoder 1 z 9 na kod 8421

 

Układ osiada 9 wejść ponumerowanych od 1 do 9. Do wejść tych podłączamy linie klawiszy w identyczny sposób, jak w naszym rozwiązaniu. Na 4 wyjściach D, C, B i A pojawia się zanegowany kod 8421 naciśniętego klawisza. Tabelka stanów dla układu SN74147 jest następująca:

 

Wejścia Wyjścia
1 2 3 4 5 6 7 8 9 D C B A
1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 1 1 1 1 0
X 0 1 1 1 1 1 1 1 1 1 0 1
X X 0 1 1 1 1 1 1 1 1 0 0
X X X 0 1 1 1 1 1 1 0 1 1
X X X X 0 1 1 1 1 1 0 1 0
X X X X X 0 1 1 1 1 0 0 1
X X X X X X 0 1 1 1 0 0 0
X X X X X X X 0 1 0 1 1 1
X X X X X X X X 0 0 1 1 0

 

Stan X oznacza 0 lub 1, czyli stan wejść poprzedzających dany klawisz jest bez znaczenia. W przypadku jednoczesnego naciśnięcia dwóch lub więcej klawiszy układ SN74147 zwraca kod najstarszego klawisza (zatem układ ten działa lepiej od naszej sieci).

 

Symulacja pracy dekodera SN74147

Wnioski

Dzięki zastosowaniu gotowego dekodera klawiatury, sieć logiczna uległa znacznemu uproszczeniu. Również ilość układów scalonych zmniejszyła się z 5 do 2. Wniosek jest jeden. Warto stosować gotowe rozwiązania wszędzie tam, gdzie jest to możliwe.

   

 



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.