Projekty elektroniczne
Konwerter klawiatura PC --> RS232
Konwerter ten służy do podłączenia klawiatury komputera PC
(z wtykiem PS/2 lub DIN5)
do dowolnego urządzenia posiadającego port szeregowy standardu RS-232, takiego jak
np. terminal dostępowy, modem lub komputer przenośny (palmtop).
Na szybko:
- schemat urządzenia tutaj
- kod oprogramowania tutaj (8 KB)
Sercem konwertera jest mikrokontroler jednoukładowy AT89C2051 firmy Atmel,
odbierający od klawiatury PC kody naciśniętych i zwolnionych klawiszy oraz
realizujący translację tych kodów na znaki ASCII i ich transmisję szeregową
do podłączonego urządzenia. Translację poziomów logicznych na napięcia interfejsu
RS-232 zapewnia układ MAX232 (lub jego odpowiednik, np. HIN232).
Łączny koszt zastosowanych w konwerterze części (układy elektroniczne, złącza,
płytka drukowana, obudowa plastikowa) wynosi nie więcej niż 30 zł
(w zależności od sklepu; ceny z roku 2002).
Schemat konwertera w wersji z gniazdem DIN5
pokazano na rysunku poniżej (kliknij by powiększyć):

Przełącznikiem JP1 wybierane jest napięcie zasilające konwerter - może pochodzić
z zestawu 4 akumulatorów 1,2V (pozycja AKU) lub 4 baterii 1,5V (pozycja BATT).
W przypadku zastosowania baterii napięcie 6V (4 x 1,5V) jest obniżane przez
2 połączone szeregowo diody prostownicze D1 i D2. Tym samym w obu przypadkach układ
zasilany jest napięciem 4,8V, malejącym z czasem do 4V (nie zaleca się rozładowywania
akumulatorów poniżej napięcia 1V na ogniwo).
Dioda D3 świeci podczas każdej transmisji znaku łączem szeregowym oraz
sygnalizuje fakt załączenia zasilania na początku działania konwertera. Przycisku
SW1 (RESET) można nie montować - okazuje się przydatny natomiast podczas rozwoju nowych
wersji oprogramowania urządzenia.
Program sterujący konwerterem napisano w asemblerze 8051.
Kod źródłowy programu wraz z postacią wynikową (plik Intel Hex) można pobrać
stąd (8 KB).
Transmisja szeregowa odbywa się z prędkością 57600 bps, którą zapisano w stałej
UART_SPD, umieszczonej na początku kodu źródłowego. Obniżenie tej
prędkości (np. do 9600 bps) wymaga tylko zmiany w kodzie programu i jego ponownej
asemblacji, natomiast podwyższenie prędkości do 115200 bps wymaga także wymiany
zastosowanego rezonatora kwarcowego na 22,1184 MHz.
Na końcu pliku z kodem źródłowym umieszczono tablice odpowiedzialne za konwersję
odbieranych z klawiatury kodów wciśniętych klawiszy na wysyłane portem szeregowym
znaki ASCII. Tablice składają się z bajtów o wartości 0 gdy nie należy wysyłać żadnego
znaku (np. po naciśnięciu klawisza Alt) lub znaku ASCII do wysłania, np. '0' po
naciśnięciu klawisza z cyfrą 0. Oddzielnie umieszczono tablicę znaków wysyłanych
przy braku modyfikatorów: TablicaTransl, wciśniętym klawiszu Shift:
TablicaTransl_SHIFT lub wciśniętym klawiszu Ctrl: TablicaTransl_CTRL.
Dalej mieści się tablica translacji kodów klawiszy specjalnych (poprzedzonych
prefiksem 0xE0, takich jak np. prawy Alt, klawisze strzałek czy klawisze Windows:
TablicaTransl_E0. Następnie jest umieszczona w kodzie programu tablica translacji
odnosząca się do podzbioru klawiszy klawiatury numerycznej przy aktywnym stanie NumLock:
TablicaFrag_NumLock, obejmująca jedynie klawisze o kodach 0x69-0x7d (od End/1 do
PgUp/9).
W czasie działania konwertera naciskanie klawiszy NumLock, ScrollLock i CapsLock powoduje
odpowiednią reakcję (zmiana stanu diody świecącej podłączonej klawiatury), natomiast
z powyższych przełączników jedynie NumLock i CapsLock wpływają na kody znaków wysyłanych
interfejsem RS-232. W aktywnym stanie NumLock wykorzystywana jest wymieniona powyżej
tablica TablicaFrag_NumLock, natomiast w stanie CapsLock odwracana jest wielkość
znaku we wszystkich wysyłanych literach z zakresu 'A'..'Z' i 'a'..'z'.
Konwerter z kompletem baterii zasilających:

Prototyp konwertera wykonany na płytce uniwersalnej - zbliżenie:

Powrót na stronę projektów elektronicznych.