You are on page 1of 14

Giao din ca my tnh trong o lng v iu khin

I. Cng ghp ni vi my in 1. Vi nt c bn v cng ghp ni vi my in. Cng ghp ni vi my in hay thng c gi l giao din Centronics c l khng c g xa l i vi ngi s dng my tnh. Vic ni my tnh vi my tnh c thc hin qua cm 25 chn pha sau my tnh.nhng y khng ch l ch ni vi my in khi s dng my tnh vo mc ch o lng v iu khin th vic ghp ni cng c thc hin qua cm ny. Qua cng ny d liu c truyn i song song v tc truyn d liu cng t n mc ln ng k. Tt c cc ng dn ca cng ny tng thch TTL, ngha l chng u cung cp mt mc in p nm gia 0 v 5v. Do ta cn cn phi l l tt c cc ng dn li vo cng ny khng c t cc mc in p qu ln. S sp xp cc chn ra cng my in vi tt c cc ng dn c m t trn hnh 1.2. Ta thy r l bn cnh 8 bit d liu cn c nhng ng dn tn hiu khc, tng cng ngi s dng c th trao i mt cch ring bit vi 17 ng dn truyn, bao gm 12 ng dn ra v 5 ng dn vo. Bi v 8 ng dn d liu D0 D7 khng phi l ng dn 2 chiu trong tt c cc loi my tnh, nn sau y ta s thy l D0 D7 ch c th c s dng nh l mt li ra. Cc li ra khc na l STROBE, AUTOFEED (AF), INIT v SELECT IN (SLCTIN). Khi trao i thng tin vi my tnh, cc ng dn ny c chc nng xc nh. Th d: INIT = 0 thc hin mt qu trnh khi ng li (Reset) my in bng mt xung Low vo trong b nh ca my in

13

25

14

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

K hiu Strobe D0 D1 D2 D3 D4 D5 D6 D7 ACK Busy PE Slct Af eRROR INIT SLCTIN GND GND GND GND GND GND GND GND

Vo/ra Li ra (Output) Li ra Li ra Li ra Li ra Li ra Li ra Li ra Li ra Li vo (Input) Li vo Li vo Li vo Li ra Li vo Li ra Li ra

M t Byte c in ng d liu D0 ng d liu D1 ng d liu D2 ng d liu D3 ng d liu D4 ng d liu D5 ng d liu D6 ng d liu D7 Acknowledge(xc nhn) 1: my in bn Ht giy Select (la chn Auto Feed (t np) Error (li) 0: t li my in Select in Ni t

Hnh 1.1 B tr chn cng my in Cng my in cng c ng dn li vo, nh vy m s bt (cho) tay gia my tnh v my in c thc hin. Chng hn, khi m my in khng cn ch trong b nh th my in s gi n my tnh mt bit trng thi (BUSY = 1) iu c ngha l my in ti thi im ny ang bn, khng nn gi thm cc Byte d liu khc n na. Khi ht giy my in th my tnh s thng bo l PAPEREMPTY (PE). ng dn li vo tip theo l : ACKNOWLEDGE (ACK), SELECT (SLCT) v ERROR. Tng cng my tnh PC c 5 li vo hng ti my in 2. Trao i vi cc ng dn tn hiu Datenregister (Basicaddress) D 7 D6 D 5 D 4 D 3 D 2 D 1 D 0

Datenbit Datenbit Datenbit Datenbit Datenbit Datenbit Datenbit Datenbit

D0 D1 D2 D3 D4 D5 D6 D7

(Pin (Pin (Pin (Pin (Pin (Pin (Pin (Pin

2) 2) 2) 2) 2) 2) 2) 2)

Statusreglster (Basicaddress +1) D 7 D6 D 5 D 4 D 3 0 0 0

ERROR (Pin 15) SLCT (Pin 13) PE (Pin 12) ACK (Pin 10) BUSY (Pin 11)

Controlregister (Basicaddress +2) D D6 D D D D D D


9IROBE (Pin 1) AUTO FEED (Pin 14) INIT (Pin 16) 9LCTIN (Pin 17)

Hnh1.2 Thanh ghi cng my in ca my tnh PC Tt c cc ng dn tn hiu va c gii thiu cho php trao i qua cc a ch b nh ca PC. 17 ng dn ca Cng my in sp xp thnh ba thanh ghi: ghi d liu, ghi trng thi v ghi iu khin. Hnh 1.2 ch ra s sp xp ca cc ng dn tn hiu ti cc bit d liu ring bit ca thanh ghi. a ch u tin t n c ca cng my in c xem nh l a ch c s (Basic Address hoc vit tt l CCS). cc my tnh PC c ch to gn y a ch c s ca cng my in c sp xp nh sau: LPT1 (Cng my in th nht) LPT2 (Cng my in th hai = = a ch c bn = 378 (Hex) Hoc l 3BC (Hex) my tnh Lapto a ch c bn = 278 (Hex)

a ch c bn ng nht vi thanh ghi d liu. Thanh ghi trng thi c t ti a ch c bn + 1. y cn ch rng mc Logic ca BUSY (chn 11) c sp xp ngc vi thanh ghi trng thi. Thanh ghi iu khin vi 4 ng dn li ca n t di a ch a ch c bn + 2. y cn ch ti s o ngc ca cc tn hiu STROBE, AUTOFEED v SLCTIN. Cc a ch c bn ca cng my in ca my tnh PC c t nhng a ch b nh xc nh v c th c c ra bng chng trnh di y. a ch c bn ca LPT1 ng nh gi tr 16 bit trong cc a ch 408 (hex) v 409 (hex). C hai a ch tip sau : 40A (hex) v 40B (hex) cha ng a ch c bn ca LPT2. ======================================== ===================

Progam : BASADR Function : Chng trnh ny thng bo a ch c bn ca hai cng my in u tin LPT1 v LPT2 ======================================== ==================== DEF SEG = 0 CLS ------------------------- -------- a ch c bn ca LPT1 -----------------------------------basadr . low = PEFK (&H408) basadr . high = PEFK (&H409) basadr . 1pt1 = basadr. Low + 256 * basadr . high IF . basadr . 1 pt1 = 0 THEN PRINT LPT1 : khng tn ti ELSE PRINT LPT1 : a ch c bn l ; Hexs (basadr . 1pt 1) ; (hex) END IF ------------------------- -------- a ch c bn ca LPT2 -----------------------------------basadr . low = PEFK (&H40A) basadr . high = PEFK (&H40B) basadr . 1pt2 = basadr. Low + 256 * basadr . high IF . basadr . 1 pt2 = 0 THEN PRINT LPT2 : khng tn ti ELSE PRINT LPT2 : a ch c bn l ; Hexs (basadr . 1pt 2) ; (hex) END IF END Khi ta mun trao i vi thanh ghi trong mt ngn ng lp trnh th cch tt nht l lc bt u chng trnh ta thc hin mt s khi to khng nh cc a ch thanh ghi. Trong QBasic s khi to ny c vit nh sau: Basadr = & H 378 Datreg = basadr Startreg = basadr + 1 Contrreg = basadr + 2 REM a ch c s REM Thanh ghi d liu REM Thanh ghi trng thi REM Thanh ghi iu khin

Cc ng dn tn hiu ring bit cho php lp trnh nh di y:

Ghi ln thanh ghi d liu OUT datreg, outbyte c t thanh ghi trng thi inbyte = INT (startreg) Ghi ln thanh ghi iu khin OUT contrreg, outbyte Cc outbyte v inbyte cha ng cc s trong h m 10 nm trong khong 0 n 255. . Ta c th thng bo mu bit tng ng ca outbyte v inbyte qua gi tr ca cc bit d liu ring bit. Mun th ta cn bit rng D0 chim gi tr l 2 0, D1 chim gi tr l 21, D2 chim gi tr l 22 v.v. Khi m thanh ghi trng thi cha gi tr c vo inbyte = 125 th cc bit d liu sau c php thng bo: D7 D6 D5 D4 D3 D2 D1 D0 = = = = = = = = 1 0 0 1 1 0 0 0 = = = = = = = = + + + + + + + 128 0 0 16 8 0 0 0

= Tng s = 128 + 16 + 8+ 152

Ni cch khc: BUSY l Low (mc thp), ACK l Low, PE l Low, SLCT l High (mc cao), ERROR l High. 3. Chng trnh kim tra cng my in Di y xin gii thiu mt chng trnh vit bng QBasic cho php trao i vi tt c cc ng dn ca cng my in mt cch ring bit. Chng trnh ny c tn l LPTEST. BAS. Nu nh bn c cha c kinh nghim lm quen vi QBasic th trc khi th nghim chng trnh ny nn c thm phn ph lc 2 cui sch. a ch c bn ca cng my in c th c thng bo bng chng trnh c tn l BASADR.BAS. Chng trnh LPTTEST c vit nh sau ======================================== ==================== Progam : BASADR Function : Chng trnh kim tra trao i vi tt c cc ng dn cng my in

======================================== ==================== COLOR 0 , 15 CLS As = chng trnh kim tra cng my in. a = LEN (as) : b = (80 ) / 2 1 LOCATE 1 , B : PRINT CHRS (201) ; STRING (a +2), CHRS (205) ) ; CHRS (187) LOCATE 2, b : PRINT CHRS (186) LOCATE 2, b + 2. PRINT aS LOCATE 2, a + b + 2: PRINT CHRS (186) LOCATE 3, b : PRINT CHRS (200); STRINGS (a +2, CHRS (205) ) ; CHRS (188) PRINT LOCATE 5, 15 ; PRINT a ch c bn ca cng my in (hex) : 378 Basadr = & H 378 Datreg = basadr `Th _ ghi d liu Statreg = basadr + 1 `Th _ ghi trng thi Contrreg = basadr + 2 `Th _ ghi iu khin LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE LOCATE 7, 7, 8, 8, 9, 9, 10 10 10 10 11 11 12 12 13 13 14 15 16 17 18 19 10 : PRINT Cc ng dn li ra 50 : PRINT Cc ng dn li vo 10 : PRINT --------------------------- 50 : PRINT --------------------------- 10 : PRINT ng dn d liu D0 = 50 : PRINT ERROR = , 10 : PRINT ng dn d liu D0 = , 50 : PRINT ERROR = , 10 : PRINT ng dn d liu D1 = , 50 : PRINT SLCT = , 10 : PRINT ng dn d liu = , 50 : PRINT PE = , 10 : PRINT ng dn d liu D3 = , 50 : PRINT ACK D0 = , 10 : PRINT ng dn d liu D4 = , 50 : PRINT BUSY = , 10 : PRINT ng dn d liu D5 = , 10 : PRINT ng dn d liu D6 = , 10 : PRINT ng dn d liu D7 = , 10 : PRINT STROBE = , 10 : PRINT AUTO FEED = , 10 : PRINT INIT=

LOCATE 20 , 10 : PRINT SLCTIN PRINT LOCATE 22 , 1 : PRINT Hng dn : LOCATE 22 , 15 : PRINT CHRS (24) ; CHRS (25); : La chn li ra LOCATE 22 , 35 : PRINT ESC : Kt thc LOCATE 22 , 50 : PRINT F1 : o ri ra LOCATE 23 , 1 : PRINT ---------------- ----------- Tt c cc ng dn li ra t bng 1 -----------------------FOR i = 9 TO 20 LOCATE i , 30 : PRINT 1 NEXT OUT datreg, 255 : OUT contrreg, (31 XOR 11) DONG = 9 : COT = 10 DO ` ` c dng hin ti (ct 10 n 24) vo nh l texts ` texts = FOR i = 0 TO 14 texts = texts + CHRS (SCREEN (DONG, COT + 1) ) NEXT -------------------testS : m t o ----------------------------------------COLOR 15 , 0 : LOCATE DONG, COT PRINT texts COLOR 15, 0: LOCATE DONG , COT PRINT texts COLOR 0 , 15 S xut d liu tip theo tr li bnh thng ` ----------------------- Bt u vng lp, hi li bn phm ------------------------DO TasteS = INKEYS `Ch n phm Inbyte INP (statreg) `c vo thanh ghi trng thi FOR i = 3 TO 7 LOCATE 6 + i, 60 IF i < 7 THEN PRINT (inbyte AND 2 i ) ) \ 2 i IF i = 7 THEN PRINT (inbyte AND 2 i ) \ 2 i ) XOR1 NEXT LOOP UNTIL tasteS <> ------------------------ Kt thc vng lp (Phm nhn ) ----------------------------------SELECT CASE ASC (RIGHTS (tasteS , 1 ) CASE 27 ; EXIT DO ` Phm ESC CASE 59 ` Phm F1 LOCATE DONG , 30

PRINT VAL (CHRS (SCREEN (DONG , 31 ) ) ) XOR 1 CASE 72: IF DONG > 9 THEN DONG = DONG - 1 ` Phm mi tn ln CASE 80 : IF DONG < 20 THEN , DONG = DONG + 1 ` Phm mi tn xung END SELECT ` ------------------------------------------- Xut hin d liu ----------------------------------d.byte = 0 FOR i = 9 TO 16 d.byte = d.byte + VAL (CHRS (SCREEN (I, 31 ) ) ) * 2 (i - 9) NEXT OUT datreg , d. byte + VAL (CHRS (SCREEN (i , 31 ) ) ) * 2 (i - 17) NEXT s.byte - s.byte XOR 11 ` Ch php o ! OUT contrreg , s.byte ` Xut rat th_ghi iu khin LOOP END Sau khi khi ng chng trnh, mn hnh s c trnh by nh trn hnh 1.3.

Chng trnh kim tra cng my in ia chi co ban cua may in (Hex) : 378 Duong dan loi ra vao Duong dan du _ lieu D0 = 1 Duong dan du _ lieu D1 = 1 1 Duong dan du _ lieu D2 = 1 0 Duong dan du _ lieu D3 = 1 Duong dan du _ lieu D4 = 1 Duong dan du _ lieu D5 = 1 Duong dan du _ lieu D6 = 1 Duong dan du _ lieu D7 = 1 STROBE 1 AUTO FEED 1 INIT 1 Dung dan loi ERROR = 1 SLCT = PE ACK BUSY = = 1 = 0

SLCTIN 1 Huong _ dan : Lua _ chon _ loi _ ra ESC : Ket thuc F1 : Dao _ loi _ ra Hnh 1.3 Trnh by trn mn hnh ca chng trnh LPTTEST. Bng phm mi tn ta c th la chn mt ng dn d liu hoc l mt bit iu khin v o ngc li bng phm F1. Ging nh cc bit c m t trn mn hnh, chng cng xut hin cng my in ca my tnh PC. iu c ngha l bng s xc nhn ca phm F1 mc hin ti ca tt c cc ng dn d liu v ng dn iu khin c a ra . ng thi, cc bit trng thi c hi li v ch ra trn mn hnh.

ng dng:

iu khin my in

Mt ng dng ca chng trnh LPTTEST l dng gi mt vn bn ra my in. Bnh thng th ci g c th nhn thy trong s vi v ca my tnh PC th y ta c th cho v trong bit mt. Bc D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 He x

1 Bt my tin 2 Chng trnh LPTTEST bt u 3 Xp st m ASCII ca T 4 Cc xung STROBE m 0 5 Xp st m ASCII ca e 6 Cc xung STROBE m 7 Xp st m ASCII ca s 8 Cc xung STEOBE m 9 Xp st m ASCII ca t 10 Cc xung STROBE m 11 Xp st FF 12 Cc xung STROBE m 13 Xp st FF 0 0 0 0

1 1 1 1 0

0 1 1 1 0

1 0 1 1 0

0 0 0 0 1

1 1 0 1 1

0 0 1 0 0

0 1 1 0 1

$5 4 $6 5 $7 3 $7 4 $0 D

14 Cc xung STROBE m

0 1 1 0

0 0 0 0

0 0 0 0

1 1 1 1

0 0 0 1

1 1 1 0

0 1 1 0

$0 A $4 B $4 B $0 C

15 Xp st m ASCII ca 0 16 Cc xung STROBE m 0 17 Xp st m ASCII ca K 18 Cc xung STROBE m 0 19 Xp st FF 20 Cc xung STROBE m 0

Th d ta cn phi in ra t Test v trn dng tip theo l ch OK. Tng bc din ra l trc ht ta xp st m ASCII ca cc ch ci gp cc ng dn d liu, sau bng mt xung m STROBE cc d liu c chuyn giao sang my in. T ta suy ra rng sau khi khi ng chng trnh bit iu khin STROBE qua vic o hai ln bng phm F1. Sau theo cch ny t Test s c gi i, tip theo l dy iu khin cho vic bt u mt dng mi. y l cc dy iu khin CARRIAGE RETURN (lui v u dng, vit tt l CR) v LINE FEED (xung dng vit tt l LF). Sau y ta c th gi i m ASCII ca OK. Nh l bc cui cng ch c mt FORM FEED (EF) c gi np mt trang. Do vy my in cho ra c trang. Bng thng k trn y mt ln na tm tt cc bc ring bit. 1.1.4. M un c s 8 bit vo/ra dng cho cng my in Trong mc trc ta thy trong s 17 ng dn li vo ch c 5 ng dc s dng nh l li vo. Tt nhin bng mt mch ph thm khng my tn km ta cng c th c vo nhiu hn l 5 bit. Trn hnh 1.4 ta ch ra s mch ca mt m un n gin m ta c th ni trc tip vi cng my in. Mun ny c th gi ra 8 bit cng nh c vo 8 bit qua cng my in.

Hnh 1.4 S ca Mdun c s dng cho cng my in . Cc ng dn d liu i ti b m 74HC245, vi mch ny tch ra cc d liu n ca my tnh PC t mdun ghp ni. c vo 8 bit d liu, vi mch 74HC257 c s dng, vi mch ny cha 4 b qut ng (dn knh, multiplexer) vi hai li vo v mt li ra. Nh vy mt chu trnh c vo c chia lm hai na. Chn ra SEL = 0 c tc dng lm cho cc bit d liu D0, D1, D2 v D3 n c my tnh PC, trong khi SEL = 1 cc bit cn li l D4, D5, D6 v D7 s c c vo. Bit iu khin INIT c tc dng chuyn mch i vi SEL. Ngun nui cho mdun ny ly in p +5V t vi mch n p 7805 m in p li vo ca n c th c ly t b pin 9V hoc b nn in t ngun in li 50Hz. Dng in tiu th ch c mA. Ngoi 8 li vo v li ra cn c 1 bit c th c vo qua ng dn trng thi v nh bit iu khin STROBE mt bit c th c c ra. Tt c cc ng dn d liu dn n mt u ni 32 chn dt c th ghp ni cc phn cng ring l vi mdun ny. Mt s phn cng khc nhau s c ln lt gii thiu sau ny lp rp mch ny ta cn c nhng linh kin sau: Linh kin bn dn: C2, C3, C4: 100nF IC1: 7805 it bn dn IC2: 74HC245 D1: 1N 4001 IC3: 74HC 257 Phch cm: T in: K1: dt 32 chn C1: 100F / 35 V K2: 25 chn

Vic trao i vi mdun c s c thc hin trong QBasic rt n gin. khi cn a cc d liu ra th ta dng lnh OUT register address, outbyte. a ch thanh ghi c th l a ch ca cc thanh ghi d liu hoc l ca cc thanh ghi iu khin. Bin outbyte cha ng mt con s trong h m mi nm trong khong 0 n 255. Th d : OUT & H378, 128 Lnh ny truy nhp ln thanh ghi d liu ca cng my in . cm 32 chn dt ca mdun c s s xut hin cc bit d liu sau: 0. D7 = 1, D6 = 0, D5 = 0, D4 = 0, D3 = 0, D2 = 0, D1 = 0, D0 =

Chu trnh c vo c hnh thnh mt cch phc tp hn v chng trnh di y s lm sng t hn nhn xt ny. `======================================= ==================== ` Unterprogram: Doc. 1 pt ` ` Function: Chng trnh ny c vo mt byte qua cng my in. Kt qu ng trong bin tnh theo byte. ` `Hardware: Mdun c s dng cho cng my in trnh by chng 1. ` ======================================== =================== ` -----------------------------------Set up cng my in --------------------------------------basard = &H378 `a ch c s ca cng datreg = basard `Th_ ghi trng thi statreg = basard + 1 `Th_ ghi trng thi contrreg = basard + 2 ` Th_ ghi iu khin ` ` ------------------------------------c d liu vo -----------------------------------------` CUT contrreg, INT (contrreg) AND (255 4) `init = 0 inbyte1 = INT (statreg) ` c vo t D0,D1,D2 v D3 OUT contrreg, INT (Contrreg) OR 4 `init = 1

` `-------------------- S sp xp ca bit d liu c vo ----------------------------------` ` inbyte1: Bit 4 thanh ghi trng thi (SLCT) l D0 Bit 5 Th_ ghi trng thi (PE) l D1 ` Bit 6 Th_ ghi trng thi (ACK) l D2 Bit 7 Th_ ghi trng thi (BUSY) l / D3 Inbyte2: Bit 4 thanh ghi trng thi (SLCT) l D4 Bit 5 Th_ ghi trng thi (PE) l D5 Bit 6 Th_ ghi trng thi (ACK) l D6 Bit 7 Th_ ghi trng thi (BUSY) l / D7 Inbyte = ( (inbyte XOR 128) AND &HFO) /16) + ( ( inbyte2 XOR 128) AND &HFO END SUB Vic s dng mt chng trnh con c u im l trong chng trnh chnh ch cn c mt lnh ring l c th c vo 8 bit d liu. Trong QBasic, vic gi ra c tin hnh bng lnh call lese. Lpt (inbyte). Sau bin inbyte s cha con s trong h m mi ca cc bit d liu c vo. Khi ch ti chng trnh con mt cch chi tit hn, ta s thy thc ra l hai byte s c c vo. Sau cc bit d liu c gi tr cn cn phi c phn loi v sp xp li. ng thi phi ch l lc ny iu kin nh INIT = 0 c thc hin. Lnh OUT contrreg INP (contrreg) AND (255 4) t INIT ln Low (thp) khng gy nh hng n cc bit khc trong thanh ghi iu khin. t c iu ny, trc ht ni dung hin thi ca thanh ghi iu khin c c vo sau c t bng mt lin kt AND (VA) vi (255 4) INIT thnh mc Low (thp).

inbyte2 = INP (statreg) ` c vo t D4, D5, D6 v D7

You might also like