Download as pdf or txt
Download as pdf or txt
You are on page 1of 15

Ti liu Lp trnh h thng

Chng 5

Chng 5 GIAO TIP CNG SONG SONG


1. Cu trc cng song song
Cng song song gm c 4 ng iu khin, 5 ng trng thi v 8 ng d liu bao gm 5 ch hot ng: Ch tng thch (compatibility). Ch nibble. Ch byte. Ch EPP (Enhanced Parallel Port). Ch ECP (Extended Capabilities Port).

3 ch u tin s dng port song song chun (SPP Standard Parallel Port) trong khi ch 4, 5 cn thm phn cng cho php hot ng tc cao hn. S chn ca my in nh sau:
Chn 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18-25 Tn hiu STR (Out) D0 D1 D2 D3 D4 D5 D6 D7 ACK (In) BUSY (In) PAPER EMPTY (In) SELECT (In) M t Mc tn hiu thp, truyn d liu ti my in Bit d liu 0 Bit d liu 1 Bit d liu 2 Bit d liu 3 Bit d liu 4 Bit d liu 5 Bit d liu 6 Bit d liu 7 Mc thp: my in nhn 1 k t v c kh nng nhn na Mc cao: k t c nhn; b m my in y; khi ng my in; my in trng thi off-line. Mc cao: ht giy Mc cao: my in trng thi online T ng xung dng; mc thp: my in xung dng t ng Mc thp: ht giy; my in offline; li my in Mc thp: khi ng my in Mc thp: chn my in 0V

AUTOFEED (Out)
ERROR (In) INIT (Out) SELECTIN (Out)
GROUND

Cng song song c ba thanh ghi c th truyn d liu v iu khin my in. a ch c s ca cc thanh ghi cho tt c cng LPT (line printer) t LPT1 n LPT4 c lu tr trong vng d liu ca BIOS. Thanh ghi d liu c nh v offset 00h, thanh ghi trang
Phm Hng Kim Khnh Trang 116

Ti liu Lp trnh h thng

Chng 5

thi 01h, v thanh ghi iu khin 02h. Thng thng, a ch c s ca LPT1 l 378h, LPT2 l 278h, do a ch ca thanh ghi trng thi l 379h hoc 279h v a ch thanh ghi iu khin l 37Ah hoc 27Ah. Tuy nhin trong mt s trng hp, a ch ca cng song song c th khc do qu trnh khi ng ca BIOS. BIOS s lu tr cc a ch ny nh sau:
a ch Chc nng

0000h:0408h

a ch c s ca LPT1

0000h:040Ah a ch c s ca LPT2 0000h:040Ch a ch c s ca LPT3


nh dng cc thanh ghi nh sau:

Thanh ghi d liu (hai chiu):


7 6 5 4 3 2 1 0 Tn hiu my in D7 D6 D5 D4 D3 D2 D1 D0 Chn s 9 8 7 6 5 4 3 2

Thanh ghi trng thi my in (ch c):


7 Tn hiu my in BUSY S chn cm 11 6

ACK
10

5 4 PAPER EMPTY SELECT 12 13

ERROR
15

IRQ
-

1 0 x x -

Thanh ghi iu khin my in:


Tn SELECTIN INIT AUTOFEED Enable my in S chn cm - - 17 16 14 x: khng s dng IRQ Enable: yu cu ngt cng; 1 = cho php; 0 = khng cho php 7 6 5 4 DIR IRQ hiu x x 3 2 1 1 0

STROBE

Ch rng chn BUSY c ni vi cng o trc khi a vo thanh ghi trng thi, cc bit SELECTIN , AUTOFEED v STROBE c a qua cng o trc khi a ra cc chn ca cng my in. Thng thng tc x l d liu ca cc thit b ngoi vi nh my in chm hn PC nhiu nn cc ng ACK , BUSY v STR c s dng cho k thut bt tay. Khi u, PC t d liu ln bus sau kch hot ng STR xung mc thp thng tin cho my in bit rng d liu n nh trn bus. Khi my in x l xong d liu, n s tr li tn hiu ACK xung mc thp ghi nhn. PC i cho n khi ng BUSY t my in xung thp (my in khng bn) th s a tip d liu ln bus.

Phm Hng Kim Khnh

Trang 117

Ti liu Lp trnh h thng

Chng 5

2. Giao tip vi thit b ngoi vi


2.1. Giao tip vi my tnh
Qu trnh giao tip vi cng song song dng 2 ch : ch chun SPP v ch m rng. Vic giao tip ch chun m t nh sau:
13 25 12 24 11 23 10 22 9 21 8 20 7 19 6 18 5 17 4 16 3 15 2 14 1 13 25 12 24 11 23 10 22 9 21 8 20 7 19 6 18 5 17 4 16 3 15 2 14 1

Hnh 5.1 - Trao i d liu qua cng song song gia 2 PC dng ch chun S chn kt ni m t nh sau:
PC1 Chc nng Chn Chn PC2 Chc nng
ERROR SELECT PAPER EMPTY ACK BUSY D4 D3 D2 D1 D0 GND

D0 D1 D2 D3 D4 BUSY ACK PAPER EMPTY SELECT ERROR GND

2 3 4 5 6 11 10 12 13 15 25

15 13 12 10 11 6 5 4 3 2 25

Ngoi ra, vic kt ni gia 2 my tnh s dng cng song song c th dng ch m rng, ch ny cho php giao tip vi tc cao hn.

Phm Hng Kim Khnh

Trang 118

Ti liu Lp trnh h thng


13 25 12 24 11 23 10 22 9 21 8 20 7 19 6 18 5 17 4 16 3 15 2 14 1 13 25 12 24 11 23 10 22 9 21 8 20 7 19 6 18 5 17 4 16 3 15 2 14 1

Chng 5

Hnh 5.2 - Trao i d liu qua cng song song gia 2 PC dng ch m rng S chn kt ni m t nh sau:
PC1 PC2

Chc nng Chn Chn Chc nng

D0 D1 D2 D3 D4 D5 D6 D7 SELECT BUSY
ACK SELECTIN INIT STROBE

2 3 4 5 6 7 8 9 13 11 10 17 16 1

2 3 4 5 6 7 8 9 17 16 1 13 11 10

D0 D1 D2 D3 D4 D5 D6 D7 SELECTIN INIT STROBE SELECT BUSY


ACK

2.2. Giao tip thit b khc


Qu trnh giao tip vi cc thit b ngoi vi c th thc hin thng qua ch chun. c d liu, c th dng mt IC ghp knh 2 1 74LS257 v dng 4 bit trng thi ca cng song song cn xut d liu th s dng 8 ng d liu D0 D7.

Phm Hng Kim Khnh

Trang 119

Ti liu Lp trnh h thng

Chng 5

74LS06 9 1 14 2 15 3 16 4 17 5 18 6 19 7 20 8 21 9 22 10 23 11 24 12 25 13 STROBE 3 4 7 8 13 14 17 18 11 1 D0 D1 D2 D3 D4 D5 D6 D7 CLK OE 74LS374 ACK PAPER EMPTY SELECT 74LS06 BUSY 2 74LS06 AUTO FEED 3 74LS06 SELECT IN 5 6 74LS374 4 1 4 7 9 12 74LS257 1Y 2Y 3Y 4Y 1A 2A 3A 4A 1B 2B 3B 4B A/B G 2 5 11 14 3 6 10 13 1 15 2 5 6 9 12 15 16 19 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 CLK OE 3 4 7 8 13 14 17 18 11 1 SW0-7 9 8 7 6 5 4 3 2 10K Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19 9 8 7 6 5 4 3 2 8 10K1

VCC 1

VCC 1

Hnh 5.3 Mch giao tip n gin thng qua cng my in Giao din:

Hnh 5.4 Giao din ca chng trnh giao tip vi cng my in Chng trnh giao tip trn VB s dng th vin lin kt ng trao i d liu vi cng my in. Th vin IO.DLL bao gm cc hm sau: Hm PortOut: xut 1 byte ra cng
Trang 120

Phm Hng Kim Khnh

Ti liu Lp trnh h thng

Chng 5

Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)

Port: a ch cng, Data: d liu xut Hm PortWordOut: xut 1 word ra cng Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer) Hm PortDWordOut: xut 1 double word ra cng Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)

Hm PortIn: nhp 1 byte t cng, tr v gi tr nhp Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte Hm PortWordIn: nhp 1 word t cng Private Declare Function PortWordIn (ByVal Port As Integer) As Integer Hm PortDWordIn: nhp 1 double word t cng Private Declare Function PortDWordIn (ByVal Port As Integer) As Long
Lib "IO.DLL"

Lib

"IO.DLL"

Chng trnh ngun: VERSION 5.00 Begin VB.Form Form1 Caption = "Printer Interface Example" ClientHeight = 4665 ClientLeft = 60 ClientTop = 345 ClientWidth = 3585 LinkTopic = "Form1" ScaleHeight = 4665 ScaleWidth = 3585 StartUpPosition = 3 'Windows Default Begin VB.CommandButton cmdReceive Caption = "Receive" Height = 495 Left = 1200 TabIndex = 18 Top = 3960 Width = 1095
Phm Hng Kim Khnh Trang 121

Ti liu Lp trnh h thng

Chng 5

End Begin VB.CheckBox Height Index Left TabIndex Top Width End Begin VB.CheckBox Height Index Left TabIndex Top Width End Begin VB.CheckBox Height Index Left TabIndex Top Width End Begin VB.CheckBox Height Index Left TabIndex Top Width End Begin VB.CheckBox Height Index Left
Phm Hng Kim Khnh

chkSW = 375 = 7 = 1800 = 17 = 3480 = 1575 chkSW = 375 = 6 = 1800 = 16 = 3000 = 1575 chkSW = 375 = 5 = 1800 = 15 = 2520 = 1575 chkSW = 375 = 4 = 1800 = 14 = 2040 = 1575 chkSW = 375 = 3 = 1800
Trang 122

Ti liu Lp trnh h thng

Chng 5

TabIndex = 13 Top = 1560 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 2 Left = 1800 TabIndex = 12 Top = 1080 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 1 Left = 1800 TabIndex = 11 Top = 600 Width = 1575 End Begin VB.CheckBox chkSW Height = 375 Index = 0 Left = 1800 TabIndex = 10 Top = 120 Width = 1575 End Begin VB.CommandButton cmdExit Caption = "Exit" Height = 495 Left = 2400 TabIndex = 9 Top = 3960 Width = 975 End Begin VB.CommandButton cmdSend
Phm Hng Kim Khnh Trang 123

Ti liu Lp trnh h thng

Chng 5

Caption = Height = Left = TabIndex = Top = Width = End Begin VB.Label lblLED BackStyle = Caption = Height = Index = Left = TabIndex = Top = Width = End Begin VB.Label lblLED BackStyle = Caption = Height = Index = Left = TabIndex = Top = Width = End Begin VB.Label lblLED BackStyle = Caption = Height = Index = Left = TabIndex = Top = Width = End
Phm Hng Kim Khnh

"Send" 495 0 8 3960 1095

0 'Transparent "LED7" 375 7 240 7 3480 1095

0 'Transparent "LED6" 375 6 240 6 3000 975

0 'Transparent "LED5" 375 5 240 5 2520 975

Trang 124

Ti liu Lp trnh h thng

Chng 5

Begin VB.Label BackStyle Caption Height Index Left TabIndex Top Width End Begin VB.Label BackStyle Caption Height Index Left TabIndex Top Width End Begin VB.Label BackStyle Caption Height Index Left TabIndex Top Width End Begin VB.Label BackStyle Caption Height Index Left TabIndex
Phm Hng Kim Khnh

lblLED = = = = = = = = lblLED = = = = = = = = lblLED = = = = = = = = lblLED = = = = = =

0 'Transparent "LED4" 375 4 240 4 2040 975

0 'Transparent "LED3" 375 3 240 3 1560 975

0 'Transparent "LED2" 375 2 240 2 1080 975

0 'Transparent "LED1" 375 1 240 1


Trang 125

Ti liu Lp trnh h thng

Chng 5

Top Width End Begin VB.Label BackStyle Caption Height Index Left TabIndex Top Width End Begin VB.Shape BorderColor FillColor FillStyle Height Index Left Shape Top Width End Begin VB.Shape BorderColor FillColor FillStyle Height Index Left Shape Top Width End Begin VB.Shape BorderColor
Phm Hng Kim Khnh

= = lblLED = = = = = = = = shpLED = = = = = = = = = shpLED = = = = = = = = = shpLED =

600 975

0 'Transparent "LED0" 375 0 240 0 120 975

&H000000FF& &H000000FF& 0 'Solid 375 7 840 3 'Circle 3480 375

&H000000FF& &H000000FF& 0 'Solid 375 6 840 3 'Circle 3000 375

&H000000FF&
Trang 126

Ti liu Lp trnh h thng

Chng 5

FillColor = FillStyle = Height = Index = Left = Shape = Top = Width = End Begin VB.Shape shpLED BorderColor = FillColor = FillStyle = Height = Index = Left = Shape = Top = Width = End Begin VB.Shape shpLED BorderColor = FillColor = FillStyle = Height = Index = Left = Shape = Top = Width = End Begin VB.Shape shpLED BorderColor = FillColor = FillStyle = Height = Index =
Phm Hng Kim Khnh

&H000000FF& 0 'Solid 375 5 840 3 'Circle 2520 375

&H000000FF& &H000000FF& 0 'Solid 375 4 840 3 'Circle 2040 375

&H000000FF& &H000000FF& 0 'Solid 375 3 840 3 'Circle 1560 375

&H000000FF& &H000000FF& 0 'Solid 375 2


Trang 127

Ti liu Lp trnh h thng

Chng 5

Left = 840 Shape = 3 'Circle Top = 1080 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 1 Left = 840 Shape = 3 'Circle Top = 600 Width = 375 End Begin VB.Shape shpLED BorderColor = &H000000FF& FillColor = &H000000FF& FillStyle = 0 'Solid Height = 375 Index = 0 Left = 840 Shape = 3 'Circle Top = 120 Width = 375 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False 'IO.DLL Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)

Phm Hng Kim Khnh

Trang 128

Ti liu Lp trnh h thng

Chng 5

Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte 'Variable Private BA_LPT As Integer Private Sub cmdExit_Click() End End Sub Private Sub cmdReceive_Click() Dim n As Integer Dim n1 As Integer Dim i As Integer PortOut BA_LPT + 2, &H8 'SELECTIN = 1 PortOut BA_LPT + 2, 0 'SELECTIN = 0 n1 = PortIn(BA_LPT + 1) 'Doc 4 bit thap n1 = n1 / &H10 'Dich phai 4 bit PortOut BA_LPT + 2, 2 'AUTOFEED=1 n = PortIn(BA_LPT + 1) 'Doc 4 bit cao n = n And &HF0 n = n + n1 For i = 0 To 7 chkSW(i).Value = n Mod 2 If chkSW(i).Value = 0 Then chkSW(i).Caption = "Switch " & Str(i) & " off" Else chkSW(i).Caption = "Switch " & Str(i) & " on" End If n = Fix(n / 2) Next i End Sub Private Sub cmdSend_Click() Dim t As Integer Dim i As Integer
Phm Hng Kim Khnh Trang 129

Ti liu Lp trnh h thng

Chng 5

Dim s As String t = 0 For i = 0 To 7 t = t + (2 ^ Next i PortOut BA_LPT, PortOut BA_LPT, PortOut BA_LPT, End Sub

i) * (1 - shpLED(i).FillStyle) t 1 0

'STROBE = 1 'STROBE = 0

Private Sub Form_Load() BA_LPT = &H378 PortOut BA_LPT + 2, 0 End Sub Private Sub lblLED_Click(Index As Integer) shpLED(Index).FillStyle = 1 shpLED(Index).FillStyle End Sub

Phm Hng Kim Khnh

Trang 130

You might also like