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.