You are on page 1of 138

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 1

u t cho Gio dc chnh l u t ln nht, vng chc nht cho tin pht
trin Kinh t_X hi trong tng lai gn ca mt quc gia vi vn u t thp nht.
Thc t nhiu nc trn th gii nh: Trung Quc, Nht Bn, chng minh
c iu y.
nc ta, tnh An Giang vi s u t cho Gio dc trong khong 10 nm tr
li y, ngn sch u t cho Gio dc chim t 20 n 30% tng thu nhp hng
nm. An Giang v ang c mt mt ngun nhn lc di do, vi tm kin thc
kh rng v gn nh bao gm tt c mi lnh vc khoa hc, to nn mng c bn
cho vic xy dng c s h tng kinh t x hi, v t pht trin hn na ngun
nhn lc tr thc ny tin hnh xy dng tng bc c s cao tng v sau (S
liu ly t ngun S Gio Dc Tnh An Giang nm 1998). Qua 10 nm u t cho
Gio dc, trc ht, An Giang c mt thnh ph, thnh ph Long Xuyn, thnh
lp vo thng t nm 1999. Tip theo l s pht trin t ca th x Chu c cng
vi hng lot cc trng lp, cc trng i Hc dn ra i. c bit, u nm
2000, An Giang s khnh thnh trng i hc Tnh An Giang (cui thng 12 nm
1999, trng i vo hot ng chnh thc), vi quy m khng thua trng i
hc Tnh Cn Th. Vic xy dng Trng i hc ny nhm xy dng ngun nhn
lc ti ch cho Tnh An Giang, l chin lc Gio dc v cng l chin lc kinh t
ca Tnh.
Cc cuc khng hong kinh t khu vc thng bt ngun t mt nc no ,
nh cuc khng hong kinh t khu vc ng Nam vo thng 07 nm 1997 bt
ngun t s mt cn bng nghim trng cn cn xut nhp khu Thi Lan, sau
nh hng nhanh sang cc nc trong khu vc nh Malaysia, Indonesia, Philipin,
; Nn khoa hc_k thut_cng ngh, vi s pht trin vt bc ca mnh, cc
nc M, Nht dn n mt Hng Kng vi mong mun xy dng mt cng
Silicon ging thung lng Silicon cng ngh cao ca M, v iu ny ang c
thc hin (Thng tin Thi s, mc Khoa hc K thut i truyn hnh Thnh Ph
H Ch Minh, knh HTV7, pht lc 19 gi ngy 06 thng 07 nm 1999).
Trong cng mt x hi th s bin i, pht trin ca mt nc s lm cho cc
nc cnh bn run mnh chuyn ng theo.
Cng nm trong chu trnh y, Vit Nam trc thm th k XXI, trong cng
cuc cng nghip ha hin i ha t nc, mun chuyn mnh tr thnh con
Rng Chu , cn phi c mt s u t ng n hn, nhm vo mc tiu lu di
ca t nc. p ng nhu cu X hi, ngnh Gio dc c nhim v o to ra
mt th h cng dn mi, ng thi bi dng cho th h cng dn ang tham gia
sn xut mt kin thc su, rng.
Hin nay, ngnh Gio dc v o to c nhng tin b khng ngng trong
cng tc v nhim v ca ngnh, nhng qu trnh o to no cng vy, nu khng
c s kim tra u ra th ton b qu trnh o to y xem nh khng hon thin.
Ngun kin thc su rng a n u t cho th h tr, nhng cng dn mi,
kh nhng vn kim tra u ra li cng kh hn. Nhiu hnh thc kim tra u
ra c p dng, t kim tra ming, kim tra vn p, kim tra vit, bi tp ln, lm
tiu lun, lm lun vn, Trong nhng hnh thc kim tra ni trn, kim tra trc
nghim, tuy ch mi xut hin, cn mi nc ta v ang cn trong giai on
nghin cu nhng v ang c ch n.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 2

Do tnh cht phc tp ca vic vn dng mt h thng kim tra trc nghim
cng nh y l mt h thng cn qu mi Vit Nam, cc cng c thc thi cha
c nn ngi nghin cu tin hnh tm hiu v thit k mt cng c kim tra trc
nghim. y l mt cng c lao ng, vn c t ra l cng c ny phi c
tnh kh thi, d s dng, c tnh c ng, c tnh kt hp, c tnh t ng v c tnh
thch nghi (kh nng sa i, nng cp).
Sau mt thi gian tm hiu, ngi nghin cu tin hnh thc hin ti
THIT K V THI CNG MY CHM IM TRC NGHIM GIAO
TIP MY VI TNH.
I.

T VN :
X hi cn mt ngun nhn lc mi vi s b sung y cc kin thc khoa
hc k thut to tin cho ngnh Gio dc v o to xy dng h thng gio
dc tin tin, o to ra th h tr vi tm kin thc su rng. Chnh s kim tra u
ra ca qu trnh o to ny khin cho hnh thc kim tra trc nghim ngy cng
ph bin rng ri v hin nay c p dng cho hu ht cc mn hc. Qua hnh thc
kim tra trc nghim lng kin thc kim tra c tri rng, khng co cm, khng
trng tm. Ngi lm bi phi m bo c tnh chnh xc, khng lm ln; tnh
cht mi nh ca mi la chn ca cu trc nghim chnh l th thch cho ngi
lm bi. Trc nghim l hnh thc c s dng rng ri trong cc k thi, c bit l
mn Ngoi vn.
Vi s lng bi thi ln, dng c th s (giy c l hoc phi quan st) ngi
chm khng trnh khi nhng nhm ln xy ra. Thi gian chm bi cng l mt vn
i vi ngi chm v l yu t khch quan nh hng n kt qu bi thi.
Vn dng nhng kin thc hc vo thc tin, to mt cng c gip gii
phng sc lao ng cho ngi chm, nhng ngi vt v trong lnh vc lao ng
tr c, chnh l mong mun v l nhn t gip ngi nghin cu mnh dn tin hnh
tm hiu v thc hin ti.
II. TM QUAN TRNG CA VN :
Trc nghim xut hin t rt lu trn th gii, n gia th k XIX trc
nghim c s dng rng ri trong lnh vc tm l hc ch mt bng chng,
mt chng tch. u thp nin 80 ca th k XX, trc nghim c nhiu nc trn
th gii chnh thc t nn mng nghin cu. Cho ti nay, c nhiu thnh tu
trong vic nghin cu cc hnh thc trc nghim, nh ti M, Nht, Anh c cc
b trc nghim hon chnh, c tnh khoa hc cao.
Tuy xut hin t rt lu nhng ti Vit Nam, kim tra trc nghim, ch mi
c nh hnh. Do cn qu mi nn cng c phc v cn nhiu thiu thn.
Mt cng c p ng cho nhu cu hin ti ca ngnh, phc v cho cng tc
chm bi chnh l tnh cp thit ca vn . My c tin cy cao, c th p dng
vo cc k thi quan trng.
III. YU CU CA TI:
Chm im bng cng c my mc, thit b t ng nn vn v tnh s
dng c t ra l: vi tnh t ng cao, m bo chnh xc, khng c yu t ch
quan tc ng lc chm, chm bi vi s lng ln, thi gian chm bi ngn. Ngnh

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 3

Gio dc vi ngun kinh ph cn nhiu hn ch nn vn v tnh kinh t cng


c t ra: chi ph sn xut thp, s dng ti a kh nng cung cp nguyn vt liu
trong nc, c kh nng sn xut ng lot, c th trng chp nhn.
L mt sn phm mang tnh khoa hc nn vn v tnh k thut phi c
t ln hng u, my phi m bo: lm vic n nh, chnh xc, tui th s dng
cao, d lp rp sa chav bo tr. Th hiu ca ngi tiu dng cng l vn
khng nh nn tnh m thut ca sn phm cn phi m bo: gn nh, logic cu
hnh.
Ngoi ra, do khng th ngng li ch l mt sn phm, my cn l mt cng
trnh nghin cu nn kh nng k tha vn phi c, my phi c tnh d tm hiu.
Ngoi tnh tha mn nhu cu tc thi, my cn phi c tnh tng thch v d dng
nng cp c th p ng cho nhu cu mi trong tng lai.
IV. GII HN TI:
Do s hn hp v kin thc, kinh nghim, thi gian v kinh ph nghin cu,
cng nh phng tin nghin cu, o lng nn ti dng li mc s khi.
Tnh chnh xc v tnh c ng cha cao, my ch thc hin c cc chc nng:
nhn p n mu, chm bi, xem im, truy xut, lu tr, xa, chn, phc kho,
xem li bi chm, kt hp d liu, m truy xut, c bit khng cho kh nng sa
bi hay sa m bi chm.
V. MC CH NGHIN CU:
ti khng ngng li mc nghin cu khoa hc m phi tm hiu su
hn bin kin thc c hc trong nh trng thnh cng trnh khoa hc kh thi.
Gip ngi ngi nghin cu nng ng trong khoa hc, sng to trong tnh hung
khoa hc, vn dng kin thc v kh nng sng to thnh mt th thng nht gii
quyt vn trong thc t. l mc ch chnh ca ti.
Trc mt, tm hiu nhu cu x hi, t vn , tm hng gii quyt, chn
phng php thc hin, hc hi kinh nghim, thc hin gii quyt vn . Trong
tng lai, thc hin chuyn vi kinh nghim c, t ra nhu cu mi v gii
quyt.
VI. KHO ST TI LIU LIN H:
1. Chu Kim Lang- Phng Php Nghin Cu Khoa Hc- Trng i Hc
S Phm K Thut Thnh Ph H Ch Minh- 1984: Tham kho ti liu ny
gip cho ngi nghin cu xc nh c hng i ca ti, trnh hin
tng i lng vng, tp trung vo nhng im chnh t pht trin v
hon chnh dn ti. Ngoi ra, cch trnh by v thc hin mt ti
cng c trnh by trong cun sch ny.
2. Hng Minh Nht- Thit K V Lp Rp My Tnh CPU Z80- Nh Xut
Bn Gio Dc-1994: tham kho cch hot ng ca mt h thng hon
chnh, nm bt cch vn hnh mt h vi x l t lin h tm hiu qua
cc vn hnh ca h vi x l t 80286 n 80486.
3. Trn Vn Trng- K Thut Vi X L- Trng i Hc S Phm K Thut
Thnh Ph H Ch Minh- 1995: s pht trin v nguyn l vn hnh ca
cc h thng vi x l.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 4

4. Trn Ngc Sn (bin son)-Tra cu TRANSISTOR NHT BN- Nh


xut bn Khoa Hc v K Thut-H Ni 1991: tra cu thng s k thut v
s chn ca BJT.
5. Tra cu VI Mch S CMOS- Nh xut bn Khoa Hc v K Thut-H Ni
1993: tra cu thng s k thut v s chn ca vi mch s CMOS.
6. Data book Digital IC (Tra cu IC s)- 1992: tra cu thng s k thut v
s chn ca vi mch s TTL.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

VII.

Trang 5

XC NH THUT NG:
CPU
: Central Processing Unit, n v x l trung tm. Mch lu gi, x
l v iu khin bn trong my tnh, bao gm n v s hclogic
(ALU), n v iu khin v b nh s cp trong dng ROM hoc
RAM. Ch c n v ALU v n v iu khin c cha trn vn
trong chp gi l chp x l.
ROM : Read Only Memory, b nh ch c. Mt phn ca b nh s cp
ca my tnh, thng c dng lu tr cc a ch lnh h thng.
Khng b mt ni dung khi b mt in.
RAM : Random Access Memory, b nh truy cp ngu nhin. B nh s
cp ca my tnh. Trong , byte lnh v byte d liu c lu tr
sau cho n v x l trung tm c th truy cp trc tip vo chng
thng qua bus cao tc. Thng tin trong RAM b mt i khi b mt
in.
BOARD : Circuit board, bng mch. Tm Plastic phng, trn c gn sn
linh kin in t.
CARD : Card, ba, bng. Mt board mch in t c thit k nhm thc
hin mt chc nng no v c th cm vo mt khe slot ca bus
m rng trong my vi tnh.
BUS
: Bus, ng truyn. L tp hp cc ng dn c cng chc nng v
nhim v.
SLOT : Expansion Slot, khe cm m rng. L ng d liu m rng ca
my tnh, c thit k cm va cc card giao tip.
PORT : Port, cng, cng. L cng giao tip, l mi ni gia cc ng
truyn vi nhau.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 6

m bo tnh khoa hc, tnh h thng, tnh tng minh v tnh hiu qu
ti c thc hin qua cc giai on sau:
Tm hiu ti.
Son cng.
Thu thp d liu.
X l d kin.
Thit k mch.
Thi cng.
Cn chnh.
Thu hoch.
Vit ti.
I. TM HIU TI:
ti c gio vin hng dn gi , ngi thc hin tin hnh tm hiu.
Nhn thy tnh khoa hc, tnh cp thit, tnh gi tr cng vi s say m v pht sinh
tng, ti c chn vi ni dung: thit k v thi cng my chm im trc
nghim giao tip my vi tnh c nhn (Personal Computer, vit tt l PC). Ngi
thc hin ng k ti vi khoa in in t vi s ng ca gio vin hng
dn.
II. SON CNG:
Giai on son cng nhm t c cc mc ch: xc nh nhim v,
phn tch cng trnh lin h, phn tch ti liu lin h, lp k hoch nghin cu.
1. Xc nh nhim v nghin cu:
Trn c s tm hiu s b ti, nhim v c t ra nh sau:
Tm hiu s b v giao tip ngoi vi v cng giao tip.
Tm hiu b cm bin quang.
Thit k h thng qut nh.
Thit k phn cng v phn c kh.
Xy dng phn mm iu khin v x l thng tin.
2. Phn tch cng trnh lin h:
n tt nghip ca anh Trn Ngc Vn v anh L Nguyn Duy c, sinh
vin kha 92, nin kha 1992-1997, khoa in, b mn in Kh Ha v Cung Cp
in vi tn: THIT K MY CHM IM TRC NGHIM gip cho ngi
nghin cu rt nhiu kinh nghim v c th ly lm ti nguyn nghin cu nh
h thng cm quang, thit b giao tip ngoi vi PPI 8255A, nhng nhn chung, ti
cn nhiu thiu st v hn ch nh: khng c tnh t ng cao, chm mi ln ch
mt bi, tnh n nh cha cao, tc chm, khng tng minh trong thit k,
my l mt h c lp, khng tnh c ng, kh lin kt, khng giao tip, kh ci
tin.
Mc d nghin cu thit k mt h thng trn nguyn l vn hnh hon ton
khc cng trnh nghin cu trc nhng nhng yu t thu c trong cc cng trnh
ny l ngun ti nguyn gip cho ngi nghin cu ci tin v khc phc nhng
iu cha hon chnh trn chnh cng trnh ca mnh.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 7

3. Lp k hoch nghin cu:


cng nghin cu chnh l b khung m bo cho cng vic nghin cu
c tin hnh theo mt trnh t thng nht v logic. Vic thit lp cng v
cng chi tit c th trnh c hin tng khng logic kin thc, bi lm khng
mch lc, khng h thng, ng thi, gip t cn i ti nguyn nghin cu.
Sau l dn ca ti:

CNG NGHIN CU
PHN A: GII THIU
LI NI U
MC LC
PHN B: NI DUNG
CHNG DN NHP
CHNG C S L LUN
CHNG I
: KHO ST CNG GIAO TIP
CHNG II : GII THIU CC B PHN CM BIN
CHNG III
: CC MCH H TR
CHNG IV
: THIT K V THI CNG PHN CNG
CHNG V
: XY DNG PHN MM
CHNG KT LUN
PHN C: PH LC V PH NH
Vic thit k li c thc hin da trn cu hnh ca cng chi tit:

CNG CHI TIT


PHN A: GII THIU
LI NI U
S lc ni dung nghin cu, tm tt thnh qu t c.
MC LC
Cu trc ton b ti.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 8

PHN B: NI DUNG
CHNG DN NHP
Gii thiu s lc hon cnh lch s v hon cnh ra i ca
tng thit k.
CHNG C S L LUN
Nhng c s lm nn tng cho cng vic nghin cu v thit
k.
CHNG I
: KHO ST CNG GIAO TIP
Gii thiu chung v cng giao tip, giao tip ngoi vi ca my
vi tnh, cng my in. Kho st vi mch PPI 8255A.
CHNG II
: GII THIU CC B PHN CM BIN
Gii thiu chung Cm bin quang: Khi nim, linh kin quang
in t, linh kin cm bin quang in, linh kin cm bin quang
cng nghip.
CHNG III
: CC MCH H TR
Cc mch bo v, mch khuch i s dng trong ti.
CHNG IV
: THIT K V THI CNG PHN CNG
Thit k v thi cng: mch giao tip a nng, mch qut v
mch m, mch cng sut phn c, mch trung tm.
CHNG V
: XY DNG PHN MM
Gii thiu tng qut v lp trnh, phn mm lp trnh
PASCAL. Xy dng s khi ca cc th tc chnh, vit hon
chnh th tc c v vit (nhn v truyn d liu). Gii thiu cch
s mm iu khin.
CHNG KT LUN
Tng kt li vn v hng pht trin trong tng lai.
PHN C: PH LC V PH NH
Ti liu lin h, cc bng-biu thu hoch trong qu trnh nghin
cu.
III. THU THP D KIN:
Tham kho ti liu, kho st cc mch thc t, kt hp gia l thuyt vi mch
to ra mch thch hp cho ni dung nghin cu. Ch trng tm nghin cu.
Ghi chp li thng tin quan trng, s mch, s nguyn l.
Trong qu trnh thu thp d kin, nu c gp vn kh hiu, tin hnh tham
kho kin ca gio vin hng dn.
IV. X L D KIN:
H thng li thng tin cp nhp c, phn loi theo tm quan trng ca thng
tin cng nh mi lin h gia cc thng tin, cht lc thng tin.
V. THIT K-THI CNG-CN CHNH-THU HOCH:
Sau khi c s l lun ta tin hnh thit k cc mch da trn cc thng tin
v kin thc c c, chy h thng bng s nguyn l, test trn board, nh s
kim tra ca gio vin hng dn trc khi v mch in. Sa cha nu c. Thi cng

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 9

v v hn linh kin vo mch in, th li, cn chnh h s. Nghim thu. Lm tip


phn khc. Th kt ni. Tng nghim thu.
VI. VIT N:
Vit s b cc chng trn c s dn chi tit. Xin kin ca gio vin
hng dn khi hon thnh s lc. Sa cha. Vit li chnh thc.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 10

T nhng ngy u ca vic thit k mt sn phm, cng c lao ng hay sn


phm tiu dng, con ngi lun tm mi cch nng cao kh nng s dng ca
sn phm. Cng vic ny bt ngun t vic ci tin dn cng dng ca sn phm,
to thm cc chc nng ph, ri n cc chc nng ph tri chuyn tip, ch mt s
lin kt hay chuyn mch l bt u hot ng thay th hay thm vo mt chc
nng no .
S a nng ca mt sn phm ng dng l yu t i hi hng u ca ngi
tiu dng.
Nu nh sn xut, nh ch to khng pht huy ht kh nng s dng ca sn
phm th ngi tiu dng s t ci tin cng dng ca sn phm y. V d nh chic
my n Koler vi cng dng chnh l chy my tu xung nhng qua ngi dn c
th tr thnh my qut la, ng c truyn lc, ng c my sut la, ng c xe
ci tin, my bm nc, Gi tr s dng ca mt sn phm tng l nim vui ca
ngi thit k v bn cnh y, mt sn phm c nhiu gi tr s dng, gi tr s
dng tng nhiu trong khi gi thnh khng tng l bao, d c ngi tiu dng
chp nhn hn.
Mi sn phm cn phi c tnh a nng. Tnh a nng gip sn phm c tnh
t thch nghi v do chu k sng ca sn phm ko di hn, iu ny c li cho
nh sn xut v gip nng cao gi tr x hi ca sn phm.
I. GII THIU CHUNG V CNG GIAO TIP:
Trong lnh vc in t, chnh nhu cu ca ngi tiu dng v mong mun ca
nh thit k, cc mch in khng ngng c ci tin nng cao kh nng s
dng ca mt h mch. C th thc hin cng vic ny bng nhiu cch khc nhau
nh tng tm hot ng, thm chc nng, chc nng n (ch hot ng khi c nhu
cu).
S pht trin khng ngng ca ngnh in-in t, thng tin khin cho nhng
sn phm lm ra khng th ngng li , yu cu mi c t ra l tnh tng
thch. My ny c th giao tip, trao i, bt tay vi my khc, cng loi hay khc
loi, mt chiu hay nhiu chiu, ng b hay bt ng b, vi mt my hay nhiu
my. Cc cng giao tip ra i.
Port l t i din cho cc cng giao tip, cc cng truyn d liu hu tuyn
tng t hay s, hai (02) dy n n dy dn. Vi xu hng y, cng giao tip khng
cn l ni truyn v nhn thng tin gia hai (02) my, gia hai (02) hay nhiu h
thng, m cn l s kt ni gia mt b phn vi mt h thng hay h thng ny
vi mt h thng khc to nn s thng nht, lin hon, b sung cho nhau.
khai thc thm nhng tnh nng cha c ca mt h thng ngi ta thng
thng qua cng giao tip v dng cng ny ly thng tin ca h thng trung tm
truyn qua cho h thng b sung v t y thng tin c x l ln hai t c
yu cu mong mun.
My vi tnh ra i c th c xem l ct mc pht trin ca khoa hc k
thut, nh du mt k nguyn mi, k nguyn ca cng ngh thng tin. Thi k
u, minh ha cho tnh a nng v kh nng tng thch ca mnh, my AT thc
hin c kh nhiu chc nng; my AT l bc cao hn ca chic my tnh b ti
v ni n cn cha nhng tnh nng ca chic my Tivi trng en, vi hng lot cc

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

Trang 11

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

slot AT v cc card mn hnh, card I/O, card IDE cm trn cc slot ny to cho n
c thm nhiu kh nng v lu tr, hin th, iu khin.
My XT, 286, 386 ra i cng da trn nhng tnh nng y nhng c nng
ln mt bc cao hn v kh nng x l, chc nng s dng, tc thc hin.
Mt h thng c lp khng cn chim v tr hng u.
S ra i ca slot PCI l s hon chnh li ca slot ISA v tc thc hin, l
s k tha c nng cao kh nng ng dng ca cc slot tin nhim nh AT, XT v
l tin cho cc cng giao tip cao tc v sau. Vi cc my i sau, t my 486
DX2, cc card I/O, card IDE c b sung vo mch ch (mainboard) ri dn dn
n cc i my 586 mch m thanh (sound card) v mch mn hnh (VGA card)
cng c thit k ngay trn mch ch (on board) di dng tch hp trong nhng
IC vi x l.

S BIN I M THANH T DNG S SANG DNG TNG T


THNG QUA CARD GIAO TIP CA MY VI TNH
Program
Sound

CPU

Slot
ISA/PCI

Card
Sound

Jack
Phone
Speaker

Tn hiu
tng minh

Tn hiu
nh phn

Sinh vin: Nguyn Phc Hu

Tn hiu
s

Tn hiu
m tn

Gio vin hng dn: Thy QUCH THANH HI

Trang 12

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

S BIN I TN HIU HNH T DNG S SANG DNG TNG T


THNG QUA CARD GIAO TIP CA MY VI TNH
Program
Graph

CPU

Slot
ISA/PCI

Card
VGA

Jack
VGA
Monitor

Tn hiu
tng minh

Tn hiu
nh phn

Tn hiu
s

Tn hiu
hnh

Tnh a dng ca hnh thc truyn d liu i hi cn phi c mt s cng


truyn ring, mang tnh c th; cng ni tip, cng song song c ng dng
iu khin (giao tip) vi cc thit b chut (mouse), bn phm (key board), my in
(printer) hoc giao tip I/O.
My vi tnh thc hin cng vic giao tip ny ra sao v di hnh thc no?
chnh l cu hi c t ra.
II. TM HIU CHUNG V CNG MY IN:
Thng tin truyn trong my vi tnh di dng nh phn, c th hin qua hai
ch s 0 v1. Tt c mi ngn ng, lp trnh v iu khin, u c chuyn v
ngn ng my di dng s nh phn. Ngi ta gi vic truyn d liu ny l truyn
d liu di dng s (digital), vic truyn ny khc hn vi vic truyn d liu di
dng tng t (analog) nh tn hiu m thanh, hnh nh.
Truyn d liu kiu digital, c bn (04) dng truyn:
Truyn song song ng b.
Truyn song song bt ng b.
Truyn ni tip ng b.
Truyn ni tip bt ng b.
Thc hin giao tip qua cng my in l hnh thc truyn d liu di dng
song song bt ng b. Vic truyn s liu theo dng song song bt ng b ny
cho php truyn 08 bit cng mt ln truyn, tc truyn ty thuc vo hm truyn.
Khuyt im chnh ca hnh thc truyn ny l khong cch truyn ngn, mun
truyn xa phi c b phn m d liu.
V l hnh thc truyn bt ng b nn khng i hi phi ng b t ni pht
n ni thu, tc l xung clock (ck) ni pht v ni thu khng nht thit phi ng
b vi nhau. u im ca hnh thc truyn bt ng b l vy, tuy nhin bn cnh
y vn tn ti nhng kh khn khc, l tn hiu bt tay gia ni truyn v ni
thu. Cng my in gii quyt vn nh cc tn hiu: /STROBE, /ACK, /BUSY.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 13

S TRUYN CA BUS TRUYN CNG MY IN

DATA BUS

COMPUTER

PRINTER

S chn ca cng my in c m t nh sau:


S CHN CA CNG MY IN

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 14

Bng 01: Chc nng ca cc chn cng my in


Ch
n
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

Vo/ra

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

Li ra
Li ra
Li ra
Li ra
Li ra
Li ra
Li ra
Li ra
Li ra
Li vo
Li vo
Li vo
Li vo
Li ra
Li vo
Li ra
Li ra

ngha
D liu c gi ra
ng d liu, bit th 01
ng d liu, bit th 02
ng d liu, bit th 03
ng d liu, bit th 04
ng d liu, bit th 05
ng d liu, bit th 06
ng d liu, bit th 07
ng d liu, bit th 08
Xc nhn
My in bn
Ht giy
La chn
T np
Li
t li my in
Chn kiu in
Ni t
Ni t
Ni t
Ni t
Ni t
Ni t
Ni t
Ni t

Mc tc ng
Thp
Ba trng thi
Ba trng thi
Ba trng thi
Ba trng thi
Ba trng thi
Ba trng thi
Ba trng thi
Ba trng thi
Thp
Cao
Cao
Cao
Cao
Cao
Thp
Cao

Cng my in l mt ni gm c 25 chn, trong c 12 chn ra, 05 chn


vo v 08 chn ni mass. C th:

Chn 0209 : loi chn ra, ng dn d liu, l


dng ng dn mt chiu, ch ra.

Chn 01,1017 : cc chn tn hiu bt tay gia my


vi tnh v my in.

Chn 1825 : cc chn mass.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 15

Cc bc thc hin qu trnh truyn d liu ca my vi tnh sang my in nh


sau:
CPU ch cho n khi ng tn hiu BUSY xung thp, tn hiu ny
bo cho bit my in sn sng nhn d liu.
CPU xut m ca k t k tip ra cng my in.
CPU a bit STROBE xung thp bo hiu cho my in bit d liu
mi c a n cng my in.
My in nhn d liu, nhn d liu xong, tr bit BUSY v mc cao.
My in tr bit ACK v mc cao.
CPU tr bit STROBE v mc cao.
My in tr ACK xung thp.
My in thc hin cng vic in.
Thc hin in xong, my in cho BUSY xung thp cho CPU bit
ang sn sng nhn k t khc.
C th biu din cc bc thc hin ca dng giao tip song song bt ng b
qua cng my in nh sau:
GIN THI GIAN

c im thun li ln nht hnh thc truyn ny l tt c cc tn hiu u


nm cp in p t 0V n 5V, c ngha l n tng thch vi hu ht cc IC s,
loi TTL hay CMOS. Chnh s tng thch ny gip cho vic giao tip tr nn n
gin v d dng hn.
Tuy nhin, y cc ng tn hiu d liu l dng tn hiu mt chiu nn
trong vic giao tip vi cc hnh thc trao i tn hiu hai (02) chiu hay tn hiu
ln hn phm vi mt byte th cng my in khng thch hp. To ra mt cng vo ra
c phm vi trao i ln hn v a dng hn cng my in l nhim v t ra cho
ngi nghin cu.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 16

III. KHO ST VI MCH PPI 8255A:


C rt nhiu IC dng IO m nhim cng vic giao tip trao i thng tin gia
cc h thng nh 82C37A, 82C42, 82C79, 82C55A, vi phm vi s dng v kh
nng lp trnh trng thi vo ra. IC PPI 82C55A c chn v tha c yu cu
thit k mch giao tip a nng. Tin hnh kho st vi mch thun tin cho vic
s dng, c th kho st: cu trc phn cng, cu trc thanh ghi iu khin.
1. Cu trc phn cng PPI 82C55A:
PPI 82C55A l IC ngoi vi c ch to theo cng ngh LSI dng
giao tip song song gia cc h thng vi mch hay gia Microprocessor v
thit b iu khin (bn trong hay bn ngoi), c 40 chn, dng DIL.
S CHN V S LOGIC PPI 82C55A

Tn cc chn PPI 82C55A:


RESET
: Reset input, chn vo, xc lp li trng thi ban u.
CS\
: Chip Select, chn vo, chn trng thi hot ng.
RD\
: Read input, chn vo, xc lp trng thi c.
WR\
: Write input, chn vo, xc lp trng thi ghi.
A0, A1
: Port Address, chn vo, xc lp a ch.
D0D7
: D liu Bus (Bi Direction), ba (03) trng thi.
PA7 PA0 : Port A, ba trng thi, cng giao tip A.
PB7 PB0 : Port B, ba trng thi, cng giao tip B.
PC7 PC0 : Port C, ba trng thi, cng giao tip C.
PPI 82C55A giao tip vi cc vi mch khc thng qua 3 Bus: Bus d
liu 8 bit D0D7, Bus a ch A1A2, Bus iu khin RD\, WR\, CS\, Reset.
PPI 82C55A c 03 Port xut nhp (I/O) c tn l Port A, Port B, Port,
mi Port 8 bit. Vi 03 port d liu v mt thanh ghi iu khin PPI 82C55A
c th c ng dng vo nhiu cng dng khc, IC qut m bn phm l mt
trong nhng ng dng y. Port A gm cc ng PA0PA7, Port B gm cc
Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 17

ng PB0PB7 , Port C gm cc ng PC0PC7. Cc Port ny c th l cc


Port Input hay Output ty thuc vo lnh iu khin cha trong thanh ghi
lnh. M lnh, thng tin trng thi v d liu u c truyn trn 8 ng d
liu D0D7, cng vic ca PPI 82C55A ty thuc vo lnh iu khin cha
trong thanh ghi iu khin. Cc ng tn hiu RD\, WR\ ca PPI 82C55A
c kt ni vi cc ng tn hiu c ghi ca h thng vi mch (hay
Microprocessor).
Tn hiu Reset dng khi khi ng hay khi ng li PPI 82C55A,
khi b Reset cc thanh ghi bn trong ca PPI 82C55A u b xa v trng thi
mc nh v PPI 82C55A trng thi ch lnh, sn sng lm vic. Nh vy,
iu trc tin khi s dng vi mch ny, nu chng ta khng mun s dng
cc gi tr mc nh, l phi nhp lnh vo thanh ghi iu khin mi khi reset
li vi mch. Khi giao tip vi Microprocessor ng vo tn hiu Reset ny c
kt ni vi tn hiu Reset Out ca vi x l. Chn Reset tc ng mc cao.
Tn hiu Chip Select (CS) dng iu khin hot ng ca PPI
82C55A. Tn hiu ny c th lm cho vi mch hot ng bnh thng hay
trng thi ch. Trong vic kt hp Microprocessor vi nhiu IC to thnh mt
h thng hon chnh, chn CS gip vi x l chn ng IC cn hot ng. Chn
CS tc ng mc thp.
Cc ng a ch A1A0 ca PPI 82C55A dng la chn cc Port v
thanh ghi. A1A0 = 00Bin dng chn Port A, A1A0 = 01Bin dng la chn
Port B, A1A0 = 10Bin dng chn Port C, A1A0 = 11Bin dng chn thanh
ghi iu khin.
Cc Port I/O ca PPI 82C55A chia ra lm 2 nhm: Nhm A gm Port A
v 4 bit cao ca Port C, nhm B gm Port B v 4 bit thp ca Port C. s
dng cc Port ca PPI 82C55A ngi lp trnh phi gi t iu khin vo
thanh ghi iu khin nh cu hnh cho cc Port ng theo yu cu m
ngi lp trnh mong mun.
Khi mun thc hin chc nng bt tay vi cc h thng khc, PPI
82C55A dng cc bit PC7, PC6 v PC3 ca port C thc hin chc nng
giao tip. Bit PC7 tr thnh bit OBFA (Output Buffer Full, tc ng mc thp),
khi c d liu Microprocessor gi ra Port A, tn hiu OBFA s yu cu thit b
bn ngoi nhn d liu. Bit PC6 tr thnh bit ACKA (AcknowLedge Input, tc
ng mc thp), thit b nhn d liu dng tn hiu ny bo cho PPI
82C55A bit tn hiu c nhn v sn sng nhn d liu tip theo. Bit
PC3 tr thnh INTRA (Interrupt Request, tc ng mc cao), bit ny c mc
logic 1 khi 2 bit OBFA = 1, ACKA = 1 v bit INTEA (Interrupt Enable) bn
trong PPI 82C55A bng 1. Tn hiu INTRA tc ng n ng vo ngt ca h
thng trung tm bo thit b bn ngoi nhn d liu Port A.
Cc bit cn li ca Port C: PC4, PC5 l cc bit xut hay nhp bnh thng
ty thuc vo bit D3 trong t iu khin.
CU TRC T IU KHIN
D7

D6

D5

D4

Sinh vin: Nguyn Phc Hu

D3

D2

D1

D0

GROUP B
PORT C (LOWER)
1 = INPUT
0 = OUTPUT
PORT B
Gio vin hng dn: Thy 1QUCH
= INPUTTHANH HI
0 = OUTPUT
MODE SELECTION

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 18

thun tin cho vic qun l vic xut nhp v cng l tng thm
tnh linh hot cng vic giao tip, vi mch PPI 82C55A phn chia ra hai cu
hnh lm vic khc nhau l lm vic theo nhm A v nhm B. Tuy nhin,
cng c th khng ch n vic phn chia ny trong giao tip trao i thng
thng, khng cn nhiu tn hiu giao tip.
2. Cu trc thanh ghi iu khin phn mm ca PPI 82C55A:
Do cc Port ra ca PPI 82C55A c chia ra lm 2 nhm A v nhm B
tch ri nn t iu khin ca PPI 82C55A cng c chia lm 2 nhm.
a. Cc bit D2D1D0 dng cu hnh cho nhm B
Bit D0 dng thit lp 4 bit thp ca Port C, D0 = 0 Port C thp
l Port xut d liu (Output), D0 = 1 Port C thp l Port nhp d liu
(Input).
Bit D1 dng thit lp Port B, D1 = 0 Port B l Port xut d liu
(Output), D1 = 1 Port B l Port nhp d liu (Input).
Bit D2 dng thit lp Mode iu khin ca nhm B:
+ D2 = 0: Nhm B hot ng Mode 0.
+ D2 = 1: Nhm B hot ng Mode 1
b. Cc bit D6D5D4D3 dng cu hnh cho nhm A
Bit D3 dng thit lp 4 bit cao ca Port C, D3 = 0 Port C l
Port xut d liu (Output), D3 = 1 Port C l Port nhp d liu (Input).
Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

Trang 19

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Bit D4 dng thit lp Port A, D4 = 0 Port A xut d liu


(Output), D4=1 Port A l Port nhp d liu (Input).
Bit D6D5 dng thit lp Mode iu khin ca nhm A:
+ D6D5 = 00: Nhm A hot ng Mode 0.
+ D6D5 = 01: Nhm A hot ng Mode 1.
+ D6D5 = 1x: Nhm A hot ng Mode 2
c. Cc nhm A v B c cu hnh Mode 0
T iu khin khi 2 nhm A v B lm vic Mode 0:
1

Mode 0 cc Port A, Port B, Port C thp v Port C cao l cc Port


xut hoc nhp d liu c lp. Do c 4 bit la chn nn c 16 t iu
khin khc nhau cho 16 trng thi xut hay nhp ca 4 Port.
d. Cc nhm A v B c cu hnh Mode 1
T iu khin khi 2 nhm A v B lm vic Mode 1:
1

Mode 1 cc Port A, Port B lm vic xut nhp c cht (Strobed


I/O). Mode ny 2 Port A v Port B hot ng c lp vi nhau v mi
Port c 1 Port 4 bit iu khin hay d liu. Cc Port 4 bit iu khin hay
d liu c hnh thnh t 4 bit thp v 4 bit cao ca Port C.
Khi PPI 82C55A c cu hnh Mode 1, thit b giao tip PPI
82C55A nhn d liu, thit b phi to ra mt tn hiu yu cu PPI
82C55A nhn d liu, ngc li PPI 82C55A mun gi tn hiu n 1
thit b khc, PPI 82C55A phi to ra 1 tn hiu cho thit b nhn bit
d liu c xut ra, tn hiu yu cu gi l tn hiu Stobe.
e. Nhm A lm vic cu hnh Mode 1
Cu hnh Port A c l Port nhp d liu:
Cc ng tn hiu ca Port C mt phn tr thnh cc ng tn
hiu iu khin, tn hiu cht v mt phn l ng d liu ca Port A.
M lnh t iu khin:
1

S LM VIC CA NHM A
CHC NNG NHP D LIU

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 20

Bit PC4 tr thnh bit STBA (Strobe Input, tc ng mc thp nht),


c dng cht d liu ng vo PA7PA0 vo mch cht bn trong.
Bit PC5 tr thnh bit IBFA (Input Buffer Full, tc ng mc cao),
dng bo cho thit b bn ngoi bit d liu c cht vo bn
trong.
Bit PC3 tr thnh bit INTRA (interrupt Request, tc ng mc cao),
bit ny c mc logic 1 khi STBA, IBFA v INTEA (Interrupt Enable)
bn trong PPI 82C55A bng 1. Bit INTEA c thit lp mc logic 1 hay
0 di s iu khin ca phn mm dng cu trc bit Set/Reset ca PPI
82C55A. Bit INTEA dng cho php tn hiu IBFA xut hin ti ng ra.
Tn hiu INTRA tc ng n ng vo ngt ca h thng trung tm d
liu mi xut hin Port A. Chng trnh phc v ngt c d liu
vo v xa yu cu.
Cc bit cn li ca Port C: PC6, PC7 l cc bit xut hay nhp bnh
thng v ty thuc vo bit D3 trong t iu khin.
Cu hnh Port A c l Port xut d liu:
Tng t cu hnh nhp d liu, cu hnh xut d liu ch khc t
iu khin:
1

S LM VIC CA NHM A
CHC NNG XUT D LIU

Qu trnh thc hin chc nng, vi mch lm vic theo s diu


khin trc tip ca t iu khin. Bit D0 dng Set/Reset bit INTEA,
khi D0=1 th INTEA=1 (cho php ngt), khi D0 = 0 th INTE = 0 (khng
cho php ngt). Ba bit D1D3 dng chn 1 bit ca Port C, gn mc
logic ca bit D0 cho bit ca Port chn.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

Trang 21

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

D7

D6

D5

D4

D3

D2

D1

D0
BIT SET/RESET
1 = SET
0 = RESET

Khng quan tm
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
1
2
3
4
5
6
7

V nguyn l, ba (03) bit D4D6 l khng cn quan tm n, cc bit


ny dng iu khin cho nhm B. Nhng trong thc t, trnh tranh
chp gia hai nhm lm vic ny, Port A v Port B thng c cu
hnh vi mode khc nhau. (V d nhm A hot ng Mode 2, nhm B
lm vic Mode 0.)
f. Nhm A ca PPI 82C55A lm vic Mode 2.
S CA NHM A LM VIC MODE 2

Mode 2 l kiu hot ng Strobed Bi directional 10, s khc bit


vi Mode 1 l Port c hai chc nng xut v nhp d liu. Cc ng tn
hiu ca Port C tr thnh cc ng tn hiu iu khin hay d liu ca
Port A. Port lm vic ch nhp hay xut l ty thuc vo bit D4 ca
t iu khin.
T iu khin khi nhm A hot ng Mode 2:
1
Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

Trang 22

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trong cu hnh ny bit PC7 tr thnh tn hiu OBFA, PC6 tr thnh


tn hiu ACKA, PC5 thnh tn hiu IBFA, PC4 thnh tn hiu STBA, v bit
PC3 tr thnh tn hiu INTRA. Khi OBFA=1, INTEA1=1 hoc IBFA=1,
INTEA2 =1.
Cc bit PC0PC2 cn li c th l cc bit I/O ty thuc vo cc bit
iu khin ca nhm B. Ch khi nhm A lm vic Mode2, nhm B
ch c php hot ng Mode 0.
Cu hnh ny cn cho php Set / Reset tng bit ca Port C. T iu
khin ny khc vi t iu khin cu hnh Mode 1 l bit D7 = 0.
g. Nhm B lm vic cu hnh mode 1:
Trong cu hnh ny, Port B c kh nng tr thnh cng nhp hay
xut d liu, cng vic ny ty thuc vo bit iu khin D1. Cc ng
ca Port C tr thnh cc ng tn hiu iu khin hay ng d liu
ca Port B.
T iu khin ca mode ny l:
1

S LM VIC CA NHM B
CHC NNG NHP D LIU

Bit PC2 bin thnh tn hiu STBB (tc dng mc thp), bit PC1
thnh bit IBFB (tc dng mc cao) v bit PC0 tr thnh tn hiu INTRB
(tc dng mc cao). Chc nng ca cc bit iu khin ging nh nhm A
hot ng Mode 1.
S LM VIC CA NHM A
CHC NNG XUT D LIU

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 23

Khi lm vic mode 0, c hai nhm hp li lm ba (03) cng xut


nhp ring bit v cng vic ca cc Port ny ty thuc vo thanh ghi
lnh iu khin.
3. ng dng ca vi mch trong thc t v hnh thc giao tip ca PPI
82C55A c s dng trong thit k:
IC giao tip IO PPI 82C55A c ng dng trong nhiu h thng iu
khin vi mch; dng chung Microprocessor, vi mch PPI 82C55A ng vai tr
l IC giao tip gia Microprocessor v i tng iu khin, ngoi ra 82C55A
cn c kh nng m rng tn hiu iu khin (bng hai nhm trng thi A v
B).
Cc ng dng ca vi mch PPI 82C55A l tryn d liu, gii m hin th,
gii m bn phm, giao tip iu khin ty theo yu cu.
Nh bit, PPI 82C55A l mt vi mch vi ba (03) cng giao tip v
mt thanh ghi iu khin nn khi s dng ch cn hai (02) ng a ch. Do
, c th giao tip kiu IO hay kiu b nh. V chc nng ca PPI 82C55A
khng c g thay i trong hai kiu giao tip ny, ch thay i v a ch truy
xut. Kiu IO, a ch ca Port hay thanh ghi c di 8 bit, kiu b nh, a
ch ca Port hay thanh ghi s c di 16 bit ging nh b nh nn gi l kiu
b nh. Khi thit k giao tip theo kiu b nh th mi Port hay mi thanh ghi
iu khin ca PPI 82C55A c xem l nh. Khi Microprocessor giao
tip vi vi mch ging nh b nh v 2 lnh IN v OUT khng cn tc dng.
Kiu b nh ch c s dng trong cc h thng nh, n gin.
Do tnh cht l mt h thng tuy a nng nhng s dng nhng kin thc
c bn nn mch giao tip c thit k theo kiu n gin nht. Mch thit
k theo kiu giao tip b nh.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 24

Trc ht, cm bin l b phn thu nhn cc tn hiu khng in nh nh sng,


nhit , m, sng m thanh, in t, v bin chng thnh cc i lng c
th cn, o, m c (ni chung, l cc i lng kh tng minh). Vy cm bin
quang in chnh l b phn bin i nh sng thnh i lng in.
Khi nim v cm bin quang in l vy, cn nguyn l hot ng ca chng
l da vo nh lut bo ton nng lng v nh lut bo ton vt cht, vt cht
khng mt i m ch bin i t dng ny sang dng khc. y, nng lng cng
khng mt i m ch bin i t dng ny sang dng khc. i vi cm bin quang
in, nng lng nh sng (quang nng) di dng cc ht Photon c linh kin
cm bin quang in hp th v chuyn i thnh cc chuyn ng c hng ca
cc Electron t do bn trong vt liu lm nn linh kin. Ty thuc vo cng thu
nhn cc Photon m s chuyn di ca cc Electron l mnh hay yu, iu ny cng
c ngha l dng pht (hay p) sinh u tn hiu ra l cao hay thp.
Trn l nguyn l hot ng chung, da vo tnh cht ring ca tng nguyn
l m ngi ta phn linh kin cm bin quang thnh cc loi sau:
Cm bin in tr.
Cm bin Diod.
Cm bin BJT.
Cm bin Opto-coupler.

Trong tm nghin cu ca ti, linh kin cm bin quang da trn cc bc x
chnh l nh hng chnh cho vic tm hiu v nghin cu.
Trong nhiu lnh vc khoa hc k thut, con ngi v ang s dng cc
bc x thuc nhng di khc nhau ca ph in t, ph bin nht l:
Bc x thuc ph tn quang hc bao gm: nh sng thy c, tia hng
ngoi v tia t ngoi.
Tia X, tia Y, ht cng nh ht .
I. CU TO V NGUYN L LM VIC CA MT S LINH KIN
QUANG IN T:
1. Quang in tr:
a. Cu to:
Quang tr c hnh dng bn ngoi khng ging nh nhng in tr
thng thng, chng c mt lp v ngoi bng cht do, s hay kim loi
nhng c im ni bt l c mt ca s bng thy tinh nh sng i
xuyn qua. Quang in tr dng trong cng nghip c ch to t Sulfit
ch mc ch th nhit ng v tnh trng nung nng nhit tng
i thp (t 200 n 400oC).
c tuyn ph nhit ca quang in tr c th hin nh hnh sau:

Hnh 01: c tuyn


ph ca Sulfitbitmuyt
v Sulfitcatmi

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 25

Theo ng c tuyn ca Sulfitbitmuyt, Sulfit ch c tc dng


mnh trong khu vc bc x hng ngoi ( = 1,8 2,5 m).
Hnh 02: S cu
to quang tr

b. Nguyn l hot ng:


Khi cha c chiu sng, dng in qua quang tr v qua mch nh
(hay ln l ty loi), gi l dng in ti. Khi c chiu sng, in tr ni
ca quang tr gim (hay tng l ty loi) ng k lm cho dng qua tng theo.
Gi tr ca in tr ty thuc vo cng nh sng chiu vo qua ca s
thy tinh. Hin tng ny ty thuc vo loi cht lm nn quang tr c s
dng, tp cht v chiu di bc sng.
c. ng dng:
Quang in tr c ng dng rng trong nhiu lnh vc cm bin
nh sng khc nhau ty thuc vonguyn l hot ng ca chng. C th
l cc lnh vc sau:
Phn t pht hin.
o nh sng trong quang ph.
Cm bin trong h t ng ha.
Bo v, chuyn mch, bo ng,
2. Diod quang:
a. Cu to:
Diod quang thng c cu to t cht bn dn ph bin nh
Gecmani hay Silic. Chng cng nh cc diod khc nhng c trng ca
chng chnh l lun c mt ca s nh sng lt vo tc ng ln lp
tip gip PN. Diod quang c th c s dng vi hai mc ch hon
ton khc nhau, pin mt tri v diod cm bin quang.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 26

b. Nguyn l hot ng:


* Pin mt tri:
Khi c chiu sng, din tch trn mi ni PN c tng cng lm cho sc
in ng trn hai u mi ni c hnh thnh. Dng in s xut hin khi mch
ngoi v diod to thnh mt vng khp kn.
Gi tr ca in p xut hin ty thuc vo cht bn dn lm
nn diod.
* Diod cm bin quang:
Diod c phn cc nghch i vi ngun cung cp. Khi
khng c chiu sng, diod phn cc nghch lm cho mch ging
nh b h, ch c lng dng r nh tri qua. Khi c chiu sng,
mi ni PN nh c ni tt, dng c th qua diod.
c. ng dng:
Diod quang c dng trong cc lnh vc sau:
o nh sng.
Cm bin quang o tc .
iu khin t ng trong cc thit b chuyn v quang hc.
Cm bin trong h t ng ha.
Bo v, chuyn mch, bo ng,
3. Transistor quang:
a. Cu to:
BJT quang cng ging cc linh kin quang in khc, u c ca s thy
tinh cho nh sng xuyn qua. BJT quang h mi ni BC, ba lp bn dn
to nn hai lp tip gip. Mt trong nhng lp ngoi c kch thc nh
quang khng th chiu vo gia lp nn. Lp nn phi mng a
lng quang hp th c th tc ng n lp tip gip k bn.

Hnh 03: S cu to
BJT quang

b. Nguyn l hot ng:


BJT quang khng lm vic theo kiu t kch, khi c s tc dng ca nh
sng mi ni to ra dng in tc ng n Transistor quang, dng in ny
ging nh dng kch vo cc B ca cc BJT thng. nhy ca BJT quang
ty thuc vo mi ni BC v li ca mch.
c. ng dng:
BJT quang vi in p phn cc t 3 n 5V (ngun p thng dng trong
nhiu lnh vc thit k), nhy tn hiu ln nn c s dng kh rng ri v
c th thay th c nhiu linh kin cm bin quang in.
Transistor quang c ng dng rng ri trong vic ng ngt mch,
iu khin t ng, tn hiu khut, mch m,
4. B ghp quang Opto coupler:

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 27

a. Cu to:
Hnh 04: S cu to b
ghp quang Opto-coupler

Phn t pht quang l Diod pht quang (LED, Light Emitter Diod) cn
phn t cm bin quang l linh kin cm bin quang, thng s dng nht l
BJT quang.
b. Nguyn l hot ng:
Khi c tn hiu phn cc thun cho Led, diod pht quang ny s pht
sng v kch thch vo mi ni BC ca BJT quang (phn t cm bin quang)
lm cho BTJ lm vic trng thi dn (thng l dn bo ha).
c. ng dng:
Vi u im l tn s p ng nhanh, tn hao t ngi ta thng s dng
b ghp quang Opto-coupler vo cc phm vi ng ngt mch iu khin.
II. CC LOI CM BIN QUANG TRONG CNG NGHIP:
Vi mi trng lm vic trong ha cht, nhit cao, cc linh kin cm bin
quang phi m bo t cc yu cu sau:
C bn c kh cao, gim c chn ng, vn tc qut cao, chng
run c hc,
C nhy cm cao, gim ti thiu c nh hng ca mi trng
lm vic,
Thch hp vi nhu cu v p ng c nhu cu s dng.
Cc hng sn xut thit b t ng a ra th trng cc loi cm bin t
c cc yu cu ni trn. ti ng dng cm bin quang (Photo Electric Sensors)
nn ch tp trung tm hiu v loi cm bin ny.
V ng dng ngi ta c th chia cm bin quang ra lm hai loi:
Loi chm tia xuyn.
Loi tn x.
Tin hnh phn tch hai th loi trn tm ra gii php cho ti.
1. Loi chm tia xuyn:
a. Nguyn tc hot ng:
B thu v b pht cng nm trn cng mt ng thng. Dng k
thut pht hin do che khut hay vt th lm cho nh sng c bc sng
chn khng th xuyn thu.
K thut ny thng c s dng trong cc b phn m v kim tra sn
phm.
Hnh 05: S nguyn l
hot ng ca b thu pht
loi chm tia xuyn

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 28

b. Cc thng s ng ch :
Hnh dng
: hnh tr hay khi ch nht.
Tm cm nhn : ti a khong 20 mt.
u vo
: 24 u dy.
u ra
: R le (Relay).
Tn s chuyn : 1,5200Hz.
c. Nhn xt:
Vi nguyn l hot ng nh trn, c th ng dng thit k u c
cho ti. Nhn chung, d l kh thi nhng mch rt kh thc hin, v l do:
Linh kin rt t.
Thc hin xuyn qua mt lp giy, nu nh c l th khng
kh thi cn nh t xuyn vt cht (giy) th ng n dy
mng v trng en ca giy (phm cht giy).
Rt kh ci tin u c v u d cm bin quang trong
trng hp ny ch thch ng vi s chuyn ng tnh tin
(trong kh nng l mt sinh vin, kinh ph thc hin khng cao,
khng th thc hin) hoc c nh.
tinh tia qut, theo kh nng cho php thc hin, khng cao.
Kt lun sau cng l: phng php ny khng phi l ti u hon ton
i vi ngi nghin cu.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 29

2. Loi phn hi:


a. Nguyn tc hot ng:
Mi vt cht u c tnh cht hp th (vt en) hay phn x (gng)
nng lng t ngoi tc ng vo. Ty theo mc phn x ca vt th khi
nhn mt chm tia ti chiu n m chm tia phn x c th l mnh hay yu.
Cm bin quang da theo nguyn tc phn hi chnh l da trn nguyn tc
phn x ca chm tia phn x.
Hnh 06: S nguyn
l hot ng ca b thu
pht loi phan hi

b. Cc thng s tiu chun:


Hnh dng
: hnh tr hay khi ch nht.
Tm cm nhn : 1,570mm.
u vo
: 2 u dy, 12VDC hay 24VDC.
u ra
: 1 u dy tn hiu.
Tn s chuyn : 1,5200Hz.
Theo ti liu ca hng PEPPERL+FUCHS v cng phn x
tia hng ngoi trn cc gam mu v vt cht ta c bng sau:
V
Phn x
T nguyn bn
t
ch
t
Trng tiu chun
90%
Testcard standard white
Xm tiu chun
18%
Testcard standard grey
Giy trng
80%
White paper
Ch in trn bo
55%
News print
G thng sch
75%
Clean pine wood
Nt bn
35%
Cork
Tm bng g sch
20%
Wooden pallets clean
Bt bia
70%
Beer foam
Chai nha trong
40%
Clear plastic bottes
Chai nha nu trong
60%
Transparent brown plastic bottles
Nha trng c
87%
Opaque white plastic
Nha en
14%
Black plastic
en tuyn
04%
Black neoprene
Gy xon en
02%
Black foam carpet backing
Lp xe hi
1.5%
Automobile tyres
Nhm nguyn cht
140%
Aluminium, untreated
Thp bng lng
400%
Polished stainless steel
c.Nhn xt:
Vi nguyn l hot ng nh trn, rt tt ng dng thit k u c
cho ti. Nhn chung, d l kh thi nhng mch rt kh thc hin, v l do:
Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 30

Linh kin rt t.
Thc hin phn hi trn mt lp giy c rt nhiu tia tn x gy
nh hng n vng ln cn nu nh s dng nhiu u qut st
lin nhau.
tinh tia qut, theo kh nng cho php thc hin, khng cao.
Kt lun sau cng l: phng php ny khng phi l ti u hon ton
i vi ngi nghin cu nhng mang tnh kh thi hn nu thc hin cng
vic ci tin cng nh tm vt tng ng thay th.
d. Gii php:
* Mch pht hng ngoi:
Diod pht hng ngoi c bc sng = 950nm (dy pht =
900 1020 nm), thi gian tr l 0,5s, dng tiu th 20 30mA.
Khi s dng dng thm mt in tr hn dng t 180 330.
* Mch thu hng ngoi:
Mch thu hng ngoi c mt Diod thu loi Silic, DIN (Diod
Infraronge), nhy = 900 950 nm thch hp vi mch pht
hng ngoi. S dng trc tip b thu hng ngoi nhn tn hiu ca
b iu khin xa ca Television SONY, gi th trng khong
10.000 VN. B thu hng ngoi ny hot ng n nh mc p
+5VDC, c ba chn (mt chn VCC, mt chn Mass v mt chn tn
hiu).
* Nguyn l hot ng:
Khi h thng lm vic, u c lun trng thi c. u
qut nhn tn hiu c t mch trung tm (ni Mass), n hng
ngoi chiu sng, pht ra tn hiu hng ngoi. Ty theo b mt ca
t giy l sng hay ti m phn x tia hng ngoi mch hay yu.
in p ng tn hiu ca u c ty thuc vo cng chiu
ca tia hng ngoi, in p ny s qua b khuch i thut ton
(Opamp) chuyn i mc tn hiu 0 hay 1. Tn hiu ny s c
truyn v slot giao tip ch CPU c vo.
* Bc ci tin so vi ti trc:
u qut c khng ch qua mt l cc nh lm tng
tinh cho tia qut.
u qut v u c c thit k c th chuyn ng tnh
tin trn cng mt cn qut do mt ng c bc loi nh
iu khin, ly trong a mm1,2 MB.
Cn qut, mang u c v u qut c th trt tnh tin
trn thanh trt dc theo chiu ngang ca giy qut. Cn
qut do mt ng c bc loi ln iu khin, ly trong
my in kim-ng c ko u kim.
Li im ca nhng ci tin ny l:
tinh tia qut cao hn v u c_qut c th chuyn
ng tnh tin: thch hp cho x l nh mc sc nt hn,
rng hn theo ng yu cu.
Cn qut di ng c: c th c c mi phng thc
b tr v tr nh du trc nghim.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 31

Dng t u c_qut hn.


Khuyt im ca nhng ci tin ny l:
Tn hao cng sut cao hn.
Ting n do ng c sinh ra (rt nh).
Kt lun:
Ngi thc hin ti quyt nh p dng gii php v
nhng ci tin ny thc hin ti chnh v tnh linh hot,
tnh kinh t cng tin cy sau khi thc nghim.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 32

Do mi linh kin c thit k bi mt nhu cu nht nh no , trong mt hay


mt s h thng. Ngoi cc cc IC chuyn dng l nh sn xut thit k theo mt
chun mc ring nn tnh n nh ca chng kh cao, ring cc IC s l c thit
k cho nhu cu rng ri ca nhiu nh thit k nn khi p dng cho vic thit k mt
mch c tnh nng ring bit i khi xut hin hin tng hot ng bt n. gip
cho h thng hot ng n nh mch cn c mt s mch h tr cho hot ng ca
mch. Chnh v nhu cu y m trong mch thit k cn s dng mt s mch c tc
dng h tr nh sau:
Mch Autoreset.
Mch m v cng sut phn c.
Mch khuch i tn hiu.
I. MCH AUTORESET:
y ch l mt phn nh trong h thng c chc nng to mt xung tc ng
vo chn Clear ca 74LS192 (Clr, chn s 14). Chn clear ca 74LS192 chu tc
ng mc cao. C ngha l khi ta a tn hiu [1] vo chn mang tn Clear s lm
cho 74LS192 quay tr li trng thi ban u, tc ng ny c gi l Reset b
m. Do chng trnh iu khin h thng lun l 0H, chnh thao tc Reset s xc
lp trng thi ban u ca cc IC 74LS192 l 0H.
Nh vy chn Clear thng trng thi thp. Ch khi no cn Reset li
74LS192 tm thi chn Clear c a ln trng thi cao.
Trong thit k ch cn Reset li trng thi ban u khi c ngun cung cp v i
khi cn nn Reset khi h thng b s c iu khin nn mch cn cn c phn Reset
bng tay. Mch ny ch c ng dng cho phn Autoreset ca mch iu khin
ng c bc.
1. Mch Reset n gin:
* Khi cng tc m th chn Reset ni vi Vcc trng thi cao.
* Khi ng cng tc th chn Reset xung thp tnh nng reset c tc
ng.

Hnh 08: s nguyn l


cho mch Reset n gin

* Khuyt im ca mch :trng thi ban u ca mch chnh l gi tr


ca ngun cung cp khi cung cp tn hiu Reset s mang gi tr [1] v vy ta
khng th xc lp li mt trng thi Reset xc lp n nh trong mt khong
thi gian no .
Do , ta cn phi gi cho tn hiu Reset mang gi tr [0] th tc ng
Reset mi tc ng c.
2. Mch AutoReset cho h thng:

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 33

khc phc cho nhc im ca mch trn ta a ra s nguyn l


AutoReset cho h thng nh sau :

Hnh 09: S nguyn


l mch Autoreset

Nh vy mch AutoReset h thng chng ta s dng thm mt t in


nhm ko di thi gian mc cao ca trng thi Reset. Khong thi gian ny
ph thuc vo gi tr t C_RS v in tr R_RS da trn phng trnh np t.
Mch AutoReset ny hot ng nh sau:
Khi ta ng cng tc ngun (ngun p cung cp, Vcc, c gi tr l 05
VDC, tng thch vi cc mc p s dng trong mch iu khin), in np
vo t C nn trong mt khong thi gian no chn mang tn hiu Reset s
mang gi tr in p cao (in p ny chnh l in p vi phn ly trn in tr
R_RS) tng ng vi trng thi hot ng [1]. Tn hiu ny qua cng OR (IC
74LS32) lm chun mc tn hiu v tc ng n cc chn Clear ca cc
IC 74LS192 xc lp trng thi ban u cho chng. Sau thi gian qu v
np y ca t p trn t t ln in p 5v, in p vi phn trn R_RS tng
ng mc 0V, a chn Clear v trng thi khng tc ng, mch hot ng
bnh thng. Trong thc t, mc p trn R_RS khng tr v mc khng m
n ch cn chuyn v mc p cng OR nhn bit v chuyn sang trng
thi mc [0].
Chn R_RS = 10k, C_RS = 10F, thi hng np (thc hin
Autoreset) l = R_RS.C_RS.
Phm SW_RS dng Reset khi c nhu cu. Khi tc ng, SW_RS ni
ngun Vcc vi u trn in tr R_RS. Ap trn R_RS t mc [1], tn hiu
Reset c xc lp.
III. MCH M V MCH CNG SUT PHN C:

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 34

Mch m v mch cng sut phn c c p dng trong mch iu khin


ng c bc. Mch c thit k ban u l mch khuch i kiu CC v CE ni
tip lin tng thc hin chc nng m dng, nng p v tng cng dng cung
cp cho ng c bc.
S thit k mch cng sut c thc hin nh sau:

Hnh 10: S nguyn l mch m


v khuch i cng sut iu khin
mt pha ng c bc

Trong cun dy L1 chnh l tng trng cho mt pha ca ng c bc v


cng l ti chnh cho mch thit k. Diod D1 c nhim v chng dng qua mi
ni BE ca SQ_DC1, trnh hin tng nh thng mi ni ny khi mt pha trn L1.
Diod D2 c nhim v ging nh Diod D1. D2 c vai tr l gii phng nng lng
trn L1 khi mt pha trn L1.
RBB v RB l hai in tr phn cc cho SQ_DC1 (gi l Q1) v Q_DC1 (gi l
Q2). Vic tnh ton cc in tr ny c tin hnh nh sau:
Trong thc nghim cho ta h s khuch i ca Q_DC1 Q1 (D468, tra cu
sch c hfe= 85240, Icmax= 1A) l hfe= 120; h s khuch i ca SQ_DC1
(C828, tra cu sch c hfe= 130520, Icmax= 50mA) l hfe= 253.
Cng sut nh mc ca mt pha l 05VA in th s dng l 12VDC.
Trong , mch s dng in th cung cp l 11,3VDC (12-0,7VDC- in
p ghim p trn diode ngun). Vy dng cn cung cp cho mt pha l
0,44A 0,5A
RB chnh l in tr phn cc cho cc B ca BJT Q_DC1.
IB2 =
RB2 =

I CQ 2
h fe 2

0,5 A
= 0,003687 3,7mA
120

5V 2 * 0,7 0,2
= 976,32
I B2

Chn RB2 = 1K
Vy

IB2 =

5V 2 * 0,7 0,2
= 0,0036A = 3,6mA
RB 2

ICQ2 = IB2hfe = 0,0036 x 120 = 0,432A (t yu cu).


Cng sut RB c tnh nh sau:
PR R B xI B2 2 = 1000x(0,0036)2 = 0,0129 W
B

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 35

Chn RC = 1K; 0,125W


RBB l in tr phn cc cho cc B ca Q1.
VCE1
= 0,2V.
VR = 5-2*0,7- 0,2 = 3,4V
ICQ1 = IB2= 3,7 mA
C

IB1 =

I CQ1
h fe1

3,7 mA
= 0,0148mA (Tha cho cng ra ca CMOS)
250

Chn RB = 10 K; 0,125W.
IV. MCH XC LP MC TN HIU QUT:
Tn hiu nhn c t u c gi vo c bin kh nh nn kh c th phn
bit gia hai mc Logic 0 v 1. Yu cu t ra l ch cn khuch i p, mc
khuch i t 35 ln. p ng ra l p DC nn dng p ny iu khin trc tip
trng thi ngt dn ca BJT to tn hiu xc lp mc [0] hay [1]. Do , trong mch
tn hiu c thit k thm hai mch khuch i tn hiu ng ra trc khi gi tn hiu
ny v mch trung tm (Driver Card), dng BJT, xc lp hai ngun tn hiu ny.
Da trn nguyn l hat ng ca mch mc kiu CE, hot ng ch ng
ngt, mch thc t c thit k nh sau:

Hnh 11: S nguyn l mch


khuch i tn hiu dng BJT D468

Trong R1 l in tr cch ngun, chn gi tr 10K.


gim hin tng nhiu tn hiu nn mc thm in tr RB gia cc B v
GND.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 36

I. MCH GIAO TIP:


Mch giao tip c xy dng da trn nguyn l giao tip song song qua cng
my in. Mch s dng vi mch giao tip PPI 82A55 lm c s chnh. S dng cc
vi mch s khng ch qu trnh giao tip v qua nh v chnh xc cc Port
quy nh thc hin vic trao i thng tin. D liu cng nh thng tin c trao i
gia mch (th mch; card) ngoi v CPU ca my tnh c nhn (PC: Person
Computer) gin tip tin hnh thng qua vi mch PPI 82A55.
PPI 82A55 l mt vi mch chuyn dng cho vic giao tip v trao i d liu.
Vi thanh ghi iu khin, PPI 82A55 thc hin rt nhiu chc nng khc nhau v
ty vo mong mun ca ngi s dng. u im ca vi mch chnh l nh vo cc
thanh ghi m (shift register), cc thanh ghi ny cht li d liu xut ra.
ti ch yu cu mc n gin, l trao i d liu. nng cao tnh
a nng ca vi mch 82A55, mch giao tip c thit k mc n gin nhng
tin dng. n gin ch ch s dng t IC s km theo khng ch tm hot
ng ca vi mch, mch ch s dng bn (04) IC v bn (04) t lc ngoi ra khng
s dng thm bt c linh kin th ng no khc. Tin dng ch, ty theo yu cu
giao tip m ngi s dng c th cho vi mch thc hin cng vic giao tip theo
mun, bng cch lp trnh trc tip trn thanh ghi iu khin ca PPI 82A55. Vi ba
cp chuyn mch (jumper) c th s dng ti 32 cng giao tip. Ngoi ra mch cn
thit k thm phn ngun cung cp cho b phn ngoi vi cc mc p 5VDC,
12VDC, GND.
S khi ca mch giao tip:
S KHI MCH GIAO TIP

Tin hnh tm hiu cu trc, s khi v tp lnh ca vi mch PPI 82A55


cng nh s chn v chc nng cc chn ca Slot XT, kt hp vi nhu cu ca
ti, mch Giao tip c thit k nh sau:

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 37

S MCH MCH GIAO TIP

Trong :
LINH KIN
Linh kin
C1,C2,C3
J1,J2,J3
SV2
IC1
IC2
IC3
U1
Bus
VCC, GND
IO Data
Address
Data
Cotrol Data Slot

Gi tr
100nF

Chc nng
Lc ngun cho cc IC 1,2,3
Chn a ch c nh cho mch giao tip
Cng ra; Port ABC, Supply
7404,7414
IC cng NOT
7430
IC cng NAND 8 ng vo
7432
IC cng OR
82C55A
IC PPI, giao tip
BUS
Gi tr
ngha
5V
Ngun cung cp, ly t Slot XT ca PC
Ng ra ca PPI 82A55
PA0PC7
Cc ng a ch ca Slot XT
A0A9
Cc ng d liu ca PC truyn qua Slot XT
D0D7
RD\,WR\, Cc tn hiu iu khin ly t Slt XT

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Cotrol

Trang 38

RD\,WR\, Cc tn hiu iu khin PPI sau khi x l

Mch c thit k trn phn mm EAGLE. Sau khi kim tra s b cc ng


ni, tin hnh v mch in th bng chc nng Auto ca EAGLE, qu trnh v mch
in th chnh l bc tnh ton sp xp linh kin trn board sau cho hp l v
chim t khng gian trn mch in nht.
Chn c nhng v tr thch hp cho mi linh kin trn board mch, ghi li
file backup phng s c s sa cha v sau (cng vic ny thng c thc
hin trong sut qu trnh thit k ca mi mch), tin hnh v mch in. Sau khi thc
hin chc nng Auto, kim tra ng ni gia board v schematic, ni tt, chnh li
cc ng dy ni cho hp l hn.
Trong thc t, khi v bng th cng (v bng cc chc nng) qua kinh nghim
ca hai ln v bng chc nng t ng, mch gn hn, p hn v t l xuyn mch
hn.
Ghi ch cc yu t quan trng ln mch. Lm mch in. Kim tra trn mch in
cc l xuyn mch, cc ng mch gn nhau. Mch tt, th li tng linh kin ri,
hn chn, hn linh kin, lp IC. Kim tra li mch ln cui trc khi lp vo Slot
XT trn PC. Vit chng trnh iu khin th mch.
Phn tch mch:
Vi mch cng o (7404) kt hp vi vi mch cng o v (7430) to
nn s khng ch a ch iu khin bng cch khng ch chn Chip Select
ca PPI 8255A. a ch hot ng ca PPI l 11000XXXXXB = 1100000000B
+ XXXXXB = 300H + (00H 1FH).
B ba jumper (J1, J2, J3) t trc cc ng a ch A0, A1, A2, A3, A4
to nn s la chn (22) x (23) = 4 x 8 = 32D = 1FH ng a ch b nh.
Cc chn iu khin c, ghi t Slot XT c ni vi chn RD\, WR\
ca PPI 8255A thng qua cc cng OR, cc cng ny c cng dng lm tr
pha ca tn hiu iu khin.
Chn Reset ca PPI c ni trc tip vi chn B2 ca Slot XT (chn
Reset). Cc chn A0 v A1 ca vi mch 8255A ln lt c ni trc tip vi
chn A31 v A30 ca khe giao tip m rng XT (chn SA0 v SA1).
Ngun cung cp cho card ly trc tip t my tnh thng qua cc chn
B1, B10, B31 (GND) v B3, B29 (VCC; + 5VDC) ca Slot XT.
Slot SV2 l cc cng ra Port A, Port B, Port C v Supply ca PPI. Trong
ti ny, do phm vi s dng kh rng, c ba cng A, B v C u c s
dng nn khng tch cc Port ra lm tng Slot truyn d liu ra ngoi.
* Nhng kinh nghim rt ra c sau khi thc hin mch Giao tip:
Vic thit k phi gn lin vi tnh linh hot trong vic s dng ti
nguyn hin c.
Vic thit k phi da trn nhu cu.
Thit k khng ch da trn ti nguyn, kin thc, sch v m phi
da trn s p ng ca th trng linh kin in t.
Cn phi ch trn mi lnh vc lin quan n mch.
* Kt qu t c:

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 39

Mch chy tt.


C th lp trnh iu khin mch.
ng vi mc ch v yu cu t ra.
Mch gn, khng cn phi cn chnh, hn ni thm.
* S mch in xin vui lng xem ph lc A.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 40

II. MCH GII M TN HIU IU KHIN: (c xem l mch trung tm)


Mch gii m tn hiu iu khin thc ra ch l mch m d liu gia mch
ngoi v mch giao tip bn trong my tnh ng thi gii m cc tn hiu iu
khin c truyn n. Mch c thit k theo s khi sau:
S KHI MCH GII M TN HIU IU KHIN

Mch ly tn hiu trc tip t card giao tip a ra, sau cn p ra mc logich
0 hay 1 (0V hay 5V) nh vo cc in tr mng (array). Gii m tn hiu iu khin
t Port A, thng qua cc IC 74LS00, 74LS192 v 4555 ly c tn hiu iu
khin ng c bc truyn qua cc jumper truyn qua mch cng sut. Truyn
tn hiu ca port C sang mch qut, cc tn hiu cn li c x l v truyn i.
Mch s dng mt IC 74164 ( cht d liu u ra, tn hiu ny card giao tip s
c vo x l, thng qua port B).
Di y l s mch mch Gii m iu khin ng c bc, c thit k
sau khi th nghim i vi tng mch l (mch n, th nghim kim chng trn
tng IC).

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 41

S MCH TRUNG TM

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 42

Trong :
LINH KIN
Linh kin
RN14
C111
SV1
SV3
74LS32
74LS00
74LS192
4555
J16

Gi tr
1K
100nF

Chc nng
in tr mng ko ln, cho cc tn hiu PortABC.
Lc ngun.
Cng vo, Port ABC, tn hiu t mch giao tip.
Cng vo ra, trao i tn hiu vi cn qut.
Gii m Autoreset.
Gii m tn hiu iu khin v vng lp.
To vng lp.
Gii m tn hiu nh phn sang tn hiu thp phn.
Truyn tn hiu iu khin n mch cng sut.

Phn tch mch:


Tn hiu t card giao tip sau khi truyn qua SV1 c cc in tr mng
RN1, RN2, RN3 v RN4 lm chun mc logic 0 hay 1 (tn hiu truyn song
song ch truyn vi khong cch ngn, vi on ng truyn di tn hiu s
b suy gim).

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 43

Chn PC5 chn lm chn Reset xc lp li trng thi khi im ca IC


74164, chn PC4 l tn hiu nhp d liu. Tn hiu vo chn AB c ly trc
tip t mch qut gi v. Tn hiu ny ng thi truyn qua cng OR lm
chun mc logic v truyn tn hiu ny qua Port C v PC. Tn hiu c cht
IC 74164 s thng qua RN1 n ch PortB ch CPU c vo.

Tn hiu ERR1, ERR2 (li 1, li 2) ln lt qua cc chn 1, 2 ca SV3


n cng OR (IC2D) v ch CPU c vo. Tn hiu TH_Page, l tn hiu theo
di xem c giy hay khng, lt qua chn 3 ca SV3 v ch CPU c vo.
Mch iu khin ng c bc lm vic trn c s ca mch qut tun
t. Mch dng vi mch m 74LS192 (vi thit k ban u dng vi mch
4022B) v vi mch gii m nh phn sang m thp phn, 4555B. S kt hp
ca hai vi mch ny to ra mch qut tun t bn (04) bc, c th chuyn
trng thi t qut thun sang qut nghch hay ngc li. Thc hin chc nng
ny l nh vo vi mch 74LS192 c l loi m thun nghch (up/down
counter). Vi mch ny kt hp vi mt cng NAND to thnh mt b m
vng ln xung (bn bc).

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 44

Xung Ck v tn hiu iu khin up/down nhn t Port A qua iu khin

bng cng NAND (74LS00) to ra xung Ck_up hay Ck_down tc ng vo


chn Ck tng ng ca 74LS192 (chn s 04: Ck_up; chn s 05: Ck_down).
Trng hp m ln: khi QC ln mc [1] (chuyn tip t gi tr 0011B ln
0100B) s to nn xung qua cng OR (cng dng chung vi chc nng
Autoreset) to mc logic [0] tc ng vo Clr (chn s 14), vng m tr v
gi tr 00B, vng lp c th tip tc. Trng hp m xung: khi QD ln mc
[1] (chuyn tip t gi tr 0000B ln 1111B) s to nn xung qua cng NAND
to mc logic [0] tc ng vo LD (chn s 11, load), gi tr t trc s c
a ra (AB=[1] v CD=[0]0011B) vng m tr v gi tr 11B,vng lp c
th tip tc. Gi tr ca QA, QB c chuyn n tn hiu vo (A,B tng
ng) tng ng ca IC 4555B, IC ny s chuyn gi tr nh phn ny ra gi tr
thp phn truyn n mch cng sut iu khin ng c bc.
ti s dng tt c l nm (05) ng c. m bo tnh chnh xc
trong tnh cht c hc, ng c bc (step motor) c s dng thay cho ng

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 45

c DC trong cc phn chnh yu. Trong qu trnh th nghim ng c bc,


cc ch s thu c lit k trong bng sau:
BNG THNG S K THUT CC NG C BC
S DNG TRONG THIT K
Type

Vmax
Pmax
Phase
Deg
Ghi ch
(V)
(W)
/Step
231M-C351-03
10
5
04
1,8
ng c ko b d
457M-C961-23
10
5
04
1,8
ng c cun giy
14769070-60
10
1
04
1,8
ng c ko cn d
DC 12V
12
2
01
ng c ly giy
DC 12V
12
2
01
ng c ko ph giy
Trong mch ngoi nhng mch gii m ni trn cn phi nhc n vai tr
khng nh ca mch Autoreset v b phn lc ngun.
Mch Auto Reset c tht k da trn nguyn l qu trnh np x t, c
th l ly p trn in tr vi phn lm tn hiu Reset. Khi c in t s t
ng np y v trong thi gian qu ny ca t in, p trn in tr tch
phn, R_RS, mang gi tr cao v gim dn theo thi gian nghch lu vi gi tr
p trn t. Gi tr p trn R_RS qua cng m OR (cng A-74LS32) lm
chun mc logic ([0] hay [1]) sau truyn tn hiu ny n chn th nht ca
cng OR th B, C, D (chn th hai tng ng ca cc cng ny c lin kt
vi cc chn QC ca 74LS192) v truyn n chn Clr ca 74LS192 (mc
logic [1]) lm cho IC ny t ng Reset thit lp li trng thi ban u.
Mch lc ngun n gin ch l cc t lc t trc cc chn ngun ca
IC s lc ht cc tn hiu nhiu xung Mass.

* S mch in xin xem phn ph lc A.


Cng vic cui cng ca vic thit k chnh l thit k v xy dng phn
mm iu khin ton b h thng. Phn mm c vit bng phn mm lp trnh
cp cao, ngn ng lp trnh PASCAL.
Trong gii hn ca vic trnh by ti ngi thc hin ch a ra mt s th
tc chnh v s khi m t phng cch hot ng ca chng. Sau l phn trnh
by v phn mm iu khin, phn ny gm c:
Ci t Jumper ca mch Giao tip v s h tr ca Mainboard (ci t
CMOS).
Xy dng s khi th vin Driver.
Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 46

Phn tch mt th tc mu.


I. CI T:
Trc ht chng ta nn ci a ch c nh trn mch Giao tip, cng vic ny
c thc hin bng cch gn jumper ni lin hai chn 2-3 ca cc slot J1, J2, J3;
thc hin cng vic ny l ta chn a ch c nh l 300H (ta c th ci t a ch
c nh l bao nhiu ty theo nhu cu). a ch b nh ca mch l 300H303H
tng ng vi:
a ch b nh:
a ch thc:
300H
: a ch Port A.
301H
: a ch Port B.
302H
: a ch Port C.
303H
: a ch Thanh ghi iu
khin.
Sau khi nm c a ch b nh ca cc Port nh vo cng thc:
a ch c nh+ 0H
: a ch Port A.
a ch c nh+ 1H
: a ch Port B.
a ch c nh+ 2H
: a ch Port C.
a ch c nh+ 3H
: a ch Thanh ghi iu
khin.
Ta tin hnh ci t li CMOS ca my tnh cho my tnh h tr v kim
tra a ch chng ta ci t. Cng vic ci t li CMOS thc hin nh sau:
Tt my, khi ng li.
Khi my kim tra Ram xong nhn phm Delete vo sa cha li CMOS.
Chn mc Power Management Setup.
Chn mc I/O Region Access Check.
Dng phm PageUp v PageDown chn tr s ca mc l 300h-33Fh.
Nhn phm ESC, chn Save and Quit, nhn phm Y. Nhn phm
Enter
Cng vic hon tt khi ng li my tnh ln na.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 47

II. XY DNG S KHI TH VIN DRIVER:


Th vin Driver l mt trong s nhng th vin c vit xy dng phn
mm iu khin my chm im trc nghim. Th vin ny c vit bng ngn
ng lp trnh PASCAL, bao gm 11 th tc con, dng iu khin hot ng ca
ng c v truy xut d liu h thng.
Th vin ny s dng mt Unit tn VAR_COM, l th vin cha cc hng,
bin ton cc ca chng trnh. C th:
UNIT VAR_COM;

{Khai bo tn Unit cn to}

INTERFACE

{Khai bo chung}

TYPE
File_Name_Type
XY_Type

CONST
L_Horizontal
L_Scan
On
Off
Right
Left
Up
Down

= String[16];
= Record
Hor : Word;
Vert : Word;
End;

= 600; (*Chiu di ti a tn hiu iu khin cn qut*)


= 100; (*Chiu di ti a tn hiu iu khin qut *)
= True;
= False;
= True;
= False;
= True;
= False;

VAR
Sys_Error
: Byte;
DataA, DataB
: Byte;
DataC, CL, CH
: Byte;
Error
: Boolean; (*PC3 : tn hiu li Error *)
Page
: Boolean; (*PC2 : tn hiu li Page *)
Vert
: Boolean; (*PC1 : tn hiu Veritical *)
Hor
: Boolean; (*PC0 : tn hiu Horizontal*)
V_Count,
H_Count,
Sc_Count
: Integer;
Add_Port
: Array [0..2] of Word;
(*
Add_Port 0 : Address Port A
Add_Port 1 : Address Port B
Add_Port 2 : Address Port C
*)
DataA_Bit
: Array[0..7] of Boolean;
Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 48

(*
Bit 0 : Clock Vertical
Bit 1 : Up/Down Vertical
Bit 2 : Clock Scan
Bit 3 : Up/Down Scan
Bit 4 : Clock Horizontal
Bit 5 : Up/Down Horizontal
Bit 6 : Motor DC 1st
Bit 7 : Motor DC 2nd
*)
T_DL_CK
: Word; (*Thi gian Delay ca xung CK*)
T_DL_MDC
: Word; (*Thi gian Delay ca Motro DC*)
F_XY,
(*File lu tr ta XY*)
F_Data,
(*File lu tr tr li mu*)
F_Sys,
(*File lu tr trng thi*)
F_Ans
: File; (*File lu tr kt qu*)
F_Error
: Boolean;
W_Data,
(*Chiu rng d liu*)
L_Data
: Byte; (*Chiu di d liu *)
XY_Name
: File_Name_Type; (*Tn m rng File ta XY*)
XY_Count
: Word; (*S cp ta XY*)
XY_Data
: Array [1..500] of XY_Type;(*Mng d liu, ti a 500*)
IMPLEMENTATION

{Thi hnh}

BEGIN
END. {Kt thc th vin}
Cc th tc ta xy dng s khi trong chng ny l:
1. ProceDure ReadC;
2. ProceDure CK;
3. ProceDure MDC(DC1,DC2:Boolean);
4. ProceDure Run_SM(Motor:Byte;Step:Integer);
5. ProceDure SM_Standar(SM_H,SM_SC:Boolean);
6. ProceDure Page_Out;
7. ProceDure Page_In;
8. ProceDure GoXY(H,V:Integer);
9. ProceDure ResetData;
ProceDure ReadB;
10. ProceDure Scan;
Trong s khi c cc t vit tt nh:BA07 (vit tt ca bin
DataA_Bit[0..7]), PA07 (vit tt ca bin DataA[0..7]).
Th tc ReadC

Sta
r
Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI


Read
PortCL

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 49

Th tc ny c chc nng c d liu t Port C vo, tn hiu PortCL, sau


lm chun li tn hiu (ch ly 04 bit thp PC04) bng cch AND vi $0FH (15D).
Sau khi lm chun tn hiu, ty gi tr ca tng bit (l [0] hay [1]) m gn trng
tri ca bo ca c tng ng (HOR, VERT, PAGE, ERROR) l [True] hay [False].

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 50

Th tc CK
Star

PA05=0

I=1
BAi=true S

DataA
or(1 shl i)
I+1
S

I>5

BA0,2,4
= False
PortA
= DataA
DataA
or $D5
Delay

PortA
=
Th tc ny c nhim v to DataA
mt xung Ck cho mch gii m iu khin.

N s truyn tn hiu iu khin n mch iu khin thng qua Port A- Ty


theo ngha ca tng c bit (DataA_Bit
End 07, BA07) m Data A c iu ch
tng ng.
Th tc MDC
Star

BA6=DC1
Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI


BA7=DC2

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 51

Th tc MDC vi hai tham s a vo l DC1 v DC2 (dng logic, Boolean).


Tham s a vo s lm bin i hai c trng thi Data_Bit[6] (BA6) v
Data_Bit[7] (BA7). Ty theo c trng ny (l [true] hay [false]) m bit tng ng
ca DataA thay i theo (l [1] hay [0]). Sau khi iu ch xong tn hiu d liu
DataA, truyn d liu ny qua Port A bng cch gi th tc CK.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 52

Th tc Run_SM
Star

I=1

I<Step

BAMT
=True
Ck

I+1

End

Th tc Run_SM c nhim v cho mt ng c no trong 03 ng c bc


(chn bng tham s MT da vo) hot ng mt s bc (do tham s Step a vo
quyt nh).
Vi th tc ny, c th chn mt trong ba ng c bc iu khin. Trong
, Mt=0 l chn ng c cun giy (Vert), Mt=1 l ng c ko u qut (Scan)
v nu Mt=2 l chn ng c ko cn qut (Hor). S bc a vo c khng ch
bi cc mc gii hn.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 53

Th tc SM_Standar
Star

SM_H
=true

SM_Sc
=true

ReadC

ReadC

B5=
Right

BA3=
Down

Not
Error

Not
Error

Run_SM
(2,1)

Run_SM
(1,1)

ReadC

ReadC

BA5=
Left

BA3=
Up

Run_SM
(2,1)

Run_SM
(1,1)

H_Count
=1

Sc_Count
=1

Th tc SM_Standar c chc nng chuyn motor ko cn qut v motor ko


u qut v v tr chun. Nhn hai tn hiu H_SM v Sc_SM (dng tn hiu logic)
E
nhn bit cn chuyn motor no v mc chun.
thc hin ng chc nng ny,
nd
tn hiu Error nhn t ngoi vo l chun nhn bit im chun. Tn hiu Error t
ngoi vo c iu ch mt ln nhn bit tn hiu tht t motor no gi n.
Th tc Page Out

Star

Sinh vin: Nguyn Phc Hu

MDC
(Off,On)
Gio vin hng dn: Thy QUCH THANH HI
BD1=Up

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 54

Th tc Page In

Star
MDC
(On,Off)
BD1=Up

ReadC

Page
=false

Run_SM
(0,1)
ReadC

I=1

I<=10

Run_SM
(0,1)
I+1

Delay
MDC
(Off,Off)

Th tc GoXY
End
Star

Sinh vin: Nguyn Phc Hu

X=
H-H_Count
Gio vin hng dn: Thy QUCH THANH HI
Y=
V-V_Count

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 55

Th tc GoXY dng di chuyn cn qut n mt ta xy tng ng


theo H_Count v V_Count cng nh ta chun (V_Count=1, H_Count=1).
S dng th tc Run_SM di chuyn hai motor cn c n ng v tr. Bn
cnh, x l cc vng ta v ta cn di chuyn n nhn bit hng di
chuyn ng ca ng c. Th tc ABS(x) l th tc ton hc trong Pascal
dng ly gi tr tuyt i ca x.
Th tc Page Out v Page In l hai th tc dng cho giy ra hay ly
giy vo my. Nguyn tc lm vic ca hai th tc ny l da vo tn hiu
Page c vo t th tc ReadC. i vi th tc Page Out, nhn din trng thi
c giy (Page=True) v thc hin vic cun giy ra (Step_Motor Vert Up,
Motor Dc2 On) cho n khi nhn din trng thi khng c giy. i vi th
tc Page In, nhn din trng thi khng giy (Page=False) v thc hin vic
cun giy vo (Step_Motor Vert Up, Motor Dc1 On) cho n khi nhn din
trng thi c giy. Khi ht chu trnh mi lnh c thm mt s bc cun ht
giy ra khi my, ng c DC c duy tr trng thi hot ng mt thi gian.
Th tc ResetData
Star

Port C=$00

Port C=$10
Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI


End

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 56

Th tc Reset Data dng xa d liu v lp li trng thi ban u cho IC


74LS164. Khi s dng, th tc ny gi ra Port C (CH) gi tr $00 (00000000B) to
xung xung tc ng mc [0] vo chn CLR ca 74LS164, sau lp li trng thi
ch bng cch gi ra Port C (CH) gi tr $10 (00010000B) to xung ln tc ng
mc p [1] vo chn CLR ca 74LS164.
Th tc Scan
Star

Port C=$30

Port C=$10

End

Th tc Scan dng c d liu qut vo IC 74LS164. Khi s dng, th tc


ny gi ra Port C (CH) gi tr $30 (00110000B) to xung ln tc ng mc [1] vo
chn CLK ca 74LS164, lm cho IC ny c d liu hai chn AB (lc ny mang
gia tr ca u qut gi n) vo v ng thi dch chuyn thanh ghi bn trong n,
sau gi ra Port C (CH) gi tr $10 (00010000B) to xung ln tc ng mc p [0]
vo chn CLK ca 74LS164 to xung xung kt thc mt xung c d liu.
Th tc ReadB
Star
DataB
=Port B
ResetData

End

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 57

Th tc ReadB dng c d liu qut t IC 74LS164 vo my. Khi s


dng, th tc ny c gi tr ca 74LS164 thng qua Port B vo bin DataB. Sau
khi c d liu vo bin DataB ri, tin hnh gi xung ra xa d liu trong IC
74LS164 v thit lp trng thi ban u cho n bng th tc Reset Data.
III. PHN TCH MT TH TC MU:
Th tc tin hnh phn tch l th tc CK, y l mt th tc dng thng
xuyn trong qu trnh iu khin. Th tc ny c nhim v to mt xung Ck cho
mch gii m iu khin. N s truyn tn hiu iu khin n mch iu khin
thng qua Port A- Ty theo ngha ca tng c bit (DataA_Bit07, BA07) m Data
A c iu ch tng ng.
S khi ca th tc c trnh by nh trn, sau y l chng trnh ngun
c vit bng ngn ng PASCAL.
Dong 1. ProceDure CK;
Dong 2. Var
Dong 3. i:byte;

Dong 4. Begin
Dong 5. DataA:=DataA and $C0; (*Xoa het du lieu, tru bit 06, 07*)
Dong 6. For i:=0 to 5 do
Dong 7. If DataA_Bit[i]=True then DataA:=DataA or ($01 shl i);
Dong 8. DataA_Bit[0]:=False;
Dong 9. DataA_Bit[2]:=False;
Dong 10.
DataA_Bit[4]:=False;
Dong 11.
Port[Add_Port[0]]:=DataA;
Dong 12.
Delay(T_DL_CK);
Dong 13.
Port[Add_Port[0]]:=DataA and $D5;
Dong 14.
Delay(1);
Dong 15.
End;
Phn tch:
Dng 1: Procedure CK; Khai bo tn th tc, khi cn gi th tc ny
ta ch cn gi tn trc tip trong chng trnh chnh (hay th tc hay hm
khc). y l mt th tc khng c tham s.
Dng 2: Var Thng bo: bt u khai bo bin cc b.
Dng 3: I:Byte; Khai bo mt bin tn l I kiu Byte (chiu rng t
d liu l 08 bit). Bin ny dng cho con chy ca dng For. Do gii hn
dng chy ca dng For ch l 6 bc nn chn I kiu byte (gi tr ln
nht l 255).
Dng 4: Begin Khai bo bt u phn chng trnh ca th tc.
Dng 5: DataA:=DataA and $C0; Xa d liu Data A, gi li gi tr
ca hai bit 6 v 7 (DataA6: iu khin ng c DC1; DataA7: iu khin
ng c DC1). Thc hin iu ny bng cch AND d liu DataA vi
gi tr $C0 (Gi tr thp lc phn: $C0 chuyn sang gi tr nh phn l :
1100000B).

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 58

Dng 6: For i:=0 to 5 do Thc hin lnh to vng lp trnh t For


do. Vng lp ny thc hin 06 vng xt duyt gi tr t DataA_Bit[0]
n DataA_Bit[5].
Dng 7: If DataA_Bit[i]=True then DataA:=DataA or ($01 shl i); Lnh
xt iu kin, nu trng hp c DataA_Bit[I] ang tr n bt (c gi
tr [True]) th Bit tng ng trong bin DataA bt ln gi tr [1]. Thc
hin vic chuyn i ny bng cch OR gi tr ca bin DataA vi gi tr
1 shl I.
Dng 810: Cc c DataA_Bit[0,2,4] c xa trng thi bt tr v
trng thi tt.
Dng 11:
Port[Add_Port[0]]:=DataA; Gi gi tr DataA ra Port
A.
Dng 12:
Delay(T_DL_CK); Ch mt khong thi gian
T_DL_CK, thi gian ny chnh l thi gian xung dng ca tn hiu iu
khin ( rng xung dng).
Dng 13:
Port[Add_Port[0]]:=DataA and $D5; a To xung
xung cho tn hiu xung nhp CK bng cch gi ra Port A gi tr DataA
sau khi AND vi gi tr $D5 (11010101B).
Dng 14:
Delay(1); Ch khong thi gian 1 n v thi gian ca
th tc Delay, thi gian ny chnh l thi gian xung m ti thiu ca tn
hiu iu khin ( rng xung m).
Dng 15:
End; Khai bo kt thc th tc.
Th tc ny c xy dng trn s khi v c nghim chng qua thc
t. Kt qu: th tc hot ng tt theo yu cu.
* Phn chng trnh iu khin mu xin xem ph lc B.
IV. NGUYN L NHN DIN V KIM TRA CA MY:
My hot ng di s iu khin ca phn mm iu khin v khi ni n
nguyn l hot ng ca my, trc ht chng ta tm hiu s lc v hnh thc
chm im trc nghim hin nay.
Vi l do nh ni trn, cng c h tr cho vic chm im trc nghim cn
cha y , ch yu cc bi thi c chm th cng vi hnh thc giy c l hay
bng cch quan st.
Gi s mt khun mu nh sau:
Hnh dng bi test:

BNG HNH DNG BI TEST


b
c

Cu 1.
Cu 2.
Cu 3.
Hnh dng bi test chnh l khun mu trnh by phn nh du trc nghim. N
xc nh v tr s ca mi la chn.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 59

Bi tr li mu:

a
Cu 1.
Cu 2.
Cu 3.

BNG TR LI MU
b
c
X
X

X
B
i tr li mu
chnh l p
s ca bi
trc nghim.
N cho bit
v tr la
chn ng.

Bi tr li mu chnh l p s ca bi trc nghim. N cho bit v tr la


chn ng.
Hnh dng bng phim chm bi:

KHUN CHM BI
b
c

Cu 1.
Cu 2.
Cu 3.
Bng phim c lm bng phim nha, giy, nhng thng l lm bng phim
nha trong c th nhn thy c ht cc la chn trong mt cu. Nh vy, qua
bng phim ny chng ta c th nh v chnh xc v tr la chn ng v ng thi
nhn bit c ht cc la chn ca hc sinh. Qua bng phim ny, ngoi vic c th
xc nh c kt qu bi lm trc nghim cn c th bit c s nhm ln thng
xuyn ca hc sinh i vi mt cu trc nghim.
Bi tr li ca hc sinh:

BNG TR LI CA HC S
Cu 1.
Cu 2.
Cu 3.

a
X

b
O
X

c
X

Ap dng chm bi:

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Cu 1.
Cu 2.
Cu 3.

a
X

CHM BI
b
O
X

Trang 60

X
X

Khi t khun chm bi vo bi lm ca mt hc sinh, kt qu s hin ln r


hn nh hnh nh trn.
Hnh thc thi trc nghim ti cc nc tin tin (nh M) th mt b kim tra
trc nghim trc khi a vo s dng qua nhiu khu kim tra v nh gi trn
chnh b nn s la chn ca ngi lm bi ch l mt ln duy nht trn mt cu.
Do , la chn ng hay sai l hnh thc nh du trn en, t m (bng bt ch
2B) trn s la chn ca mnh.
Nhng ti Vit Nam, cc b c xy dng cha hon chnh. Vi xu hng
ci thin v pht trin dn cc b thi trc nghim nn hnh thc thi v lm bi c
phn khc hn. im ni bt chnh l c th nhiu c s la chn v cui cng chn
ly mt la chn duy nht trn mt cu trc nghim. Cc k hiu mi c hnh
thnh biu hin nh:
Xc nhn l ng:
X
(s la chn c gi tr l ng)
Ph nhn l ng:
O X
(s la chn c gi tr l sai)
Ph ph nhn l ng:
(s la chn c gi tr l ng)
Do yu t va nu, my chm im trc nghim ra i cn phi x l c cc
tn hiu thu vo, c bit l x l hnh hc.
X l hnh hc y chnh l gii thut nhn din hnh hc. Pht sinh tng
ny chnh l do cch vit cc k hiu la chn ca mi ngi khc nhau, nghin,
mo xuyn tm, Trn phng php tng t v loi tr phn t s tm ra gi tr
ch thc ca la chn.
Vn c t ra cho phn mm l phi iu khin c phn c ng thi
phi gii quyt c vn nu trn X l nh. Do gii hn ca thi gian v
tinh ca tia qut trong thit k nn phn x l nh ch x l mc cha tinh, c
ngha l ch xt v kim tra i vi dng chm trn en (khng c dng ph nh v
xc nh bng du X). Vi cch chm ny, tnh linh ng ca sn phm b gim
xung, nhng tnh cht v gi tr s dng vn c duy tr.
Phn mm nhn din ng sai nh vo tn hiu t u qut a v thng qua
Port CL v Port B khi iu khin ng c di chuyn u qut v ng v tr qut
(ta qut).

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 61

I. TM TT TI:
Vn t ra l gii quyt vn t ng ha cng vic chm im, m bo
tnh chnh xc v khch quan, vn ny c gii quyt n tha. Ngi thc
hin chn phng php s dng giao din vi my vi tnh c nhn iu khin
my Chm im trc nghim. Cng vic nghin cu v thit k c thc hin ln
lt qua cc bc sau:
1. La chn cm bin:
phn bit gia im sng v im ti trn cng mt t giy ngi
thc hin dng cm bin Photo-Electric (loi dng cho u nhn tn hiu
iu khin t xa ca TV).
2. Phn c kh:
C th ko ht t giy, ty theo tn hiu iu khin, c th chuyn ng theo
hai chiu thun (ko giy) v nghch (y giy).
3. Phn qut nh:
Dng mt u c c nh cho vic c tn hiu dc ( ti vng d liu) v
mt b cn qut dng cho vic c ht chiu ngang ca d liu.
4. Phn iu khin:
Dng trc tip CPU ca my vi tnh c nhn iu khin my thng qua
Card giao tip ngoi vi.
5. Xy dng chng trnh:
Vit chng trnh bng phn mm PASCAL, chng trnh chy tt trn c
mi trng Dos v mi trng Windows.
II. T NH GI TI V SN PHM:
Qua thi gian thc hin cng vic thi cng v thit k ti nhng kt qu gt
hi c nh sau:
1. Tnh khoa hc:
ti mang m tnh nghin cu v k tha. Nghin cu y chnh l
nghin cu khoa hc ng dng, p dng nhng kin thc hc hnh thnh nn
mt sn phm p ng nhu cu thc t. K tha ch, ti vn dng nhng kin
thc thu c t ti m sinh vin kha trc thc hin.
Tnh khoa hc y mang lun c tnh ngh thut, vn dng sng to s
dng kin thc thu c thnh kin thc ca chnh mnh v to ra mt sn phm
hon ton mi so vi trc.
2. Kh nng trin khai:
Nu c mt ngun vn u t th c th trin khai ng dng vo thc t bi:
Tnh chnh xc kh cao.
Vn hnh n nh.
Gi tr s dng cao.
Chng trnh iu khin khng ph thuc nhiu vo phn cng v c
th pht trin ln mc cao hn na l cho kh nng phn tch c
mt b da trn phng php phn tch kh, tnh mi nh,
Gi thnh sn phm thp.
3. Hiu qu kinh t, x hi:

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 62

Nu c sn xut ng lot, c th c ng dng lm mt thit b cung cp


cho cc trng hc bi n l mt sn phm, mt cng c gip gii phng sc lao
ng cho gio vin, mt cng c hu ch gip gio vin thc hin chnh sch
tun lm 40 ting ca Chnh ph (thi gian chm im hon ton l thi gian trng
cho gio vin, v my t vn hnh mt cch t ng).
Gi tr kinh t v gi tr x hi ca sn phm rt cao, v trc ht, u t cho
gio dc chnh l s u t ng n nht v mang li li nhun cao nht, lu di
nht trong mt khong thi gian ngn nht. Sau chnh l v gi thnh sn xut
ra mt sn phm l rt nh.
Hin nay, s lng my in kim trn th trng ni a c thanh l kh nhiu
vi gi c rt r (t 100.000VN n 200.000VN cho my in kim kh giy A4
hiu Epson, 250.000VN n 350.000VN cho cc my in vn phng), vi cc
my in ny ta c th ly c b ngun lm ngun nui cho my chm im trc
nghim, ng thi b vi x l trong mch in my in c th c ng dng trong cc
lnh vc khc. Ch yu khi mua my v chng ta ch ly cc ng c bc v dn
c nu c th.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 63

Tng kinh ph thc hin (cha k cng th) c tnh theo bng sau:
STT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Thnh tin (1000VN)


PPI82C55
18.000
4555B
10.000
74LS32
10.500
74LS04
3.500
74LS30
4.000
74LS00
10.500
74LS192
15.000
74LS164
4.000
T
2.000
in tr
500
Diod
200
28
5.500
Chn Jumper
4.000
3
12.000
D468
700
20
14.000
C828
500
14
7.000
chn 40
3.000
1
3.000
1.000
14
14.000
chn 1420
in tr mng
500
12
6.000
B ngun PC
50.000
1
50.000
Gia cng mch
138.750
Chi ph khc
100.000
Tng cng
428.250
Tng kinh ph cho sn phm l: 428.250+250.000= 678.250 VN.

Tn linh kin

n gi (VN)
18.000
5.000
3.500
3.500
4.000
3.500
5.000
4.000

S lng
1
2
3
1
1
3
3
1

III. HNG PHT TRIN TI V KH NNG NNG CP:


ti cn rt nhiu iu cha hon thin c theo ng nh d nh ban u
khi bt tay vo tm hiu v thit k my. Nhng hn ch ny d mang tnh khch
quan nhng gy ra nhiu nhc im ln cho sn phm.
tinh ca tia qut cha cao, iu ny c th khc phc v nng cao tnh
nng bng cch s dng led hng ngoi ca b phn iu khin t xa ca Tivi. Thit
k l xuyn tia qut cng nh u nhn d liu nh hn. Tuy nhin, y cng ch l
nhng ci tin nh, bc ci tin thc s chnh l ci tin phn mm (vit y
hn cc th tc iu khin t tn dng ht cc tnh nng ca chng trnh)
iu ny hon ton kh thi nu nh kt hp vi yu t u c c ci tin s nng
cao c tnh nng s dng v chnh xc ca my. S pht trin mnh hn trong
phn mm iu khin nh s dng cc d liu thu c kt hp vi cc cng thc
v phng php tnh tin cy ca b trc nghim s nng cao hn ng dng
ca sn phm.
Ting rt ca dn c lm nh hng ln n mi trng lm vic nhng vn
ny cng c th khc phc c bng cch cch ly m thanh, v ngoi ca my
thit k kn cch m v trnh bi bm ln u c d liu.
Nhng ci tin ln nht l vn dng ngay kh nng c th giao tip ca my
thit k mt mch iu khin ring, ch chuyn giao, nhn d liu t my vi tnh

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 64

v khi cn thit thng bo li th mi lin kt vi my vi tnh. iu ny th hin r


vai tr iu khin trc tip my Chm im trc nghim l do mt b iu khin
khc vn hnh, my vi tnh ch x l s liu, lu tr v qun l d liu. Nhn chung
bc ci tin ny kh thi v mang li tnh nng ng cao cho my Chm im trc
nghim. V nu thc hin c iu ny, my vi tnh s c th thc hin c cng
vic khc khi my Chm im trc nghim hot ng ch chm bi.
Nh vy, ti cn hng pht trin cao hn na v c phn cng ln phn
mm, y cng chnh l kh nng nng cp v linh ng trong giao tip ca my. V
tht ra khi nng cp ln, cc phn c ca my nh: card giao tip, mch gii m tn
hiu iu khin, mch cng sut v mch h tr u qut vn c s dng li.
IV. KT LUN:
Nhng kin thc hc c trng cng vi s gip , ch bo ca thy
Quch Thanh Hi, thy L Vit Ph, thy Nguyn nh Ph, thy Nguyn Xun
ng gip ngi thc hin gii quyt c nhiu iu vng mc khi thc hin
ti.
Do cn nhiu hn ch trong kinh ph thc hin cng nh kin thc v kinh
nghim nn cn nhiu thiu st nh: phn c kh cn cha logic cu hnh nh mong
mun, b phn cm bin quang cha tuyt i chnh xc, phn mm cha c pht
trin n mc ti u, Ngoi nhng thiu st va nu, ti cn nhiu iu cha
hon chnh, knh mong Thy C v cc bn ng gp kin.
Thnh ph H Ch Minh, ngy 28 thng 02 nm 2000
Ngi thc hin ti

NGUYN PHC HU

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 65

S NGUYN L
MCH GIAO TIP

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 66

S MCH IN
MCH GIAO TIP

MT TRN

Sinh vin: Nguyn Phc Hu

MT DI

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 67

S MCH IN
MCH GIAO TIP

LINH KIN

Sinh vin: Nguyn Phc Hu

KHOAN L

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 68

S NGUYN L
MCH NNG P V TRUYN TN HIU

S MCH IN
MCH NNG P V TRUYN TN HIU

MT TRN

MT DI

LINH KIN

KHOAN L

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 69

S NGUYN L
MCH GII M TN HIU IU KHIN

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 70

S MCH IN
MCH GII M TN HIU IU KHIN
MT TRN

MT DI

LINH KIN

KHOAN L

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 71

S NGUYN L
MCH CNG SUT

S MCH IN
Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 72

MCH CNG SUT


MT TRN

MT DI

LINH KIN

KHOAN L

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 73

Tp tin ngun Th vin VAR_COM


(VAR_COM.PAS)
UNIT VAR_COM;
INTERFACE
TYPE
File_Name_Type
XY_Type

= String[16];
= Record
Hor : Word;
Vert : Word;
End;

CONST
L_Horizontal
= 600; (*Chieu dai can quet ngang, tinh bang xung Ck*)
L_Scan
= 100; (*Chieu dai tin hieu quet, tinh bang xung Ck *)
On
= True;
Off
= False;
Right
= True;
Left
= False;
Up
= True;
Down
= False;
VAR
Sys_Error
DataA, DataB
DataC, CL, CH
Error
Page
Vert
Hor
V_Count,
H_Count,
Sc_Count
Add_Port

DataA_Bit

: Byte;
: Byte;
: Byte;
: Boolean; (*PC3 : tin hieu loi Error *)
: Boolean; (*PC2 : tin hieu loi Page *)
: Boolean; (*PC1 : tin hieu Veritical *)
: Boolean; (*PC0 : tin hieu Horizontal*)

: Integer;
: Array [0..2] of Word;
(*
Add_Port 0 : Address Port A
Add_Port 1 : Address Port B
Add_Port 2 : Address Port C
*)
: Array[0..7] of Boolean;
(*
Bit 0 : Clock Vertical
Bit 1 : Up/Down Vertical
Bit 2 : Clock Scan

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 74

Bit 3 : Up/Down Scan


Bit 4 : Clock Horizontal
Bit 5 : Up/Down Horizontal
Bit 6 : Motor DC 1st
Bit 7 : Motor DC 2nd
*)
T_DL_CK
: Word;
(*Thoi gian Delay cua xung CK*)
T_DL_MDC
: Word;
(*Thoi gian Delay cua Motro DC*)
F_XY,
(*File luu tru toa do XY*)
F_Data,
(*File luu tru tra loi mau*)
F_Sys,
(*File luu tru trang thai*)
F_Ans
: File;
(*File luu tru ket qua*)
F_Error
: Boolean;
W_Data,
(*Chieu rong du lieu*)
L_Data
: Byte;
(*Chieu dai du lieu*)
XY_Name
: File_Name_Type; (*Ten mo rong file toa do XY*)
XY_Count
: Word;
(*So cap toa do XY*)
XY_Data
: Array [1..500] of XY_Type; (*Mang du lieu,toi da 500*)

IMPLEMENTATION
BEGIN
END.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 75

Tp tin ngun th vin DRIVER


(DRIVER.PAS)
UNIT DRIVER;
INTERFACE
USES VAR_COM, CRT;
ProceDure ReadC;
ProceDure CK;
ProceDure MDC(DC1,DC2:Boolean);
ProceDure Run_SM(Motor:Byte;Step:Integer);
ProceDure SM_Standar(SM_H,SM_SC:Boolean);
ProceDure Page_Out;
ProceDure Page_In;
ProceDure GoXY(H,V:Integer);
ProceDure ResetData;
ProceDure ReadB;
ProceDure Scan;

IMPLEMENTATION
ProceDure ReadC; (*Doc PortC, lay 04 bit thap*)
Var
Temp: Byte;
Begin
Temp:=Port[Add_Port[2]];
Temp:=Temp and $0F; (*lay 04 bit thap*)
If (Temp and $01)=$01 then Hor:=True
Else Hor:=False;
If (Temp and $02)=$02 then Vert:=True
Else Vert:=False;
If (Temp and $04)=$04 then Page:=True
Else Page:=False;
If (Temp and $08)=$08 then Error:=True
Else Error:=False;
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 76

ProceDure CK;
Var
i:byte;
Begin
DataA:=DataA and $C0; (*Xoa het du lieu, tru bit 06, 07*)
For i:=0 to 5 do
If DataA_Bit[i]=True then DataA:=DataA or ($01 shl i);
DataA_Bit[0]:=False;
DataA_Bit[2]:=False;
DataA_Bit[4]:=False;
Port[Add_Port[0]]:=DataA;
Delay(T_DL_CK);
Port[Add_Port[0]]:=DataA and $D5;
End;
ProceDure MDC(DC1,DC2:Boolean);
Begin
If DC1=True then DataA:=DataA or $40
Else DataA:=DataA and $BF;
If DC2=True then DataA:=DataA or $80
Else DataA:=DataA and $7F;
DataA_Bit[6]:=DC1;
DataA_Bit[7]:=DC2;
CK;
End;
ProceDure Run_SM(Motor:Byte;Step:Integer);
Var
{Motor=0 : Vertical}
i:Integer;
{Motor=1 : Scan}
Begin
{Motor=2 : Horizontal}
For i:=1 to Step do
Begin
DataA_Bit[2*Motor]:=True; {Tao xung}
CK;
End;
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 77

ProceDure SM_Standar(SM_H,SM_SC:Boolean);
Begin
If SM_H=True then
Begin
ReadC;
DataA_Bit[5]:=Right;
While not Error do
Begin
DataA_Bit[4]:=True;
CK;
ReadC;
End;
DataA_Bit[5]:=Left;
DataA_Bit[4]:=True;
CK;
H_Count:=1;
End;
If SM_SC=True then
Begin
DataA_Bit[3]:=Down;
ReadC;
While not Error do
Begin
DataA_Bit[2]:=True;
CK;
ReadC;
End;
DataA_Bit[3]:=Up;
DataA_Bit[2]:=True;
CK;
SC_Count:=1;
End;
End;
ProceDure Page_Out;
Var
Temp:Byte;
Begin
DataA_Bit[1]:=Up;
MDC(Off,On);
ReadC;
While Page do
Begin
DataA_Bit[0]:=True;
CK;
ReadC;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 78

End;
For Temp:=1 to 50 do
Begin
DataA_Bit[0]:=True;
CK;
End;
Delay(T_DL_MDC);
MDC(Off,Off);
V_Count:=0;
End;
ProceDure Page_In;
Var
Temp:Byte;
Begin
DataA_Bit[1]:=Up;
MDC(On,Off);
ReadC;
While not Page do
Begin
DataA_Bit[0]:=True;
CK;
ReadC;
End;
For Temp:=1 to 10 do
Begin
DataA_Bit[0]:=True;
CK;
End;
Delay(T_DL_MDC);
V_Count:=0;
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 79

ProceDure GoXY(H,V:Integer);
Var
x,y,Max,Min : Integer;
i
: Byte;
x_Ok
: Boolean;
Begin
x:=H-H_Count;
y:=V-V_Count;
If x<0 then DataA_Bit[5]:=Right Else DataA_Bit[5]:=Left;
If y<0 then DataA_Bit[1]:=Down Else DataA_Bit[1]:=Up;
H_Count:=H;
V_Count:=V;
x:=Abs(x);
y:=Abs(y);
If x>=y then x_Ok:=True Else x_Ok:=False;
Case x_Ok of
True : Begin
Run_SM(2,x-y);
For i:=1 to y do
Begin
DataA_Bit[0]:=True;{Vert}
DataA_Bit[4]:=True;{Hor}
CK;
End;
End;
False : Begin
Run_SM(0,y-x);
For i:=1 to x do
Begin
DataA_Bit[0]:=True;{Vert}
DataA_Bit[4]:=True;{Hor}
CK;
End;
End;
End; {Case}
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 80

ProceDure ResetData;
Begin
Port[Add_Port[2]]:=$00; {Xung xuong xoa 74LS164}
Port[Add_Port[2]]:=$10; {Xung len xoa 74LS164}
End;
ProceDure ReadB;
Begin
DataB:=Port[Add_Port[1]];{Doc du lieu}
ResetData;
{Xoa du lieu}
End;
ProceDure Scan;
Begin
Port[Add_Port[2]]:=$30; {Xung len Ck 74LS164}
Port[Add_Port[2]]:=$10; {Xung xuong Ck 74LS164}
ReadC;
End;
BEGIN
END.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 81

Tp tin ngun th vin FILES


(FILES.PAS)
UNIT FILES;
INTERFACE
USES VAR_COM, DRIVER, CRT, DOS;
ProceDure Load_XY(Path:String);
ProceDure Save_XY(Path:String);
Function FileExists(FileName: String): Boolean;
IMPLEMENTATION
Function FileExists(FileName: String): Boolean;
{ Boolean function that returns True if the file exists;otherwise,
it returns False. Closes the file if it exists. }
Var
F: file;
Begin
{$I-}
Assign(F, FileName);
FileMode := 0; { Set file access to read only }
Reset(F);
Close(F);
{$I+}
FileExists := (IOResult = 0) and (FileName <> '');
End; { FileExists }
ProceDure Save_XY(Path:String);
Var
i:Word;
Begin
If FileExists(Path)=True then (*File da ton tai*)
Begin
Write(#7);
Sys_Error:=2;
F_Error:=True;
End
Else (*File chua ton tai*)
Begin
Sys_Error:=0;
F_Error:=False;
ReadC;
DataA_Bit[1]:=True; {Up Vert}

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 82

While not Vert do {khi chua co Standar V}


Begin
DataA_Bit[0]:=True; {Ck Vert}
Ck;
ReadC;
End; {While}
Run_SM(0,2);
V_Count:=2;
SM_Standar(On,On); {chuyen can quet va
can keo ngang ve chuan}
ReadC;
(*Xu ly dong dau*)
While not Vert do
Begin
Run_SM(0,1);
ReadC;
Inc(V_Count);
End; {While}
Run_SM(0,2);
V_Count:=V_Count+2; (*Hor da la Left*)
While not Hor do
Begin
Run_SM(2,1);
ReadC;
Inc(H_Count);
End; {While}
(**)XY_Count:=1; (*can tim W_Data, tim o day*)
XY_Data[XY_Count].Vert:=V_Count;
XY_Data[XY_Count].Hor:=H_Count;
L_Data:=0;
W_Data:=0;
While Hor do {tim L_Data}
Begin
Inc(L_Data);
Run_SM(2,1);
ReadC;
Inc(H_Count);
End; {While}
Run_SM(2,2);
H_Count:=H_Count+2;
ReadC;
While H_Count<=L_Horizontal do
Begin
While not Hor do
Begin
Run_SM(2,1);

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 83

ReadC;
Inc(H_Count);
End; {While}
Inc(XY_Count);
XY_Data[XY_Count].Vert:=V_Count;
XY_Data[XY_Count].Hor:=H_Count;
Run_SM(2,L_Data+2);
H_Count:=H_Count+L_Data+2;
End; {While}
(*Xu ly phan con lai*)
Repeat
SM_Standar(On,Off);
ReadC;
While not Vert do
Begin
Run_SM(0,1);
ReadC;
Inc(V_Count);
End; {While}
Run_SM(0,2);
V_Count:=V_Count+2; (*Hor da la Left*)
ReadC;
While H_Count<=L_Horizontal do
Begin
While not Hor do
Begin
Run_SM(2,1);
ReadC;
Inc(H_Count);
End; {While}
Inc(XY_Count);
XY_Data[XY_Count].Vert:=V_Count;
XY_Data[XY_Count].Hor:=H_Count;
Run_SM(2,L_Data);
End; {While}
Until not Page; {lap cho den khi het giay}
Assign(F_XY,Path);
Rewrite(F_XY);
BlockWrite(F_XY,XY_Name,Sizeof(XY_Name));
BlockWrite(F_XY,XY_Count,Sizeof(XY_Count));
BlockWrite(F_XY,L_Data,Sizeof(L_data));
BlockWrite(F_XY,W_Data,Sizeof(W_data));
For i:=1 to XY_Count do
BlockWrite(F_XY,XY_Data[i],Sizeof(XY_data[i]));
Close(F_XY);
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 84

End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 85

ProceDure Load_XY(Path:String);
Var
i: Word;
Begin
If FileExists(Path)=True then (*Neu File ton tai*)
Begin
Sys_Error:=0;
F_Error:=False;
Assign(F_XY,Path);
Reset(F_XY);
BlockRead(F_XY,XY_Name,Sizeof(XY_Name));
BlockRead(F_XY,XY_Count,Sizeof(XY_Count));
BlockRead(F_XY,L_Data,Sizeof(L_Data));
BlockRead(F_XY,W_Data,Sizeof(W_Data));
For i:=1 to XY_Count do
BlockRead(F_XY,XY_Data[i],Sizeof(XY_Data[i]));
Close(F_XY);
End
Else (*Neu File khong ton tai*)
Begin
Sys_Error:=1;
F_Error:=True;
Write(#7);
End;
End;
BEGIN
END.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 86

Tp tin ngun Th vin GRAPH_MOUSE


(GRAPH_M.PAS)
Unit Graph_M;
INTERFACE
IMPLEMENTATION
Uses CRT,DOS;
Type
Font= array [0..15] of Byte;
Kytu= Record
Chu:Byte;
Mau:Byte;
End;
Char4= array[1..4] of Byte;
Const
MFormat: array [0..15] of Byte =
(0,64,96,112,120,124,126,126,120,76,12,4,6,6,0,0);
MChar: Char4 = (209,212,206,219);
Var
MFont:
array [1..4] of Font;
Ha:
Pointer;
Mx,My:
Word;
CaiDat,On_Off: Boolean;
Screen:
array [0..24,0..79] of Kytu Absolute $B800:0000;
BangFont:
array [0..255,0..31] of Byte Absolute $A000:0000;
x,y,MB:
Word;
OldChar:
Char4;
m,n:
Byte;
Da_Cai:
Boolean;
dd,cc:
Word;
ProceDure Shrdd;
Begin
dd:=dd shr 3;
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 87

ProceDure Shrcc;
Begin
cc:=cc shr 3;
End;
ProceDure Writexy(dx,dy,Color:Byte;St:String);
Begin
For m:=0 to Length(St)-1 do
Begin
Screen[dy,dx+m].Chu:=Ord(St[m+1]);
Screen[dy,dx+m].Mau:=Color;
End;
End;
ProceDure GetMouse;
Begin
Asm
Mov AX,$0003
Int $33
Mov x,CX
Mov y,DX
Mov MB,BX
End;
End;
ProceDure ReadMode;
Begin
InLine($B8/$02/$04/$BA/$C4/$03/$EF/$B8/$04/$07/$EF/$BA
/$CE/$03/$B8/$04/$02/$EF/$B8/$05/$00/$EF/$B8/$06
/$00/$EB/$0C/$90/$44/$6F/$20/$43/$6F/$6E/$67
/$20/$41/$6E/$68/$EF);
End;
ProceDure RestoreMode;
Begin
InLine($BA/$C4/$03/$B8/$02/$03/$EF/$EB/$0E/$90/$20/$44/$6F/$20/$43/$
6F/$6E/$67/$20/$41/$6E/$68/$20/$B8/$04/$03/$EF/$BA/$CE/$03/$B8/
$04/$00/$EF/$B8/$05/$10/$EF/$B8/$06/$0E/$EF);
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 88

ProceDure NapFont(Number:Byte;F:Font);
Begin
Move(F,BangFont[Number,0],16);
End;
ProceDure LayFont(Number:Byte;Var F:Font);
Begin
Move(BangFont[Number,0],F,16);
End;
ProceDure Save;
Var Ofs:Word;
Begin
If Mx=79 then dec(Mx);
If My=24 then dec(My);
OldChar[1]:=Screen[My,Mx].Chu;
OldChar[2]:=Screen[My,Mx+1].Chu;
OldChar[3]:=Screen[My+1,Mx].Chu;
OldChar[4]:=Screen[My+1,Mx+1].Chu;
End;
ProceDure ResTore(c:Char4);
Var Ofs:Word;
Begin
Screen[My,Mx].Chu:=c[1];
Screen[My+1,Mx].Chu:=c[3];
If Mx<>79 then
Begin
Screen[My,Mx+1].Chu:=c[2];
Screen[My+1,Mx+1].Chu:=c[4];
End;
End;
ProceDure MousePaint(x,y:Word);
Var
DLx,DLy,i: Integer;
Begin
ResTore(OldChar);
Mx:=x shr 3;
My:=y shr 3;
(* Writexy(36,11,$74,' ');
Writexy(50,11,$74,' ');
Writexy(36,13,$74,' ');
Writexy(50,13,$74,' ');
Gotoxy(38,12);
Write(y+1);

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 89

Gotoxy(50,12);
Write(x+1);
Gotoxy(38,14);
Write(My+1);
Gotoxy(50,14);
Write(Mx+1);*)
Save;
ReadMode;
For i:=1 to 4 do
Begin
LayFont(Ord(OldChar[i]),MFont[i]);
End;
RestoreMode;
DLx:=x And 7;
DLy:=y And 7;
For i:=0 to 15 do
Asm
MOV BX,OFFSET MFONT
MOV SI,DLY
ADD SI,SI
ADD SI,I
CMP SI,15
JBE @@1
ADD SI,16
@@1:
MOV AH,BYTE PTR [BX+SI]
MOV AL,BYTE PTR [BX+SI+16]
MOV DI,OFFSET MFORMAT
ADD DI,I
MOV DH,[DI]
XOR DL,DL
MOV CX,DLx
SHR DX,CL
OR AX,DX
MOV BYTE PTR[BX+SI],AH
MOV BYTE PTR[BX+SI+16],AL
End;
ReadMode;
For i:=1 to 4 do
NapFont(MChar[i],MFont[i]);
ResToreMode;
ResTore(MChar);
End;
ProceDure StarMouse;
Assembler;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 90

Asm
MOV ON_OFF,1
MOV CAIDAT,1
XOR AX,AX
INT 33H
OR AX,AX
JNZ @@1
MOV CAIDAT,0
JMP @@2
@@1:
MOV AX,0002H
INT 33H
MOV AX,0003H
INT 33H
{ SHR CX,3 }
MOV CC,CX
CALL SHRCC
MOV CX,CC
{ SHR DX,3}
MOV DD,DX
CALL SHRDD
MOV DX,DD
MOV MX,CX
MOV MY,DX
{ SHR MX,3 }
MOV CC,CX
CALL SHRCC
PUSH CX
MOV CX,CC
MOV MX,CX
{ SHR MY,3}
MOV DD,DX
CALL SHRDD
PUSH DX
MOV DX,DD
MOV MY,DX
CALL SAVE
CALL MOUSEPAINT
@@2:
End;
ProceDure MHandler;
Assembler;
Asm
MOV AX,SEG MFONT
MOV DS,AX

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 91

{ SHR CX,3 }
MOV CC,CX
CALL SHRCC
MOV CX,CC
{ SHR DX,3}
(* MOV DD,DX
CALL SHRDD
MOV DX,DD *)
PUSH CX
PUSH DX
CALL MOUSEPAINT
RETF
End;
ProceDure MouseOff;
Begin
If not On_Off then Exit;
On_Off:=False;
Restore(OldChar);
Asm
MOV AX,0CH
XOR CX,CX
LES DX,HA
INT 33H
End;
End;
ProceDure MouseOn;
Begin
If not On_Off then Exit;
On_Off:=True;
Asm
MOV AX,0CH
MOV CX,01
LES DX,HA
INT 33H
End;
End;
ProceDure InitMouse;
Begin
For n:=0 to 22 do
Writexy(0,n,$1a,'Nguyen Phuoc Hau**ABCDEFGHIJKLMNOPQRSTWVXYZ1234567890**');
Writexy(24,10,$74,'Toa do chuot thuc :');
Writexy(24,11,$74,'Hang: Cot: ');

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 92

Writexy(24,12,$74,'Toa do chuot ao : ');


Writexy(24,13,$74,'Hang: Cot: ');
TextColor(14);
TextBackGround(7);
Mx:=0;
My:=0;
StarMouse;
Ha:=@MHandler;
Asm
MOV AX,000FH {TOC DO CHUOT}
MOV CX,2
MOV DX,2
INT 33H
MOV AX,0007H {CHIEU RONG CUA CUA SO}
XOR CX,CX
MOV DX,639*8
INT 33H
MOV AX,0008H {CHIEU DAI CUA CUA SO}
XOR CX,CX
MOV DX,199*8
INT 33H
MOV AX,0CH {CAI DAT}
MOV CX,01
LES DX,HA
INT 33H
End;
End;
BEGIN
Asm
XOR AX,AX
INT 33H
CMP AX,0
JE @1
MOV DA_CAI,FALSE
@1:
MOV DA_CAI,TRUE
End;
If not (Da_Cai) then
Begin
Writeln(#7,'Ban chua cai dat chuot !');
TextColor(15);
TextBackGround(0);
Halt(1);
End
Else

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 93

Begin
InitMouse;
MouseOn;
RePeat
GetMouse;
UnTil (Mb=2) or KeyPressed;
MouseOff;
ClrScr;
TextColor(15);
TextBackGround(0);
End;
END.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 94

Tp tin ngun Th vin PMENU


(PMENU.PAS)
UNIT PMENU ;
INTERFACE
Uses Dos;
CONST
MaxItem = 15;
PopOff = False;
PopOn = True ;
NUL = $0000 ; TAB = $0009 ; BS = $0008 ; Enter = $000D ;
ESC = $001B ;
F1 = $3B00; F2 = $3C00; F3 = $3D00; F4 = $3E00; F5 = $3F00;
F6 = $4000; F7 = $4100; F8 = $4200; F9 = $4300; F10= $4400;
CtrlF1 = $5E00 ; CtrlF2 = $5F00 ; CtrlF3 = $6000 ;
CtrlF4 = $6100 ; CtrlF5 = $6200 ; CtrlF6 = $6300 ;
CtrlF7 = $6400 ; CtrlF8 = $6500 ; CtrlF9 = $6600 ;
CtrlF10= $6700 ;
AltF1 = $6800; AltF2 = $6900; AltF3 = $6A00; AltF4 = $6B00;
AltF5 = $6C00; AltF6 = $6D00; AltF7 = $6E00; AltF8 = $6F00;
AltF9 = $7000; AltF10= $7100;
AltQ = $1000; AltW = $1100; AltE = $1200; AltR = $1300;
AltT = $1400; AltY = $1500; AltU = $1600; AltI = $1700;
AltO = $1800; AltP = $1900;
AltA = $1E00; AltS = $1F00; AltD = $2000; AltF = $2100;
AltG = $2200; AltH = $2300; AltJ = $2400; AltK = $2500;
AltL = $2600;
AltZ = $2C00; AltX = $2D00; AltC = $2E00; AltV = $2E00;
AltB = $3000; AltN = $3100; AltM = $3200;
Homekey = $4700 ; Upkey = $4800 ; PgUpkey = $4900;
LeftKey = $4B00 ; RightKey = $4D00 ;
EndKey = $4F00 ; Downkey = $5000 ; PgDnkey = $5100;
InsKey = $5200 ; DelKey = $5300 ;
CtrlLeftKey = $7300 ; CtrlRightKey = $7400;
CtrlHomeKey = $7700 ; CtrlEndkey = $7500;
CtrlPgUp = $8400 ; CtrlPgDnKey = $7600;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 95

TYPE
MenuPtr = ^Menutype ;
MenuItem = Record
Name : String[50];
Hkey : Word
;
Case Pop : Boolean Of
True : (SubMenu : MenuPtr) ;
End;
ListType = Array[1..MaxItem] of MenuItem;
Menutype = Record
Size : Byte ;
List : ListType;
End;
{$F+}
Procedure InitVar( Var M : MenuPtr);
Procedure DeInitVar( Var M : MenuPtr);
Procedure AppendItem(Name : String ; HKey : Word;
Pop : Boolean ; SMenu : MenuPtr;
Var M : MenuPtr);
Function MenuOnePos(x,y,IAttr:Byte;M : MenuPtr): Word ;
Function Menubar(x,y,LAttr,NAttr,IAttr:Byte;M:MenuPtr):Word ;
Function Menupop(x,y,LAttr,NAttr,IAttr:Byte;M:MenuPtr):Word ;
Function MenuPullDown(x,y,LAttr,NAttr,IAttr : Byte;
M:MenuPtr) : Word ;
Function MenuDos(Col,Row,ColNum,RowNum,
FrAttr,NAttr,IAttr : Byte ;
Path : PathStr): PathStr;
{$F-}
IMPLEMENTATION
Uses Crt,Ptool ;
{$S-}
Var Right , Left : Boolean ;
CSize : Word ;
Function RPad(St:String ;N : Byte): String ;
Var Len : Byte Absolute St ;
Begin
While Len < N do St := St+#32;
RPad := St ;
End;
Function MaxLength( P : MenuPtr ) : Byte ;
Var Tempo , I : Byte ;
Begin
Tempo := 0;
For i := 1 to P^.Size do

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 96

If Tempo < Length(P^.List[i].Name) then


Tempo := Length(P^.List[i].Name) ;
MaxLength := Tempo ;
End;
{--------------------------------------------------}
Function GetKey : Word ;
Var Ch : Char ;
Begin
Ch := Readkey ;
If Ord(Ch) = NUL then
Getkey := Word(Ord(Readkey)) Shl 8
else
Getkey := Ord(Ch);
End;
{--------------------------------------------------}
Procedure InitVar( Var M : MenuPtr);
var i : Byte ;
Begin
New(M);
M^.Size := 0;
For i := 1 to MaxItem do
with M^.List[i] do
begin
Name :='' ;
Hkey := Nul ;
Pop := False ;
end;
End;
{--------------------------------------------------}
Procedure DeInitVar( Var M : MenuPtr);
Begin
Dispose(M);
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 97

{--------------------------------------------------}
Procedure AppendItem(Name : String ; HKey : Word;
Pop : Boolean ; SMenu : MenuPtr;
Var M : MenuPtr);
Begin
If M^.Size < MaxItem then
Begin
Inc(M^.Size);
M^.List[M^.Size].Name := Name ;
M^.List[M^.Size].HKey := Hkey ;
M^.List[M^.Size].Pop := Pop ;
If Pop then
M^.List[M^.Size].SubMenu := SMenu;
End;
End;
{--------------------------------------------------}
Function FindHotKey(M:MenuPtr;Nk:Word;Var N : Word):Boolean;
Var i : Byte ;
Begin
i := 1 ;
While (i<=M^.Size) and (Nk <> M^.List[i].Hkey) do Inc(i);
If i <= M^.Size then
Begin
FindHotKey := True ; N := i ;
end
Else FindHotKey := False;
End;
{--------------------------------------------------}
Function FindUpChr(St:String):Byte ;
Var i : Byte ;
Begin
i := 1 ;
While (i<=Length(st)) and
((St[i]<'A') or (St[i]>'Z')) do Inc(i);
If i > Length(St) then FindUpChr := 0
Else
FindUpChr := i ;
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 98

{--------------------------------------------------}
Function MenuOnePos(x,y,IAttr:Byte;M : MenuPtr): Word ;
var MLen : Byte ;
N,Nk : Word ;
Thoat : Boolean ;
{--------------------------------------------------}
Procedure WriteItem(k:Byte);
Begin
If k > 0 then
WriteStr(x,y,IAttr,RPad(M^.List[k].Name,MLen));
End;
{-----------------------------------------------------}
Begin
CursorOff;
Mlen := MaxLength(M);
Thoat := False ;
N := 1;
WriteItem(N);
Repeat
Nk := GetKey ;
Case Nk of
UpKey,LeftKey :
If N>1 then Dec(N) else N := M^.Size;
DownKey,RightKey :
If N<M^.Size then Inc(N) else N := 1;
HomeKey
: N := 1;
EndKey
: N := M^.Size ;
Enter
: Thoat := True ;
Esc
: Begin Thoat := True ;N := 0 end;
end;
WriteItem(N);
Until Thoat ;
MenuOnePos := N ;
SetCurSor(CSize);
End;
{--------------------------------------------------}

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 99

Function Menubar(x,y,LAttr,NAttr,IAttr : Byte ;


M : MenuPtr): Word ;
Var Nk , N : Word ;
Thoat : Boolean ;
{--------------------------------------------------}
Procedure WriteItem( k : Byte ; Active : Boolean);
Var Col,Len,i,N : Byte ;
Begin
Len := 0;
For i := 1 to k - 1 do
Len := Len + Length(M^.List[i].Name) + 2;
Col := x + Len;
If Active then
WriteStr(Col,Y,IAttr,M^.List[k].Name)
Else
begin
WriteStr(Col,Y,NAttr,M^.List[k].Name);
N := FindUpChr(M^.List[k].Name);
If N <> 0 then
WriteStr(Col+N-1,Y,LAttr,M^.List[k].Name[N]);
end;
End;
{--------------------------------------------------}
Procedure Table ;
Var i : Byte ;
Begin
For i := 1 to M^.Size do WriteItem(i,False);
End;
{-----------------------------------------------------}
Begin
CurSorOff;
Table;
If (N<1) or (N>M^.Size) then N := 1;
Thoat := False ;
Repeat
WriteItem(N,True);
Nk := GetKey ;
WriteItem(N,False);
If FindHotKey(M,Nk,N) then
Thoat := True
Else
Case Nk of
Leftkey :If N > 1 then dec(N) else N := M^.Size;
RightKey :If N < M^.Size then Inc(N) else N := 1;
HomeKey : N := 1;
EndKey : N := M^.Size;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 100

Enter : Thoat := True ;


Esc
: begin
Thoat := True;
N := 0
end;
end;
Until thoat ;
MenuBar := N;
SetCurSor(CSize);
End;
{--------------------------------------------------}
Function Menupop(x,y,LAttr,NAttr,IAttr:Byte;M:MenuPtr):Word ;
Var Nk : Word ;
MLen,N,SubN : Word ;
Thoat : Boolean ;
Sc : ScrPtr;
x1,y1,x2,y2 : Integer ;
Procedure WriteItem(k : Byte ; Active : Boolean );
Var Col,row : Byte ;
N : Word ;
Begin
Col := x1 + 2 ; Row := y1 + k ;
If Active then
WriteStr(Col,Row,IAttr,RPad(M^.List[k].Name,MLen))
Else
begin
WriteStr(Col,Row,NAttr,
RPad(M^.List[k].Name,MLen));
If M^.List[k].HKey <> Nul then
Begin
N := FindUpChr(M^.List[k].Name);
If N <> 0 then
WriteStr(Col+N-1,Row,LAttr,
M^.List[k].Name[N]);
end;
end;
End;
Procedure Table ;
Var i : Byte ;
Begin
MLen := MaxLength(M);
x1 := x ; y1 := y ;
Repeat
x2 := x1 + Mlen+3;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 101

If x2 > 78 then dec(x1);


Until x2 <= 78 ;
Repeat
y2 := y1 + M^.Size + 1;
if y2 > 23 then dec(y1);
Until y2 <= 23;
Box(x1,y1,x2,y2,NAttr,Single,ShadeOn);
For i := 1 to M^.Size do WriteItem(i,False);
end;
{--------------------------------------------------}
Procedure ChangeItem; Begin
Begin
Case Nk of
Upkey : If N>1 then dec(N) else N := M^.Size;
DownKey: If N<M^.Size then Inc(N) else N := 1;
Esc :
begin
Thoat := True;N := 0 ;
end;
Leftkey:
begin
Thoat := True;N := 0 ;Left := True ;
end;
Rightkey :
begin
Thoat := True;N := 0 ;Right := True;
end;
Enter : begin
If M^.List[N].Pop then
Begin
{ Gi Menu Con }
SubN := MenuPop(x1+2+4,y1+N+1,
LAttr,NAttr,IAttr,
M^.List[N].SubMenu);
If SubN <> 0 then thoat := True;
End
Else
Thoat := True ;
End;
End;
End;
{-----------------------------------------------------}
Begin
SaveScreen(Sc);
CurSorOff;
Table;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 102

Thoat := False ;
N := 1;
Repeat
SubN := 0;Left := False ; Right := False ;
WriteItem(n,True);
Nk := GetKey ;
WriteItem(N,False);
If FindHotKey(M,Nk,N) then
If M^.List[N].Pop then
Begin
{ Gi Menu con khi Bm phm Hot-Key }
SubN := MenuPop(x1+2+4,y1+N+1,LAttr,
NAttr,IAttr,M^.List[N].SubMenu);
If SubN <> 0 then thoat := True ;
End
Else
Thoat := True
Else ChangeItem
Until thoat ;
RestoreScreen(Sc);
If SubN = 0 then MenuPop := N
Else
If (SubN and $FFF0 ) = 0 then
MenuPop := N Shl 4 + SubN
Else
If (SubN and $FF00 ) = 0 then
MenuPop := N Shl 8 + SubN
Else
If (SubN and $F000 ) = 0 then
MenuPop := N Shl 12 + SubN ;
SetCurSor(CSize);
End;
{--------------------------------------------------}
Function MenuPullDown(x,y,LAttr,NAttr,IAttr : Byte;
M:MenuPtr) : Word ;
Var SubN , N ,Nk : Word ;
Thoat, PopActive : Boolean ;
{--------------------------------------------------}
Function ItemCol(k : Byte ): Byte ;
Var Len,i : Byte ;
Begin
Len := 0 ;
For i := 1 to k - 1 do
Len := Len+Length(M^.List[i].Name)+2;
ItemCol := x + Len ;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 103

End;
{---------------------------------------------------}
Procedure WriteItem(k:Byte;Active:Boolean);
Var Col,N : Byte ;
Begin
If k <> 0 then
Begin
Col := ITemCol(k) ;
If Active then
WriteStr(Col,Y,IAttr,M^.List[k].Name)
Else
begin
WriteStr(Col,Y,NAttr,M^.List[k].Name);
N := FindUpChr(M^.List[k].Name);
If N <> 0 then
WriteStr(Col+N-1,Y,LAttr,
M^.List[k].Name[N]);
end;
End;
End;
{--%-----------------------------------------------}
Procedure Table ;
Var i : Byte ;
Begin
For i := 1 to M^.Size do WriteItem(i,False);
End;
{-----------------------------------------------------}
Begin
CurSorOff;
PopActive := False;
Thoat := False ;
Table;
If (N<1) or (N>M^.Size) then N := 1;
Repeat
SubN := 0;
WriteItem(N,True);
If PopActive and M^.List[N].Pop and
(M^.List[N].Submenu <> Nil) then
SubN := Menupop(ItemCol(N),y+1,
LAttr,NAttr,IAttr,M^.List[N].Submenu);
If (SubN = 0) and (Not Left) and (Not Right) then
PopActive := False ;
If PopActive and M^.List[N].Pop and
(M^.List[N].Submenu <> Nil) then
begin
if Left then Nk := LeftKey;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 104

If Right then Nk := Rightkey;


WriteItem(N,False);
end
else
begin
Nk := GetKey ;
WriteItem(N,False);
If FindHotKey(M,Nk,N) then Nk := Enter;
end;
Case Nk of
LeftKey :If N>1 then dec(N) else N := M^.Size;
RightKey :If N<M^.Size then Inc(N) else N := 1;
Esc
:begin
Thoat := True;N := 0
end;
Enter : If (M^.List[N].Pop) then
PopActive := True
else
Thoat := True ;
End;
Until Thoat or ( SubN <> 0) ;
If SubN and $FFFF = 0 then
MenuPulldown := N
Else
If SubN and $FFF0 = 0 then
MenuPulldown := (N shl 4 ) + SubN
Else
If SubN and $FF00 = 0 then
MenuPulldown := (N shl 8 ) + SubN
Else
If SubN and $F000 = 0 then
MenuPulldown := (N shl 12 ) + SubN;
SetCurSor(CSize);
End;
Function MenuDos(Col,Row,ColNum,RowNum,
FrAttr,NAttr,IAttr : Byte ;
Path : PathStr): PathStr;
Type
DirPtr = ^DirRec;
DirRec = Record
Name : String[12];
FileAttr : Byte ;
Pre,Next : DirPtr ;
End;
Const

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 105

{----------------------------------------------------}
Left = #75; Right = #77; Up = #72; Down = #80 ;
Home = #71; Endkey = #79; PgUp = #73; PgDn = #81 ;
Esc = #27; Enter = #13;
Var
First,Last,P,Heap,Top,Bot : DirPtr ;
Max,N,i,Tam
: Byte;
Ch
: Char ;
Sc
: ScrPtr;
St
: PathStr ;
CurSor,Att
: Word ;
Na
: NameStr;
E
: ExtStr;
D
: DirStr;
{-------------------------------------------------------}
Function RPad(St:String;N:Byte):String;
Begin
While Length(St) < N do St := St + #32 ;
RPad := St ;
End;
{-------------------------------------------------------}
Procedure GetPath(Var Path:PathStr);
Var F : File;
Begin
If Path[Length(Path)] = '\' then
Delete(Path,Length(Path),1);
Path := FExpand(Path);
Assign(F,Path);
GetFAttr(F,Att);
if (DosError = 0) and (Att and Directory <> 0)
and (Path[Length(Path)] <>'\') then
Path := Path + '\';
FSplit(Path, D, Na, E);
if Na = '' then Na := '*';
if E = '' then E := '.*';
Path := D + Na # E;
End;
{-------------------------------------------------------}
Procedure Appendlist(FileIf:SearchRec);
Begin
New(P);
P^.Name := FileIf.Name ;
p^.FileAttr := FileIf.Attr;
If First = Nil then
begin
First := P ;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 106

First^.Pre := Nil
end
Else
begin
Last^.Next := P ;
P^.Pre := Last ;
end;
Last := P ;
Last^.Next := Nil
End;
{-------------------------------------------------------}
Procedure SortList;
Var P,Q : DirPtr; X:String[12];
Begin
P:= First;
While (P<>Nil) and (P<>Last) do
Begin
Q:= P^.Next;
While ( Q<>Nil) do
Begin
If (P^.Name > Q^.Name) then
Begin
X:= P^.Name;
P^.Name:=Q^.Name;
Q^.Name:=X;
End;
Q:= Q^.Next;
end;
P:= P^.Next;
End;
End3
{-------------------------------------------------------}
Procedure FindFiles(Path:PathStr);
Var F: SearchRec;
Begin
FindFirst(Path,Archive+Directory,F);
While (DosError = 0) do
Begin
If (F.Attr and Directory > 0) and
(F.Name <> '.') then
F.Name :=F.Name+'\';
If F.Name <>'.' then Appendlist(F);
FindNext(F);
End;
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 107

{-------------------------------------------------------}
Procedure WriteItem(P:DirPtr;N:Integer;Active:Boolean);
Var X,Y,Colo : Byte ;
Begin
If p <> nil then
Begin
If Active then Colo := IAttr
Else Colo := NAttr ;
X := 14*((N - 1) mod ColNum) + 2 + Col ;
Y := ((N - 1) div Colnum) + 1 + Row ;
WriteStr(x,y,Colo,RPad(P^.Name,12));
end;
End;
{---------------------%---------------------------------}
Procedure DisplayTable(Var N : Byte );
Begin
N := 0;
Clear(col+1,Row+1,Col+14*ColNum,Row+RowNum,FrAttr);
P := Top ;
While (P <> Nil) and (N < ColNum*Rownum ) do
begin
inc(n);
WriteItem(P,N,False);
P := P^.Next ;
end;
If P=Nil then Bot := Last
Else
Bot := P^.Pre;
End;
{-------------------------------------------------------}
Function GetItem : PathStr ;
Var i : Byte ;
Begin
First := Nil ;Last := Nil;
Mark(Heap);
GetPath(Path);
FindFiles(Path);
SortList;
Top := First ;
StrBox(Col,Row,Col+14*Colnum+1,Row+Rownum+1,
FrAttr,Double,Path,ShadeOn);
DisplayTable(Max);
P := Top ;
N:=1;
If First <> Nil then
Repeat
WriteItem(P,N,True);

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 108

Ch := Readkey ;
WriteItem(P,N,False);
If Ch = #0 then
Begin
Ch:= Readkey ;
Case Ch of
Up : If N - ColNum > 0 then
begin
For i := ColNum dgwnto 1 do
p := p^.Pre;
Dec(N,ColNum);
end
Else
If (N = 1) and (Top<>First) then
begin
Top := Top^.Pre;
DisplayTable(Max);
P := Top;
end;
Down : If N + ColNum <= Max then
begin
For i := 1 to colnum do
Begin
p := P^.Next ;
Inc(N,1);
End;
end
Else
If (N=Max) and (P<>Last) then
begin
Top := Top^.Next;
DisPlayTable(Max);
P:=Top;
For i := 1 to Max-1 do
P:=P^.Next;
end;
Left : If N>1 then
Begin
P:=P^.Pre;
Dec N);
End
Else
If (Top<>First) then
begin
Top := Top^.Pre;
DisplayTable(Max);

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 109

P := Top;
end;
Right: If N < Max then
Begin
P:=P^.Next;
Inc(N);
End
Else
If (P<>Last) then
begin
Top := Top^.Next;
DisPlayTable(Max);
P:=Top;
For i := 1 to Max-1 do
P:=P^.Next;
end;
Home : Begin
P:=Top;
N:=1;
End;
EndKey : Begin
P:=Bot;
N:=Max;
End;
PgUp : If Top <> First then
Begin
i:=0;
While (i<ColNum*RowNum) and
(Top^.Pre<>Nil) do
Begin
Inc(i);
Top:=Top^.Pre;
End;
DisplayTable(Max);
P:=Top;
If N>Max then N:=Max;
i:=1;
While i<N do
Begin
P:=P^.Next;
Inc(i);
End;
End;
PgDn : If Bot <> Last then
Begin
Top := Bot^.Next;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 110

DisPlayTable(Max);
P:=Top;
If N>Max then N:=Max;
i:=1;
While i<N do
Begin
P:=P^.Next;
Inc(i);
End;
End;
End; { Case }
End; { If }
Until Ch in [Esc,Enter]
Else { First = Nil }
begin
WriteStr(col+2,row+1,NAttr,'File Not Found');
Repeat until keypressed;
end;
Release(Heap);
If P <> Nil then
GetItem:= P^.Name
else
GetItem := '';
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 111

{=================== MenuDos =============================}


Begin
If Col = 0 then
Col := ((80-14*ColNum-2) div 2) + 1;
If Row = 0 then
Row := ((25-RowNum-2) div 2) + 1;
SaveScreen(Sc);
CurSor := GetCurSor;
CurSorOff;
Repeat
St := GetItem;
If (St[Length(St)]<>'\') then
FSplit(Path,D,Na,E);
Path := D+St;
Until Path[Length(Path)] <> '\';
If (Ch = Esc) or (St='') then
MenuDos := ''
Else { (Ch<> Esc) and (St<>'') }
MenuDos := Path;
RestoreScreen(Sc);
SetCurSor(CurSor);
End;
BEGIN
CSize := GetCurSor;
END.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 112

Tp tin ngun Th vin P_BAR


(P_BAR.PAS)
UNIT P_BAR ;
INTERFACE
Const
ShadeOn : Boolean = TRUE ;
ShadeOff : Boolean = FALSE ;
ShadeX : Byte = 2 ;
ShadeY : Byte = 1 ;
ShadeAtt : Byte = $07 ;
Null
: Byte = 0 ;
Single : Byte = 1 ; Double : Byte = 2 ;
HorDouble : Byte = 3 ; VerDouble : Byte = 4 ;
ScrollDelay : Byte = 100 ;
TYPE
String30 = String[30];
ScreenType = Record
x1,y1,x2,y2 : Byte ;
Cx,Cy : Byte ;
Buf : Pointer ;
End;
ScreenPtr = ^ScreenType ;
ScrType = Array[1..25,1..80] of Word ;
ScrPtr = ^ScrType;
{$F+}
(*--------------------------------------------------------*)
Function RPad(St:String;N:Byte):String;
Function LPad(St:String;N:Byte):String;
Function LTrim(St:String):String;
Function RTrim(St:String):String;
Function UpStr(St:String):String;
Function LoStr(St:String):String;
Function Proper(St:String):String;
Function Bin(N:Byte):String;
Function Hex(W:Word):String;
Function Repl(Ch:Char;N:Byte):String;
Function GetKey:Word;
(*--------------------------------------------------------*)
Function GetChar Col,Row:Byte):Word;
Procedure WriteChar(x,y,Attr,Len : Byte ; Ch :Char );
Procedure WriteStr(x,y,Attr :Byte ; St :String );
Procedure WriteColo(x,y,Att1,Att2:Byte;St:String);

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 113

Function NSt(N : Longint) : String ;


Procedure WriteInt(x,y,Att,Len:Byte;Int:Longint);
Function RSt(R : Real;N : Byte ) : String ;
Procedure WriteReal(x,y,Att,Len,Frac:Byte;R : Real);
Procedure ReadInt (x,y,Attr,L : Byte ; Var Lvar );
Procedure ReadWord (x,y,Attr,L : Byte ; Var Lvar );
Procedure ReadReal (x,y,Attr,L,N: Byte ; Var Rvar:Real );
Procedure ReadSt (x,y,Attr,L : Byte ; Var St);
Procedure CenterStr( y,StAttr :Byte;St : String);
Procedure BoxStr (x,y,BAttr,Lane,StAttr:Byte;St:String );
(*--------------------------------------------------------*)
Procedure DrawStr(SRow,Attr:Byte;St:string);
(*--------------------------------------------------------*)
Procedure SetAttr(x1,y1,x2,y2 , Attr :Byte );
(*--------------------------------------------------------*)
Procedure FillFrame(x1,y1,x2,y2,Attr:Byte;Ch:Char );
Procedure CLear(x1,y1,x2,y2,Attr:Byte );
Procedure Frame(x1,y1,x2,y2,Attr,Lane:Byte);
Procedure Box(x1,y1,x2,y2,Attr,Lane:Byte;Shade:Boolean);
Procedure FillBox(x1,y1,x2,y2,FrAttr,Lane:Byte;Ch:Char;Shade:Boolean);
Procedure StrBox(x1,y1,x2,y2,FrAttr,Lane : Byte ;St : String; Shade : Boolean);
Procedure StrLBox(x1,y1,x2,y2,FrAttr,Lane : Byte ;St : String; Shade :Boolean);
Procedure StrFillBox(x1,y1,x2,y2,FrAttr,Lane : Byte ; Ch:Char ; St :String;
Shade : Boolean);
(*--------------------------------------------------------*)
Procedure ScrollUp(x1,y1,x2,y2,Att,N:Byte);
Procedure ScrollDn(x1,y1,x2,y2,Att,N:Byte);
Procedure ScrollLf(x1,y1,x2,y2,Att,N:Byte);
Procedure ScrollRt(x1,y1,x2,y2,Att,N:Byte);
Procedure ShiftUp(x1,y1,x2,y2,Att:Byte);
Procedure ShiftDn(x1,y1,x2,y2,Att:Byte);
Procedure ShiftLf(x1,y1,x2,y2,Att:Byte);
Procedure ShiftRt(x1,y1,x2,y2,Att:Byte);
(*--------------------------------------------------------*)
Procedure SaveBox(x1,y1,x2,y2:Byte ; Var Bf : ScreenPtr);
Procedure RestoreBox(Var Bf : ScreenPtr);
Procedure DeInitBox(Var Bf : ScreenPtr);
Procedure SaveAtt(x1,y1,x2,y2:Byte ; Var Bf : ScreenPtr);
Procedure RestoreAtt(Var Bf : ScreenPtr);
Procedure DeInitAtt(Var Bf : ScreenPtr);
Procedure SaveScreen(Var Sc:ScrPtr);
Procedure RestoreScreen(Var Sc:ScrPtr);
("--------------------------------------------------------*)
Function GETCURSOR : Word ;
Procedure SETCURSOR (Size : Word );
Procedure CURSOROFF ;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 114

Procedure SMALLCURSOR ;
Procedure BIGCURSOR ;
(*--------------------------------------------------------*)
Function EGAInstalled : Boolean ;
Function PS2 : Boolean ;
{$F-}
{--------------------------------------------------------------}
IMPLEMENTATION
{--------------------------------------------------------------}
Uses Crt,Dos ;
{---------------------------------------}
Function RPad(St:String;N:Byte):String;
Begin
While Byte(St[0]) < N do St:=St+#32;
RPad:=St;
End;
{---------------------------------------}
Function LPad(St:String;N:Byte):String;
Begin
While Byte(St[0]) < N do St:=#32+St;
LPad:=St;
End;
{---------------------------------------}
Function LTrim(St:String):String;
Var i :Byte ;
Begin
i:=1;
While St[i]=#32 do Inc(i);
Delete(St,1,i-1);
LTrim:=St;
End;
{----------------%----------------------}
Function RTrim(St:String):String;
Var i :Byte ;
Begin
i:=Byte(St[0]);
While St[i]=#32 do Dec(i);
Byte(St[0]):=i;
RTrim:=St;
End;
{---------------------------------------}
Function UpStr(St:String):String;
Var i :Byte ;
Begin
For i:= 1 to Byte(St[0]) do St[i]:=Upcase(St[i]);

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 115

UpStr:=St;
End;
{---------------------------------------}
Function LoStr(St:String):String;
Var i :Byte ;
Begin
For i:= 1 to Byte(St[0]) do
If (St[i]>='A') and (St[i]<='Z')then
Inc(St[i],32);
LoStr:=St;
End;
{---------------------------------------}
Function Proper(St:String):String;
Var i :Byte ;
Begin
St:= LoStr(LTrim(Rtrim(St)));
i:=Pos(#32#32,St);
While i<>0 do
Begin
Delete(St,i,1);
i:=Pos(#32#32,St);
End;
St[i]:=Upcase(St[i]);
For i := 2 to Byte(St[0])-1 do
If St[i]=#32 then St[i+1]:=UpCase(St[i+1]);
Proper:=St;
End;
{---------------------------------------}
Function GetKey:Word;
Var N : Word ;Ch:Char ;
Begin
N:= Ord(Readkey);
If N = 0 then
N:= (Word(Ord(Readkey)) Shl 8) + N ;
GetKey := N 3
End;
{---------------------------------------}
Function Bin(N:Byte):String;
Var Temp,Yst : String ;
Begin
Temp := '';
Repeat
Str(N Mod 2,YSt);
Temp := YSt+Temp;
N := N div 2 ;
Until N = 0 ;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 116

While Length(Temp)<8 do Temp := '0'+Temp;


Bin := Temp;
End;
{---------------------------------------}
Function Hex(W:Word):String;
Var Temp,Yst : String ;
X : Byte ;
Begin
Temp := '';
Repeat
X := W mod 16 ;
If X < 10 then
Str(X,YSt)
Else
YSt := Chr(55+X);
Temp := YSt+Temp;
W := W div 16 ;
Until W = 0 ;
While Length(Temp)<4 do Temp := '0'+Temp;
Hex := '$'+Temp;
End;
{-------------------------------------------}
Function Repl(Ch:Char;N:Byte):String;
Var Temp : String;
Begin
Temp := '';
While Length(Temp) < N do Temp:= Temp+Ch;
Repl := Temp;
End;
{-------------------------------------------}
Function VIDSEG : Word ;
Begin
if MEM[$0:$0449] = 7 then
VidSeg := $B000
else
VidSeg := $B800 ;
End;
{-------------------------------------------}
Function Ofset(Col , Row : Byte ) : Word ;
Begin
case MEM[$0:$0449] of
0,1 : Ofset := 2*(Col-1) + 80*(Row-1) ;
else Ofset := 2*(Col-1) + 160*(Row-1) ;
end;
End;
{-------------------------------------------}

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 117

Function GetChar(Col,Row:Byte):Word;
Begin
GetChar := MemW[VidSeg:Ofset(Col,Row)]
End;
{-------------------------------------------}
Procedure WriteChar(x,y,Attr,Len : Byte ; Ch :Char );
Var
VSeg,VOfs : Word ;
i
: Byte ;
Begin
VSeg := VidSeg ;
VOfs := Ofset(x,y) ;
For i := 1 to len do
Begin
MemW[VSeg:VOfs]:=(Attr Shl 8) + Ord(Ch);
VOfs := VOfs + 2 ;
End;
End;
{-------------------------------------------}
Procedure WriteStr(x,y,Attr :Byte ; St :String );
Var
VSeg,VOfs : Word ;
i
: Byte ;
Begin
VSeg := VidSeg ;
VOfs := Ofset(x,y) ;
For i := 1 to length(St) do
Begin
MemW[VSeg:VOfs]:=(Attr Shl 8)+Ord(St[i]);
VOfs := VOfs + 2 ;
End;
End;
{-------------------------------------------}
Procedure WriteColo(x,y,Att1,Att2:Byte;St:String);
Var i,Att,Col : Byte ;
Begin
Att := Att2;Col := x ;
For i := 1 to Length(St) do
Begin
If St[i]='~' then
if att=att2 then
att := att1
else
att := att2
else
Begin

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 118

WriteChar(Col,y,Att,1,St[i]);
Inc(Col);
End;
End;
End;
{-------------------------------------------}
Function NSt(N : Longint) : String ;
Var Temp : String ;
I : Byte ;Am : Boolean ;
Begin
Am := N < 0 ;
If Am then N := - N ;
Str(N,Temp);
i := Length(Temp);
While i >= 4 do
Begin
Insert(',',Temp,i-2);
Dec(i,3);
End;
If Am then Nst := '-'+Temp
Else
Nst := Temp ;
End;
{-------------------------------------------}
Procedure WriteInt(x,y,Att,Len:Byte;Int:Longint);
Var Temp : String;
Begin
Temp := NSt(Int);
While Length(Temp) < Len do Temp := #32 + Temp;
WriteStr(x,y,Att,Temp);
end;
{------------%------------------------------}
Function RSt(R : Real;N : Byte ) : String ;
Var Temp : String ;
I : Byte ;Am : Boolean ;
Begin
Am := R < 0 ;
If Am then R := - R ;
Str(R:N:N,Temp);
If N = 0 then
i:=Byte(Temp[0])
Else
i := Pos('.',Temp)-1;
While i >= 4 do
Begin
Insert(',',Temp,i-2);
Dec(i,3);

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 119

End;
If Am then Rst := '-'+Temp
Else
Rst := Temp ;
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 120

{-------------------------------------------}
Procedure WriteReal(x,y,Att,Len,Frac:Byte;R : Real);
Var Temp : String;
Begin
Temp := RSt(R,Frac);
While Length(Temp) < Len do Temp := #32 + Temp;
WriteStr(x,y,Att,Temp);
end;
{-------------------------------------------}
Procedure ReadInt (x,y,Attr,L : Byte ; Var Lvar );
Var Tempo : String ;
Result : Integer ;
Lmem : Longint absolute LVar ;
OAttr : Byte ;
Begin
OAttr := TextAttr ;
TextAttr := Attr ;
Repeat
Writechar(x,y,Attr,L,#32);
Gotoxy(x,y);Readln(Tempo);
Val(Tempo,Lmem,Result);
Until (Result = 0 );
WriteInt(x,y,Attr,L,LMem);
TextAttr := OAttr ;
End;
{-------------------------------------------}
Procedure ReadWord (x,y,Attr,L : Byte ; Var Lvar );
Var Tempo : String ;
Result : Integer ;
p,OAttr: Byte ;
Wmem : Word absolute LVar ;
Begin
OAttr := TextAttr ;
TextAttr := Attr ;
Repeat
Writechar(x,y,Attr,L,#32);
Gotoxy(x,y);Readln(Tempo);
Val(Tempo,Wmem,Result);
p := pos('-',tempo)
Until (Result = 0 ) and (p = 0);
WriteInt(x,y,Attr,L,Wmem);
TextAttr := OAttr ;
End;
{-------------------------------------------}
Procedure ReadReal (x,y,Attr,L,N: Byte ; Var Rvar:Real );
Var Tempo : String ;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 121

Result : Integer ;
OAttr : Byte ;
Begin
OAttr := TextAttr ;
TextAttr := Attr ;
Repeat
Writechar(x,y,Attr,L,Chr(32));
Gotoxy(x,y);Readln(Tempo);
Val(tempo,RVar,Result);
Until Result = 0 ;
WriteReal(x,y,Attr,L,N,RVar);
TexTAttr := OAttr ;
End;
{-------------------------------------------}
Prgcedure ReadSt (x,y,Attr,L : Byte ; Var St);
Var
Str : String absolute St ;
Thoat : Boolean;
Ch: Char ;i,j:Byte;
Cot:Byte;
Begin
i:=1;Thoat:=False;
Writechar(x,y,Attr,L,Chr(32));
WriteStr(x,y,Attr,Copy(Str,1,L));
Repeat
Cot:=x+i-1;
GotoXy(Cot,y);
Ch:=ReadKey;
Case Ch Of
#32..#127:If i<=L then
Begin
Insert(Ch,Str,i);
Inc(i); If i>L Then i:=L;
End;
#13 :Thoat:=True;
#27 :Begin
Thoat:=True;
Str:='';
End;
#8
:Begin
Delete(Str,i-1,1);
Dec(i);
End;
#0
:Begin
Ch:=Readkey;
Case Ch of

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 122

#71 : i:=1;
#75 : If i>1 Then Dec(i);
#77 : If i<L Then
Begin
j:=Byte Str[0]);
While Str[j]=#32 do Dec(j);
If i>j then
Insert(#32,Str,i);
Inc(i);
End;
#79 : Begin
i:=Byte(Str[0])+1;
While Str[i-1]=#32 do Dec(i);
If i>L then i:=L;
End;
#83 : Delete(Str,i,1);
End;
End;
End;
Writechar(x,y,Attr,L,Chr(32));
WriteStr(x,y,Attr,Copy(Str,1,L));
Until Thoat;
Str:=RTrim(Copy(Str,1,L));
End;
{-------------------------------------------}
Procedure CenterStr( y,StAttr :Byte;St : String);
Var x : Integer ;
Begin
x := ( 80 - Length(St) ) div 2 ;
WriteStr(x,y,StAttr,St);
End;
{-------------------------------------------}
Procedure BoxStr (x,y,BAttr,Lane,StAttr:Byte;St:String );
Begin
Box(x,y,x+Length(St)+3,y+2,BAttr,Lane,ShadeOff);
WriteStr(x+2,y+1,StAttr,St);
End;
{-------------------------------------------}
Procedure SetAttr(x1,y1,x2,y2 , Attr :Byte );
Var
VSeg,VOfs : Word ;
x,y
: Byte ;
Begin
VSeg := VidSeg ;
For y := y1 to y2 do
For x:= x1 to x2 do

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 123

Begin
VOfs := Ofset(x,y) ;
Mem[VSeg:VOfs+1]:= Attr ;
End;
End;
{-------------------------------------------}
Procedure FillFrame(x1,y1,x2,y2,Attr:Byte;Ch:Char );
Var y : byte;
Begin
For y := y1 to y2 do
WriteChar(x1,y,Attr,x2-x1+1,Ch);
End;
{-------------------------------------------}
Procedure Clear(x1,y1,x2,y2,Attr:Byte );
Var y : byte;
Begin
For y := y1 to y2 do
WriteChar(x1,y,Attr,x2-x1+1,#32);
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 124

{-------------------------------------------}
Procedure Box(x1,y1,x2,y2,Attr,Lane:Byte;Shade:Boolean);
Const Bound : Array[0..4] of String[6]
=(#32#32#32#32#32#32
,#218#196#191#179#217#192,
#201#205#187#186#188#200,#213#205#184#179#190#212,
#214#196#183#186#189#211);
Var
Border : String[6];
y : integer;
Begin
If Lane > 4 then Lane := 0 ;
Border := Bound[Lane];
If Shade then
SetAttr(x1+ShadeX,y1+ShadeY,
x2+ShadeX,y2+ShadeY,ShadeAtt);
WriteStr(x1,y1,Attr,Border[1]+Repl(Border[2],x2-x1-1)+
Border[3]);
For y := y1 + 1 to y2 -1 do
WriteStr(x1,y,Attr,Border[4]+Repl(#32,x2-x1-1)+
Border[4]);
WriteStr(x1,y2,Attr,Border[6]+Repl(Border[2],x2-x1-1)+
Border[5]);
End;
{-------------------------------------------}
Procedure Frame(x1,y1,x2,y2,Attr,Lane:Byte);
Const Bound : Array[0..4] of String[6]
=(#32#32#32#32#32#32
,#218#196#191#179#217#192,
#201#205#187#186#188#200,#213#205#184#179#190#212,
#214#196#183#186#189#211!;
Var
Border : String[6];
y : integer;
Begin
If Lane > 4 then Lane := 0 ;
Border := Bound[Lane];
WriteStr(x1,y1,Attr,Border[1]+Repl(Border[2],x2-x1-1)+ Border[3]);
For y := y1 + 1 to y2 -1 do
Begin
WriteStr(x1,y,Attr,Border[4]);
WriteStr(x2,y,Attr,Border[4]);
End;
WriteStr(x1,y2,Attr,Border[6]+Repl(Border[2],x2-x1-1)+ Border[5]);
End;
{-------------------------------------------}
Procedure FillBox(x1,y1,x2,y2,FrAttr,Lane:Byte;Ch:Char;
Shade:Boolean);
Begin
Box(x1,y1,x2,y2,FrAttr,Lane,Shade);

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 125

FillFrame(x1+1,y1+1,x2-1,y2-1,FrAttr,Ch);
End;
{-------------------------------------------}
Procedure StrBox(x1,y1,x2,y2,FrAttr,Lane : Byte ;
St : String; Shade : Boolean);
Var x : Integer ;
Begin
BOX(x1,y1,x2,y2,FrAttr,Lane,Shade);
x := x1 + ((x2-x1-Length(St)-2) div 2);
WriteStr(x,y1,FrAttr,#32+St+#32);
End;
{-------------------------------------------}
Procedure StrLBox(x1,y1,x2,y2,FrAttr,Lane : Byte ;
St : String; Shade : Boolean);
Var x : Integer ;
Begin
BOX(x1,y1,x2,y2,FrAttr,Lane,Shade);
WriteStr(x1+3,y1,FrAttr,#32+St+#32);
End;
{-------------------------------------------}
Procedure StrFillBox(x1,y1,x2,y2,FrAttr,Lane : Byte ;
Ch:Char ; St : String;Shade : Boolean);
Var x : Integer ;
Begin
FILLBOX(x1,y1,x2,y2,FrAttr,Lane,Ch,Shade);
x := x1 + ((x2-x1-Length(St)-2) div 2);
WriteStr(x,y1,FrAttr,#32+St+#32);
End;
{-------------------------------------------}
Procedure DrawStr(SRow,Attr:Byte;St:string);
Type Charfont = Array[1..8] Of Byte;
Var CharTable : Array[0..255] of CharFont
Absolute $F000:$FA6E;
N,Len,SCol,CCol : Byte;
{---------------------------------------}
Procedure DrawChar(Entry:Charfont);
Var X,Y : Byte;
BinSt : String[8];
Begin
For Y := 1 to 8 do
Begin
BinSt := Bin(Entry [Y]);
For x := 1 to Length(BinSt) do
If BinSt[x]= '1' then
WriteStr(CCol+x,SRow+Y,Attr,#176);
End

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 126

End;
{------------------------------------------}
BEGIN
If SRow > 17 then SRow := 17;
St := Copy(St,1,10);
Len := Length(St);
SCol := (40 - 4*len) and $00FF;
For N := 1 to Len do
Begin
CCol := SCol + 8*( N - 1) + 1 ;
DrawChar(CharTable[Ord(St[N])]);
End;
End;
{------------------------------------------}
Procedure ScrollUp(x1,y1,x2,y2,Att,N:Byte);
Var y : Byte ;
Begin
For y := y1 to y2-n do
Move(Ptr(VidSeg,Ofset(x1,y+N))^,
Ptr(VidSeg,Ofset(x1,y) )^,2*(x2-x1+1));
Clear(x1,y2-N+1,x2,y2,Att);
End;
{------------------------------------------}
Procedure ScrollDn(x1,y1,x2,y2,Att,N:Byte);
Var y : Byte ;
Begin
For y := y2 Downto y1+n do
Move(Ptr(VidSeg,Ofset(x1,y-N))^,
Ptr(VidSeg,Ofset(x1,y) )^,2*(x2-x1+1));
Clear(x1,y1,x2,y1+N-1,Att);
End;
{------------------------------------------}
Procedure ScrollLf(x1,y1,x2,y2,Att,N:Byte);
Var y : Byte ;
Begin
For y := y1 to y2 do
Move(Ptr(VidSeg,Ofset(x1+N,y))^,
Ptr(VidSeg,Ofset(x1,y))^,2*(x2-x1-N+1));
Clear(x2-N,y1,x2,y2,Att);
End;
{------------------------------------------}
Procedure ScrollRt(x1,y1,x2,q2,Att,N:Byte);
Var y : Byte ;
Begin
For y := y1 to y2 do
Move(Ptr(VidSeg,Ofset(x1,y))^,

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 127

Ptr(VidSeg,Ofset(x1+N,y))^,2*(x2-x1-N+1));
Clear(x1,y1,x1+N-1,y2,Att);
End;
{-----------------------------------------}
Procedure ShiftUp(x1,y1,x2,y2,Att:Byte);
Var y : Byte ;
Begin
for y :=y1 to y2 do
Begin
ScrollUp(x1,y1,x2,y2,Att,1);
Delay(ScrollDelay);
end;
End;
{------------------------------------------}
Procedure ShiftDn(x1,y1,x2,y2,Att:Byte);
Var y : Byte ;
Begin
for y :=y1 to y2 do
Begin
ScrollDn(x1,y1,x2,y2,Att,1);
Delay(ScrollDelay);
end;
End;
{------------------------------------------}
Procedure ShiftLf(x1,y1,x2,y2,Att:Byte);
Var x : Byte ;
Begin
for x :=x1 to x2 do
Begin
ScrollLf(x1,y1,x2,y2,Att,1);
Delay(ScrollDelay);
end;
End;
{--------%---------------------------------}
Procedure ShiftRt(x1,y1,x2,y2,Att:Byte);
Var x : Byte ;
Begin
for x :=x1 to x2 do
Begin
ScrollRt(x1,y1,x2,y2,Att,1);
Delay(ScrollDelay);
end;
End3
{------------------------------------------}
Procedure SaveBox(x1,y1,x2,y2:Byte ; Var Bf : ScreenPtr);
Var NBytes,BSeg,BOfs : Word ;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 128

y : Byte ;
Begin
NBytes := 2*(x2-x1+1);
New(Bf);
Bf^.x1 := x1; Bf^.y1:= y1;Bf^.x2 := x2; Bf^.y2:= y2;
Bf^.Cx := WhereX ; Bf^.Cy := WhereY ;
GetMem(Bf^.Buf,NBytes*(y2-y1+1));
BSeg := Seg(Bf^.Buf^);
BOfs := Ofs(Bf^.Buf^);
For y := y1 to y2 do
Begin
Move(Ptr(VidSeg,Ofset(x1,y))^,Ptr(BSeg,BOfs)^,
NBytes);
Inc(BOfs,NBytes);
end;
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 129

{------------------------------------------}
Procedure RestoreBox(Var Bf : ScreenPtr);
Var NBytes,BSeg,BOfs : Word ;
y : Byte ;
Begin
With Bf^ do
Begin
NBytes := 2*(x2-x1+1);
BSeg := Seg(Buf^);
BOfs := Ofs(Buf^);
For y := y1 to y2 do
Begin
Move(Ptr(BSeg,BOfs)^,
Ptr(VidSeg,Ofset(x1,y))^,NBytes);
Inc(BOfs,NBytes);
end;
GotoXy(Cx,Cy);
{FreeMem(Buf,NBytes*(y2-y1+1));}
End;
DisPose(Bf);
End;
{------------------------------------------}
Procedure SaveAtt(x1,y1,x2,y2:Byte ; Var Bf : ScreenPtr);
Var NBytes,BSeg,BOfs : Word ;
y : Byte ;
Begin
NBytes := (x2-x1+1);
New(Bf);
Bf^.x1 := x1; Bf^.y1:= y1;Bf^.x2 := x2; Bf^.y2:= y2;
GetMem(Bf^.Buf,NBytes*(y2-y1+1));
BSeg := Seg(Bf^.Buf^);
BOfs := Ofs(Bf^.Buf^);
For y := y1 to y2 do
Begin
Move(Ptr(VidSeg,Ofset(x1,y)+1)^,Ptr(BSeg,BOfs)^,
NBytes);
Inc(BOfs,NBytes);
end;
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

{------------------------------------------}
Procedure RestoreAtt(Var Bf : ScreenPtr);
Var NBytes,BSeg,BOfs : Word ;
x,y : Byte ;
Begin
With Bf^ do
Begin
NBytes := (x2-x1+1);
BSeg := Seg(Buf^);
BOfs := Ofs(Buf^);
For y := y1 to y2 do
Begin
For x := x1 to x2 do
Move(Ptr(BSeg,BOfs)^,
Ptr(VidSeg,Ofset(x,y)+1)^,1);
Inc(BOfs,NBytes);
end;
End;
End;
{------------------------------------------}
Procedure DeInitBox(Var Bf : ScreenPtr);
Begin
With Bf^ do
FreeMem(Buf,2*(x2-x1+1)*(y2-y1+1));
DisPose(Bf);
End;
{------------------------------------------}
Procedure DeInitAtt(Var Bf : ScreenPtr);
Begin
With Bf^ do
FreeMem(Buf,(x2-x1+1)*(y2-y1+1));
DisPose(Bf);
End;

Sinh vin: Nguyn Phc Hu

Trang 130

Move(Ptr(BSeg,BOfs)^,

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 131

{------------------------------------------}
Procedure SaveScreen(Var Sc : ScrPtr);
Var Mode : Byte Absolute $0:$0449;
Screen : ScrPtr;
Begin
If Mode = 7 then
Screen := Ptr($B000,$0000)
Else
Screen := Ptr($B800,$0000);
New(Sc);
SC^:=Screen^
End;
{------------------------------------------}
Procedure ReStoreScreen(Var Sc : ScrPtr);
Var Mode : Byte Absolute $0:$0449;
Screen : ScrPtr;
Begin
If Mode = 7 then
Screen := Ptr($B000,$0000)
Else
Screen := Ptr($B800,$0000);
Screen^:=Sc^;
Dispose(Sc);
End;
{------------------------------------------}
Function GetCurSor : Word ;
Var Regs : Registers ;
Begin
Regs.AH := $03;
Regs.BH := 0;
Intr($10,Regs);
GetCursor := Regs.CX ;
End;
{------------------------------------------}
Procedure SetCurSor (Size : Word );
Var Regs : Registers;
Begin
Regs.AH := 1;
Regs.CX := Size;
Intr(16,Regs);
End;
{------------------------------------------}
Procedure CursorOff ;
Begin
SetCursor($2020);
End;

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 132

{------------------------------------------}
Procedure SmallCurSor ;
Var Vmode : Byte Absolute $0:$0449;
Begin
If VMode = 7 then
SetCursor($0C0D)
else
SetCursor($0607);
End;
{------------------------------------------}
Procedure BigCurSor ;
Var Vmode : Byte Absolute $0:$0449 ;
Begin
If VMode = 7 then
SetCursor($000D)
else
SetCursor($0007);
End;
{------------------------------------------}
Function EGAInstalled : Boolean ;
{ Xc nhn mn hnh EGA,VGA %-> True }
{
CGA,MCGA -> False }
Var Regs : Registers ;
Begin
Regs.AX := $1200;
Regs.BX := $0010;
Regs.CX := $FFFF;
Intr($10,Regs);
EGAInstalled := Regs.CX <> $FFFF;
End;
{------------------------------------------}
Function PS2 : Boolean ;
{ Xc nhn mn hnh VGA,MCGA --> True }
{
EGA,CGA --> False }
Var Regs : Registers ;
Begin
Regs.AX := $1A00;
Intr($10,Regs);
PS2 := ((Regs.AL and $FF) = $1A) and
((Regs.BL and $FF) in [$07,$08,$0B,$0C]);
End;
{--------------------------------------------------------------}
END.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 133

Tp tin ngun Th vin VIETFONT


(VIETFONT.PAS)
CONST
Font : Array [0..255,0..15] of Byte =
((0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,126,129,129,165,129,129,129,165,153,129,129,126,0,0),
(0,0,126,255,255,255,219,255,255,219,231,255,255,126,0,0),
(0,0,0,0,108,238,254,254,254,124,124,56,16,0,0,0),
(0,0,0,0,16,56,56,124,254,124,56,56,16,0,0,0),
(0,0,0,24,60,60,24,231,231,231,24,24,60,0,0,0),
(0,0,0,24,24,60,126,126,255,255,102,24,126,0,0,0),
(0,0,0,0,0,0,24,60,60,24,0,0,0,0,0,0),
(255,255,255,255,255,255,231,195,195,231,255,255,255,255,255,255),
(0,0,0,0,0,60,102,66,66,102,60,0,0,0,0,0),
(255,255,255,255,255,195,153,189,189,153,195,255,255,255,255,255),
(0,0,0,0,30,14,26,50,120,204,204,204,120,0,0,0),
(0,0,0,0,60,102,102,102,60,24,126,24,24,0,0,0),
(0,0,0,0,63,51,63,48,48,48,112,240,224,0,0,0),
(0,0,0,0,127,99,127,99,99,99,103,231,230,192,0,0),
(0,0,0,0,24,219,90,60,231,60,90,219,24,0,0,0),
(0,0,0,0,128,192,224,248,254,248,224,192,128,0,0,0),
(0,0,0,0,2,6,14,62,254,62,14,6,2,0,0,0),
(0,0,0,0,24,60,126,24,24,24,126,60,24,0,0,0),
(0,0,0,0,102,102,102,102,102,102,0,102,102,0,0,0),
(0,0,0,0,127,219,219,219,123,27,27,27,27,0,0,0),
(0,0,0,124,198,96,56,108,198,108,56,12,198,124,0,0),
(0,0,0,0,0,0,0,0,0,0,254,254,254,0,0,0),
(0,0,0,0,24,60,126,24,24,24,126,60,24,126,0,0),
(0,0,0,0,24,60,126,24,24,24,24,24,24,0,0,0),
(0,0,0,0,24,24,24,24,24,24,126,60,24,0,0,0),
(0,0,0,0,0,0,24,12,254,12,24,0,0,0,0,0),
(0,0,0,0,0,0,48,96,254,96,48,0,0,0,0,0),
(0,0,0,0,0,0,0,192,192,192,254,0,0,0,0,0),
(0,0,0,0,0,0,36,102,255,102,36,0,0,0,0,0),
(0,0,0,0,0,16,56,56,124,124,254,254,0,0,0,0),
(0,0,0,0,0,254,254,124,124,56,56,16,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,24,60,60,60,24,24,0,24,24,0,0,0),
(0,0,0,102,102,102,36,0,0,0,0,0,0,0,0,0),
(0,0,0,0,108,108,254,108,108,108,254,108,108,0,0,0),
(0,0,24,24,124,198,194,192,124,6,134,198,124,24,24,0),
(0,0,0,0,0,0,194,198,12,24,48,102,198,0,0,0),
(0,0,0,0,56,108,108,56,118,220,204,204,118,0,0,0),
(0,0,0,48,48,48,96,0,0,0,0,0,0,0,0,0),
(0,0,0,0,12,24,48,48,48,48,48,24,12,0,0,0),

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 134

(0,0,0,0,48,24,12,12,12,12,12,24,48,0,0,0),
(0,0,0,0,0,0,102,60,255,60,102,0,0,0,0,0),
(0,0,0,0,0,0,24,24,126,24,24,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,24,24,24,48,0,0),
(0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,24,24,0,0,0),
(0,0,0,0,2,6,12,24,48,96,192,128,0,0,0,0),
(0,0,0,0,124,198,206,222,246,230,198,198,124,0,0,0),
(0,0,0,0,24,56,120,24,24,24,24,24,126,0,0,0),
(0,0,0,0,124,198,6,12,24,48,96,198,254,0,0,0),
(0,0,0,0,124,198,6,6,60,6,6,198,124,0,0,0),
(0,0,0,0,12,28,60,108,204,254,12,12,30,0,0,0),
(0,0,0,0,254,192,192,192,252,6,6,198,124,0,0,0),
(0,0,0,0,60,96,112,192,252,198,198,198,124,0,0,0),
(0,0,0,0,254,198,6,12,24,48,48,48,48,0,0,0),
(0,0,0,0,124,198,198,198,124,198,198,198,124,0,0,0),
(0,0,0,0,124,198,198,198,126,6,6,12,120,0,0,0),
(0,0,0,0,0,24,24,0,0,0,24,24,0,0,0,0),
(0,0,0,0,0,24,24,0,0,0,24,24,48,0,0,0),
(0,0,0,0,6,12,24,48,96,48,24,12,6,0,0,0),
(0,0,0,0,0,0,0,126,0,0,126,0,0,0,0,0),
(0,0,0,0,96,48,24,12,6,12,24,48,96,0,0,0),
(0,0,0,0,124,198,198,12,24,24,0,24,24,0,0,0),
(0,0,0,0,124,198,198,222,222,222,220,192,124,0,0,0),
(0,0,0,0,16,56,108,198,198,254,198,198,198,0,0,0),
(0,0,0,0,252,102,102,102,124,102,102,102,252,0,0,0),
(0,0,0,0,60,102,194,192,192,192,194,102,60,0,0,0),
(0,0,0,0,248,108,102,102,102,102,102,108,248,0,0,0),
(0,0,0,0,254,102,98,104,120,104,98,102,254,0,0,0),
(0,0,0,0,254,102,98,104,120,104,96,96,240,0,0,0),
(0,0,0,0,60,102,194,192,192,222,198,102,58,0,0,0),
(0,0,0,0,198,198,198,198,254,198,198,198,198,0,0,0),
(0,0,0,0,60,24,24,24,24,24,24,24,60,0,0,0),
(0,0,0,0,30,12,12,12,12,12,204,204,120,0,0,0),
(0,0,0,0,230,102,108,108,120,108,108,102,230,0,0,0),
(0,0,0,0,240,96,96,96,96,96,98,102,254,0,0,0),
(0,0,0,0,198,238,254,254,214,198,198,198,198,0,0,0),
(0,0,0,0,198,230,246,254,222,206,198,198,198,0,0,0),
(0,0,0,0,56,108,198,198,198,198,198,108,56,0,0,0),
(0,0,0,0,252,102,102,102,124,96,96,96,240,0,0,0),
(0,0,0,0,124,198,198,198,198,214,222,124,12,14,0,0),
(0,0,0,0,252,102,102,102,124,108,102,102,231,0,0,0),
(0,0,0,0,124,198,198,96,56,12,198,198,124,0,0,0),
(0,0,0,0,126,126,90,24,24,24,24,24,60,0,0,0),
(0,0,0,0,198,198,198,198,198,198,198,198,124,0,0,0),
(0,0,0,0,198,198,198,198,198,198,108,56,16,0,0,0),

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 135

(0,0,0,0,198,198,198,198,214,214,254,124,108,0,0,0),
(0,0,0,0,198,198,108,56,56,56,108,198,198,0,0,0),
(0,0,0,0,102,102,102,102,60,24,24,24,60,0,0,0),
(0,0,0,0,254,198,140,24,48,96,194,198,254,0,0,0),
(0,0,0,0,60,48,48,48,48,48,48,48,60,0,0,0),
(0,0,0,0,128,192,224,112,56,28,14,6,2,0,0,0),
(0,0,0,0,60,12,12,12,12,12,12,12,60,0,0,0),
(0,0,16,56,108,198,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0),
(0,0,48,48,24,0,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,120,12,124,204,204,118,0,0,0),
(0,0,0,0,224,96,96,120,108,102,102,102,124,0,0,0),
(0,0,0,0,0,0,0,124,198,192,192,198,124,0,0,0),
(0,0,0,0,28,12,12,60,108,204,204,204,118,0,0,0),
(0,0,0,0,0,0,0,124,198,254,192,198,124,0,0,0),
(0,0,0,0,56,108,100,96,240,96,96,96,240,0,0,0),
(0,0,0,0,0,0,0,118,204,204,204,124,12,204,120,0),
(0,0,0,0,224,96,96,108,118,102,102,102,230,0,0,0),
(0,0,0,0,24,24,0,56,24,24,24,24,60,0,0,0),
(0,0,0,0,6,6,0,14,6,6,6,6,102,102,60,0),
(0,0,0,0,224,96,96,102,108,120,108,102,230,0,0,0),
(0,0,0,0,56,24,24,24,24,24,24,24,60,0,0,0),
(0,0,0,0,0,0,0,236,254,214,214,214,198,0,0,0),
(0,0,0,0,0,0,0,220,102,102,102,102,102,0,0,0),
(0,0,0,0,0,0,0,124,198,198,198,198,124,0,0,0),
(0,0,0,0,0,0,0,220,102,102,102,124,96,96,240,0),
(0,0,0,0,0,0,0,118,204,204,204,124,12,12,30,0),
(0,0,0,0,0,0,0,220,118,102,96,96,240,0,0,0),
(0,0,0,0,0,0,0,124,198,112,28,198,124,0,0,0),
(0,0,0,0,16,48,48,252,48,48,48,54,28,0,0,0),
(0,0,0,0,0,0,0,204,204,204,204,204,118,0,0,0),
(0,0,0,0,0,0,0,102,102,102,102,60,24,0,0,0),
(0,0,0,0,0,0,0,198,198,214,214,254,108,0,0,0),
(0,0,0,0,0,0,0,198,108,56,56,108,198,0,0,0),
(0,0,0,0,0,0,0,198,198,198,198,126,6,12,248,0),
(0,0,0,0,0,0,0,254,204,24,48,102,254,0,0,0),
(0,0,0,0,14,24,24,24,112,24,24,24,14,0,0,0),
(0,0,0,0,24,24,24,24,0,24,24,24,24,0,0,0),
(0,0,0,0,112,24,24,24,14,24,24,24,112,0,0,0),
(0,0,0,0,118,220,0,0,0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,16,56,108,198,198,254,0,0,0,0),
(0,0,0,0,0,0,124,198,192,192,198,124,24,12,248,0),
(0,0,0,0,204,204,0,204,204,204,204,204,118,0,0,0),
(0,0,0,0,108,108,0,120,12,124,204,204,118,0,0,0),
(0,0,48,72,72,48,0,120,12,124,204,204,118,0,0,0),
(0,0,0,0,108,108,0,124,198,254,192,198,124,0,0,0),

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 136

(0,0,0,0,108,108,0,56,24,24,24,24,60,0,0,0),
(0,0,0,24,60,102,0,56,24,24,24,24,60,0,0,0),
(0,0,0,0,108,222,26,26,126,216,216,218,108,0,0,0),
(0,0,0,0,204,204,0,124,198,198,198,198,124,0,0,0),
(0,0,0,48,120,204,0,204,204,204,204,204,118,0,0,0),
(0,0,0,0,198,198,0,198,198,198,198,126,6,12,120,0),
(0,0,24,24,24,124,198,192,192,198,124,24,24,24,0,0),
(0,0,0,56,108,100,96,240,96,96,102,230,188,0,0,0),
(0,0,0,102,102,102,60,24,126,24,60,24,24,0,0,0),
(0,0,0,252,102,102,124,98,102,111,102,102,243,0,0,0),
(0,0,0,0,118,220,0,220,102,102,102,102,102,0,0,0),
(0,0,0,0,0,0,54,108,216,108,54,0,0,0,0,0),
(0,0,0,0,0,0,216,108,54,108,216,0,0,0,0,0),
(0,0,0,0,24,24,24,126,24,24,24,0,126,126,0,0),
(0,0,0,0,96,48,24,12,24,48,96,0,124,124,0,0),
(0,0,0,0,12,24,48,96,48,24,12,0,124,124,0,0),
(24,24,24,60,60,126,126,255,24,24,24,24,24,24,24,24),
(24,24,24,24,24,24,24,24,255,126,126,60,60,24,24,24),
(0,0,0,0,0,64,112,124,255,124,112,64,0,0,0,0),
(0,0,0,0,0,2,14,62,255,62,14,2,0,0,0,0),
(0,0,108,56,0,56,108,198,198,254,198,198,198,0,0,0),
(0,16,56,108,0,56,108,198,198,254,198,198,198,0,0,0),
(0,16,56,68,254,102,98,104,120,104,98,102,254,0,0,0),
(0,16,56,68,56,108,198,198,198,198,198,108,56,0,0,0),
(0,0,3,1,58,108,198,198,198,198,198,108,56,0,0,0),
(0,0,3,1,199,198,198,198,198,198,198,198,124,0,0,0),
(0,0,0,0,248,108,102,102,254,102,102,108,248,0,0,0),
(0,0,0,0,108,56,0,120,12,124,204,204,118,0,0,0),
(0,0,0,0,56,108,0,120,12,124,204,204,118,0,0,0),
(0,0,0,0,56,108,0,124,198,254,192,198,124,0,0,0),
(0,0,0,0,56,108,0,124,198,198,198,198,124,0,0,0),
(0,0,0,0,0,3,1,126,198,198,198,198,124,0,0,0),
(0,0,0,0,0,3,1,206,204,204,204,204,118,0,0,0),
(0,0,0,0,12,62,12,60,108,204,204,204,118,0,0,0),
(0,0,192,96,48,0,0,120,12,124,204,204,118,0,0,0),
(0,0,56,8,16,0,0,120,12,124,204,204,118,0,0,0),
(0,0,0,118,220,0,0,120,12,124,204,204,118,0,0,0),
(0,0,6,12,24,0,0,120,12,124,204,204,118,0,0,0),
(0,0,0,0,0,0,0,120,12,124,204,204,118,0,48,48),
(0,0,96,16,76,56,0,120,12,124,204,204,118,0,0,0),
(0,0,7,1,110,56,0,120,12,124,204,204,118,0,0,0),
(0,0,118,220,108,56,0,120,12,124,204,204,118,0,0,0),
(0,0,12,16,108,56,0,120,12,124,204,204,118,0,0,0),
(68,17,68,17,68,17,68,17,68,17,68,17,68,17,68,17),
(170,85,170,85,170,85,170,85,170,85,170,85,170,85,170,85),
(119,221,119,221,119,221,119,221,119,221,119,221,119,221,119,221),

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 137

(24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24),
(24,24,24,24,24,24,24,24,248,24,24,24,24,24,24,24),
(0,0,0,0,108,56,0,120,12,124,204,204,118,0,48,48),
(0,0,192,96,56,108,0,120,12,124,204,204,118,0,0,0),
(0,0,7,1,58,108,0,120,12,124,204,204,118,0,0,0),
(0,0,118,220,56,108,0,120,12,124,204,204,118,0,0,0),
(54,54,54,54,54,54,54,246,6,246,54,54,54,54,54,54),
(54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54),
(0,0,0,0,0,0,0,254,6,246,54,54,54,54,54,54),
(54,54,54,54,54,54,54,246,6,254,0,0,0,0,0,0),
(0,0,6,12,56,108,0,120,12,124,204,204,118,0,0,0),
(0,0,0,0,56,108,0,120,12,124,204,204,118,0,48,48),
(0,0,0,0,0,0,0,0,248,24,24,24,24,24,24,24),
(24,24,24,24,24,24,24,24,31,0,0,0,0,0,0,0),
(24,24,24,24,24,24,24,24,255,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,255,24,24,24,24,24,24,24),
(24,24,24,24,24,24,24,24,31,24,24,24,24,24,24,24),
(0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0),
(24,24,24,24,24,24,24,24,255,24,24,24,24,24,24,24),
(0,0,192,96,48,0,0,124,198,254,192,198,124,0,0,0),
(0,0,56,8,16,0,0,124,198,254,192,198,124,0,0,0),
(54,54,54,54,54,54,54,55,48,63,0,0,0,0,0,0),
(0,0,0,0,0,0,0,63,48,55,54,54,54,54,54,54),
(54,54,54,54,54,54,54,247,0,255,0,0,0,0,0,0),
(0,0,0,0,0,0,0,255,0,247,54,54,54,54,54,54),
(54,54,54,54,54,54,54,55,48,55,54,54,54,54,54,54),
(0,0,0,0,0,0,0,255,0,255,0,0,0,0,0,0),
(54,54,54,54,54,54,54,247,0,247,54,54,54,54,54,54),
(0,0,0,118,220,0,0,124,198,254,192,198,124,0,0,0),
(0,0,6,12,24,0,0,124,198,254,192,198,124,0,0,0),
(0,0,0,0,0,0,0,124,198,254,192,198,124,0,24,24),
(0,0,192,96,56,108,0,124,198,254,192,198,124,0,0,0),
(0,0,7,1,58,108,0,124,198,254,192,198,124,0,0,0),
(0,0,118,220,56,108,0,124,198,254,192,198,124,0,0,0),
(0,0,6,12,56,108,0,124,198,254,192,198,124,0,0,0),
(0,0,0,0,56,108,0,124,198,254,192,198,124,0,24,24),
(0,0,192,96,48,0,0,56,24,24,24,24,60,0,0,0),
(0,0,56,8,16,0,0,56,24,24,24,24,60,0,0,0),
(24,24,24,24,24,24,24,24,248,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0,31,24,24,24,24,24,24,24),
(255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255),
(0,0,0,118,220,0,0,56,24,24,24,24,60,0,0,0),
(0,0,6,12,24,0,0,56,24,24,24,24,60,0,0,0),
(0,0,0,0,24,24,0,56,24,24,24,24,60,0,24,24),
(0,0,192,96$48,0,0,124,198,198,198,198,124,0,0,0),
(0,0,0,0,62,96,192,192,254,192,192,96,62,0,0,0),

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

MY CHM IM TRC NGHIM GIAO TIP MY VI TNH

Trang 138

(0,0,56,8,16,0,0,124,198,198,198,198,124,0,0,0),
(0,0,118,220,0,0,0,124,198,198,198,198,124,0,0,0),
(0,0,6,12,24,0,0,124,198,198,198,198,124,0,0,0),
(0,0,0,0,0,0,0,124$198,198,198,198,124,0,24,24),
(0,0,192,96,56,108,0,124,198,198,198,198,124,0,0,0),
(0,0,7,1,58,108,0,124,198,198,198,198,124,0,0,0),
(0,0,118,220,56,108,0,124,198,198,198,198,124,0,0,0),
(0,0,6,12,56,108,0,124,198,198,198,198,124,0,0,0),
(0,0,0,0,56,108,0,124,198,198,198,198,124,0,24,24),
(0,0,192,96,48,3,1,126,198,198,198,198,124,0,0,0),
(0,0,56,8,16,3,1,126,198,198,198,198,124,0,0,0),
(0,0,118,220,0,3,1,126,198,198,198,198,124,0,0,0),
(0,0,6,12,24,3,1,126,198,198,198,198,124,0,0,0),
(0,0,0,0,0,3,1,126,198,198,198,198,124,0,24,24),
(0,0,192,96,48,0,0,204,204,204,204,204,118,0,0,0),
(0,0,0,0,0,254,0,0,254,0,0,254,0,0,0,0),
(0,0,56,8,16,0,0,204,204,204,204,204,118,0,0,0),
(0,0,118,220,0,0,0,204,204,204,204,204,118,0,0,0),
(0,0,6,12,24,0,0,204,204,204,204,204,118,0,0,0),
(0,0,0,0,0,0,0,204,204,204,204,204,118,0,48,48),
(0,0,192,96,48,3,1,206,204,204,204,204,118,0,0,0),
(0,0,56,8,16,3,1,206,204,204,204,204,118,0,0,0),
(0,0,118,220,0,3,1,206,204,204,204,204,118,0,0,0),
(0,0,6,12,24,3,1,206,204,204,204,204,118,0,0,0),
(0,0,0,0,0,3,1,206,204,204,204,204,118,0,48,48),
(0,0,192,96,48,0,0,198,198,198,198,126,6,12,248,0),
(0,0,56,8,16,0,0,198,198,198,198,126,6,12,248,0),
(0,0,0,118,220,0,0,198,198,198,198,126,6,12,248,0),
(0,0,6,12,24,0,0,198,198,198,198,126,6,12,248,0),
(0,0,0,0,0,0,0,198,198,198,198,126,4,12,251,3),
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));
Th vin ny khi kch hot s chim mt phn b nh v np Font ting
Vit vo b Font chun ca my. C ngha l ta c th s dng, hin th ting
Vit trong chng trnh chnh.

Sinh vin: Nguyn Phc Hu

Gio vin hng dn: Thy QUCH THANH HI

You might also like