Bài giảng Đo lường và điều khiển bằng máy tính - Chương 6: Giao tiếp qua cổng song song
Chöông
6
GIAO TIEÁP QUA COÅNG SONG
SONG
Coång song song thöôøng duøng ñeå giao tieáp maùy vi tính vôùi ñoái töôïng
beân ngoaøi nhôø caùc ñaëc ñieåm:
- Laäp trình ñôn giaûn, deã keát noái
- Toác ñoä nhanh.
Khuyeát ñieåm cuûa coång song song laø khoaûng caùch ngaén do tính choáng
nhieãu keùm. Theo tieâu chuaån IEEE 1284 naêm 1994 coù 5 cheá ñoä hoaït ñoäng
cho coång song song.
- SPP :coång song song chuaån coù 3 mode laø:
+ Compatibility: xuaát 8 bit
+ Nibble: nhaäp 4 bit
+ Byte: coång hai chieàu
- EPP: coång song song taêng cöôøng (enhanced parallel port)
- ECP: coång môû roäng khaû naêng (extended capability port)
Tuøy loaïi mainboard coù theå hoã trôï caû 5 mode hay chæ vaøi mode.
Coång SPP coù theå truyeàn döõ lieäu song song 8 bit töø maùy tính ra vôùi
vaän toác 50 Kbytes/sec ñeán 150 Kbytes/sec. Khi muoán nhaäp döõ lieäu vaøo
maùy tính coù theå duøng mode Nibble truyeàn 4 bit hay mode Byte truyeàn 8 bit.
Coång EPP vaø ECP duøng theâm phaàn cöùng hoã trôï neân vaän toác truyeàn
nhanh hôn, coù theå ñeán 2 Mbytes/sec, thu phaùt song song 8 bit.
Thay ñoåi cheá ñoä cuûa coång song song baèng caùch vaøo BIOS SETUP
cuûa maùy tính khi khôûi ñoäng maùy.
CHÖÔNG 6: GIAO TIEÁP QUA COÅNG SONG SONG
Trang 2
6.1 COÅNG SPP
Coång song song coù ñaàu noái 25 chaân caùi thöôøng duøng ñeå keát noái vôùi
maùy in ñaàu noái Centronics 34 chaân.
Baûng 6.1 cho sô ñoà chaân vaø yù nghóa caùc chaân cuûa coång SPP khi duøng
vôùi maùy in, daáu “/” coù nghóa tích cöïc thaáp. Ví duï, chaân 15 laø /Error höôùng
vaøo, neáu chaân naøy xuoáng möùc 0 laø coù loãi. Coät Ñaûo ghi chöõ Coù töùc laø tín
hieäu ñöôïc ñaûo möùc, ví duï chaân 17 khi ñöa möùc logic 0 öùng vôùi chaân naøy
vaøo thanh ghi ñieàu khieån thì ôû chaân 17 xuaát hieän möùc 1.
Baûng 6.1: Sô ñoà chaân cuûa ñaàu noái phía maùy tính (coång SPP)
vaø phía maùy in
Chaân
Chaân
Tín hieäu
SPP
Höôùng Thanh ghi Ñaûo
D – 25 Centronics
1
2
1
2
/Strobe
Data 0
Data 1
Data 2
Data 3
Data 4
Data 5
Data 6
Data 7
/Ack
Vaøo/Ra Ñieàu khieån Coù
Ra
Ra
Ra
Ra
Ra
Ra
Ra
Ra
Data
Data
Data
Data
Data
Data
Data
Data
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
11
12
13
14
15
16
17
10
11
12
13
14
32
31
36
Vaøo Traïng thaùi
Vaøo Traïng thaùi Coù
Vaøo Traïng thaùi
Vaøo Traïng thaùi
Busy
Paper Out
Select
/Auto-Linefeed Vaøo/Ra Ñieàu khieån Coù
/Error
/Init
Vaøo Traïng thaùi
Vaøo/Ra Ñieàu khieån
/Select Printer Vaøo/Ra Ñieàu khieån Coù
Mass
18 - 25 19 - 30
Ngoõ ra coång song song töông thích vôùi coång TTL, doøng caáp vaø thu
khoaûng vaøi mA ñeán 16mA tuøy loaïi keát caáu phaàn cöùng (coâng ngheä ASIC).
Giao tieáp coång song song vôùi maùy in thöôøng ñöôïc thöïc hieän theo H.6.1
Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
Taùc giaû: TS Nguyeãn Ñöùc Thaønh
Trang 3
.
Hình 6.1: Sô ñoà keát noái vaø baét tay
Ban ñaàu döõ lieäu 8 bit ñöôïc ñöa ra, maùy tính ñoïc chaân Busy neáu ôû
möùc thaáp thì maùy in raûnh, seõ ñöa ra tín hieäu Strobe roäng 1 sec vaø maùy in
ñoïc döõ lieäu, ñoïc xong seõ baùo trôû laïi baèng ACK roäng 5 sec. Neáu maùy in
baän thì Busy seõ ôû möùc cao.
Vieäc giao tieáp ñöôïc thöïc hieän qua 3 thanh ghi: thanh ghi döõ lieäu,
thanh ghi ñieàu khieån vaø thanh ghi traïng thaùi. Thoâng thöôøng söû duïng hai
ñòa chæ goác laø:
378H cho LPT1 (line printer 1)
278H cho LPT2
CHÖÔNG 6: GIAO TIEÁP QUA COÅNG SONG SONG
Trang 4
Moät soá maùy duøng ñòa chæ 03BC.
- Thanh ghi döõ lieäu coù ñòa chæ goác +0, 8 bit, nhaän döõ lieäu ñeå xuaát ra
ngoaøi, döõ lieäu ñöôïc choát..
- Thanh ghi traïng thaùi ñòa chæ goác +1 laø thanh ghi chæ ñoïc duøng ñeå
nhaän tín hieäu töø ngoaøi vaøo, coù 5 tín hieäu vaøo.
D7
Busy
11
D0
/ACK
10
Paper Out
12
Select
13
/Error
15
/IRQ
X
X
Chuù yù laø bit Busy ñöôïc ñaûo, nghóa laø neáu chaân 11 coù ñieän aùp +5V thì
bit D7 cuûa thanh ghi traïng thaùi möùc logic 0, bit D2 baèng 0 khi coù ngaét töø /ACK.
- Thanh ghi ñieàu khieån coù boán ñöôøng ra ñieàu khieån, ñòa chæ goác +2,
caùc ñöôøng naøy duøng cöïc thu hôû do ñoù coù theå giao tieáp hai chieàu.
D7
D0
Cho pheùp
coång hai
chieàu
Choïn
maùy in
/Select
17
Cho pheùp
IRQ qua ACK
Khôûi ñoäng
maùy in /Init
Xuoáng haøng
/Auto Linefeed
Kích
/Strobe
X
X
16
14
1
Caùc chaân 1, 11, 14 vaø 17 ñöôïc ñaûo phaàn cöùng, bit D6 thanh ghi traïng
thaùi (chaân soá 10) töø 1 → 0 thì gaây ra ngaét IRQ7 neáu ñöôïc cho pheùp bôûi D4
cuûa thanh ghi ñieàu khieån =1.
Hình 6.2 Sô ñoà thanh ghi döõ lieäu hai höôùng
Moät soá mainboard (H6.2) hoã trôï giao tieáp hai chieàu qua thanh ghi döõ
Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
Taùc giaû: TS Nguyeãn Ñöùc Thaønh
Trang 5
lieäu, bit D5 cuûa thanh ghi ñieàu khieån baèng 1 thì cho pheùp caùc chaân 2..:9
cuûa thanh ghi döõ lieäu coù chieàu ñi vaøo, nghóa laø coù theå ñöa tín hieäu vaøo caùc
chaân naøy roài ñoïc thanh ghi döõ lieäu.
Caùc chaân cuûa thanh ghi ñieàu khieån coù ngoõ ra cöïc thu hôû neân coù theå
nhaän tín hieäu vaøo neáu tröôùc ñoù ta ñaõ naïp 8 bit sao cho caùc ngoõ ra öùng vôùi
thanh ghi naøy leân 1 (sô ñoà H 6.3). Do caùc tín hieäu
/Busy, /Select, /AF vaø /Strobe ñaõ ñöôïc ñaûo phaàn cöùng neân ta theâm caùc coång
ñaûo, logic ñoïc vaøo phaûn aûnh ñuùng möùc tín hieäu.
Hình 6.3: Giao tieáp song song hai chieàu qua coång SPP
Trong moät soá tröôøng hôïp, caùc chaân ra cuûa thanh ghi ñieàu khieån
khoâng duøng loaïi cöïc thu hôû maø duøng coät totem chæ coù moät chieàu xuaát, luùc
ñoù coù theå duøng boä phaân keânh ñeå ñoïc 4 bit döõ lieäu vaøo thanh ghi traïng
thaùi, ñoïc hai laàn seõ ñöôïc 8 bit döõ lieäu (H6.4).
Trong sô ñoà chaân /Strobe ñöôïc duøng ñeå choïn nöûa byte thaáp khi ôû
möùc 0 töùc laø bit D0 cuûa thanh ghi ñieàu khieån ôû möùc 1.
CHÖÔNG 6: GIAO TIEÁP QUA COÅNG SONG SONG
Trang 6
Vôùi sô ñoà naøy vieäc xuaát nhaäp döõ lieäu 8 bit ñöôïc thöïc hieän nhö sau:
1- Xaùc ñònh ñòa chæ goác cuûa coång LPT
2- Muoán xuaát döõ lieäu, ghi döõ lieäu 8 bitvaøo thanh ghi döõ lieäu, muoán
xuaát nhieàu hôn 8 bit coù theå duøng keøm caùc tín hieäu Init, Select … baèng
caùch ghi vaøo thanh ghi ñieàu khieån byte thích hôïp.
3- Muoán ñoïc döõ lieäu, ghi bit D0 = 1 vaøo thanh ghi ñieàu khieån, ñoïc 4
bit cao cuûa thanh ghi traïng thaùi (4 bit thaáp cuûa döõ lieäu vaøo), roài dôøi phaûi 4
bit, sau ñoù cho D0 cuûa thanh ghi ñieàu khieån baèng 0, ñoïc 4 bit cao cuûa
thanh ghi traïng thaùi (4 bit cao cuûa döõ lieäu vaøo), keát hôïp hai laàn ñoïc ta
ñöôïc 1 byte roài exclusive OR vôùi 88H ñeå ñaûo hai bit D7 vaø D3 (do Busy
ñaûo).
Hình 6.4: Vaøo 8 bit vôùi 74LS157
Ví duï laäp trình
Xuaát trò cuûa bieán oval1 ra thanh ghi döõ lieäu vaø oval2 ra thanh ghi
ñieàu khieån, nhaäp giaù trò inval töø thanh ghi traïng thaùi.
Trong ngoân ngöõ C
# define DATA 0X378
# define STATUS DATA + 1
# define CONTROL DATA + 2
int oval1, oval2, inval;
oval1 = 0X81;
outportb (DATA, oval1);
Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
Taùc giaû: TS Nguyeãn Ñöùc Thaønh
Trang 7
oval2 = 0X08;
outportb (CONTROL, OVAL2 ^ 0x0b); // exclusive or
inval = ((inportb (STATUS) ^ 0X80;
Trong ngoân ngöõ BASIC
DATA = &H378
STATUS = DATA + 1
CONTROL = DATA + 2
OVAL1 = 129
OUT DATA, OVAL1
OVAL2 = 75
OUT CONTROL, OVAL2 XOR 11
INVAL = ((INP (STATUS) XOR 128) AND &HF8) / 8
Laäp trình cho sô ñoà H6..4 ñoïc 8 bit
outportb(CONTROL, inportb(CONTROL) | 0x01); /* Choïn nöûa byte thaáp (A), pheùp toùan or */
a = (inportb(STATUS) & 0xF0); /* Ñoïc nöûa byte thaáp, pheùp toaùn and */
a = a >> 4; /* Dôøi phaûi 4 bit */
outportb(CONTROL, inportb(CONTROL) & 0xFE); /* Choïn nöûa byte cao (B)/
a = a |(inportb(STATUS) & 0xF0); /* Ñoïc nöûa byte cao */
byte = a ^ 0x88;
Söû duïng ngaét
Khi bit 4 cuûa thanh ghi ñieàu khieån ôû möùc 1 seõ cho pheùp ngaét neáu
chaân ACK chuyeån töø 1 xuoáng 0, chöông trình phuïc vuï ngaét IRQ7 seõ ñöôïc
goïi (cuõng coù luùc ngaét bò taùc ñoäng khi ACK chuyeån töø 0 leân 1). Coù theå vieát
moät chöông trình kieåm tra xem ngaét coù taùc ñoäng khoâng. Veà phaàn cöùng chæ
caàn noái chaân 9 (D7) vôùi chaân 10 (ACK). Vaøo Control panel –System kieåm
tra ñòa chæ vaø soá ngaét cuûa coång LPT.
#include <dos.h>
#define PORTADDRESS 0x378
#define IRQ 7
#define DATA PORTADDRESS+0
#define STATUS PORTADDRESS+1
#define CONTROL PORTADDRESS+2
#define PIC1 0x20
#define PIC2 0xA0
int interflag; /* Côø ngaét */
int picaddr; /* Ñòa chæ goác cuûa PIC) */
void interrupt (*oldhandler)();
void interrupt parisr() /* Interrupt Service Routine (ISR) */
{
interflag = 1;
outportb(picaddr,0x20); /* End of Interrupt (EOI) */
}
void main(void)
{
CHÖÔNG 6: GIAO TIEÁP QUA COÅNG SONG SONG
Trang 8
int c;
int intno; /* Soá vectô ngaét */
int picmask; /* Maët naï */
if (IRQ >= 2 && IRQ <= 7)
{
intno = IRQ + 0x08;
picaddr = PIC1;
picmask = 1;
picmask = picmask << IRQ;
}
if (IRQ >= 8 && IRQ <= 15)
{
intno = IRQ + 0x68;
picaddr = PIC2;
picmask = 1;
picmask = picmask << (IRQ-8);
}
if (IRQ < 2 || IRQ > 15)
{
printf("IRQ Out of Range\n");
exit();
}
outportb(CONTROL, inportb(CONTROL) & 0xDF); /* Chieàu xuaát */
outportb(DATA,0xFF);
oldhandler = getvect(intno); /* Löu vectô ngaét cuõ */
setvect(intno, parisr); /* Ñaët vectô ngaét môùi */
outportb(picaddr+1,inportb(picaddr+1) & (0xFF - picmask)); /* Gôõ maët naï */
outportb(CONTROL, inportb(CONTROL) | 0x10); /* Cho pheùp IRQ */
clrscr();
printf("Parallel Port Interrupt Polarity Tester\n");
printf("IRQ %d : INTNO %02X : PIC Addr 0x%X : Mask
0x%02X\n",IRQ,intno,picaddr,picmask);
interflag = 0; /* Reset Interrupt Flag */
delay(10);
outportb(DATA,0x00); /* Cho ACK taùc ñoäng */
delay(10); /* Chôø */
if (interflag == 1) printf("Interrupts Occur on High to Low Transition of ACK.\n");
else
{
outportb(DATA,0xFF); /* Low to High Transition */
delay(10); /* wait */
if (interflag == 1) printf("Interrupts Occur on Low to High Transition of ACK.\n");
else printf("No Interrupt Activity Occurred. \nCheck IRQ Number, Port Address
and Wiring.");
}
outportb(CONTROL, inportb(CONTROL) & 0xEF); /* Caám ngaét */
outportb(picaddr+1,inportb(picaddr+1) | picmask); /* Che */
setvect(intno, oldhandler); /* Hoài phuïc ngaét tröôùc khi thoaùt */
}
Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
Taùc giaû: TS Nguyeãn Ñöùc Thaønh
Trang 9
6.2 COÅNG EPP (ENHANCED PARALLEL PORT)
Coång EPP laø saûn phaåm lieân keát cuûa Intel, Xircom vaø Zenith, coù hai
chuaån laø EPP1.7 vaø EPP1.9, vaän toác truyeàn töø 500 Kbytes/s ñeán 2 Mbytes/s
nhôø söï hoã trôï cuûa phaàn cöùng vaø kyõ thuaät DMA.
Khi chuyeån coång song song sang cheá ñoä EPP (vaøo muïc
Setup khi khôûi ñoäng maùy tính ñeå ñaët cheá ñoä) caùc chaân coång seõ
mang teân goïi vaø yù nghóa khaùc.
Baûng 6.2
Chaân
1
Teân
Ghi /Write
Vaøo/Ra
Ra
Chöùc naêng
Khi thaáp xuaát döõ lieäu ra
Khi cao ñoïc vaøo
2 - 9
10
11
Data 0 - 7
Ngaét Interrupt
Chôø /Wait
Vaøo - Ra
Vaøo
Vaøo
Tuyeán döõ lieäu hai höôùng
Ngaét ôû caïnh leân
Duøng ñeå baét tay, chu kyø EPP baét ñaàu khi
thaáp, chaám döùt khi cao
12, 13, 15
14
16
17
18 – 25
Khoâng duøng
/Data Strobe
/Reset
/Address Strobe
Ra
Ra
Ra
Khi ôû möùc thaáp truyeàn döõ lieäu
Reset, tích cöïc thaáp
Khi ôû möùc thaáp truyeàn ñòa chæ
Mass
Coång EPP coù theâm moät soá thanh ghi nhö trong baûng 6.3:
Baûng 6.3
Ñòa chæ
Teân
Ñoïc / Ghi
Ghi
Goác + 0 Thanh ghi döõ lieäu (SPP)
Goác + 1 Thanh ghi traïng thaùi (SPP)
Goác + 2 Thanh ghi ñieàu khieån (SPP)
Goác + 3 Thanh ghi ñòa chæ (EPP)
Goác + 4 Thanh ghi döõ lieäu (EPP)
Goác + 5
Ñoïc
Ghi
Ñoïc / Ghi
Ñoïc / Ghi
Goác + 6 Duøng ñeå truyeàn 16/32 bit
Goác + 7
Ba thanh ghi ñaàu gioáng nhö trong SPP. Muoán truyeàn döõ lieäu theo
EPP ta ñöa döõ lieäu vaøo thanh ghi goác +4 vaø maïch logic seõ taïo caùc tín hieäu
caàn thieát.
CHÖÔNG 6: GIAO TIEÁP QUA COÅNG SONG SONG
Trang 10
Hình 6.5 Giaûn ñoà xuaát nhaäp döõ lieäu
Chaân /Write vaø /Data Strobe tích cöïc thaáp chôø cho ñeán khi /Wait leân
möùc cao baùo beân kia ñaõ nhaän döõ lieäu, sau ñoù /Data Strobe vaø /Write trôû laïi möùc
cao keát thuùc truyeàn.
Khi nhaän döõ lieäu, ñaàu tieân chöông trình ñoïc thanh ghi goác +4. Neáu
/Wait möùc thaáp thì /Data Strobe seõ ôû möùc thaáp chôø khi /Wait ôû möùc cao
beân kia baùo ñaõ gôûi döõ lieäu tôùi, /Data Strobe seõ ôû möùc cao vaø döõ lieäu ñöôïc
ñoïc vaøo. Chu kyø xuaát vaø nhaäp döõ lieäu cuõng gioáng nhö chu kyø xuaát vaø
nhaäp ñòa chæ. Thöôøng keát hôïp ñòa chæ vaø döõ lieäu ñeå truy xuaát döõ lieäu töø
caùc ñòa chæ ngoaïi vi khaùc nhau.
Phaàn cöùng ngoaïi vi coù nhieäm vuï xöû lyù caùc chaân /Write, /Data Strobe,
/Address Strobe ñöa vaøo caùc maïch caøi hay cho pheùp vaø xuaát tín hieäu /wait
phuø hôïp. Thoâng qua tín hieäu Interrupt (chaân soá 10) ngoaïi vi seõ taùc ñoäng
ñeán maùy tính, bit 0 cuûa thanh ghi traïng thaùi laø bit baùo heát thôøi gian EPP.
Neáu trong khoaûng 10μs ñöôøng /Wait khoâng taùc ñoäng khi /Data Strobe hay
/Address strobe taùc ñoäng thì bit naøy seõ ñöôïc ñaët leân 1.
6.3 COÅNG ECP
Coång ECP ñöôïc phaùt trieån bôûi Hewlett Packard vaø Microsoft, söû
duïng phaàn cöùng hoã trôï cho vieäc truyeàn döõ lieäu neân coù vaän toác truyeàn
nhanh, töông töï coång EPP. Ñaëc ñieåm cuûa coång ECP laø neùn döõ lieäu khi
truyeàn, cho pheùp taêng toác ñoä truyeàn döõ lieäu. Coång ECP duøng 11 thanh ghi
töø goác+0 ñeán goác+7 vaø goác+400H ñeán goác +402H. Chaâân coång ECP ñöôïc
qui ñònh trong baûng 6.4.
Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
Taùc giaû: TS Nguyeãn Ñöùc Thaønh
Trang 11
Baûng 6.4
Chaân
1
Tín hieäu ECP
HostClk
Höôùng
Chöùc naêng
Ra
Thaáp cho bieát coù döõ lieäu, caïnh leân duøng ñeå caøi döõ lieäu ra
2 – 9
Data 0 – 7
Hai chieàu Tuyeán döõ lieäu hai chieàu
Thaáp cho bieát ngoaïi vi caàn ñöa döõ lieäu vaøo maùy tính, caïnh
leân duøng ñeå caøi döõ lieäu vaøo
10
PeriphClk
Vaøo
Khi ngoaïi vi nhaän döõ lieäu thì leân möùc cao. Neáu ngoaïi vi
gôûi döõ lieäu thì möùc cao baùo chu kyø döõ lieäu, möùc thaáp baùo
chu kyø leänh
11
PeriphAck
Vaøo
12
13
/AckReverse
X – Flag
Vaøo
Vaøo
Ra
Khi thaáp ngoaïi vi chaáp nhaän truyeàn döõ lieäu
Côø môû roäng
HostAck
ÔÛ möùc cao baùo chu kyø döõ lieäu, ôû möùc thaáp baùo chu kyø
leänh
14
15
16
PeriphRequest
Vaøo
Ra
Yeâu caàu maùy tính nhaän soá lieäu
Khi ôû möùc thaáp cho bieát döõ lieäu nhaäp vaøo maùy tính
Mass
/ ReverseRequest
18 – 29
Khi truyeàn döõ lieäu töø maùy tính ra ngoaïi vi thì HostAck seõ ñoåi möùc,
coøn truyeàn döõ lieäu töø ngoaïi vi vaøo maùy tính thì PeriphAck ñoåi möùc. Treân
tuyeán döõ lieäu coù theå truyeàn döõ lieäu hay leänh. Neáu Host Ack vaø Periph
Ack ôû möùc cao laø truyeàn döõ lieäu. Neáu maùy tính gôûi leänh, Host Ack möùc
thaáp; neáu ngoaïi vi gôûi leänh, Periph Ack möùc thaáp. Leänh goàm hai loaïi, neáu
bit 7 cuûa tuyeán döõ lieäu (chaân 9) ôû möùc thaáp thì 7 bit coøn laïi duøng ñeå cho
bieát thoâng tin veà neùn döõ lieäu. Neáu bit 7 ôû möùc cao thì 7 bit coøn laïi laø ñòa
chæ keânh. Khi truyeàn döõ lieäu neùn, ñaàu tieân truyeàn soá laàn laëp laïi cuûa byte
döõ lieäu, sau ñoù truyeàn byte döõ lieäu, ví duï truyeàn 25 byte kyù töï ‘A’ thì gôûi
byte 24 (Run length Count) sau ñoù gôûi byte ‘A’.
Hình 6.6: Truyeàn döõ lieäu töø maùy tính ra ngoaïi vi
CHÖÔNG 6: GIAO TIEÁP QUA COÅNG SONG SONG
Trang 12
Hình 6.7: Truyeàn döõ lieäu töø ngoaïi vi vaøo maùy tính
Ngoaïi vi nhaän ñöôïc byte 24 trong chu kyø leänh seõ laëp laïi byte ‘A’ ôû
chu kyø döõ lieäu 25 laàn. Tyû soá neùn toái ña 64/1.
Ñeå taêng toác ñoä truyeàn döõ lieäu, coång ECP duøng caùc thanh ghi saép xeáp
kieåu FIFO vaø moät soá thanh ghi phuï.
Baûng 6.5
Ñòa chæ
Teân
Ñoïc / Ghi
Ghi
Thanh ghi döõ lieäu (SPP)
Ñòa chæ FIFO (ECP)
Goác + 0
Ñoïc / Ghi
Ñoïc / Ghi
Ñoïc / Ghi
Goác + 1
Goác + 2
Thanh ghi traïng thaùi (moïi mode)
Thanh ghi ñieàu khieån (moïi mode)
Data FIFO (mode FIFO coång song song) Ñoïc / Ghi
Goác + 400 H
Data FIFO (ECP)
Ñoïc / Ghi
Ñoïc / Ghi
Ñoïc / Ghi
Ñoïc / Ghi
Ñoïc / Ghi
Test FIFO (mode Test)
Thanh ghi caáu hình A
Goác + 401 H Thanh ghi caáu hình B
Goác + 402 H Thanh ghi ñieàu khieån môû roäng
Thanh ghi ñieàu khieån môû roäng cho pheùp choïn kieåu hoaït ñoäng cuûa
coång song song. Thanh ghi caáu hình A vaø B söû duïng ñeå ñaët caáu hình cuûa
coång ECP.
Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
Taùc giaû: TS Nguyeãn Ñöùc Thaønh
Trang 13
Chi tieát veà caùc thanh ghi coù theå xem trong caùc taøi lieäu chuyeân saâu hay ñòa
6.4 GHEÙP NOÁI HAI MAÙY TÍNH
Hai maùy tính coù theå gheùp vôùi nhau qua coång song song hay coång noái
tieáp ñeå truyeàn soá lieäu thoâng qua tieän ích Direct Cable Connection cuûa heä
ñieàu haønh Windows hay tieän ích töông töï cuûa phaàn meàm Norton
Commander.
Hình 6.8: Giao dieän gheùp noái hai maùy tính
1- Gheùp noái song song (Laplink cable):Duøng caùp noái vôùi hai ñaàu ñöïc
DB25, giao tieáp 4 bit
Chaân
Chaân
D0 2 → 15
D1 3 → 13
D2 4 → 12
D3 5 → 10
D4 6 → 11
ACK
Busy
10 ← 5
11 ← 6
CHÖÔNG 6: GIAO TIEÁP QUA COÅNG SONG SONG
Paper out 12 ←
Trang 14
4
Select
Error
GND
13 ← 3
15 ← 2
25 ← 25
2- Gheùp noái noái tieáp: Duøng caùp noái hai ñaàu caùi DB9 hay DB25
9 chaân 25 chaân 25 chaân 9 chaân
GND
TXD
RTS
5
3
7
7
2
7
3
5
2
4
5
8
DSR 1, 6
6
20
2
4
RXD
CTS
DTR
2
8
4
3
3
5
4
7
20
6
1 , 6
Truyeàn baèng ñöôøng song song nhanh gaáp taùm ñeán möôøi laàn truyeàn
noái tieáp.
Neáu coång song song hai maùy coù caáu hình ECP thì vaän toác truyeàn coøn
nhanh hôn nöõa, döôùi ñaây laø caùp noái vôùi coång ECP
Chaân
Chaân Chaân
Chaân
→
←
→
→
→
1
10
15
14
16
17
17
2 ÷ 9 ←> 2 ÷ 9
11
←
←
←
←
10
11
12
13
1
12
14
15
16 18 ÷ 25 <→ 18 ÷ 25
13
6.5 CARD CHUYEÅN ÑOÅI 8 KEÂNH 12 BIT DUØNG COÅNG
MAÙY IN
Söû duïng vi maïch LTC 1290 8 keânh 12 bit ta coù theå thöïc hieän maïch
chuyeån ñoåi 12 bit gheùp vôùi maùy tính qua coång maùy in. Vi maïch LTC 1290
laø saûn phaåm cuûa haõng Linear technology ñoåi A/D duøng phöông phaùp xaáp
xæ lieân tieáp 12 bit ñôn cöïc hay 11 bit coäng daáu, thôøi gian ñoåi 13μs max, keát
quaû ño ñöa ra ngoaøi daïng noái tieáp. Hình 6.9 cho sô ñoà aùp duïng.
Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
CHÖÔNG 6: GIAO TIEÁP QUA COÅNG SONG SONG
Hình 6.10 Sô ñoà khoái LTC1290 vaø giaûn ñoà thôøi gian
Trang 16
Vi maïch hoaït ñoäng vôùi xung ñoàng boä SCLK. Khi CS chuyeån töø 1
xuoáng 0, caïnh leân cuûa SCLK ñöa 8 bit töø Din vaøo thanh ghi dôøi ñeå ñònh
cheá ñoä hoaït ñoäng cuûa vi maïch, caïnh xuoáng cuûa SCLK ñöa keát quaû chuyeån
ñoåi laàn tröôùc töø thanh ghi dôøi noái tieáp ra Dout. Khi ñaõ ñuû 8 bit Din vaøo caáu
hình chuyeån ñoåi theo baûng sau, B7 laø bit Din vaøo tröôùc.
B7
B6
B5
Choïn
1
B4
Choïn
0
B3
B2
B1
B0
Ñôn/
visai
Ñôn cöïc/
Löôõng cöïc
MSB/
LSB
Daáu
Chieàu daøi töø Chieàu daøi töø
B7 = 1: 8 ngoõ vaøo ñôn so vôùi chaân COM, B6 B5 B4 choïn moät trong 8
ngoõ vaøo.
B7 = 0: 8 ngoõ vaøo chia thaønh 4 caëp vi sai 01, 23, 45, 67, bit B5 B4
choïn moät trong 4 caëp coøn bit B6 = 1 seõ aán ñònh caùc ñaàu 0, 2, 4, 6 döông so
vôùi 1, 3, 5, 7; B6 = 0 aán ñònh ngöôïc laïi.
B3 = 1: choïn ñoåi ñôn cöïc, tín hieäu vaøo töø 0 ñeán Vref = +5V
B3 = 0: choïn ñoåi löôõng cöïc, tín hieäu vaøo -Vref (800H) ñeán Vref -
1LSB (7FFH), bit ñaàu laø bit daáu
B2 = 1: cho bieát seõ truyeàn MSB ñaàu tieân ra Dout
= 0: cho bieát seõ truyeàn LSB ñaàu tieân ra Dout
B1 vaø B0 cho bieát chieàu daøi töø cuûa Dout.
B1 B0
0
0
8 bit
caét nguoàn
12 bit
16 bit
1
1
1
B1= 0, B0= 1: vi maïch ôû cheá ñoä caét nguoàn luùc ñoù CS = 1 doøng tieâu
thuï khoaûng 10μA.
Sau khi ñaõ ñuû soá xung nhòp SCLK ñöôïc aán ñònh bôûi chieàu daøi töø CS
ñöôïc ñöa leân möùc 1, baét ñaàu chuyeån ñoåi theo xung nhòp ACLK, taàn soá toái
ña 4Mhz, sau ñoù töø 48 ñeán 52 xung ACLK, neáu CS xuoáng möùc 0 thì keát
quaû ñoåi seõ ñöa ra Dout theo caáu hình ñaõ ñaët tröôùc coøn Din seõ ñöa vaøo vaø
ñaët caáu hình môùi. Caùc thoâng tin chi tieát hôn veà vi maïch coù theå tìm trong
Maïch chuyeån ñoåi H6.10 cho pheùp ñoåi tín hieäu ñôn 0V ÷ 2,5V hay tín
hieäu löôõng cöïc (–2,5V) ÷ (+ 2,5V). Xung nhòp SCLK vaø döõ lieäu Din xuaát ra
töø coång maùy in coøn keát quaû ñoåi Dout ñöa vaøo ACK cuûa coång.
Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
Taùc giaû: TS Nguyeãn Ñöùc Thaønh
Trang 17
{======= CHÖÔNG TRÌNH ÑIEÀU KHIEÅN CHO CARD AD 12 BIT =======}
unit ltc1290;
interface
const
vref = 2.48;
function adc_read (ch: integer): real;
implementation
Hình 6.10
const
sclk = 1;
din = 2;
dout = 64;
cs = 4;
function adc_read;
const
wconst = 1 + 32 + 64;
chconst: array [0..7] of byte = (0, 2, 8, 10, 4, 6, 12, 14);
delay = 10; coù theå thay ñoåi tuøy maùy tính
vaøo ñôn, löôõng cöïc, MSB ñaàu
aout = $378;
ain = $379;
CHÖÔNG 6: GIAO TIEÁP QUA COÅNG SONG SONG
Trang 18
var
i: integer;
win: word;
result: word;
begin
for i:= 1 to delay do begin end;
win := wconst + chconst [ch];
port [aout] := 0; drop CS' { dôøi word caáu hình vaøo}
for i := 1 to 12 do begin
port [aout] := (win and 1)* din;
port [aout] := (win and 1)* din + sclk;
win := win div 2;
port [aout] := 0;
end;
port [aout] := cs;
for i := 1 to delay do begin end;
port [aout] := 0; {nhaän keát quaû chuyeån ñoåi}
result := 0;
win := wconst + chconst [ch];
for i := 1 to 12 do begin
port [aout] := (win and 1)* din;
port [aout] := (win and 1)* din + sclk;
result := result*2;
if port [ain] and dout <> 0 then result := result + 1;
port [aout] := 0;
end;
port [aout] := cs;
adc_read := vrel*((result + 2048) and 4095) / 2048 – vref;
end;
{======= CHÖÔNG TRÌNH DEMO ========}
program testltc;
uses crt, ltc1290
var i: integer;
begin
writeln (‘Nhaán phím ñeå thoaùt’);
while not keypressed do begin
for i := 0 to 7 do write (adc_read(i) :4:4,’’);
writeln (‘V’);
delay (1000);
end;
end.
6.6 MAÏCH LAÄP TRÌNH VI ÑIEÀU KHIEÅN ATMEL 89C
Maùy tính thöôøng duøng ñeå laäp trình cho vi ñieàu khieån hay EPROM qua
coång song song hay noái tieáp. Muïc naøy trình baøy boä laäp trình cho vi maïch
hoï Atmel 89C51/52/55/1051/2051/4051.
AT89C2051 coù Flash ROM 2Kbyte treân chip ôû traïng thaùi xoùa FFH, saün saøng ñeå
laäp trình, laäp trình töøng byte moät , khi ñaõ laäp trình muoán laäp trình laïi moät byte cuõng
Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
Taùc giaû: TS Nguyeãn Ñöùc Thaønh
Trang 19
phaûi xoùa toaøn boä boä nhôù. Ñeám ñòa chæ boä nhôù baèng boä ñeám trong nhaän xung ñeám töø
caïnh leân cuûa XTAL1, vaø ñöôïc xoùa veà 000H bôûi caïnh leân cuûa RST.
Laäp trình boä nhôù theo thöù töï sau:
1. Caáp nguoàn 5V giöõa VCC vaø GND , RST vaø XTAL1 möùc 0
2. Ñaët RST möùc cao, chaân P3.2 möùc cao
3. Cung caáp caùc möùc logic phuø hôïp cho caùc chaân P3.3, P3.4, P3.5, P3.7
theo caùc muïc sau:
LaäpTrình vaø kieåm tra:
4. Ñöa döõ lieäu code ñòa chæ 000H vaøo P1.0 ñeán P1.7.
5. Naâng RST leân 12V ñeå cho pheùp laäp trình.
6. Taïo xung P3.2 ñeå laäp trình moät byte hay bit khoùa thôøi gian laäp trình
khoaûng 1.2ms.
7. Muoán kieåm tra döõ lieäu haï RST töø 12V ñeán möùc 5V vaø ñaët caùc chaân P3..3
ñeán P3.7 möùc thích hôïp. Döõ lieäu ra ñoïc ôû port P1 .
8. Laäp trình ñòa chæ keá cho XTAL1 moät xung ñeå taêng boä ñeám ñòa chæ trong,
ñöa code vaøo P1.
9. Laäp laïi böôùc 6 ñeán 8, thay ñoåi döõ lieäu vaø taêng boä ñeám ñòa chæ cho ñeán
khi heát boä nhôù hay ñeán cuoáí file.
10, Ñaët XTAL1 vaø RST möùc thaáp, taét nguoàn
Ready/Busy: Khi ñang laäp trình chaân P3.1 ôû möùc thaáp baùo baän, khi laäp trình
xong chaân naøy ôû möùc cao baùo saün saøng
Program Verify: Neáu caùc bit khoùa LB1 vaø LB2 chöa ñöôùc laäp trình code coù
theå ñoïc laïi ñeå kieåm tra
1. Xoùa boä ñeám trong khi RST coù caïnh leân.
2. Ñaët caùc möùc logic phuø hôïp vaø ñoïc code ôû port P1.
CHÖÔNG 6: GIAO TIEÁP QUA COÅNG SONG SONG
Trang 20
3. caáp moät xung vaøo chaân XTAL1 ñeå sang oâ nhôù keá
4. Ñoïc code.
5. Laäp laïi caùc böôùc 3 vaø 4 .
Chip Erase: Boä nhôù vaø bit khoùa ñöôïc xoùa bôûi caùc möùc logic phuø hôïp nhö baûng
treân vaø P3.2 coù xung thaáp 10ms
Reading the Signature Bytes: Byte signature ñöôïc ñoïc ôû ñòa chæ 000H, 001H,
vaø 002H, vôùi P3.5 vaø P3.7 ôû möùc thaáp.
(000H) = 1EH kyù hieäu Atmel
(001H) = 21H kyù hieäu 89C2051
Laäp trình 89C51:
Treân chip coù ba bit khoaù coù theå ôû traïng thaùi khoâng laäp trình (U) hay laäp trình (P)
LB1 LB2 LB3
1 U
2 P
3 P
4 P
U
U
P
P
U
U
U
P
Khoâng khoùa chöông trình.
Caám ñoïc chöông trình, caám laäp trình theâm
Gioáng treân, caám kieåm tra
Gioáng treân,
Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Đo lường và điều khiển bằng máy tính - Chương 6: Giao tiếp qua cổng song song", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_do_luong_va_dieu_khien_bang_may_tinh_chuong_6_giao.pdf

