Professional Documents
Culture Documents
Vi - Xu - Ly 2
Vi - Xu - Ly 2
Chng 5
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
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
ACK
10
ERROR
15
IRQ
-
1 0 x x -
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.
Trang 117
Chng 5
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
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.
Trang 118
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
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
Trang 119
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
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
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
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
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
Trang 124
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
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
600 975
&H000000FF&
Trang 126
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
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)
Trang 128
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
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
Trang 130