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  
Taùc giaû: TS Nguyeãn Ñöùc Thaønh  
Trang 15  
Hình 6.9: Sô ñoà aùp duïng LTC1290  
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 đủ
pdf 24 trang Thùy Anh 26220 Free
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:

  • pdfbai_giang_do_luong_va_dieu_khien_bang_may_tinh_chuong_6_giao.pdf