1. Ogólny opis klawiatury.
W ostatnim okresie nastąpił gwałtowny zalew rynku nowoczesnymi
urządzeniami przeznaczonymi do wprowadzania danych i ułatwiającymi
kontakt użytkownika z komputerem. Mowa tu o różnych wymyślnych modelach
myszek, skanerach czy wręcz systemach rozpoznawania mowy. Mimo tego
wszystkiego trudno sobie w dalszym ciągu wyobrazić obsługę komputera bez
użycia klawiatury.
To poczciwe urządzenie również podlega z biegiem czasu pewnym mniej lub
bardziej widocznym przekształceniom. Stosowane obecnie mikroprzełączniki
są coraz lepszej jakości, a i producenci zaczynają przywiązywać coraz
większą wagę do ergonomicznego kształtu klawiatury. Należy się
spodziewać, że jeszcze przez dłuższy czas zmuszeni będziemy do
korzystania z klawiatury, warto więc zaznajomić się z jej działaniem i
budową
2. Zasada działania klawiatury
Klawiatura komputerów PC XT/AT jest oddzielną fizycznie i logicznie
jednostką, wyposażoną we własny procesor i łącze szeregowe służące do
komunikacji z płytą główną. Jej zadaniem jest wysyłanie do komputera 8 - bitowego kodu klawisza, który został naciśnięty.
Współpraca klawiatury z komputerem została zorganizowana w sposób
zapewniający możliwość elastycznego dopasowania funkcji poszczególnych
klawiszy do potrzeb stosowanych programów. Do komputera przesyłane są,
więc kody klawiszy, a nie standardowe kody przypisanych im znaków.
Zasada działania
Linie przeglądania matrycy klawiatury pobudzane są z wyjść dekodera wierszy (74145).
Dekoder sterowany jest za pomocą licznika wierszy (modulo 8). Linie
zwrotne są wprowadzane na wejście selektora kolumn (multipleksera 74150)
sterowanego z wyjść licznika kolumn (modulo 16). Zawartość
liczników (zliczających impulsy z generatora) określa współrzędne
klawiszy. Jeśli żaden klawisz nie będzie wciśnięty podczas przeglądania
klawiatury, wtedy na wszystkich wejściach selektora utrzymywać się
będzie wysoki poziom logiczny. Niski poziom logiczny na wyjściu
selektora blokuje wejście rejestru.
Jeśli którykolwiek klawisz zostanie naciśnięty i trzymany w tym
położeniu dłużej niż wynosi czas przeglądania całej klawiatury, wtedy
niski stan logiczny z wybranego wejścia dekodera, pojawi się na
zaadresowanym wejściu selektora. Narastające zbocze na wyjściu
multipleksera dokona wpisu do rejestru zawartości liczników, czyli
adresu naciśniętego klawisza. Rejestr adresuje komórkę pamięci stałej
(ROM), w której umieszczono kod ASCII znaku przypisanego naciśniętemu klawiszowi.
3. Zasada działania klawiatury stosowanej w komputerach IBM PC.
Oczywiście schemat klawiatury pokazany na rysunku został uproszczony, aby łatwiej zrozumieć zasadę działania.
W nowoczesnych klawiaturach wykorzystywane są różne rozwiązania
układowe. Przykładowy schemat pokazuje typową klawiaturę stosowaną w
komputerach IBM PC. Centralnym elementem jest jednoukładowy procesor (np. 8049), do którego zadań należy:
- przeglądanie klawiatury (z wykorzystaniem dekodera 74LS138)
- sterowanie diodami świecącymi wskazującymi stan klawiatury (Caps Lock, Num Lock, Scroll Lock)
- sterowanie transmisją szeregową między klawiaturą a systemem
Klawiatura połączona jest z systemem za pomocą zwiniętego spiralnie 4-żyłowego przewodu ekranowego. Dwie z linii wykorzystywane są do prowadzenia zasilania (+5V i masa). Pseudo - synchroniczna komunikacja szeregowa prowadzona jest liniami "zegara" (CLOCK) i "danych" (DATA). Każda z linii sygnałowych jest sterowana przez bramki z otwartym kolektorem (06). Rozwiązanie umożliwia wymuszenie stanu logicznego "0" zarówno od strony klawiatury jak i komputera.
W stanie pasywnym, gdy dane nie są transmitowane, obie linie sygnałowe są w stanie logicznym "1".
Wtedy klawiatura może rozpocząć nadawanie. W systemie PC AT dane i
polecenia przesyłane są w obu kierunkach między klawiaturą i komputerem.
Jednostka informacji składa się z 11 bitów:
- bitu startu ("0")
- ośmiu bitów danych
- bitu nieparzystości
- bitu stopu ("1")
Wysyłając dane do komputera, klawiatura generuje na linii zegara impulsy, które taktują przesyłanie kolejnych bitów .
Przed wysłaniem danej, klawiatura sprawdza stan logiczny linii sygnałowych:
- gdy linia "zegara" jest w stanie "0", to transmisja zostaje zablokowana i dana jest zapamiętywana w buforze (wewnętrznej pamięci procesora 8049)
- gdy linia "zegara" jest w stanie "1" i linia danych w stanie "0", to dana trafia do bufora, a klawiatura przechodzi w tryb odbioru informacji
- gdy linie "zegara" i "danych" są w stanie "1", to klawiatura może rozpocząć transmisję do komputera
Podczas transmisji, co najmniej raz na 60 ms klawiatura
kontroluje stan linii "zegara". Jeśli komputer wymusi poziom niski na
tej linii, to wstrzymana jest dalsza transmisja.
Dla każdego klawisza przewidziany został 8 - bitowy kod (scan code), przesyłany przez procesor 8049 do systemu linią DATA. Klawiatura wysyła do systemu inny kod, gdy klawisz jest naciśnięty i inny w momencie jego zwolnienia.
Zamiana kodów przypisanych klawiszom na kody ASCII, realizowana
jest przez procedury BIOS-u w systemie. Gdy klawisz jest naciśnięty i
trzymany w tym położeniu przez dłuższy czas, klawiatura (z pewnym
opóźnieniem) wysyła powtarzające się kody aż do chwili zwolnienia
klawisza
4. Sygnały przesyłane przez system do klawiatury
System PC AT może wysłać różne polecenia zmieniające tryb pracy klawiatury:
- zerowanie klawiatury (kod FFH)
- powtórz daną (kod FEH) - żądanie powtórzenia ostatnio wysyłanej, prawdopodobnie błędnej danej
- ustaw wartość opóźnienia i częstość repetycji (kod F3H + bajt określający wartość opóźnienia i częstość)
Częstość repetycji można dobrać od 2 do 30 powtórzeń
wysłania kodu stale naciskanego klawisza na sekundę (częstość początkowa
- 10 znaków/s). Opóźnienie początkowe (czas uznania klawisza za stale
naciskany) może być zmieniane od 250 ms do 1250 ms. Wartość początkowa wynosi 500 ms.
5. Sygnały przesyłane z klawiatury do systemu
Klawiatura może również wysyłać szereg poleceń i odpowiedzi do systemu:
- powtórz nadanie (kod FEH) - żądanie powtórzenia błędnej transmisji
- potwierdzenie (kod FAH) - potwierdzenie przyjęcia polecenia z komputera
- przepełnienie (kod 00H) - informacja o przepełnieniu bufora pamięci w
klawiaturze (bufor procesora może pomieścić 16 kodów klawiszy)
- zwolnienie klawisza (kod F0H) - w klawiaturze PC AT kod sygnalizujący
zwolnienie klawisza przesyłany jest w postaci dwóch bajtów: kodu F0H i
kodu naciśniętego klawisza
W klawiaturze XT kod zwolnienia klawisza tworzony jest przez dodanie wartości 80H do kodu wysyłanego w momencie naciśnięcia klawisza.