16-KANALNI INTERFEJS
Preko paralelnog porta moguće je kontrolisati i više kanala.
U našem primeru umesto kanala koristimo LED diode. Šeme takvog interfejsa
prikazana je na slici 1.
Slika 1
Za ovo kolo
koristimo signale Data porta od D0 do D7 kao i signale Control Porta i (pinovi 1 i 14), što
su prva dva bita Contol porta. Signali D0 do D7 dovode se jednovremeno na oba
kola IC1 i IC2 (74HC573). Raspored pinova ovog kola dat je na slici 2.
Slika 2
Kolo 74HC573 je leč kolo koje
prosleđuje odgovarajuće ulaze D na izlaze Q (D0 - Q0, ..., D7 - Q7). Postoje
dva upravljačka ulaza (output enable na pinu
1) i (latch enable na pinu
11). Tabela rada ovog kola je sledeća:
Ulazi |
Izlazi |
||
|
|
D |
Q |
L |
H |
H |
H |
L |
H |
L |
L |
L |
L |
X |
nema pr. |
H |
X |
X |
Z |
Iz tabele se vidi da ovo kolo
prosleđuje izlaz na ulaz u slučaju kada je na niskom nivou i na visokom nivou. U
slučaju ako je na visokom nivou izlaz
kola će biti u stanju visoke impedanse. Ako je na niskom nivou kao i izlaz kola će ostati
nepromenjen - zamrznut bez obzira na ulaz. Ta njegova osobina je upravo u ovom
interfejsu i primenjena. Budući da treba da bude na
niskom nivou to je u oba kola pin 1 spojen na masu. Interfejs tako radi da
šalje prvi binarni broj sa dioda (D1 - D8) a zatim zamrzne njegov izlaz slanjem
logičke 0 preko pina 1 Data porta na kolo IC1 i njegov pin , a zatim šalje drugi binarni broj sa dioda (D9 - D16) na
kolo IC2.
Specifikacija materijala navedenog
interfejsa data je u donjoj tabeli.
Rb. |
Komponenta |
Količina |
1. |
IC1, IC2 - 74HC573 |
2 kom |
2. |
DIL-20 podnožje |
2 kom |
3. |
T1, T2 - 2N2222A |
2 kom |
4. |
R4-R11 i R15-R22 - 1 kW |
16 kom |
5. |
R1-R3 i R12 - R14 - 12 kW |
6 kom |
6. |
Led D1 - D16 - crvena fi 3 mm |
16 kom |
7. |
Dvopolna redna stezaljka |
1 kom |
8. |
DB-25 konektor ženski |
1 kom |
9. |
Flet kabal |
1.5 m |
PCB izgled pločice kola kao i njegova montažna šema data je na Slikama 3 i 4.
Slika 3
Slika 4
Izgled ekrana za podršku urađenom interfejsu
dat je na slici 8 (Port08).
Slika 5
Klikom mišom na
neku od dioda D1 - D16 menjamo njeno stanje, tj. uključujemo je ili
isključujemo. Diode obojene u crveno biće uključene a bele isključene. Nakon
postavljanja stanja svih dioda klikom na Upis
biće preneseno stanje sa ekrana na diode pločice.
Kod ovog programa je sledeći:
'
' Dekleracija za VBIO
'
Public Broj,
Broj1, Broj2, LPTadresa, CPTadresa As Integer
Public br As
Integer
_________________________________________________
Private Sub Command2_Click()
Call Out(CPTadresa, 1)
Call Out(LPTadresa, Broj1)
Call Out(CPTadresa, 2)
Call Delay(50)
Call Out(LPTadresa, Broj2)
End Sub
____________________________________________________
Sub
Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i, j As
Integer
i = 16
If (X >= 360) And (X < 855) And
(Y > 1440) And (Y < 1775) Then i = 15
If (X >= 960) And (X < 1495) And
(Y > 1440) And (Y < 1775) Then i = 14
If (X >= 1560) And (X < 2055) And
(Y > 1440) And (Y < 1775) Then i = 13
If (X >= 2160) And (X < 2655) And
(Y > 1440) And (Y < 1775) Then i = 12
If (X >= 2760) And (X < 3350) And
(Y > 1440) And (Y < 1775) Then i = 11
If (X >= 3360) And (X < 3835) And
(Y > 1440) And (Y < 1775) Then i = 10
If (X >= 3960) And (X < 4435) And
(Y > 1440) And (Y < 1775) Then i = 9
If (X >= 4560) And (X < 5035) And
(Y > 1440) And (Y < 1775) Then i = 8
If (X >= 5160) And (X < 5635) And
(Y > 1440) And (Y < 1775) Then i = 7
If (X >= 5760) And (X < 6235) And
(Y > 1440) And (Y < 1775) Then i = 6
If (X >= 6360) And (X < 6835) And
(Y > 1440) And (Y < 1775) Then i = 5
If (X >= 6960) And (X < 7435) And
(Y > 1440) And (Y < 1775) Then i = 4
If (X >= 7560) And (X < 8030) And
(Y > 1440) And (Y < 1775) Then i = 3
If (X >= 8160) And (X < 8635) And
(Y > 1440) And (Y < 1775) Then i = 2
If (X >= 8760) And (X < 9195) And
(Y > 1440) And (Y < 1775) Then i = 1
If (X >= 9360) And (X < 9835) And
(Y > 1440) And (Y < 1775) Then i = 0
If i <> 16 Then
If (Shape1(i).BackColor = RGB(255,
255, 255)) Then
Shape1(i).BackColor = RGB(255, 0,
0)
Else: Shape1(i).BackColor =
RGB(255, 255, 255)
End If
End If
Broj1 = 0
For i = 0 To 7
j = 0
If (Shape1(i).BackColor = RGB(255,
0, 0)) Then j = 1
Broj1 = Broj1 + 2 ^ i * j
Next i
Broj2 = 0
For i = 8 To 15
j = 0
If (Shape1(i).BackColor = RGB(255,
0, 0)) Then j = 1
Broj2 = Broj2 + 2 ^ (i - 8) * j
Next i
End Sub
___________________________________________________
Private Sub
Form_Load()
'unlock the dll
Anjan
LPTadresa = &H378
CPTadresa = LPTadresa + 2
CPTadresa = &H37A
Call Out(CPTadresa, 3)
Call Out(LPTadresa, 0)
End Sub
_______________________________
Private Sub Option1_Click()
LPTadresa = &H378
CPTadresa = LPTadresa + 2
End Sub
'
'
Urađeni program je dosta sličan porethodno
urađenim programima.
Ukratko ćemo objasniti njegove važnije specifičnosti (Port08).
1. Prilikom pokretanja programa u podprogramu Form_Load
slanjem broj 3 (binarno 11) na Control port odblokiramo izlaze oba kola IC1 i
IC2, a zatim slanjem 0 na Data port ugasimo sve diode.
2. Budući da je na paralelni port moguće u datom trenutku
poslati samo 8 bita to su diode grupisane u dve grupe i to: D1 - D8 za broj1 i
D9 - D16 za broj2. Na osnovu stanja postavljenih dioda formira se njihove binarna prezentaciju. U okviru prvog for ciklusa formira se broj1 a u okviru
drugog broj2. Primetite da se prilikom formiranja broja2 vrednost promenljive i umanjuje za 8 na
mestu težinskog faktora budući da se u ovom slučaju promenljiva i kreće u
opsegu od 8 - 15.
3. Nakon izdavanja komande Upisi prvo odblokiramo izlaz kola IC1 slanjem broja 1 na Control
port. Nakon toga šaljemo broj1 kako bi
ga prikazali. Posle slanja broja1 blokiramo izlaz prvog kola a deblokiramo
izlaz kola IC2 slanjem broja 2 na Control port. Slanjem broja2 na Data port
biće prikazana stanja na preostalih 8 LED dioda. Budući da je kolo 74HC573
"sporije" od računara to smo morali zadržati program nakon slanja
broja 2 na Control port kako bi kola bila postavljena, upotrebom komande Delay(50).
Urađeni interfejs
omogućuje je nam da izvedemo i neke svetlosne efekte sa diodama. Daćemo primer programa kojim se pojedinačno pale a zatim
pojedinačno gase led diode sa
odgovarajućom vremenskom zadrškom. Pozivom ovog programa dobićemo ekran
prikazan na slici 6 (Port09).
Slika 6.
Izborom broja koraka (1 - 5)
i vremena trajanja zadrške u sekundama između paljena dioda (1 - 60), pritiskom na Upisi počinje ciklus paljenja i gašenja dioda
Navodimo najvažniji deo koda
ovog programa :
'
' Deo za VBIO
'________________________________________________________
Private Sub
Command2_Click()
'---------------------Deo
koda za paljenje dioda --------------------------
Command2.Enabled = False
For m = 1 To Koraka
Call Out(CPTadresa, 1)
Broj1 = 0
For i = 0 To 7
Shape1(i).BackColor = RGB(255, 0,
0)
Broj1 = Broj1 + 2 ^ i
Call Out(LPTadresa, Broj1)
Call Zadrzi
Next i
Call Out(CPTadresa, 2)
Call Delay(50)
Broj2 = 0
For i = 0 To 7
Shape1(i + 8).BackColor = RGB(255,
0, 0)
Broj2 = Broj2 + 2 ^ i
Call Out(LPTadresa, Broj2)
Call Zadrzi
Next i
'---------------------Deo
koda za gasenje dioda --------------------------
Call Out(CPTadresa, 1)
Broj1 = 0
For i = 0 To 7
Shape1(i).BackColor = RGB(255, 255,
255)
Broj1 = 2 ^ 8 - 2 ^ (i + 1)
Call Out(LPTadresa, Broj1)
Call Zadrzi
Next i
Call Out(CPTadresa, 2)
Call Delay(50)
Broj2 = 0
For i = 0 To 7
Shape1(i + 8).BackColor = RGB(255,
255, 255)
Broj2 = 2 ^ 8 - 2 ^ (i + 1)
Call Out(LPTadresa, Broj2)
Call Zadrzi
Next i
Next m
'---------------------Zavrsetak
ciklusa --------------------------
Command2.Enabled = True
Call Out(CPTadresa, 3)
Call Out(LPTadresa, 0)
For i = 0 To 15
Shape1(i).BackColor = RGB(255, 255,
255)
Next i
End Sub
'
Specifičnosti ovog programa su sledeće:
1. Pritiskom na Spin
Button menjamo broj ciklusa paljenja dioda.
2. Povlačenjem klizača na Scroll Baru određujemo pauzu za paljene između dve diode.
3. Paljenje pojedinačnih dioda se vrši na taj način što se u
for ciklusu generišu brojevi: 1, 3, 7, 15,...,255 čija je binarna prezentacija
1, 11, 111, 1111,...,1111111 i slanjem na Data port. Nakon toga se zadrži
izvršenje programa pozivom podprograma Zadrzi. Nakon paljenja dioda na IC1 kolu
prelazi se napljenje dioda na IC2 kolu u drugom for ciklusu. Za gašenje dioda u
for ciklusu generišu se brojevi 2, 4, 8, ...,256 što odgovara binarnim
brojevima 10, 100, 100,...,100000000. Tako binarni broj 10 gasi diodu D1, 100
diode D1 i D2 itd.
4. Prilikom izvršenja ciklusa zabranimo komandu Izvrsi
izdavanjem naredbe Command2.Enabled
= False a nakon završetka svih ciklusa ponovo je
omogućimo naredbom Command2.Enabled = True.
Primenjena logika omogućuje nam
da napravimo interfejse sa kojima se može upravljati i sa više od 16 kanala.
Naime moguće je dodati još kola 74HC573 a za signal koristititi preostale
bite Control porta. Na taj način bi bilo vrlo prosta napraviti i interfejs sa kontrolom
64 kanala, što predstavlja već profesionalni interfejs.
U našem primeru u kanalima
smo koristili LED diode kako bi pojednostavili uređaj. Jasno je da upotrebom
jednog tranzistora i relea umesto LED diode možemo dobiti upravljajući kanal.
http://vojo.milanovic.org
© Copyright, 2003 Milanović Voja
All Rights
Reserved.