Upload
lehieu
View
30
Download
7
Embed Size (px)
DESCRIPTION
aaa
Citation preview
GIAO TIP QUA CNG SONG SONG
4/8/2014 1NguyenTrongTaiDr.
4/8/2014 2NguyenTrongTaiDr.
Lp trnh ngin d kt niu gin,d kt ni
Tc nhanhim
Khong cch nhChng nhiu km
NhcChng nhiu km
im4/8/2014 3NguyenTrongTaiDr.
Cng song song c 5 ch hot ng, ty loi mainboard, PC c th h 5 d h i dtr 5 mode hoc vi mode
SPP:Cng songsong chung g g Compatibility:Xut 8bit Nibble: nhp 4 bitNibble:nhp 4bit Byte:Cng 2chiu
EPP: Cng tng cngEPP:Cng tng cng EnhancedParallelPort
ECP:Cng songsong m rng Extended Capability Port
4/8/2014 4NguyenTrongTaiDr.
ExtendedCapabilityPort
Cng SPP c th truyn d liu song song 8 bit t my tnh ra vi vn 50 Kb / 150 Kb / Khi h d li tc 50 Kbytes/sec n 150 Kbytes/sec. Khi mun nhp d liu vo my
tnh c th dng mode Nibble truyn 4 bit hay mode Byte truyn 8 bit.
Cng EPP v ECP dng thm phn cng h tr nn vn tc truyn nhanh hn, c th n 2 Mbytes/sec, thu pht song song 8 bit.
Thay i ch ca cng song song bng cch vo BIOS SETUP ca my tnh khi khi ng mymy tnh khi khi ng my.
Cc my tnh khng c cng song song c th s dng chuyn i USB -Cc y g c c g so g so g c s d g c uy USParallel Port hay PCMCIA (Personal Computer Memory Card International Association) - Parallel Port.
4/8/2014 5NguyenTrongTaiDr.
Cng SSP
C u ni 25 chn ci thng dng kt ni vi my in u ni Centronics 34 chn.
4/8/2014 6NguyenTrongTaiDr.
Cng SSP
Chn D25 Centronics Tn hiu SSP Hng Thanh ghi o1 1 /Strobe Vo/Ra iu khin C2 2 Data0 Ra Data3 3 Data1 Ra Data4 4 Data2 Ra Data5 5 Data3 Ra Data6 6 Data 4 Ra Data6 6 Data4 Ra Data7 7 Data5 Ra Data8 8 Data6 Ra Data9 9 Data7 Ra Data
Ng ra cng song song tng thch vi cng TTL, dng cp v thu khong vi mA
4/8/2014 7NguyenTrongTaiDr.
n 16mA ty loi kt cu phn cng (cng ngh ASIC)
Cng SSP
Chn D25 Centronics Tn hiu SSP Hng Thanh ghi o10 10 /Ack Vo iu khin11 11 Busy Vo Trng thi C12 12 Paper Out Vo Trng thi13 13 Select Vo Trng thi14 14 /AutoLinefeed Vo/Ra iu khin C15 32 /Error Vo Trng thi15 32 /Error Vo Trng thi16 31 /Init Vo/Ra iu khin17 36 /Select Printer Vo/Ra iu khin C/ /
1825 1930 Mass
4/8/2014 8NguyenTrongTaiDr.
Cng SSP
4/8/2014 9NguyenTrongTaiDr.
Kt ni gia cng SSP v ngoi vi
Cng SSP
Bt tay d liuBan u d liu 8 bit c a raBan u d liu 8 bit c a ra, Nu chn Busy mc thp th my in rnh, Nu Busy s mc cao. Th my in bn T hi St b 1 i d li
4/8/2014 10NguyenTrongTaiDr.
Tn hiu Strobe rng 1sec v my in c d liu, My in c xong s bo tr li bng nACK rng 5sec.
Cng SSPVic giao tip c thc hin qua 3 thanh ghi: thanh ghi d liu, thanh ghi trng thi v thanh ghi iu khin. Thng thng s dng hai a ch gc l: 378cho LPT1v 278cho LPT2Mt s my dng a ch 03BC.- Thanh ghi d liu c a ch gc +0, 8 bit, nhn d liu xut ra ngoi, d liu c cht.. -Thanh ghi trng thi a ch gc +1 l thanh ghi ch c dng nhn tn hiu t ngoi vo, c 5 tn hiu vo.-Thanh ghi iu khin c bn ng ra iu khin, a ch gc +2, cc g g , g ,ng ny dng cc thu h do c th giao tip hai chiu.
-Cc chn 1, 11, 14 v 17 c o phn cng, bit D6 thanh ghi trngCc chn 1, 11, 14 v 17 c o phn cng, bit D6 thanh ghi trng thi (chn s 10) t 10 th gy ra ngt IRQ7 nu c cho php bi D4 ca thanh ghi iu khin =1.
4/8/2014 11NguyenTrongTaiDr.
Cng SSPTh h hi hi
Bit D7 D6 D0
i /AC O S l / / Q
Thanh ghi trng thi
Function Busy /ACK Paper Out Select /Error /IRQ X X
Pin 11 10 12 13 15
Ch l bit Busy c o, ngha l nu chn 11 c in p +5V th bit D7 ca thanh ghi trng thi mc logic 0, bit D2 bng 0 khi c ngt t /ACK.
Bit D7 D6 D0
F ti X X Ch h Ch Ch Khi X K h
Thanh ghi iu khin
Function X X Cho phpcng 2 chiu
Cho php
ngt qua ACK
Chon my in /Select
Khing
my in /Init
Xunghng/Auto
Linefeed
Kch/Strobe
4/8/2014 12NguyenTrongTaiDr.
ACK /Init LinefeedPin 17 16 14 1
Cng SSP
7 6 5 4 3 2 1 0
DATA X X X X X X X X Base=278/378/3BCH
STATUS /X X X X X Base+1
CONTROL /X X /X /X Base+2
a ch ca port song song
S7,C0,C1,C3 b oNu chn 11 mc cao thi S7 =0Nu chn 11 mc cao thi S7 =0C0 = 1 gy cho chn 1 ca cng song song mc thp
4/8/2014 13NguyenTrongTaiDr.
Cng SSPAddress Notes:
3BCh 3BFh UsedforParallelPortswhichwereincorporatedontoVideo Cards Doesn't support ECP addressesVideoCards Doesn'tsupportECPaddresses
378h 37Fh UsualAddressForLPT1278h 27Fh UsualAddressForLPT2
4/8/2014 14NguyenTrongTaiDr.
Chng trnh giao tip trn VB s dng th vin lin kt ng trao i d li i ii d liu vi cng my in.
C cc file lin kt ng sau: IO DLL; inpout32 dlltm trn mngC cc file lin kt ng sau: IO.DLL; inpout32.dll tm trn mngCopy nhng file ny vo th mc system32 ca my tnhKhai bo cc hm cn c s dng trong chng trnh giao tip. g g g g p
4/8/2014 15NguyenTrongTaiDr.
Th vin IO.DLL bao gm cc hm sau:
-Hm PortOut: xut 1 byte ra cng
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)y y )
Port: a ch ca cngData: d liu xut
4/8/2014 16NguyenTrongTaiDr.
Th vin IO.DLL bao gm cc hm sau:
-Hm PortWordOut: xut 1 word ra cng
Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)y g )
Port: a ch ca cngData: d liu xut
4/8/2014 17NguyenTrongTaiDr.
Th vin IO.DLL bao gm cc hm sau:
Hm PortDWordOut: xut 1 double word ra cng
Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)g , y g)
Port: a ch ca cngData: d liu xut
4/8/2014 18NguyenTrongTaiDr.
Th vin IO.DLL bao gm cc hm sau:
-Hm PortIn: nhp 1 byte t cng, tr v gi tr nhpP i t D l F ti P tI Lib "IO DLL" (B V l P t A I t )Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
- Hm PortWordIn: nhp 1 word t cngPrivate Declare Function PortWordIn Lib "IO.DLL (ByVal Port As Integer) As Integer
H P tDW dI h 1 d bl d t - Hm PortDWordIn: nhp 1 double word t cngPrivate Declare Function PortDWordIn Lib "IO.DLL (ByVal Port As Integer) As Longg ) g
4/8/2014 19NguyenTrongTaiDr.
Th vin Inpout.DLL bao gm cc hm sau:
short Inp32(short PortAddress) d t t P tc data t PortPrivate Declare Function Inp32 Lib "Inpout.DLL (ByVal Port As Integer) As Intergerg ) g
void Out32(short PortAddress, short data)Xut data ra Port
Private Declare Function Out32 Lib "Inpout.DLL (ByVal Port As Integer, ByVal Data As Interger)
4/8/2014 20NguyenTrongTaiDr.
Ngoi ra cn c Th vin hwinterface32.DLL bao gm cc hm sau:
Ngoi th vin ca Inpout.dll, cn c cc th vin khc nh ca IO.dllh t I 32( h t P tAdd )short Inp32(short PortAddress)c data t PortPrivate Declare Function Inp32 Lib "Inpout DLL (ByVal Port AsPrivate Declare Function Inp32 Lib Inpout.DLL (ByVal Port As Integer) As Interger
void Out32(short PortAddress, short data)Xut data ra Port
Private Declare Function Out32 Lib "Inpout.DLL (ByVal Port As Integer ByVal Data As Interger)Integer, ByVal Data As Interger)
4/8/2014 21NguyenTrongTaiDr.
Ngoi ra cn c Th vin hwinterface32.DLL bao gm cc hm sau:Function Description
shortInpW32(shortPortAddress) ReadsaWordfromthespecifiedI/Oaddress.
voidOutW32(shortPortAddress,shortdata) WritesaWordtothespecifiedI/Oaddress.
longInpD32(shortPortAddress) ReadsaDWordfromthespecifiedI/Oaddress.
void OutD32(short PortAddress long data) Writes a DWord to the specified I/O addressvoidOutD32(shortPortAddress,longdata) WritesaDWordtothespecifiedI/Oaddress.
longReadMemChar(ULONGAddress) ReadsasingleBytetothespecifiedaddress
longReadMemShort(ULONGAddress) Readsa16bitwordtothespecifiedaddress
longReadMemLong(ULONGAddress) Readsa32bitDword tothespecifiedaddress
voidWriteMemChar(ULONGAddress,UCHARdata )
WritesasingleBytetothespecifiedaddressdata)voidWriteMemShort(ULONGAddress,USHORTdata)
WritesasingleWordtothespecifiedaddress
void WriteMemLong(ULONG Address ULONG
4/8/2014 22NguyenTrongTaiDr.
voidWriteMemLong(ULONGAddress,ULONGdata)
WritesasingleDWord tothespecifiedaddress.
Mt s a ch cng tiu biu
Address Port
400H BaseI/Oaddressforserialport1(COM1)
402H BaseI/Oaddressforserialport2(COM2)
404H BaseI/Oaddressforserialport3(COM3)
406H BaseI/Oaddressforserialport4(COM4)p
408H BaseI/Oaddressforparallelport1(LPT1)
40AH Base I/O address for parallel port 2 (LPT 2)40AH BaseI/Oaddressforparallelport2(LPT2)
40CH BaseI/Oaddressforparallelport3(LPT3)
4/8/2014 23NguyenTrongTaiDr.
Giao tip n gin, ch SSP bi-directional mode
4/8/2014 24NguyenTrongTaiDr.
Giao tip ngoi vi vi SPP kt hp c d liu bng status byte:
4/8/2014 25NguyenTrongTaiDr.
Giao din VB:
4/8/2014 26NguyenTrongTaiDr.
Chng trnh:Khai bo hm cho IO.dll Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)ByVal Data As Byte)Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Khai bo bin a ch port LPTPrivate BA_LPT As Integer
4/8/2014 27NguyenTrongTaiDr.
Chng trnh:H h b R iHm cho button ReceivePrivate Sub cmdReceive_Click()Dim n As IntegerDim n As IntegerDim n1 As IntegerDim i As IntegerPortOut BA_LPT + 2, &H8 'SELECTIN = 1PortOut BA_LPT + 2, 0 'SELECTIN = 0n1 = PortIn(BA LPT + 1) 'Doc 4 bit thapn1 PortIn(BA_LPT + 1) Doc 4 bit thapn1 = n1 / &H10 'Dich phai 4 bitPortOut BA_LPT + 2, 2 'AUTOFEED=1n = PortIn(BA_LPT + 1) 'Doc 4 bit caon = n And &HF0n = n + n1n = n + n1
4/8/2014 28NguyenTrongTaiDr.
Chng trnh:Hm cho button ReceiveFor i = 0 To 7hkSW(i) V l M d 2chkSW(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 Ifn = Fix(n / 2)Next iEnd Sub
4/8/2014 29NguyenTrongTaiDr.
Chng trnh:H h b S dHm cho button SendPrivate Sub cmdSend_Click()Dim t As IntegerDim t As IntegerDim i As IntegerDim s As Stringt = 0For i = 0 To 7t = t + (2 ^ i) * (1 - shpLED(i) FillStyle)t t + (2 i) (1 - shpLED(i).FillStyle)Next iPortOut BA_LPT, tPortOut BA_LPT+2, 1 'STROBE = 1 PortOut BA_LPT+2, 0 'STROBE = 0 End SubEnd Sub
4/8/2014 30NguyenTrongTaiDr.
Chng trnh:Hm choPrivate Sub Form_Load()BA LPT &H378BA_LPT = &H378PortOut BA_LPT + 2, 0End SubEnd SubPrivate Sub lblLED_Click(Index As Integer)shpLED(Index).FillStyle = 1 - shpLED(Index).FillStylep ( ) y p ( ) yEnd Sub
4/8/2014 31NguyenTrongTaiDr.
Xut nhp d liu 8 bit ch Bidirectional U3
D1D0
D2D3D4
Data3
Data0
Data4
Data2Data1
U3
D03
D14
D27
D38
13
Q02
Q1 5
Q26
Q3912D4
D5
D7
Data4
Data7Data6Data5
D3D413
D514
D617
D718
CLK11
Q3Q4 12
Q515
Q6 16
Q719
IOW Base
D6
U274LS374
OE1
CLKControl Bit 5
A12
A24
A36
A48
Y1 18
Y216
Y3 14
Y412
A51113 Y597
1OE1
A613
A715
A817
Y67
Y7 5
Y83
2OE19
IOR Base
4/8/2014 32NguyenTrongTaiDr.
74LS244
Xut nhp d liu 8 bit ch Bidirectional
Bit 5 ca port iu khin cho php hoc cm chc nng 2 chiu caCng song song Chc nng ny ch thc hin c i vi nhng cngCng song song. Chc nng ny ch thc hin c i vi nhng cngc h tr. Khi bit nay c set ln 1, chn 29 s chuyn sang dngtng tr cao. trng thi ny, ta c th nhn d liu t data port. Vic
hi d li d l l i h kh h highi d liu vo data port s c lu li nhng khng c thc hin.Tt ch 2 chiu bng cch set bit 5 xung mc 0.
4/8/2014 33NguyenTrongTaiDr.
c d liu 8 bit vi cng SSP 1 chiu dng Status v Control Byte
DATAChan 2-->9
D0:D78 Bit OutputDATA
11 /BUSY D7
10 Ack D6
12 Paper Out D5
13 Select D4
D
A
T
A
DATA
011 D7
12
34
17 /Select Printer
16 Init
D3
D2
OC
7404
12
S
131210
D4D5D6 8 Bit
5614 /Auto Linef eed D1
OC
OC
S
T
A
T
U
S
16
17
D2D3
Input
981 Strobe D0
Open Collector74LS05 Hex Inverter
OC
34
12
34
OC
R
O
L
1
14 D1D2 Data
7404
56
OC
OC
C
O
N
T
R
4/8/2014 34NguyenTrongTaiDr.
1 D098OC
c d liu 8 bit vi cng SSP 1 chiu dng Status v Control Byte
Port iu khin dng c 4 bt thp. Nh cp trn, port iu khin ccc ng ra cc thu h, c 2 trng thi l tng tr cao v GND. Nu ta kt nicc ng ra cc thu h, c 2 trng thi l tng tr cao v GND. Nu ta kt nicc ng vo trc tip vo port, s c xung t xy ra nu ng vo mc cao vport ang ko xung. V vy ta thng s dng cc b o cc thu h.
outportb(CONTROL, inportb(CONTROL) & 0xF0 | 0x04);a = (inportb(STATUS) & 0xF0); /* Read MSnibble */
c d liu
a = (inportb(STATUS) & 0xF0); /* Read MSnibble */a = a |(inportb(CONTROL) & 0x0F); /* Read LSnibble */a = a ^ 0x84; /* Toggle Bit 2 & 7 */
4/8/2014 35NguyenTrongTaiDr.
c d liu 8 bit vi cng SSP 1 chiu dng Status v b phn knh, Ch NibblCh Nibble
U7
42D3 11 /B1Y
4
2Y7
3Y9
4Y12
1A2
2A5
3A11
4A14
D3D2D1D0
11 /Busy10 Ack12 Paper Out13 Select
4Y4A
1B3
2B6
10
D7D6D5
A/B1
15
3B10
4B13
1 /Strobe
D4
74LS157
G15
8 Inp ts Using 74LS157 M ltiple er
4/8/2014 36NguyenTrongTaiDr.
8 Inputs Using 74LS157 Multiplexer
c d liu 8 bit vi cng SSP 1 chiu dng Status v b phn knh, Ch NibblCh Nibble
Ch Nible l ch c yu thch khi c 8 bit d liu m khng tCh Nible l ch c yu thch khi c 8 bit d liu m khng tport trong ch ngc li s dng cc ng d liu. Ch Nibble sdng b phn knh 4x2->4x1 c d liu. Software sau s kt hp2 ibbl h h b M kh i h l h h2 nibble thnh byte. M khuyt im ca ch ny l tc thp hn. Ch ny yu cu nhiu lnh I/O hn c 1 byte, n i hi phi sdng IC ngoi. g g
4/8/2014 37NguyenTrongTaiDr.
c d liu 8 bit vi cng SSP 1 chiu dng Status v b phn knh, Ch NibblCh Nibble
c d liu vi ch Nibble
outportb(CONTROL, inportb(CONTROL) | 0x01); /* Select Low Nibble (A)*/a = (inportb(STATUS) & 0xF0); /* Read Low Nibble */
c d liu vi ch Nibble
a = a >> 4; /* Shift Right 4 Bits */outportb(CONTROL, inportb(CONTROL) & 0xFE); /* Select High Nibble (B)*/a = a |(inportb(STATUS) & 0xF0); /* Read High Nibble */byte = byte ^ 0x88;
4/8/2014 38NguyenTrongTaiDr.
M rng ng ra vi 74LS374
4/8/2014 39NguyenTrongTaiDr.
M rng Port vi IC 8255U10U10
D034
D133
D232
D33130
PA04
PA1 3
PA22
PA3140D3D430
D529
D628
D727
PA3PA4 40
PA5 39
PA638
PA737
PB0 18A09 PB0PB1
19
PB220
PB3 21
PB422
PB52324
RD5
WR36
A0A1
8
RESET35
6 PB6 24
PB7 25
PC014
PC1 15
PC2 16
CS6
PC2PC3
17
PC413
PC5 12
PC6 11
PC710
4/8/2014 40NguyenTrongTaiDr.
8255
M rng Port vi IC 8255
4/8/2014 41NguyenTrongTaiDr.
M rng Port vi IC 8255
8 bit ca Port A c th c lp trnh nh 8 bit u vo , 8 bit u ra, hocvo/ra
8 bit ca Port B c th c lp trnh nh 8 bit u vo , 8 bit u ra, hocvo/ravo/ra
8 bit ca Port C c th c lp trnh nh 8 bit u vo , 8 bit u ra. Co 1 thpchia lm 2 phn: digit cao =4 bit cao, v digit thp =4 bit thp. Mi digit c thlp trnh nh cc u vo hoc cc u ra. Ngoi ra, cc bt trn Port C cng cth c lp trnh ring r p g
4/8/2014 42NguyenTrongTaiDr.
M rng Port vi IC 8255
/WR v /RD l 2 tn hiu tch cc mc thp dng ghi v c d liu.
D0 D7 : cc chn d liu giao tip VXL hay cng
RESET tch cc mc cao, dng xa thanh ghi iu khin. Tt c cc cngc reset thnh cc cng vo.
/CS tch cc thp dng chn chip
A0 A1 d A B C h h hi i khiA0,A1: dng truy cp cc cng A, B, C v thanh ghi iu khin.
4/8/2014 43NguyenTrongTaiDr.
Cc ch hot ng IC 8255
Mode 0: Cc Port A, B, CU, CD ch c th c lp trnh nh cc Port vohoc Port ra n gin. g
Mode1: Port A, B c lp trnh nh cc cng vo ra c kh nng bt tay. Tnhiu bt tay c cp bi cc bit cng Chiu bt tay c cp bi cc bit cng C.
Mode 2: Cng A c dng nh cng vo/ra 2 chiu c kh nng bt tay, vig g g g ycc tn hiu bt tay c cp bi cc bit cng C. Cng B c lp trnh nhcc Port vo hoc Port ra n gin hoc c bt tay
Mode BRS: Ch thit lp hoc xa bt. Ch ny ch c nhng bt ring rca cng C c th c lp trnh.
4/8/2014 44NguyenTrongTaiDr.
Cc ch hot ng IC 8255
/CS A1 A0 Cng
0 0 0 Port A
0 0 1 Port B
0 1 0 Port C
0 1 1 Thanh ghi iu khin
1 X X 8255 khng c chn
4/8/2014 45NguyenTrongTaiDr.
Cc ch hot ng IC 8255
Thit lp I/0 Mode D7 =1
4/8/2014 46NguyenTrongTaiDr.
Cc ch hot ng IC 8255
Thit lp BRS Mode D7 =0
4/8/2014 47NguyenTrongTaiDr.
Cc ch hot ng IC 8255
4/8/2014 48NguyenTrongTaiDr.
Cc ch hot ng IC 8255
4/8/2014 49NguyenTrongTaiDr.
VB thiu mt s hm truy cp trc tip phn cng v a lung. thchin nhng thi st n cn cc file lin kt ng ( dll) Cc file dll nhin nhng thiu st ny, cn cc file lin kt ng (.dll) . Cc file .dll nyc vit t nhng soft c h tr nhng truy cp ny nh VC, Delphi,Cch vit dll trn VC++
Cc cng c
Visual C++ 6 , Visual basic 6VisualC++6,Visualbasic6
WritingTheDLL
StartVC++IDE,Filemenu New.Chn Win32Dynamic linklibraryfromProjectstab.t tn projectnameclickOK.Chn simpleDLLprojectclickFinish
4/8/2014 50NguyenTrongTaiDr.
4/8/2014 51NguyenTrongTaiDr.
4/8/2014 52NguyenTrongTaiDr.
4/8/2014 53NguyenTrongTaiDr.
Now our function is ready. The next step is to create a .def file which informs the linker to export our function Select New from File menu and then select text File fromlinker to export our function.Select New from File menu and then select text File from Files tab. Give it a name example1.def. Now you can see an empty file . Add these lines in to example1.defBc k tip l to file def cho php xut chng trnhBc k tip l to file .def cho php xut chng trnhFile New text File
4/8/2014 54NguyenTrongTaiDr.
4/8/2014 55NguyenTrongTaiDr.
4/8/2014 56NguyenTrongTaiDr.
Private Declare Function sum Lib "example1.dll" (ByVal x As Long, ByVal y As Long) As Long
Private Sub Form_Load()
End Sub
Private Sub Command1_Click()Text3.Text = Str(sum(CInt(Text1.Text), CInt(Text2.Text)))End SubEnd Sub
4/8/2014 57NguyenTrongTaiDr.
4/8/2014 58NguyenTrongTaiDr.