Professional Documents
Culture Documents
ktokolwiek
z
Was,
uytkownikw
komputera,
nie
odczuwa nigdy potrzeby sterowania
swoim PCtem z pewnej odlegoci,
np. z ka czy biurka? Czy nigdy
nie musielicie podchodzi do
komputera tylko po to, eby
przeczy suchan empetrjk
czy zmieni kana TV? Przykadw
zastosowania pilota komputerowego
mona wymienia wiele, ale czy
takie urzdzenie da si zrobi
maym nakadem si i kosztw?
Oczywicie! Z pomoc, jak zwykle
w takich przypadkach, przychodz
mikroprocesory i dobrze znany nam
pakiet BASCOM.
Opis ukadu
Omawiane urzdzenie jest do
nietypowe, mianowicie udaje klawiatur
po otrzymaniu odpowiednich instrukcji od
pilota. Jak zwykle w przypadku
stosowania techniki mikroprocesorowej,
ukad pod wzgldem budowy jest bardzo
prosty.
Jego
schemat
ideowy
przedstawiony zosta na rysunku 1. Caa
inteligencja mieci si w gwnym
ukadzie
scalonym,
ktrym
jest
mikrokontroler
AT89C2051.
Ukad
Rys. 1
Rys. 2
ten mona rozwiza cakiem prosto.
Poniewa pilot moe przesya komendy
Pilot komputerowy
Monta i uruchomienie
Ukad jest bardzo prosty, wic
monta nie wymaga duej uwagi. Naley
zwrci uwag jedynie na to, aby kable
czce urzdzenie z klawiatur i
komputerem nie byy zbyt dugie. Do
obudowania urzdzenia nadaje si, po
maej obrbce, obudowa Z6. Przedni
ciank zastpi mona prostoktem z
ciemnego, pprzezroczystego pleksi.
Poniewa nasz
ukad udaje klawiatur,
nie bd potrzebne
adne sterowniki aby
go uruchomi. Jest to
gwna
rnica
pomidzy
tym
urzdzeniem a jego
fabrycznymi
Rys. 3
wpisa do pamici U2 wedug szablonu z
rysunku 4 pod adresy odpowiadajce
wybranym przyciskom pilota. Jeli jaki
przycisk ma by nieuywany, to w
miejsce kodu klawisza musimy wpisa
szesnastkowo FF.
Majc pewne pojcie na temat
identyfikacji klawisza, moemy przyjrze
si bliej transmisji. Jak ju wczeniej
wspomniaem, mikrokontroler steruje
kilkoma tranzystorami. To one wanie
zarzdzaj szyn danych (DTA) i zegara
(CLK) komputera, ktrymi zwykle
zajmuje
si
klawiatura.
Mona
powiedzie, e nasze urzdzenie wtrca
si pomidzy klawiatur i komputer.
Takie brutalne dziaanie jest nieuniknione,
poniewa linia klawiatury przystosowana
jest tylko do jednego odbiornika i jednego
nadajnika.
Jak
w
takim
razie
przystosowa transmisj do naszych
potrzeb? Cakiem prosto! Szeregowo w
linie musimy wczy rezystory o
nieduej opornoci (R1 i R2). Teraz
wystarczy ju tylko po stronie klawiatury
Rys. 4
byyby nici.
Teoretycznie wiemy ju jak
ukad powinien dziaa. Brakuje jeszcze
tylko
programu
obsugujcego
mikroprocesor. W dalszej czci artykuu
znajdziecie jego listing w jzyku
BASCOM. Program ten z powodzeniem
obsugiwa
mj
model,
wic
prawdopodobnie bdzie dziaa i Wam.
Ze wzgldu na ograniczenia dotyczce
artykuu, obcite zostay komentarze.
Podobnie jak w przypadku Maszyny do
pisania, zachcam jednak do napisania
programu samemu i traktowanie mojego
listingu jedynie jako dziaajcy punkt
odniesienia. Jeli jednak kto nie ma
ochoty
traci
czasu
nawet
na
przepisywanie, z pomoc przychodzi
Program mikroprocesorowy
$crystal = 11059200
Dim Nowy As Bit : Dim E As Bit : Dim P As Bit
Dim Com As Byte : Dim Adr As Byte
Dim K As Byte : Dim X As Byte : Dim A As Byte
Ziel Alias P1.0 : Czerw Alias P1.1 : Dta Alias P1.2
Clk Alias P1.3 : Blk Alias P3.5
Config Sda = P3.0 : Config Scl = P3.1
Config I2cdelay = 1
Reset Tcon.0 : On Int0 Rc5
Enable Int0 : Enable Interrupts
Do
Bitwait Nowy , Set
Disable Int0 : Reset Nowy
I2cstart : I2cwbyte 160 : I2cwbyte Com
I2cstart : I2cwbyte 161 : I2crbyte K , Nack : I2cstop
If K = &HFF Then
Com = Com + 64
I2cstart : I2cwbyte 160 : I2cwbyte Com
I2cstart : I2cwbyte 161 : I2crbyte K , Nack : I2cstop
If K <> &HFF Then : Set E
Else : Reset Czerw : Waitms 240 : Set Czerw
End If
End If
If K <> &HFF Then
While Clk = 0 : Waitms 2 : Wend : Reset Blk
If E = 1 Then
Reset E
X = &HE0 : Gosub Przeslij
X = K : Gosub Przeslij
X = &HE0 : Gosub Przeslij
X = &HF0 : Gosub Przeslij
X = K : Gosub Przeslij
Else
X = K : Gosub Przeslij
X = &HF0 : Gosub Przeslij
X = K : Gosub Przeslij
End If
Set Blk : Reset Ziel : Waitms 240 : Set Ziel
End If
Enable Int0
Loop
Przeslij:
A= 0
If X.0 = 1 Then : A = A + 1 : End If
If X.1 = 1 Then : A = A + 1 : End If
If X.2 = 1 Then : A = A + 1 : End If
If X.3 = 1 Then : A = A + 1 : End If
If X.4 = 1 Then : A = A + 1 : End If
If X.5 = 1 Then : A = A + 1 : End If
If X.6 = 1 Then : A = A + 1 : End If
If X.7 = 1 Then : A = A + 1 : End If
A = A Mod 2
If A = 0 Then : Set P : Else : Reset P : End If
Dta = 0 : Delay : Clk = 0 : Delay
Dta = X.0 : Clk = 1 : Delay : Clk = 0 : Delay
Dta = X.1 : Clk = 1 : Delay : Clk = 0 : Delay
Dta = X.2 : Clk = 1 : Delay : Clk = 0 : Delay
Dta = X.3 : Clk = 1 : Delay : Clk = 0 : Delay
Dta = X.4 : Clk = 1 : Delay : Clk = 0 : Delay
Dta = X.5 : Clk = 1 : Delay : Clk = 0 : Delay
Dta = X.6 : Clk = 1 : Delay : Clk = 0 : Delay
Dta = X.7 : Clk = 1 : Delay : Clk = 0 : Delay
Dta = P : Clk = 1 : Delay : Clk = 0 : Delay
Dta = 1 : Clk = 1 : Delay : Clk = 0 : Delay : Clk = 1
Return
Rc5:
Getrc5(adr , Com)
If Adr = 0 Then : Set Nowy
Else
Reset Nowy
Reset Czerw : Waitms 240 : Set Czerw
End If
Return
Pilot komputerowy