You are on page 1of 47

Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm

L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
1
PHN 1: L"P TRNH VISUAL BASIC:

Tho thu#n: ti li&u ny thu(c quy*n s+ h-u c0a tc gi, b2n c th3 t5 do tham
kho ti li&u nh.ng khng 6.7c php s8 d9ng 63 in thnh sch bo, 6:ng ln
cc di<n 6n hay website, nh.ng b2n c th3 dng 6.>ng link
http://www.dieukhientudong.net 63 h.@ng t@i ti li&u. Lin h& tc gi qua
email: thanhtam.h@gmail.com.
A. C$ S% L"P TRNH VISUAL BASIC
1. Gi'i thi*u Visual Basic.
Visual Basic l mt ngn ng$ l'p trnh c)p cao 32 bit +%,c s. d0ng +2 vi5t cc ch%-ng
trnh ch6y trong mi tr%7ng Windows. Visual Basic s. d0ng ki2u l'p trnh Visual hay RAD( Rapid
Application Development) trong + vi9c t6o cc c.a s:, cc ;i<u khi2n v cch =ng x. c?a cc c.a
s: c@ng nh% cc ;i<u khi2n +%,c thAc hi9n mt cch dB dng nhanh chng chD bFng cc thao tc
vHi mouse khng cIn phJi khai bo, tnh ton vHi nhi<u cu l9nh ph=c t6p.
Visual Basic l mt ngn ng$ l'p trnh theo ki2u h%Hng +Ki t%,ng. N khc vHi ki2u l'p
trnh c@ l ki2u Top Down.
- L'p trnh Top Down: ch%-ng trnh +%,c bK tr v thAc thi tL trn xuKng. VHi ki2u
l'p trnh ny, vi9c bK tr sM trN nn r)t kh khOn +Ki vHi cc ch%-ng trnh lHn.
- L'p trnh h%Hng +Ki t%,ng OOP (object-oriented programming): Cc thnh phIn
+%,c phn thnh cc +Ki t%,ng (Object) v vi5t cch =ng x. ring cho mPi +Ki
t%,ng sau + k5t h,p chng l6i t6o thnh ch%-ng trnh.
2. B-t 12u v'i Visual Basic (VB)
2.1 Kh-i 01ng VB:
Sau khi khNi +ng VB, mt hp tho6i (Dialog) New Project xu)t hi9n cho php lAa chQn
1 trong cc lo6i =ng d0ng m b6n muKn t6o. VB6 cho php t6o 13 lo6i =ng d0ng khc nhau N Tab
New, tuy nhin N m=c + cOn bJn v thng th%7ng, Standard EXE (mt lo6i ch%-ng trnh tA
ch6y tiu chuRn) sM +%,c chQn.

Hnh 1: Dialog l2a ch4n 5ng d7ng
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
2
2.2 Giao di9n Visual Basic

Hnh 2: giao di9n Visual Basic
Giao di9n c- bJn c?a VB bao gSm cc thnh phIn sau:
MenuBar: cc trnh +-n c?a VB.
Toolbar: mt sK ch=c nOng c- bJn c?a ch%-ng trnh.
Toolbox: ch=a cc ;i<u khi2n (Control) thng d0ng.
Project Explorer: hi2n thT cc thnh phIn c?a =ng d0ng +ang thAc hi9n.
Properties Window: C.a s: hi2n thT cc +Vc tnh (Properties) thi5t k5 c?a cc
;i<u khi2n.
Form Layout Window: xem tr%Hc hoVc thay +:i vT tr Form khi thAc thi =ng
d0ng.
Workspace: vng lm vi9c c?a ch%-ng trnh
Ngoi ra giao di9n VB cn ch=a r)t nhi<u cc thnh phIn khc. ;2 hi2n thT
thnh phIn no b6n chQn trnh +-n View v click chQn thnh phIn b6n muKn
hi2n thT.
Tuy nhin, vHi nh$ng thnh phIn +%,c giHi thi9u trn + +? +2 gip b6n xy dAng cc =ng
d0ng c?a VB. Cc thnh phIn trn sM +%,c giHi thi9u +Iy +? h-n trong cc phIn sau c?a ti li9u
ny.
Ch : Do VB l mt ngn ng$ l'p trnh theo ki2u h%Hng +Ki t%,ng (tuy ch%a th't sA +Iy
+? nghWa), v v'y +2 c th2 lm vi9c vHi VB tr%Hc h5t b6n phJi bi5t c- bJn v< khi ni9m ;Ki
t%,ng-Object.
3. L3p trnh h4'ng 15i t47ng trong Visual Basic.
L'p trnh h%Hng +Ki t%,ng l mt khi ni9m kh. Tuy nhin vHi m=c + trung bnh ta chD
cIn hi2u cc thnh phIn c- bJn nh)t c?a khi ni9m ny nhFm gip ta xy dAng +%,c cc =ng d0ng
trong VB.

Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
3
Gi:i thi9u 0;i t3<ng.
;Ki t%,ng (Object) l mt v't thAc h$u, mPi +Ki t%,ng c 1 tn gQi ring.V d0 Cat l
mt +Ki t%,ng, n thuc lHp mo ( khi ni9m lHp-Class N +y khng +%,c +< c'p). MPi +Ki t%,ng
c cc thuc tnh (Properties), Cc ho6t +ng hay Ph%-ng th=c (Method) v cc =ng x. hay sA
ki9n (Event). V d0 Chn, mXt, mulng, l cc Properties c?a Cat, cn khJ nOng ch6y,
nhJyl cc Method c?a Cat, Kht n%Hc l mt Event c?a Cat.
Truy xu=t cc 0;i t3<ng.
Truy xu)t +Ki t%,ng l vi9c +Qc (GET), v +Vt (SET) cc Properties c?a +Ki t%,ng hay gQi
cc Method c?a +Ki t%,ng. C php:
Tn 85i t47ng.Properties ho9c 85i t47ng.Method
V d0 b6n muKn bi5t mu lng c?a Cat, b6n dng: Bi:n=Cat.mulng, nghWa l mu lng
c?a Cat + +%,c gn cho Bi:n, gi trT c?a Bi:n c@ng chnh l gi trT c?a mu lng.
By gi7 n5u b6n muKn Cat phJi ch6y, b6n gQi: Cat.ch;y v ch;y l mt Method c?a Cat.
Nh% v'y c th2 hi2u Method l cc m9nh l9nh m +Ki t%,ng c khJ nOng thAc hi9n khi +%,c yu
cIu. Khc vHi cc Properties ta chD c th2 gQi cc Method lc ch%-ng trnh +ang thAc thi
(Runtime).
Ring Event l cc sA ki9n xJy ra +Ki vHi +Ki t%,ng v cc +p =ng c?a +Ki t%,ng +Ki vHi
sA ki9n +, cc +p =ng chnh l code +%,c ng%7i l'p trnh vi5t, + c@ng chnh l ni dung quan
trQng nh)t khi l'p trnh. PhIn ny +%,c sM +%,c trnh by c0 th2 trong cc v d0 thi5t k5 =ng d0ng.
4. Gi'i thi*u cc 8i<u khi=n (Control):
Cc ;i<u khi2n trong VB l mt d6ng c?a ;Ki t%,ng, ; l nh$ng cng c0 c sYn gip cho
vi9c t6o giao di9n c?a =ng d0ng trN nn dB dng v nhanh chng h-n, +y chnh l +Vc tr%ng c?a
ki2u l'p trnh VISUAL hay RAD + +%,c +< c'p N trn. Cc ;i<u khi2n c@ng bao gSm cc thnh
phIn c?a ;Ki t%,ng. V v'y, tL by gi7 khi ni9m ;i<u khi2n c th2 hi2u +Sng nh)t vHi ;Ki t%,ng.
VB6 cung c)p 21 intrinsic Control (;i<u khi2n c- bJn). PhIn giHi thi9u nh$ng Control
thng d0ng nh)t khi s. d0ng VB b6n c th2 tm th)y trong Ph? L?c 1.
5. C( sA l3p trnh.
CCu trc mDt ch4(ng trnh trong VB:
Private/Public Function/Sub TenChuongTrinh/TenEvent(Bi5n tham chi5u, tham trT)
Dim [Bi5n1] as Ki2ubi5n1
Dim [Bi5n2] as Ki2ubi5n2

L9nh 1
L9nh 2
.
L9nh n
End sub
5.1 Bi$n:
- ;%,c dng +2 l%u tr$ t6m th7i cc gi trT trong qu trnh tnh ton c?a ch%-ng
trnh. Gi trT m ta l%u tr$ trong bi5n c th2 l nh$ng sK nguyn, sK thAc, hay con
ch$ ci..m ta gQi l ki2u bi5n. V l thnh phIn l%u tr$ t6m th7i nn bi5n sM tA
+ng m)t +i khi k5t thc ch%-ng trnh hay th'm ch khi k5t thc mt cu l9nh.
- Trong VB, bi5n +%,c khai bo theo c)u trc:
Dim TnBi5n as Ki2uBi5n.
Tn Bi:n phJi:
Di khng qu 255 k tA
PhJi bXt +Iu bFng ch$ ci.
Khng c khoJng trXng hay k hi9u +,-,*,/ trong tn bi5n.
Khng +%,c trng vHi tL kho (keywords)c?a VB
Khng nn +Vt tn trng nhau.
C sA phn bi9t gi$a ch$ vi5t HOA v ch$ vi5t th%7ng.

Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
4
Ki=u bi:n: C mt sK ki2u bi5n h,p l9 +%,c s. d0ng trong VB nh% sau:
Ki=u bi:n Kch th4'c bi:n KhoEng gi trF
Byte 1 byte 0 to 255
Boolean 2 bytes True or False
Integer 2 bytes -32,768 to 32,767
Long
(long integer)
4 bytes -2,147,483,648 to 2,147,483,647
Single
(single-precision
floating-point)
4 bytes -3.402823E38 to -1.401298E-45 for negative
values; 1.401298E-45 to 3.402823E38 for
positive values
Double
(double-precision
floating-point)
8 bytes -1.79769313486231E308 to
-4.94065645841247E-324 for negative values;
4.94065645841247E-324 to
1.79769313486232E308 for positive values
Currency
(scaled integer)
8 bytes -922,337,203,685,477.5808 to
922,337,203,685,477.5807
Decimal 14 bytes +/-79,228,162,514,264,337,593,543,950,335
with no decimal point;
+/-7.9228162514264337593543950335 with
28 places to the right of the decimal; smallest
non-zero number is
+/-0.0000000000000000000000000001
Date 8 bytes January 1, 100 to December 31, 9999
Object 4 bytes Any Object reference
String
(variable-length)
10 bytes + string
length
0 to approximately 2 billion
String
(fixed-length)
Length of string 1 to approximately 65,400
Variant
(with numbers)
16 bytes Any numeric value up to the range of a Double
Variant
(with characters)
22 bytes + string
length
Same range as for variable-length String
User-defined
(using Type)
Ki2u d$ li9u do ng%7i
dng quy +Tnh.
tuZ theo quy +Tnh
ring.
Ph0 thuc vo khoJng gi trT c?a ki2u d$ li9u
+%,c s. d0ng.
Ch :
o Bi5n phJi +%-c s. d0ng +ng ki2u v +ng khoJng gi trT.
VD: Dim x as integer, n5u gn x=abc sM xu)t hi9n lPi v x + +%,c khai bo
l mt sK nguyn nn khng th2 gn cho cc k tA.
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
5
o Trong VB, bi5n c th2 +%,c khai bo nh% sau: Dim TenBien, t=c khng
cIn khai bo Ki2u bi5n, hoVc Dim TenBien as Variant khi + ki2u bi5n l
Variant t=c tuZ . VD: Dim x hay Dim x as Variant khi + ta c th2 gn
x=1 hay x=abcv N +y x khng c ki2u bi5n nh)t +Tnh nn trnh dTch tA
hi2u ki2u c?a x khi n +%,c s. d0ng.
o Trong VB, mt bi5n c th2 +%,c s. d0ng m khng cIn khai bo tr%Hc, tuy
nhin +2 trnh gVp lPi khi lVp trnh nn khai bo +Iy +? bi5n tr%Hc khi s.
d0ng. TKt nh)t nn s. d0ng tL kho Option Explicit N +Iu ch%-ng
trnh.(Xem trong cc v d0 N phIn sau).
- GiHi h6n s. d0ng: n5u bi5n khai bo bn trong 1 +o6n ch%-ng trnh vHi tL kho
Dim pha tr%Hc, bi5n + chD c tc d0ng bn trong +o6n ch%-ng trnh +, bi5n nh%
v'y gQi l bi5n c0c b(Local). Ng%,c l6i n5u +%,c khai bo trong phIn General
vHi tL kho Public thay cho Dim, bi5n sM c tc d0ng trong ton khKi ch%-ng
trnh ta gQi l bi5n ton c0c(Global).
- N5u 1 bi5n ton c0c v 1 bi5n c0c b trng tn th bi5n c tc d0ng l bi5n c0c b.
5.2 Hm v ton t> n1i l mt sK hm v ton t. +%,c hP tr, sYn bNi VB: Xem Ph? L?c 2
5.3 Cc c=u trc 0i?u khi@n
a. DoLoop: l mt vng lVp v t'n. cc cu l9nh bn trong DoLoop sM +%,c thAc hi9n
lVp +i lVp l6i mi cho +5n khi gVp l9nh Exit Do.
Do
[DoEvents]
Cc cu l9nh
Loop
;2 trnh bT treo my do r-i vo vng lVp v t'n, c th2 s. d0ng Doevents

b. Do While +i<u ki9n Loop: Trong khi +i<u ki9n cn +ng th cn thAc hi9n cc
cu l9nh bn trong Do v Loop
Do While 0i?u ki9n
[Cc cu l9nh]
[Cc cu l9nh]
Loop
VD: Dim Num
Num=0
Do While Num<10
Msgbox Xin Chao lan: +str(Num),VBOKOnly,DoLoop
Num=Num+1
Loop
Kq: Hp tho6i sM xu)t hi9n 10 lIn cho +5n khi no gi trT ca Num>=10 th thi.

c. Do Until +i<u ki9nLoop: ThAc hi9n cc cu l9nh bn trong cho +5n khi +i<u
ki9n + th\a th dLng.
Do Until 0i?u ki9n
[Cc cu l9nh]
[Cc cu l9nh]
Loop
Ch : Ta c th2 nh'n th)y sA khc bi9t c- bJn gi$a Do While v Do Until l N ch:: trong
khi +i<u ki9n trong Do While l +i<u ki9n +2 thAc hi9n ch%-ng trnh th +i<u ki9n
trong Do Until l6i l +i<u ki9n +2 dLng ch%-ng trnh.




Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
6
d. Cc Vng lVp DoLoop khc:
Do
[cc cu l9nh]
[Exit Do]
[Cc cu l9nh]
Loop [{While | Until} +i<u ki9n ]
C)u trc ny c@ng giKng nh% 2 c)u trc trn tuy nhin sA khc bi9t l N +y cc cu
l9nh thAc hi9n tr%Hc khi ki2m tra +i<u ki9n, nghWa l lun c t nh)t mt lIn cc
cu l9nh +%,c thAc hi9n b)t ch)p +i<u ki9n +ng hay sai.
Ch : Trong cc vng lVp DoLoop, +2 thot kh\i vng lVp ta c th2 s. d0ng cu l9nh
Exit Do.
e. Vng lVp ForNext: LVp l6i mt qu trnh no + theo mt sK lIn + +%,c chD +Tnh.
For counter = start To end [Step step]
[cc cu l9nh]
Next [counter]
VD: Dim i
For i=1 to 10 Step 1
MsgBox Xin Chao lan:+str(i),VBOKOnly,ForNext
Next i
Kq: Hp tho6i sM xu)t hi9n 10 lIn cho +5n khi no gi trT ca i=10 th thi.
Ch : c th2 s. d0ng cu l9nh Exit For +2 thot kh\i vng lVp ForNext

f. Cu l9nh rM nhnh IfthenElse: N5u +i<u ki9n +ng th thAc hi9n cc cu l9nh theo
sau Then, n5u khng sM thAc hi9n cc cu l9nh theo sau Else.
If +i<u ki9n Then [cc cu l9nh] [Else cc cu l9nh khc]
ho9c
If +i<u ki9n Then
[cc cu l9nh]
Else
[cc cu l9nh khc]
End if
VD: Dim x as Single khai bo bi5n x vHi ki2u l Single
x=Rnd(1)*10 cho x mt gi trT ng]u nhin tL 0-10, hm Rnd(1) trJ ra mt gi trT
ng]u nhin tL 0 +5n 1.
If X>5 then MsgBox So Lon,VBOKOnly,IfThen Else MsgBox So
nho,VBOKOnly,IfThen
g. S. d0ng Elseif: ;y l d6ng +i<u ki9n lSng trong +i<u ki9n.
If 0i?u ki9n Then
[cc cu l9nh]
..
[ElseIf 0i?u ki9n-n Then
[cc cu l9nh elseif] ...
[Else
[cc cu l9nh khc ]]
End If
h. C)u trc Select case: C@ng l mt c)u trc rM nhnh s. d0ng nh% l mt ki2u lAa chQn.
Select Case tn bi$n
[Case gi trT-n
[cc cu l9nh-n]] ...
[Case Else
[cc cu l9nh khc]]
End Select
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
7
VD: Dim i
i=Rnd(1)*3
Select case i
Case 0 : MsgBox So 0,VBOKOnly,SelectCase
Case 1 : MsgBox So 1,VBOKOnly,SelectCase
Case 2 : MsgBox So 2,VBOKOnly,SelectCase
Case 3 : MsgBox So 3,VBOKOnly,SelectCase
End Select
i. With ;Ki t%,ng: khi muKn truy xu)t cng lc nhi<u Properties c?a 1 +Ki t%,ng, ng%7i
ta s. d0ng With +Ki t%,ng:
VD: V d0 sau thay +:i cng lc cc thuc tnh Border, Alignment, Font, BackColorc?a
mt +Ki t%,ng TextBox tn l Text1.
With Text1
.BorderStyle=1
.Alignment=2
.BackColor=QBColor(12)
.Font=VNI-Times
End With
j. B]y lPi (Error trapping): b]y lPi l vi9c +on tr%Hc cc lPi c th2 xRy ra +2 h%Hng
ch%-ng trnh vo mt lKi khc, c th2 trnh +%,c lPi +.
On Error Goto Line: N5u c lPi sM nhJy +5n dng Line ngay trong +o6n ch%-ng trnh.
VD: On Error Goto Loi
Open "TESTFILE" For Output As #1
[cc cu l9nh khc ]
Loi:
[cc cu l9nh x. l lPi]
On Error Resume Next: N5u c lPi th b\ qua, nhJy +5n cu l9nh ti5p theo sau. Dng cu
l9nh ny th%7ng khng giJi quy5t lPi tri9t +2, dB lm nJy sinh lPi lin hon r)t kh x. l.
Khi c lHi xEy ra, gi trF nh3n d;ng lHi sJ 147c l4u tL 1Dng vo bi:n Err, nh4 v3y
1= nh3n d;ng lHi v tm ra cch giEi quy:t thch h7p chM c2n tham khEo bi:n Err.
B. V DO L"P TRNH
V d0 ny h%Hng d]n s. d0ng cc +Ki t%,ng c- bJn trong VB nh% : CommandButton,
TextBox, Label.
- KhNi +ng VB, N hp tho6i New Project chQn standard EXE, nh)n Open.
- Mt Project mHi +%,c t6o thnh c tn Project1, ch=a mt Form tn Form1. Trong
trnh +-n File, chQn Save Project, hp tho6i Save File as xu)t hi9n,b6n hy chQn
n-i l%u Project cho mnh, sau + +Vt tn Form l FormVD1, tn Project l VD1. Project
+ +%,c l%u.
- T6o 2 Frame bFng cch chQn v ko, trong c.a sK Properties +Vt thuc tnh name c?a
chng lIn l%,t l FraHello, FraCal v +Vt Caption l: Hello, Calculate.
- Cc control cn l6i +%,c t6o ra theo bJng tm tXt sau:
Control Thuc tnh Gi trT
CommandButton Name
Caption
VT tr
cmdShow
&Show
bn trong FraHello
CommandButton Name
Caption
VT tr
cmdClear
&Clear
bn trong FraHello
TextBox Name
Alignment
Font
Tn Font
TxtHello
3-Center

Times New Roman
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
8
Style
Size
Lock
Text
VT tr
Bold
48
True
b\ trKng
Bn trong FraHello
Frame Name
Caption
VT tr
FraStyle
Select Style
Bn trong FraHello
CheckBox Name
Caption
Value
VT tr
ChkBor
Border
1-Checked
Bn trong FraStyle
CheckBox Name
Caption
Value
VT tr
ChkLock
Lock
1-Checked
Bn trong FraStyle
CheckBox Name
Caption
Value
VT tr
ChkEn
Enable
1-Checked
Bn trong FraStyle
CheckBox Name
Caption
Value
VT tr
ChkVi
Visible
1-Checked
Bn trong FraStyle
OptionButton Name
Caption
Value
VT tr
OptRed
Red
Flase
Bn trong FraColor
OptionButton Name
Caption
Value
VT tr
OptGreen
Green
Flase
Bn trong FraColor
OptionButton Name
Caption
Value
VT tr
OptNBlue
Blue
Flase
Bn trong FraColor
OptionButton Name
Caption
Value
VT tr
OptBlack
Black
True
Bn trong FraColor
Frame Name
Caption
VT tr
FraColor
Select Color
Bn trong FraHello
TextBox Name
Alignment
Text
VT tr
TxtNum1
3-Center
0
Bn trong FraCal
TextBox Name
Alignment
Text
VT tr
TxtNum2
3-Center
0
Bn trong FraCal
TextBox Name TxtSum
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
9
Alignment
Lock
Text
VT tr
3-Center
true
0
Bn trong FraCal
CommandButton Name
Caption
VT tr
cmdCal
&Calculate
bn trong FraCal
Label Name
Caption
vT tr
LblPlus
+
bn trong FraCal
Label Name
Caption
vT tr
LblEqu
=
bn trong FraCal
CommandButton Name
Caption
VT tr
cmdExit
E&xit
bn ngoi Form


Hnh 3: bi@u t3<ng cc Control v giao di9n VD1
Ho6t +ng c?a ch%-ng trnh VD1:
- B6n nh)n nt l9nh Show, mt dng ch$ Hello xu)t hi9n trn TextBox
txtHello, nt l9nh Clear dng xo cc dng ch$ trn txtHello.
- B6n th. click vo TextBox, +nh th. b)t kZ k tA no, b6n th)y khng h< c tc
d0ng, + l v thuc tnh Lock c?a TextBox + +%,c +Vt l True trong lc thi5t k5
giao di9n, thuc tnh ny quy +Tnh TextBox l ReadOnly t=c khng thay +:i
+%,c ni dung c?a TextBox. B\ chQn CheckBox chkLock, th. +nh b)t kZ k tA
no vo TextBox, lc ny + c tc d0ng.
- Ta th. t%-ng tA cho cc CheckBox cn l6i d2 xem k5t quJ.
- Click chQn lIn l%,t vo cc OptionButton Red, Green, Blue, Black b6n sM th)y
mu ch$ N TextBox sM lIn l%,t thay +:i tL Red->Green->Blue v cuKi cng l
Black.
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
10
- Nh'p sK vo cc TextBox TxtNum1, TxtNum2, nh)n nt l9nh Calculate, ch%-ng
trnh sM thAc hi9n cng 2 sK + v k5t quJ hi2n thT N TextBox TxtSum.
- Nt l9nh Exit dng +2 thot kh\i ch%-ng trnh.
- Vi5t l9nh cho cc bi5n cK (Events)
- Double Click vo nt l*nh Exit, theo m9c 1Fnh, Bi:n c5 Click sJ xuCt hi*n, b;n
vi:t dng l*nh sau:
Private Sub cmdExit_Click()
End K5t thc ch%-ng trnh
End Sub


- T4(ng tL vi:t l*nh cho cc bi:n c5 cQa cc 2 nt l*nh Show v Clear nh4
sau:
Private Sub cmdShow_Click()
txtHello.Text = "Hello" khi nt l9nh Show +%,c Click, gn ni dung thuc tnh Text
c?a TextBox l Hello
End Sub

Private Sub cmdClear_Click()
txtHello.Text = "" Xo h5t ni dung trn TextBox
End Sub

- Vi:t l*nh cho cc CheckBox chRn Style:
Private Sub ChkBor_Click()
txtHello.BorderStyle = ChkBor.Value khi CheckBox chkBor +%,c Click, thuc tnh
BorderStyle c?a TextBox +%,c gn bFng gi trT c?a chkBor, chkbor c 2 gi trT l 0: khi
khng c d)u ki2m v 1:khi c d)u ki2m t%-ng =ng vHi +, TxtHello sM c vi<n ngoi hay
khng.
End Sub

Private Sub ChkEn_Click()
If ChkEn.Value = 0 Then txtHello.Enabled = False Else txtHello.Enabled = True
End Sub

Private Sub ChkLock_Click()
If ChkLock.Value = 0 Then txtHello.Locked = False
If ChkLock.Value = 1 Then txtHello.Locked = True
End Sub

Private Sub ChkVi_Click()
If ChkVi = 0 Then
txtHello.Visible = False
Else
txtHello.Visible = True
End If
End Sub


Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
11
- Vi:t l*nh cho cc CheckBox chRn mu :
Private Sub OptBlack_Click()
txtHello.ForeColor = vbBlack Khi b6n Click chQn vo OptionButton ny,b6n sM +Vt
thuc tnh mu ch$ c?a TexbBox l mu +en, N +y vbBlack l mt hFng sK mVc +Tnh c?a
VB, trnh dTch sM tA hi2u + l mu +en. T%-ng tA b6n c@ng c th2 dng cc hFng sK mu
khc +%,c hP tr, sYn nh%: vbRed, vbGreen, vbBlue, vbWhite
End Sub

Private Sub OptBlue_Click()
txtHello.ForeColor = vbBlue
End Sub

Private Sub OptGreen_Click()
txtHello.ForeColor = RGB(0, 255, 0) cc tham sK c?a Hm RGB + +%,c giHi thi9u trong
ph0 l0c
End Sub

Private Sub OptRed_Click()
txtHello.ForeColor = QBColor(12) Hm QBColor c@ng trJ ra mt mu, cc gi trT mu c
th2 xem N bJng d%Hi
End Sub
BEng mu t4(ng Sng cQa hm QBColor
Number Color Number Color
0 Black 8 Gray
1 Blue 9 Light Blue
2 Green 10 Light Green
3 Cyan 11 Light Cyan
4 Red 12 Light Red
5 Magenta 13 Light Magenta
6 Yellow 14 Light Yellow
7 White 15 Bright White
- Vi:t l*nh cho nt l*nh Calculate
Private Sub cmdCal_Click()
Dim x As Double, y As Double, z As Double Khai bo x, y, z l cc bi5n t6m, ki2u bi5n
l Double
x = Val(TxtNum1.Text) hm Val(TxtNum1.Text) ;:i ni dung c?a TextBox TxtNum1
thnh sK rSi gn cho x, ta phJi dng hm Val +2 +:i thnh sK v bJn thn thuc tnh Text
c ki2u d$ li9u l String (chuPi), khng th2 thAc hi9n cc php ton hQc trn String.
y = Val(TxtNum2.Text)
z = x + y ThAc hi9n php cng 2 sK x v y, k5t quJ l%u vo bi5n z
TxtSum = Str(z) ;:i z ra chuPi (String) v gn l6i cho thuc tnh Text c?a TxtSum, N +y
chng ti vi5t TxtSum=Str(z) thAc ch)t phJi l TxtSum.Text=Str(z), bNi v theo mVc +Tnh,
trnh dTch sM hi2u TxtSum l txtSum.Text, nh$ng thuc tnh nh% v'y gQi l thuc tnh
Default.
End Sub
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
12


PHN 2: CC PHT$NG PHP GIAO TIUP MY TNH

* Giao ti:p qua Slot
Khi mt my tnh +%,c tung ra thT tr%7ng th cJ nh sJn xu)t v ng%7i tiu dng +<u ngIm
hi2u l c)u hnh my tnh ch%a hon chDnh, m ty vo tLng m0c +ch s. d0ng c th2 ghp nKi
thm vo cc thi5t bT khc +2 mN rng khJ nOng +p =ng c?a my tnh.
Bn trong my,tnh ngoi cc rnh cXm dng cho card vo/ra (In/Out), card mn hnh, v]n
cn nh$ng rnh cXm +2 trKng. Cc rnh cXm ny +%,c dng khi cIn nKi cc bJn m6ch cXm thm
vo my tnh PC. MPi Slot +<u c ring cc +%7ng d$ li9u (data), c cc +%7ng +Ta chD, cc nguSn
cung c)p 5V, 12V, GND v cc +%7ng +i<u khi2n nh% l CLK, IQR,
V v'y n5u chng ta giao ti5p qua Slot sM giJm +%,c nhi<u linh ki9n, nh% giJm +%,c b nguSn
bn ngoi, dB +i<u khi2n v do + giJm +%,c gi thnh c?a m6ch giao ti5p. ;y l mt %u +i2m
c?a ph%-ng php giao ti5p ny. Ngoi ra, qua Slot ta c th2 gXn thm nhi<u lo6i card 8 bit, 16 bit,
32 bit,
Tuy nhin, ph%-ng php giao ti5p ny c@ng c nhi<u nh%,c +i2m l do card gXn trAc ti5p
trn my nn cIn phJi c mt kch th%Hc tiu chuRn nh)t +Tnh. Card giao ti5p khng c qu nhi<u
linh ki9n, n5u nhi<u th ngoi card giao ti5p ra cIn c thm mt vi card bn ngoi.
* Giao ti:p qua cXng COM
Cch giao ti5p ny +%,c s. d0ng ph: bi5n nh)t. Giao ti5p phJi theo chuRn RS-232, cc bit
d$ li9u nKi ti5p nhau trn mt +%7ng truy<n trn mt +%7ng d]n v th%7ng dng +2 giao ti5p gi$a
my tnh vHi modem v mouse,.v..v. D$ li9u +%,c truy<n +i d%Hi d6ng nKi ti5p vHi mt tKc + c0
th2 do ng%7i l'p trnh quy +Tnh (1200 bps, 2400 bps, 4800 bps, 9600 bps, 14.4 kbps, 28.8 kbps,
33.6 kbps, 56 kbps), chi<u di k tA c th2 l 5, 6, 7 v 8 bit k5t h,p vHi bit start v bit stop, bit
parity (chYn l^) +2 t6o thnh mt frame (khung truy<n).
Ngoi +%7ng truy<n d$ li9u, port giao ti5p ny cn c cc +%7ng +i<u khi2n thu, pht, ki2m
tra lPi. Cch giao ti5p ny cho php truy<n N khoJng cch lHn v khJ nOng chKng nhiBu kh nh\.
MVt khc v +%7ng truy<n l nKi ti5p nn thnh vin th= ba khng th2 tham gia vo cuc trao +:i
thng tin.
_u +i2m lHn nh)t c?a ki2u giao ti5p ny l s. d0ng t +%7ng truy<n, t nhiBu tn hi9u nn c
th2 truy<n qung +%7ng xaNh%ng mVc khc do bJn ch)t l truy<n thng nKi ti5p nn c:ng nKi
ti5p khng +%,c s. d0ng cho nh$ng =ng d0ng th7i gian thAc hay +i<u khi2n song songC mt
giJi php cho v)n +< ny + l s. d0ng c:ng song song.
* Giao ti:p qua cXng my in (cXng song song)
My in +%,c giao ti5p vHi my tnh nh7 vo : cXm 25 chn H pha sau my tnh. ` cXm
ny khng phJi chD dnh ring cho c:ng my in m cn s. d0ng trong cc m0c +ch +o l%7ng v
+i2u khi2n. Qua : cXm ny d$ li9u +%,c truy<n +i song song nn +i khi n cn +%,c gQi l c:ng
ghp nKi song song v v nh% th5 tKc + truy<n d$ li9u c th2 +6t tHi m=c +ng k2.
Bn c6nh 8 bit d$ li9u cn c nh$ng +%7ng d]n tn hi9u khc, t:ng cng ta c th2 trao +:i
mt cch ring bi9t vHi 17 +%7ng d]n tn hi9u bao gSm 12 +%7ng d]n ra v 5 +%7ng d]n vo. BNi
v 8 +%7ng d]n d$ li9u tL D0 +5n D7 (tL chn 2 +5n chn 9) khng phJi lun l +%7ng d]n hai
chi<u nn chng ta chD c th2 chD s. d0ng nh% nh$ng lKi ra. Cc lKi ra khc nh% chn 1 (STORE),
chn 14 (AUTOFEED), chn 16 (INT), chn 17 (SELECT). Khi trao +:i thng tin vHi thng tin
vHi nh$ng my in, cc +%7ng d]n ny c nh$ng thng tin nh)t +Tnh.
Nhn chung giao ti5p qua c:ng my in t%-ng +Ki dB dng v thu'n ti9n, mVc khc do theo
chuRn TTL nn r)t ph h,p cho m0c +ch giao ti5p.



Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
13
A. GIYI THIZU V[ SLOT
1. SL s-p x:p chn trn rnh c-m
c my tnh PC/XT rnh cXm trong my tnh chD c mt lo6i vHi + rng bus l 8 bit v
tun theo tiu chuRn ISA (vi5t tXt tL Industry Standard Architechure). TL my tnh AT trN +i vi9c
bK tr chn trn rnh cXm trN nn ph=c t6p h-n, ty theo tiu chuRn +%,c lAa chQn khi ch5 t6o my
tnh.
Cc lo6i rnh cXm theo nh$ng tiu chuRn khc nhau c th2 k2 ra nh% sau:
Rnh cXm 16 bit theo tiu chuRn ISA (Industry Standard Architechure).
Rnh cXm PS/2 vHi 16 bit theo tiu chuRn MCA (Micro Channel Architechure).
Rnh cXm PS/2 vHi 32 bit theo tiu chuRn MCA (Micro Channel Architechure).
Rnh cXm 32 bit theo tiu chuRn EISA (Extended Industry StandardArchitechure).
Rnh cXm 32 bit theo tiu chuRn VESA VLB (VESA Local Bus Standard).
Rnh cXm 32 bit theo tiu chuRn PCI (Peripheral Component Interconect Standard).
Cho +5n nay phIn lHn cc card ghp nKi dng trong ke thu't +o l%7ng v +i<u khi2n
+<u +%,c ch5 t6o +2 +Vt vo rnh cXm theo tiu chuRn ISA, v v'y sM giHi thi9u chi ti5t h-n v< tiu
chuRn ny.
2. Rnh c-m theo tiu chu\n ISA
Thng th%7ng rnh cXm c 32 +%7ng tn hi9u dng cho m0c +ch thng tin vHi mt
card cXm vo. V< c- bJn cc tn hi9u ny +%,c chia thnh cc +%7ng d]n tn hi9u, +%7ng d]n +Ta
chD v +%7ng d]n +i<u khi2n. BNi v ngay tL my tnh PC/XT + sYn c cc rnh cXm 62 chn ny,
trn + c 8 +%7ng d]n d$ li9u, nn +i khi ng%7i ta c@ng gQi lun rnh cXm 62 chn ny l rnh
cXm 8 bit. ChD nh$ng card 8 bit mHi cXm vo rnh ny +%,c. BJng d%Hi +y chD ra sA sXp x5p cc
chn ra c?a rnh cXm mN rng 8 bit.
BEng 2.1 sL s-p x:p cc chn ra c]a rnh c-m mA rDng 8 bit.

Pha m6ch in Pha linh ki9n
GND B01 A01 /IOCHCK
Reset B02 A02 D7
+5V B03 A03 D6
IRQ2 B04 A04 D5
-5V B05 A05 D4
DREQ2 B06 A06 D3
-12V B07 A07 D2
DA tr$ B08 A08 D1
+12V B09 A09 D0
GND B10 A10 /IOCHRDY
/MEMW` B11 A11 AEN
/MEMR B12 A12 A19
/IOW B13 A13 A18
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
14
/IOR B14 A14 A17
/DACK3 B15 A15 A16
DREQ3 B16 A16 A15
/DACK1 B17 A17 A14
DREQ1 B18 A18 A13
/DACK0 B19 A19 A12
CLK B20 A20 A11
IRQ7 B21 A21 A10
IRQ6 B22 A22 A9
IRQ5 B23 A23 A8
IRQ4 B24 A24 A7
IRQ3 B25 A25 A6
/DACK2 B26 A26 A5
TC B27 A27 A4
ALE B28 A28 A3
+5V B29 A29 A2
OSC B30 A30 A1
TL cch sXp x5p chn ra, r rng l 62 +%7ng tn hi9u nFm N cJ mVt hn thi5c c@ng nh% mVt
sXp dVt linh ki9n. Do + cc bJn m6ch (card) cXm thm vo bao gi7 c@ng l nh$ng card m6ch in
hai mVt. Bn c6nh 8 +%7ng d]n d$ li9u trn card cn c 20 +%7ng +Ta chD tL A0 +5n A19. Trong
lu'n vOn ny chng ta t quan tm +5n cc +%7ng d]n cn l6i. V khng phJi t)t cJ cc cc tn hi9u
+i<u khi2n dng +2 t6o nn mt card mN rng +<u +%,c s. d0ng, nn thng th%7ng ta chD cIn quan
tm +5n cc tn hi9u sau:
BEng 2.2 Cc 14^ng d`n tn hi*u quan tm.
Tn hi9u H%Hng M tJ
Reset LKi ra Sau khi b't my hoVc sau khi ngXt +i9n, +%7ng d]n
Reset sM kch ho6t trong th7i gian ngXn +2 +%a card +
+%,c cXm vo +5n mt tr6ng thi ban +Iu xc +Tnh.

/IOW

LKi ra
Input/Output/Write
Tn hi9u ny sM kch ho6t khi truy nh'p ghi ln mt card
mN rng. M=c th)p chD ra rFng cc d$ li9u c gi trT
+ang ch7 +2 +%a ra N bus d$ li9u. Cc d$ li9u +%,c +n
nh'n bFng s%7n tr%Hc.

Input/Output/Read
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
15

/IOR

LKi ra
M=c th)p nh)t c?a +%7ng d]n +Ta chD ny bo hi9u sA
truy nh'p +Qc trn mt card mN rng. Trong th7i gian
ny cc d$ li9u c gi trT cIn phJi sXp x5p +2 rSi sau +
+%,c +n nh'n bFng s%7n tr%Hc.
ANE LKi ra Address Enable
;%7ng d]n +i<u khi2n ANE dng +2 phn bi9t chu trnh
truy nh'p DMA v chu trnh truy nh'p b x. l. c m=c
cao (High) DMA gim st qua bus +Ta chD v bus d$
li9u. ;%7ng d]n c hi9u lAc N m=c th)p (Low). ;%7ng
d]n ny cIn phJi +%,c s. d0ng cho qu trnh giJi m +Ta
chD bNi card mN rng.
3. SL giEi m 1Fa chM v n5i bus da liu
Vng vo ra (I/O) c?a my tnh PC + chi5m 64 Kbyte c?a b nhH t:ng cng vHi dung l%,ng
tL vi ngn Mbyte trN ln tuZ lo6i my. V v'y, vng I/O c?a mt card mN rng khng +%,c php
bao trm ln vng +Ta chD I/O c?a my tnh. Khi +%a mt card mN rng vo s. d0ng, th vi9c +Iu
tin l phJi l%u tm +5n +i2m ny. BJng d%Hi +y chD ra sA sXp x5p c?a vng +Ta chD I/O c?a my
tnh PC/AT.
BEng 2.3 SL s-p x:p cQa vng 1Fa chM I/O cQa my tnh PC/AT.
ia ch (Hex) vao ra Chuc nang
000-01F Bo dieu khien DMA 1(8232)
020-03F Bo dieu khien ngat (8259)
040-04F Bo phat thoi gian (8254)
060-06F Bo kiem tra ban phm (8242)
070-07F ong ho thoi gian thuc (MC 146818)
080-09F Thanh ghi trang MDA (LS 670)
0A0-0AF Bo dieu khien ngat 2 (8259)
OCH-0CF Bo dieu khien MDA 2 (8237)
0E0-0EF Du tru cho mang mach chnh
0F8-0FF Bo dong xu l 80x87
1F0-1F8 Bo dieu khien da cung
200-20F Cong dung cho tro choi (Game)
278-27F Cong song song 2 (LPT 2)
2B0-2DF Card EGA 2
2E8-2EF Cong noi tiep 4 (COM 4)
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
16
2F8-2FF Cong noi tiep 2 (COM 2)
300-1F Dung cho card mo rong
20-32F Bo dieu khien da cung
60-36F Cong noi mang (LAN)
78-37F Cong song song 1 (LPT 1)
80-38F Cong noi tiep dong bo 2
A0-3AF Cong noi tiep dong bo 1
B0-3B7 Man hnh don sac
C0-3CF Card EGA
D0-3DF Card CGA
E8-3EF Cong noi tiep 3 (COM 3)
F0-3F7 Bo dieu khien da mem
F8-3FF Cong noi tiep 1 (COM 1)

TL bJng ny ta th)y r rng cc +Ta chD 300 +5n 31F (Hex) + +%,c dA phng +2 dng cho
card mN rng. Cc +%7ng d]n +Ta chD +%,c s. d0ng +Ki vHi vng ny l A0 +5n A9. Thng th%7ng
th cc +Ta chD, m d%Hi cc +Ta chD ny my tnh c th2 trao +:i vHi card mN rng, c th2 +Vt N
chnh trn card. By gi7 nhi9m v0 c?a t)m bJn m6ch (card) +%,c ci vo l so snh cc +%7ng d]n
+Ta chD N my tnh vHi cc +Ta chD + +%,c thi5t l'p xem c thKng nh)t khng v thng bo sA +nh
gi N b +i<u khi2n logic. ChD c sA thKng nh)t mt cch chnh xc mHi c th2 ti5n hnh sA trao +:i
thng tin vHi my tnh.

4. Thi:t k: m;ch giao ti:p v'i rnh ISA -8255
4.1 Vi m;ch 8255
Thng th%7ng th trn mt card mN rng c nhi<u khKi ch=c nOng nh%: b bi5n +:i A/D,
bi5n +:i D/A, khKi xu)t v nh'p d$ li9u sK, cc khKi ny +%,c trao +:i d%Hi nh$ng +Ta chD khc
nhau tL my tnh.
Dng +i9n tiu th0 t:ng cng N tr6ng thi tWnh l 120 mA. Th7i gian truy nh'p +Qc cf 250
ns. Th7i gian nghD gi$a hai lIn truy nh'p +2 +Qc hoVc vi5t t nh)t bFng 850 ns.
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
17
8255
34
33
32
31
30
29
28
27
5
36
9
8
35
6
4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10
D0
D1
D2
D3
D4
D5
D6
D7
RD
WR
A0
A1
RESET
CS
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7

Hnh 4 Vi m6ch 8255.
Mt sK +Vc tnh c?a vi m6ch 8255:
* 24 chn I/O l'p trnh +%,c.
* T%-ng thch hon ton TTL.
* T%-ng thch vHi t)t cJ cc b vi x. l Intel.
* Cc chn ring l^ +Vt v xo +%,c.
KhKi vi m6ch 8255 s. d0ng trn mt t)m Card cXm thm vo my tnh PC trong vi9c thu
nh'p +o l%7ng v xu)t ra d$ li9u sK trong vi9c +i<u khi2n qu trnh bi5n +:i A/D. Vi m6ch ny c
cch bK tr nh% trn hnh vM, trong + c ch=a 24 +%7ng d]n lKi vo/ra +%,c x5p thnh 3 c:ng song
song (c:ng A, B, C).
Tnh linh ho6t c?a vi m6ch ny th2 hi9n N khJ nOng l'p trnh. Qua thanh ghi +i<u khi2n,
ng%7i s. d0ng xc +Tnh lo6i ho6t +ng v c:ng no +%,c s. d0ng nh% l lKi vo hoVc lKi ra. Cc
chn ra D0 D7 t6o nn bus d$ li9u hai h%Hng, rng 8 bit. T)t cJ cc d$ li9u khi truy nh'p ghi
hoVc truy nh'p +Qc +%,c d]n qua cc +%7ng d]n ny.
Tr6ng thi logic ghi/+Qc +%,c nh'n bi5t qua cc tn hi9u +i<u khi2n /CS, /RD, /WR.
Mt cuc trao +:i thng tin vHi vi m6ch 8255 c th2 +%,c ti5n hnh khi /CS = 0. khi /RD = 0, cc
tn hi9u c?a c:ng +%,c lAa chQn sM d]n +5n bus d$ li9u v c th2 +%,c gQi bNi cc vi mach m6ch
khc. Khi /WR = 0, th mQi vi9c xJy ra ng%,c l6i. Cc bit +Ta chD A0 v A1 cng vHi cc tn
hi9u ghi v +Qc bo hi9u cho bi5t sM truy nh'p ln c:ng no. BJng chn l d%Hi +y tm tXt nh$ng
k5t lu'n vLa trnh by N trn.
BEng 4.1.1 SL s-p x:p cc Port cQa vi m;ch 8255.
A1 A0 /RD /WR /CS Chuc nang
0 0 0 1 0 Cua (Port) A Bus du lieu
0 1 0 1 0 Cua (Port) B Bus du lieu
1 0 0 1 0 Cua (Port) C Bus du lieu
0 0 1 0 0 Bus du lieu Cua (Port) A
0 1 1 0 0 Bus du lieu Cua (Port) B
1 0 1 0 0 Bus du lieu Cua (Port) C
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
18
1 1 1 0 0 Su ghi vao cua tu dieu khien
X X X X 1
uong dan du lieu o trang thai dien
tro cao (tristate).
X X 1 1 0
uong dan du lieu o trang thai dien
tro cao (tristate).
TL bJng chn l ta th)y +%,c thanh ghi +i<u khi2n +Vt d%Hi +Ta chD bn trong A0 = 1,
A1 = 1. trong mt chu trnh ghi ln thanh ghi +i<u khi2n, ng%7i s. d0ng khgng +Tnh c:ng vo/ra
c@ng nh% ki2u ho6t +ng trong mt tL +i<u khi2n.
Mt m=c High N +%7ng d]n Reset +Vt trN l6i thanh ghi +i<u khi2n v +Tnh nghWa ton
b 24 +%7ng d]n nh% l lKi vo. SA sXp x5p c?a tL +i<u khi2n +%,c m tJ nh% sau:
TL +y ta th)y r rng l 24 +%7ng d]n c?a cc c:ng A, B v C +%,c chia thnh hai
nhm B. T:ng cng c ba ki2u ho6t +ng khc nhau: ki2u (mode) 0, ki2u 1 v ki2u 2. Trong +< ti
ny ki2u 0 +%,c chQn giHi thi9u. Ki2u ho6t +ng ny cho khJ nOng xu)t nh'p d$ li9u mt cch +-n
giJn qua ba c:ng A, B, C.
Controlword (TL +i<u khi2n)

Hnh 5: SA sXp x5p c?a tL +i<u khi2n N vi m6ch 8255.
4.2 Vi m;ch 74HC688
B giJi m +Ta chD 74HC688 so snh cc +%7ng +Ta chD tL A2 +5n A9 xem c giKng vHi +Ta
chD c- bJn +%,c thi5t l'p trn Card mN rng. 74HC688 so snh 2 trong sK 8 bit xem c giKng nhau
khng v khi x5p k< st +Sng nh)t sM t6o ra mt tn hi9u Low N chn th= 19.
Ngoi ra n cn quy +Tnh quy<n s. d0ng mt lKi vo +%,c kch ho6t /G, khi no chn ra
ny cn nFm N m=c cao (High) th tn hi9u ra v]n gi$ m=c logic 1 +c l'p vHi m=c logic k< st.
Bnh th%7ng th chn ny +%,c nKi vHi tn hi9uAEN. ChD khi tn hi9u ny d]n tHi m=c th)p th cc
d$ li9u c gi trT mHi nFm N trn bus.
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
19
G1
COMP
0
P
7
1P=Q
0
Q
7
74HC688
1
2
4
6
8
11
13
15
17
3
5
7
9
12
14
16
18
19

Hnh 6 Vi m6ch 74HC688.
4.3 Vi m;ch 74HC245
B giJi m logic +Jm nh'n +Sng th7i sA +i<u khi2n c?a b +9m bus hai chi<u 74HC245, b
ny nKi cc +%7ng d]n d$ li9u c?a rnh cXm PC vHi cc +%7ng d]n d$ li9u c?a card mN rng. SA
ghp nKi ny l r)t quan trQng, nh7 + cc m=c tn hi9u trn +%7ng d]n d$ li9u khng bT Jnh
h%Nng qu m6nh. N ch=a tm b +9m vHi cc lKi ra ba tr6ng thi(Tristate) +2 trao +:i thng tin
gi$a cc +%7ng d]n bus d$ li9u theo hai h%Hng.
H%Hng +%,c xc +Tnh tL m=c logic N lKi vo DIR: DIR = 0 chuy2n cc d$ li9u tL B
sang A. vi9c chuy2n h%Hng d$ li9u cho php quJn l mt cch +-n giJn nh)t bFng tn hi9u /IOR.
Ta c th2 nKi trAc ti5p vHi chn DIR. ;%-ng nhin ta giJ thi5t rFng c:ng d$ li9u A +%,c nKi vHi
cc +%7ng d$ li9u c?a rnh cXm PC v c:ng d$ li9u B nKi vHi +%7ng d]n d$ li9u c?a card mN rng.
Qua + +Jm bJo rFng b +9m bus 74HC245 chD sXp x5p nh$ng d$ li9u trn bus d$ li9u c?a my
tnh PC, khi my tnh PC thAc hi9n mt sA truy nh'p +Qc.
74HC245
2
3
4
5
6
7
8
9
19
1
18
17
16
15
14
13
12
11
A1
A2
A3
A4
A5
A6
A7
A8
G
DIR
B1
B2
B3
B4
B5
B6
B7
B8

Hnh 7: Vi m6ch 74HC245.
4.4 Vi m;ch 74LS138
74LS138
1
2
3
6
4
5
15
14
13
12
11
10
9
7
A
B
C
G1
G2A
G2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7

Hnh 8: Vi m6ch 74LS138.
Vi m6ch 74HC138 c ba lKi vo lAa chQn: A, B v C. M N cc lKi vo ny sM quy5t
+Tnh lKi ra no trong tm lKi ra (tL 0 +5n 7) m bnh th%7ng nFm N m=c High sM +%,c nKi xuSng
mass. Hai lKi vo kch ho6t N m=c Low (G2A v G2B) v mt lKi vo kch ho6t N m=c High (G1)
sM quy5t +Tnh lKi ra t%-ng =ng vHi m nhT phn sM +%,c nKi xuKng mass hoVc gi$ nguyn N m=c
High. Thng th%7ng ta +Vt chn 4 v 5 ln m=c +i9n p d%-ng cn chn 6 xuKng mass. Cc chn
xc l'p tr6ng thi ny cho php nKi tIng (cascade) mt cch +-n giJn nhi<u vi m6ch vHi nhau.
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
20
4.5 M;ch giao ti:p 8255
Hnh 6.6 chD ra s- +S m6ch +i9n c?a mt giao di9n vo/ra dng cho rnh Slot c?a my
tnh PC. Cc tn hi9u ghi (/IOW) v +Qc (/IOR) c th2 +%,c nKi trAc ti5p vHi cc tn hi9u t%-ng =ng
N vi m6ch 8255. ;Ta chD c- bJn m d%Hi +Ta chD ny m6ch +i9n +%,c trao +:i c th2 +%,c thi5t l'p
N chuy2n m6ch DIP. Chnh m6ch +i9n + ghi tn 4 +Ta chD c- bJn c?a vng vo/ra c?a my tnh
PC.
BEng 4.5.1 8Fa chM cQa Port I\O cQa 8255.

IA CH VAO/RA (I/O)
CHUC NANG
ia ch co ban (Hex) chang han 300 Cua (Port) A
ia ch co ban + 1 chang han 301 Cua B
ia ch co ban + 2 chang han 302 Cua C
ia ch co ban + 3 chang han 303 Thanh ghi dieu khien
Khi c sA +Sng nh)t gi$a +Ta chD c- bJn +%,c thi5t l'p v cc +Ta chD +ang +=ng x5p hng N
rnh cXm PC, vi m6ch 74HC688 sinh ra N chn 19 mt tn hi9u Low, tn hi9u ny kch ho6t vi
m6ch 8255 t%-ng =ng qua +%7ng d]n CS do vi m6ch 74LS138 quy +Tnh.
M6ch logic c?a b giJi m ch=a hai vi m6ch 74HC00 v 74LS138. Ba c:ng NAND c?a vi
m6ch 74HC00 lm cho b +9m bus 74HC245 chD kch ho6t (/G = 0) khi thoJ mn cc +i<u ki9n:
Card mN rng cXm thm vo + trao +:i +%,c (chn 19 c?a vi m6ch 74HC688 N tr6ng thi
Low).
Mt chu trnh +Qc (/IOR = 0) hoVc chu trnh ghi (/IOW = 0) +%,c thAc hi9n.
Khi m chD mt +i<u ki9n khng thoJ mn th chn ra /G c?a vi m6ch 74HC245 v]n gi$
nguyn tr6ng thi l High v b +9m bus dLng l6i N tr6ng thi +i9n trN cao.
AEN
D5
A3
A8
PB41 PB52
PA12
PC62
PB51
PB01
PA6
PB7
PA2
PA52
PA7
D5
PA32
PA21
PA01
PC51
PC5
A4
PA62
PB02
D0
D7
PB62
PB42
PC02
PA1
PA11
PC42
A8
PB6
D0
PB7
U1
8255
34
33
32
31
30
29
28
27
5
36
9
8
35
6
4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10
D0
D1
D2
D3
D4
D5
D6
D7
RD
WR
A0
A1
RESET
CS
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
U2
8255
34
33
32
31
30
29
28
27
5
36
9
8
35
6
4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10
D0
D1
D2
D3
D4
D5
D6
D7
RD
WR
A0
A1
RESET
CS
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
PB11
PB51
PB42
AEN
PA41
PA61
D6
D4
PA21
D3
PA72
PB32
PC21
PB71
PB32
GND
PB5
PB4
U7
74HC688/SO
1 19
20
3
5
7
9
12
14
16
18
2
4
6
8
11
13
15
17
OE P=Q
VCC
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
P0
P1
P2
P3
P4
P5
P6
P7
D3
PC21
PC62 PB21
PA51
PB5
PB62
VCC
PA41
D3
VCC
V
C
C
A5
A1
PC7
D2
PC11
D1
PA3
JP2
HEADER 12X2
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
21 22
23 24
PC0
A2
PC32
PC0
D0
PC12
GND
D1
D7
PA61
PC61
PC01
PB4
PB71
PB31
A4
PB61
D7
D4
PC7
A5
PB12
PA2
A9
PC22
PC4
PB12
PC51
PC02
PC3
PA22
PA4
D5
PA0
PC12
PC2
PB6
PC22
A9
A1
U6B
74HC00
4 5
6
14 7
SW1
SWDIP-8
1
2
3
4
5
6
7
8
16
15
14
13
12
11
10
9
U4
74HC245
20
2
3
4
5
6
7
8
9
18
17
16
15
14
13
12
11
1
19
VCC
A1
A2
A3
A4
A5
A6
A7
A8
B1
B2
B3
B4
B5
B6
B7
B8
DIR
OE
PB11
J1
PC62
B1
B2
B3
B4
B5
B6
B7
B8
B9
B10
B11
B12
B13
B14
B15
B16
B17
B18
B19
B20
B21
B22
B23
B24
B25
B26
B27
B28
B29
B30
B31
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
A16
A17
A18
A19
A20
A21
A22
A23
A24
A25
A26
A27
A28
A29
A30
A31
GND
RESDRV
+5V
IRQ9
-5V
DREQ2
-12V
-0WS
+12V
GND
-SMEMW
-SMEMR
-IOW
-IOR
-DACK3
DREQ3
-DACK1
DREQ1
-REFSH
SYSCLK
IRQ7
IRQ6
IRQ5
IRQ4
IRQ3
-DACK2
TC
ALE
+5V
14.3MHZ
GND
-IOCHCK
D7
D6
D5
D4
D3
D2
D1
D0
IOCHRDY
AEN
A19
A18
A17
A16
A15
A14
A13
A12
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
A0
PB31
PC01
D3
VCC
D1
D7
D7
PB01
A0
PA42
PC41
PC11
D2
JP1
HEADER 12X2
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
21 22
23 24
PB72
PB22
D4
A7
PB02
D2
A7
PA6
PA31
PC72
PB2
D2
PA3
PC32
PB1
PA32 D2
PC31
A0
PC1
PA71
PA22
PB21
GND
U6C
74HC00
9 10
8
14 7
PC6
PB3
PA4
A2
PA5
A3
D4
U6A
74HC00
1
2
3
14
7
PC52
PA51
PB41
D5
PC6
PA12
GND
D0
D6
PC31
PC3
PA02
PA1
PC61
A1
PA71
PB0
D5
PB72
PB52
D3
A0
PC71
PA5 D6
PB2
PC42 PC41
PC71
U5
74LS138
1
2
3
6
4
5
15
14
13
12
11
10
9
7
A
B
C
G1
G2A
G2B
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
PA01
PB61
PB22
U3
8255
34
33
32
31
30
29
28
27
5
36
9
8
35
6
4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10
D0
D1
D2
D3
D4
D5
D6
D7
RD
WR
A0
A1
RESET
CS
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
PA52
PB0
PB1
D3
D1
PC5
PA11
GND
PC52 A6
PA31
A1
PA0
PA62
D0
D6
PA42
PA02
PA72
PC2
PC72
A6
D1
D6
PB3
PA7
JP3
HEADER 12X2
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
21 22
23 24
PC1
PC4
D4

Hnh 8: Card giao ti5p 8255.
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
21
B. GIAO TIUP QUA CbNG NeI TIUP (COM):
Trn cc my tnh thng th%7ng c +5n 2 hoVc th'm ch 3 c:ng nKi ti5p RS-232, ta gQi l
COM1, COM2 v COM3, trong + COM1 +%,c s. d0ng cho chut ( khng nh)t thi5t) do + lun
c t nh)t mt c:ng COM cn trKng c th2 ph0c v0 cho cc m0c +ch ghp nKi khc.
C:ng nKi ti5p trn thAc t5 c 2 lo6i, lo6i 25 chn v lo6i 9 chn. Trong khi cc c:ng 9 chn
c th2 +%,c tm th)y trong hIu h5t cc my tnh sJn xu)t gIn +y th lo6i c:ng 25 chn r)t hi5m.
V< mVt ch=c nOng, hai lo6i c:ng ny hon ton t%-ng =ng.

Hnh 9: hai lo6i c:ng nKi ti5p thng d0ng
D%Hi +y l bJng tm tXt ch=c nOng c?a cc chn trn 2 lo6i c:ng nKi ti5p.
BEng B1: chSc nfng cc chn A cXng n5i ti:p
Lo;i 25 chn
(Pin)
Lo;i 9 chn
(Pin)
Vi:t t-t Tn gRi ChSc nfng
Pin 2 Pin 3 TxD Transmit Data Truy<n d$ li9u
Pin 3 Pin 2 RxD Receive Data Nh'n d$ li9u
Pin 4 Pin 7 RTS Request To Send
Yu cIu g.i, b truy<n
+Vt +%7ng ny ln m=c
ho6t +ng khi sYn sn
truy<n d$ li9u
Pin 5 Pin 8 CTS Clear To Send
Xa +2 g.i , b nh'n +Vt
+%7ng ny ln m=c ho6t
+ng +2 thng bo cho b
truy<n l n sYn sn nh'n
d$ li9u
Pin 6 Pin 6 DSR Data Set Ready
D$ li9u sYn sn, nh% CTS
nh%ng n +%,c +i<u
khi2n bNi b truy<n
Pin 7 Pin 5 SG Signal Ground Mass c?a tn hi9u
Pin 8 Pin 1 CD Carrier Detect
Pht hi9n tn hi9u mang
d$ li9u
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
22
Pin 20 Pin 4 DTR Data Terminal Ready ;Iu cuKi d$ li9u sYn sng
Pin 22 Pin 9 RI Ring Indicator
Bo chung, cho bi5t l
b nh'n +ang nh'n tn
hi9u rung chung.
Vi9c trao +:i d$ li9u qua c:ng nKi ti5p trong cc tr%7ng h,p thng th%7ng +<u qua +%7ng
d]n truy<n nKi ti5p TxD v +%7ng d]n nh'n RxD, cc +%7ng d]n cn l6i +ng vai tr ph0 tr, khi
thi5t l'p v khi +i<u khi2n cuc truy<n, cc +%7ng d]n ny gQi l cc +%7ng d]n bXt tay. Tuy nhin
cc +%7ng d]n bXt tay l6i c th2 +%,c +i<u khi2n trAc ti5p, +i<u ny t6o cho ta mt khJ nOng giao
ti5p khc thng qua c:ng nKi ti5p.
V< +Vt tr%ng +i9n, vHi c:ng nKi ti5p, tr6ng thi LOW t%-ng =ng vHi m=c +i9n p +12V cn
tr6ng thi HIGH t%-ng =ng vHi +i9n p -12V, cc +%7ng d]n lKi ra c th2 cung c)p dng +i9n tL
10mA +5n 20mA. MVc khc, cc m6ch lKi vo thng th%7ng trong my tnh PC nh'n d6ng mt
m=c +i9n p d%Hi 1V nh% l m=c LOW, nn c:ng nKi ti5p c@ng +%,c php lm vi9c vHi m=c TTL
(0V/5V).
1. Giao ti:p v'i cc 14^ng d`n ph? tr7:
Nh% + +< c'p trn, cc +%7ng d]n ph0 tr, tuy chD +ng vai tr bXt tay trong mt cuc truy<n
nKi ti5p nh%ng l6i c khJ nOng truy c'p trAc ti5p, v v'y s. d0ng cc +%7ng d]n ph0 tr, gip ta mN
rng sK +%7ng d]n giao ti5p vHi my tnh vKn r)t t.
Cc +%7ng d]n ph0 tr, +%,c nKi vHi cc thanh ghi trong vi m6ch UART 8250 (mt lo6i vi
m6ch +i9n t. +i<u khi2n v ki2m sot truy<n thng theo chuRn RS-232 + +%,c thi5t k5 sYn trong
cc my tnh). ;2 c th2 truy c'p cc +%7ng d]n ny tr%Hc h5t cIn phJi bi5t +Ta chD c?a cc +%7ng
ny trong my tnh.
Trong UART 8250, cc +%7ng d]n CTS, DSR, RI, DCD l cc +%7ng d]n lKi vo nFm trong
thanh ghi tr6ng thi m+em c +Ta chD bFng +Ta chD c- sN cng 6, cn cc +%7ng d]n DTS, RTS l
cc +%7ng d]n lKi ra nFm trong thanh ghi +i<u khi2n m+em c +Ta chD bFng +Ta chD c- sN cng 4.
Trong my tnh, t)t cJ cc thanh ghi +%,c quJn l giKng nh% cc nhH trong vng vo/ra, my tnh
tm th)y cc +Ta chD thanh ghi trong mt vng +%,c sXp x5p cho mPi giao di9n, +Ta chD +Iu tin c?a
n +%,c gQi l +Ta chD c- sH BA(Base Address). Trong cc my tnh PC, BA c?a cc c:ng nKi ti5p
th%7ng +%,c phn b: nh% bJng sau:
COM1 COM2 COM3 COM4
BA 3F8 2F8 3E8 2E8
D%Hi +y l sA sXp x5p cc +%7ng d]n ph0 tr, trong cc thanh ghi:
* Thanh ghi +i<u khi2n m+em (lKi ra ): BA+4
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
RTS DTR
* Thanh ghi tr6ng thi m+em (lKi vo ): BA+6
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
DCD RI DSR CTS
Cc v d0 c0 th2 truy c'p cc +%7ng d]n ph0 tr, sM +%,c trnh by trong phIn sau c?a ti li9u
ny.
2. Truy<n nh3n n5i ti:p dF bD:
Vi9c truy<n nh'n nKi ti5p dT b l ki2u truy<n trong + d$ li9u +%,c +ng gi v truy<n +i
theo nh$ng frame truy<n + +%,c quy +Tnh tr%Hc, c)u trc 1 frame truy<n nKi ti5p chuRn th%7ng
bao gSm 1 bit Start (S) , 8 bit d$ li9u (D), 1 bit ki2m tra chYn l^ (P) v 1 bit Stop, tuy nhin do
+i<u ki9n hay thi quen, ng%7i ta c th2 quy +Tnh nh$ng d6ng frame truy<n khc m trong + c
th2 khng c +Iy +? cc thnh phIn nh% mt frame truy<n chuRn, vi9c quy +Tnh ny +%,c ng%7i
truy<n quy +Tnh ngay +Iu qu trnh truy<n. ;2 nh'n +ng d$ li9u truy<n, ng%7i nh'n cIn phJi bi5t
c)u trc frame truy<n + +%,c g.i, thng th%7ng, n5u vi9c truy<n v nh'n +%,c thAc hi9n bNi cng
mt ng%7i th vi9c trn khng phJi l mt trN ng6i +ng k2. Khi truy<n mt d$ li9u lHn, d$ li9u ny
+%,c chia nh\ thnh tLng phIn nh\ (th%7ng l tLng Byte), +Vt vo frame truy<n v g.i +i, tKc +
truy<n ph0 thuc vo thng sK Baudrate, Baudrate l sK bit d$ li9u +%,c truy<n hay nh'n trong 1s.
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
23
;2 c th2 truy<n nh'n, tr%Hc h5t cIn k5t nKi 2 thi5t bT +Iu cuKi d$ li9u DTE (Data Terminal
Equipment), cc DTE c th2 l cc my tnh PC hay cc vi m6ch vi x. l c hP tr, truy<n thng
nKi ti5p. Ph%-ng php k5t nKi +-n giJn nh)t +%,c trnh by nh% s- +S sau:

Hnh 10: K5t nKi trAc ti5p 2 DTE
Mt v)n +< th%7ng mXc phJi khi truy<n nh'n bFng c:ng nKi ti5p l trong khi hIu h5t cc thi5t
bT +i9n t. sK t%-ng thch vHi m=c logic TTL hay CMOS (0V/5V) th chuRn nKi ti5p RS-232 l6i c
m=c logic khc hgn (-10V/10V hay -12V/12V), v v'y vi9c tr%Hc tin phJi lm khi k5t nKi cc thi5t
bT ny vHi cc c:ng RS-232 l phJi chuy2n +:i m=c tn hi9u RS-232 trN v< TTL hay CMOS, may
mXn l +i<u ny c@ng +%,c thAc hi9n kh dB dng bFng vi m6ch MAX232. V d0 muKn giao ti5p
gi$a 1 my tnh PC vHi mt vi +i<u khi2n hQ 89C51 bFng c:ng nKi ti5p th phJi s. d0ng vi m6ch
chuy2n +:i MAX232 ghp nKi 2 +Ki t%,ng ny. Ph%-ng php ghp nKi bFng MAX232 +%,c trnh
by trong hnh d%Hi.


Hnh 11: Tn hi9u nKi ti5p TLL/CMOS v RS-232

Hnh 12: S- +S ghp nKi MAX232


Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
24
C. GIAO TIUP QUA CbNG MY IN- CbNG SONG SONG (LPT)
C:ng my in hay cn gQi l c:ng LPT, c:ng song song hoVc giao di9n Centronic c mVt N
hIu h5t cc my tnh PC. C)u trc c?a c:ng song song r)t +-n giJn vHi tm +%7ng d]n d$ li9u, mt
+%7ng d]n mass chung, bKn +%7ng d]n +i<u khi2n +2 chuy2n cc d$ li9u tHi my in v nOm +%7ng
d]n tr6ng thi +2 truy<n cc thng tin v< tr6ng thi c?a my in ng%,c trN l6i my tnh. T)t cJ cc
+%7ng d]n c?a c:ng ny +<u t%-ng thch TLL. Trn cc my tnh PC thng th%7ng cc c:ng my
in c +Ta chD c- sN(Base Address: BA) l :3BCH, 378H,278H,2BCHtrong + +Ta chD 378H l +Ta
chD th%7ng gVp nh)t N cc my.

Hnh 13 S- +S chn v cc thanh ghi trn c:ng my in
Cc +%7ng d]n c?a c:ng my in +%,c nKi vHi ba thanh ghi 8 bit khc nhau: thanh ghi D$
li9u(Data), thanh ghi tr6ng thi(Status) v thanh ghi +i<u khi2n(Control).
- Thanh ghi d$ li9u: c +Ta chD bFng +Ta chD c- sN, thanh ghi ny c 8 +%7ng d]n vHi
giao di9n hai h%Hng khng +Jo, nghWa l c th2 xu)t d$ li9u tL my tnh ra bn
ngoi v c th2 nh'n tn hi9u tL bn ngoi vo thng qua thanh ghi ny, thanh ghi
Data +%,c nKi vHi cc chn tL 2 9 trn c:ng my in, tuy nhin khi =ng d0ng
trong +i<u khi2n v +o l%7ng cIn ch mt +Vc +i2m l khng phJi b)t kZ thanh
ghi Data trn cc c:ng my no c@ng l giao di9n hai h%Hng, thAc t5 cho th)y +a
sK trn cc c:ng my in thanh ghi ny chD c th2 +%,c s. d0ng +2 xu)t d$ li9u, t=c
l chD c mt h%Hng.
- Thanh ghi tr6ng thi: c +Ta chD bFng +Ta chD c- sN +1, l mt thanh ghi 8 bit
nh%ng thAc t5 chD c 5 bit (5 bit cao) +%,c nKi vHi cc chn c?a c:ng bao gSm cc
chn 10,11,12,13,15; s- +S sXp x5p cc chn c th2 xem trn hnh trn. Thanh ghi
tr6ng thi chD c th2 +%,c truy xu)t theo mt h%Hng. Trong cc +%7ng d]n c?a
thanh ghi ny, +%7ng d]n S7, t=c chn 11 l +%7ng d]n +Jo.
- Thanh ghi ;i<u khi2n: +Ta chD bFng +Ta chD c- sN +2, c@ng l mt thanh ghi giao
di9n hai h%Hng, c 4 bit th)p +%,c nKi vHi cc chn 1, 14,16, 17 trong + +a sK l
cc +%7ng d]n +Jo ( chD trL bit C2, chn 16).
Tm l6i, vHi mt c:ng LPT km l t%Nng nh)t, ta c@ng c t nh)t 12 +%7ng tn hi9u v< v 9
+%7ng xu)t tn hi9u. Con sK ny l +? cho nh$ng =ng d0ng giao ti5p nh\ v vLa. Trong gio trnh
ny sM trnh by ch? y5u cc giao ti5p bFng c:ng LPT.




Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
25
PHN 3: L"P TRNH GIAO TIUP
A. Cc th4 vi*n lin k:t 1Dng-Dynamic Link Library(DLL)
1. Khi ni*m th4 vi*n lin k:t 1Dng
DLL l cc th% vi9n lin k5t +ng ch=a cc hm v th? t0c m ta c th2 s. d0ng +2 b: sung
cho nh$ng hm cn thi5u c?a mt ngn ng$ l'p trnh.
C hai lo6i DLL l Windows API DLL v Third-Party DLL
- Windows API DLL l nh$ng t'p tin DLL + +%,c ci sYn theo cch9 +i<u hnh
Windows. Cc t'p tin Windows API DLL c nh$ng hm, th? t0c +%,c b: sung
mt sK ch=c nOng m VB ch%a c.
- Ngoi cc Windows API DLL, cc ch%-ng trnh trn Windows c th2 phJi s.
d0ng cc DLL khc ( do cc cng ty hay c nhn khc Microsoft pht tri2n) gQi l
ccThird-Party DLL. Khng nh% ccWindows API DLL , cc Third-Party DLL
cIn +%,c ci ln +Wa c=ng tr%Hc khi s. d0ng lIn +Iu. cc Third-Party DLL th%7ng
+%,c t6o ra bFng ngn ng$ C.
Vi9c s. d0ng ccDLL c nhi<u %u +i2m so vHi cc th% vi9n tWnh (th%7ng gQi l Package):
DLL ti5t ki9m chP trKng trn +Wa.
DLL ti5t ki9m b nhH bFng cch s. d0ng ke thu't chia s^ hay cn gQi l nh x6 b nhH.
Vi9c gf rKi ( Debug) trN nn dB dng h-n bNi cc lPi +%,cc l'p trong DLL duy nh)t.
DLL lun t\ ra hi9u quJ khi + an ton c?a n +%,c +Jm bJo.
Khai bo DLL
;2 c th2 s. d0ng cc hm, th? t0c trong mt DLL, tr%Hc h5t phJi khai bo cc hm, th?
t0c +. Cng th=c khai bo chung trong VB l:
[Public| Private] Declare Sub|Function name Lib Libname [Alias aliasname]
vd: Public Declare Function PortIn Lib "io.dll" (ByVal Port As Integer) As Byte
Trong +
Public : s. d0ng ton c0c
PortIn: tn hm
Io.dll: tn DLL
2. Port.dll v IO.dll
Mt v)n +< +Vc bi9t kh khOn khi lm vi9c trong mi tr%7ng Windows l ti5p c'n +5n
ccgiao di9n c?a my tnh PC. thAc t5 cho th)y c mt bi9n php hi9u quJ l t6o ra mt t'p tin
DLL c khJ nOng s. d0ng trong nhi<u =ng d0ng.
Trong DOS, mPi ngn ng$ l'p trnh +<u c cc l9nh dng cho c:ng, th%7ng +%,cgQi tXt l
l9nh c:ng ( trong GWBASIC l INP v OUT, vHi Turbo Pascal l PORT[]) nn c th2 s. d0ng
cc l9nh ny +2 trao +:i trAc ti5p ln ton b phIn c=ng c?a PC. Trong Windows 3.1, sA h6n ch5 N
m=c + t%-ng +Ki, v]n c th2 v%,t qua.
Trong mi tr%7ng Windows95,98 v)n +< truy nh'p trAc ti5p tHi cc c:ng trN nn kh khOn
h-n. VHi cc phin bJn VB5, VB6 hIu nh% khng cn khJ nOng truy nh'p trAc ti5p tHi cc c:ng.
Windows NT, 2000, XP hon ton quay l%ng l6i vHi ng%7i vi5t ch%-ng trnh nghi9p d%.
h9 thKng +%,c thi5t k5 sao cho c th2 ho6t +ng trong ch5 + bJo v9 v khng c cch no +2 tuZ
ti9n truy nh'p tHi phIn c=ng. chD c mt khJ nOng cn b\ ng\ l s. d0ng cc t'p tin DLL.
T9p PORT.DLL l mt DLL +%,c vi5t ph0c v0 cho vi9c truy nh'p c:ng trong cc mi
tr%7ng Windows. T9p ny bao gSm nh$ng ch=c nOng sau:
MN ra cc giao di9n
Truy<n d$ li9u nKi ti5p
Ti5p c'n +5n cc +%7ng d]n N giao di9n
Nh'p vo v xu)t ra cc c:ng.
;o v +Tnh th7i +5n ms, us
Truy nh'p +5n card m thanh
Truy nh'p +5n c:ng tr ch-i.
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
26
T9p PORT.DLL c th2 +%,c s. d0ng trong nhi<u ngn ng$ l'p trnh khc nhau trong nhi<u
phin bJn khc nhau c?a h9 +i<u hnh Windows. Tuy nhin trong ni dung gio trnh ny chD +<
c'p +5n vi9c s. d0ng PORT.DLL trong VB.
;Ki vHi cc phin bJn Windows NT, 2000, XPcc hm nh'p vo v xu)t ra cc c:ng c?a
t9p PORT.DLL khng s. d0ng +%,c. V v'y chng ti th%7ng s. d0ng thm mt t9p DLL khc c
khJ nOng khXc ph0c v)n +< trn l IO.DLL.
Cc khai bo c?a cc hm v th? t0c trong cc DLL trn + +%,c chng ti trnh by trong
mt t'p tin c tn io_port.dll, ng%7i s. d0ng c th2 add t'p tin ny vo cc =ng d0ng c?a
mnh +2 s. d0ng hoVc chp l6i cc khai bo d%Hi +y vo mt Module mHi. Nh%ng tr%Hc h5t +2
s. d0ng cc DLL ny, nh% + +%,c +< c'p, ng%7i dng phJi ci +Vt, hay chp 2 t'p tin PORT.DLL
, IO.DLL vo th% m0c h9 thKng (\WINDOWS\System +Ki vHi Windows 98 , v
\WINDOWS\System32 +Ki vHi Windows XP hay \WINNT\System32 +Ki vHi Windows
2000).

Option Explicit
Declare Function OPENCOM Lib "PORT.DLL" (ByVal a$) As Integer
Declare Sub CLOSECOM Lib "PORT.DLL" ()
Declare Sub SENDBYTE Lib "PORT.DLL" (ByVal b%)
Declare Function READBYTE Lib "PORT.DLL" () As Integer
Declare Sub DTR Lib "PORT.DLL" (ByVal b%)
Declare Sub RTS Lib "PORT.DLL" (ByVal b%)
Declare Sub TXD Lib "PORT.DLL" (ByVal b%)
Declare Function CTS Lib "PORT.DLL" () As Integer
Declare Function DSR Lib "PORT.DLL" () As Integer
Declare Function RI Lib "PORT.DLL" () As Integer
Declare Function DCD Lib "PORT.DLL" () As Integer
Declare Sub DELAY Lib "PORT.DLL" (ByVal b%)
Declare Sub TIMEINIT Lib "PORT.DLL" ()
Declare Sub TIMEINITUS Lib "PORT.DLL" ()
Declare Function TIMEREAD Lib "PORT.DLL" () As Long
Declare Function TIMEREADUS Lib "PORT.DLL" () As Long
Declare Sub DELAYUS Lib "PORT.DLL" (ByVal L As Long)
Declare Sub REALTIME Lib "PORT.DLL" (ByVal i As Boolean)
Declare Sub OUTPORT Lib "PORT.DLL" (ByVal a%, ByVal b%)
Declare Function INPORT Lib "PORT.DLL" (ByVal p%) As Integer
Declare Function JOYX Lib "PORT.DLL" () As Long
Declare Function JOYY Lib "PORT.DLL" () As Long
Declare Function JOYZ Lib "PORT.DLL" () As Long
Declare Function JOYW Lib "PORT.DLL" () As Long
Declare Function JOYBUTTON Lib "PORT.DLL" () As Integer
Declare Function SOUNDSETRATE Lib "PORT.DLL" (ByVal Rate%) As Integer
Declare Function SOUNDGETRATE Lib "PORT.DLL" () As Integer
Declare Function SOUNDBUSY Lib "PORT.DLL" () As Boolean
Declare Function SOUNDIS Lib "PORT.DLL" () As Boolean
Declare Sub SOUNDIN Lib "PORT.DLL" (ByVal Puffer$, ByVal Size%)
Declare Sub SOUNDOUT Lib "PORT.DLL" (ByVal Puffer$, ByVal Size%)
Declare Function SOUNDGETBYTES Lib "PORT.DLL" () As Integer
Declare Function SOUNDSETBYTES Lib "PORT.DLL" (ByVal b%) As Integer
Declare Sub SOUNDCAPIN Lib "PORT.DLL" ()
Declare Sub SOUNCAPDOUT Lib "PORT.DLL" ()


Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
27
Public Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Value As Byte)
Public Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)
Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)
Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer
Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As
Boolean
Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean)
As Boolean
Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As
Boolean
Declare Function IsDriverInstalled Lib "IO.DLL" () As Boolean

2.1. MDt s5 hm, thQ t?c 1ng l4u trong Port.dll:
OPENCOM : mN c:ng Com, cc c:ng Com phJi +%,c mN tr%Hc khi s% d0ng.
CLOSECOM: +ng c:ng Com
SENDBYTE: xu)t 1 byte d$ li9u ra c:ng Com
READBYTE: nh'n 1 byte d$ li9u tL c:ng Com
DTR:Set, Reset chn DTR c?a C:ng Com
RTS:Set, Reset chn RTS c?a C:ng Com
TXD:Set, Reset chn TXD c?a C:ng Com
CTS:Set, Reset chn CTS c?a C:ng Com
DSR:Set, Reset chn DSR c?a C:ng Com
RI: Set, Reset chn RI c?a C:ng Com
DCD: Set, Reset chn DCD c?a C:ng Com
DELAY: t6m dLng trong 1 khoJng th7i gian tnh bFng mili giy
DELAYUS:t6m dLng trong 1 khoJng th7i gian tnh bFng micro giy
TIMEINIT: bXt +Iu +5m th7i gian (mili giy)
TIMEREAD: +Qc khoJng th7i gian + +5m (mili giy)
TIMEINITUS:bXt +Iu +5m th7i gian (micro giy)
TIMEREADUS:+Qc khoJng th7i gian + +5m (micro giy)
2.2. MDt s5 hm, thQ t?c 1ng l4u trong IO.dll
PortOut : xu)t 1 byte d$ li9u ra c:ng
PortIn: nh'p 1 byte d$ li9u tL c:ng
PortWordOut: xu)t 2 byte d$ li9u ra c:ng
PortWordIn: nh'p 2 byte d$ li9u tL c:ng
PortDWordOut: xu)t 4 byte d$ li9u ra c:ng, vHi c:ng LPT, l9nh ny cho php xu)t d$
li9u ra +Sng th7i t)t cJ cc thanh ghi.
PortDWordIn: nh'p 4 byte d$ li9u tL c:ng,vHi c:ng LPT, l9nh ny cho php nh'p d$
li9u vo +Sng th7i tL t)t cJ cc thanh ghi.
SetPortBit : set (m=c 1) 1 chn c?a cc c:ng
ClrPortBit: xo (m=c 0) 1 chn c?a c:ng
NotPortBit: l)y b 1 chn c?a c:ng
GetPortBit: nh'p v< tr6ng thi c?a 1 chn no +)y.
Vi9c s. d0ng c0 th5 cc hm trn sM +%,c trnh by trong cc v d0 giao ti5p N cc phIn sau



Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
28
B. Cc v d? l3p trnh giao ti:p my tnh.
1. Giao ti:p qua cXng LPT:
Ki2m tra tnh 2 h%Hng c?a thanh ghi Data:
V d0 ny nhFm ki2m tra xem cc +%7ng Data trn c:ng LPT N my tnh c?a b6n c hP tr,
giao di9n hai h%Hng khng, +i<u ny th't sA cIn thi5t cho vi9c xy dAng cc =ng d0ng giao ti5p
qua c:ng LPT sau ny.
- KhNi +ng VB, t6o mt project standard EXE mHi.
- Trong c.a sS Properties, +:i tn Form thnh frmTestData, +:i Caption Form thnh
DIRECTION TEST. +Vt thuc tnh BorderStyle l 1-Fixed Single.
- ;Vt mt +i<u khi2n Frame ln Form, tn Frame1, +:i Caption thnh DATA LPT.
- ;Vt mt Shape ln Frame1, tn Shape1, +:i thuc tnh Fillstyle thnh 0-Solid, thuc
tnh Shape thnh 3-Circle, thuc tnh Index=0, Width=375, Height=375
- ;Vt mt Label ln Shape1, tn lblBit, b6n ch phJi +Vt Label ny kht ln Shape1,
+:i thuc tnh BackStyle thnh 0-Stranparent, Alignment=3-Center, b\ trKng Caption,
+Vt Index=0, chQn Font l Times New Roman vHi size=16.
- Click chQn Shape1 v lblBit cng lc (gi$ Phm Ctrl), Copy v Paste 7 lIn ln Frame1,
ta c 7 Shape1 v 7 lblBit trn Frame vHi cc chD sK Index tL 0 +5n 7, bK tr cc Shape1
v Label thnh hang ngang sao cho mPi Label nFm trn mPi Shape. LIn l%,t +:i
Caption tLng lblBit thnh chD sK c?a chng.
- ;Vt 1 Label ln Frame1, +:i tn thnh lblValue, Caption b\ trKng.
- ;Vt ln Form mt CheckBox, +:i tn thnh chkDirection, Caption thnh OUT/IN.
- ;Vt ln Form mt CommandButton, +:i tn thnh cmdExit, Caption thnh &Exit.
- CuKi cng, +Vt ln Form mt Timer, +:i thuc tnh interval=10.

Hnh 14:Giao di9n ch%-ng trnh vLa thi5t k5
* Nh% v'y ta vLa thi5t k5 xong phIn giao di9n, chQn file/save project +2 l%u project l6i.
L%u Form vHi tn frmTestData, project tn TestDirection. ti5p theo ta +Vt code vo ch%-ng trnh.
- ChQn Project/Add Module, chQn Tab existing +2 chn Module io_port.bas vo
project, +y l Module ch=a cc khai bo cho cc l9nh c trong th% vi9n port.dll v
IO.dll.
- ;Vt Option Explicit vo khai bo chung (General - Declarations)
- DoubleClick vo CommandButton cmdExit +2 xu)t hi9n c.a sK View code, vi5t code
sau:
Private Sub cmdExit_Click()
End
End Sub
- ;Vt code sau vo Event Form_Load()
Private Sub Form_Load()
Dim ValIn As Byte
Dim Chk As Byte
ValIn = PortIn(&H378)
Chk = (ValIn And 32) / 32
Me.chkDirection.Value = Chk
End Sub


Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
29
- ;Vt vo Timer1_Timer() code sau:
Private Sub Timer1_Timer()
Dim BitVal As Byte
Dim ValIn As Byte
Dim Mask As Byte
Dim i As Byte
ValIn = PortIn(&H378)
For i = 0 To 7
Mask = 2 ^ i
BitVal = (ValIn And Mask) \ Mask
Me.Shape1(i).FillColor = QBColor(BitVal * 2 + 10)
Next i
Me.lblValue.Caption = ValIn
End Sub
- Vi5t code cho CheckBox
Private Sub chkDirection_Click()
If Me.chkDirection.Value Then
SetPortBit &H37A, 5
Else
ClrPortBit &H37A, 5
End If
End Sub
- Vi5t code cho cc Lebel lblBit
Private Sub lblBit_Click(Index As Integer)
Dim Mask As Byte
Dim BitVal As Byte
Mask = 2 ^ Index
BitVal = (PortIn(&H378) And Mask) / Mask
If Me.chkDirection.Value = 0 Then
If BitVal Then
ClrPortBit &H378, Index
Me.Shape1(Index).FillColor = QBColor(10)
Else
SetPortBit &H378, Index
Me.Shape1(Index).FillColor = QBColor(12)
End If
End If
End Sub

* ThAc thi ch%-ng trnh:
- Nh)n F5 hoVc Run/Strart +2 thAc thi ch%-ng trnh.
- Khi ch%-ng trnh +%,c thAc thi, 8 hnh trn t%,ng tr%ng cho 8 Bit c?a Port Data, mu
+\ l Bit +ang N m=c cao, ng%,c l6i mu xanh t=c Bit +ang N m=c th)p. Con sK hi2n thT
bn phJi l gi trT th'p phn c?a Port Data.
- B6n quan st CheckBox OUT/IN, n5u khng +%,c chQn t=c Port Data +ang N ch5 +
xu)t khi + b6n Click vo Hnh trn no, n sM +:i mu, khi + Bit t%-ng =ng sM +:i
tr6ng thi, b6n c th2 ki2m tra +i<u ny trAc ti5p trn c:ng LPT. Sau + b6n +)u mt Bit
no b)t kZ +ang N tr6ng thi cao xuKng mass ( mass l cc chn tL 18 ->25 trn c:ng
LPT), b6n sM th)y mu trn hnh trn t%-ng =ng khng h< thay +:i, +i<u + ch=ng t\
c:ng LPT +ang N ch5 + chD xu)t (Read Only).
- Click chQn vo CheckBox, b6n th)y ton b cc hnh trn chuy2n sang mu +\ t=c cJ
Port +ang N m=c cao. thAc hi9n +)u mass mt chn b)t kZ (nh% cch trn), n5u mu trn
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
30
hnh trn t%-ng =ng chuy2n sang mu xanh t=c c:ng LPT c?a b6n c tSn t6i giao di9n 2
h%Hng, + l +i<u r)t +ng quan tm, ng%,c l6i n5u mu c?a hnh trn t%-ng =ng khng
+:i th th't +ng ti5t l Board m6ch ch? my tnh c?a b6n khng hP tr, ch5 + nh'p cho
Port Data.
* GiJi thch ch%-ng trnh:
- Nhn chung trong ch%-ng trnh ny chng ti khng s. d0ng cc ke thu't l'p trnh qu
xa l6, v v'y N +y chng ti chD t'p trung giJi thch cc v)n +< lin quan +5n ke thu't
giao ti5p.
- Trong sA ki9n Form_Load():
Dng l9nh ValIn=PortIn(&H378) : nh'n gi trT (th'p phn) tL Port Data (&H378 l
+Ta chD d6ng sK Hex c?a Port Data) v gn cho bi5n ValIn.
B6n ch dng l9nh sau:
Chk = (ValIn And 32) / 32
Dng l9nh trn s. d0ng ke thu't mVt n6 (Masking) +2 che cc Bit khng cIn thi5t,
ke thu't Masking sM +%,c chng ti giHi thi9u r trong phIn HH tr7 thm ngay sau v
d0 ny.
Sau cu l9nh trn bi5n Chk sM ch=a tr6ng thi c?a Bit D5 trong thanh ghi Control (0
hoVc 1), tr6ng thi ny sau + sM +%,c gn cho CheckBox chkDirection qua dng l9nh
ti5p theo Me.chkDirection.Value = Chk.
- Trong sA ki9n Timer1_Timer():
Ke thu't ch? y5u +%,c s. d0ng trong sA ki9n ny v]n l ke thu't Masking, mt
+i2m khc N +y l mVt n6 (Mask) khng phJi l mt con sK cK +Tnh, mt bi5n i +%,c
cho ch6y tL 0 +5n 7 t%-ng =ng vHi vi9c x. l tLng Bit trong Port Data. hng vHi tLng Bit
cIn x. l sM c mt Mask khc nhau.
Dng l9nh Me.Shape1(i).FillColor = QBColor(BitVal * 2 + 10) +Vt mu thch h-p
(xanh l (10) hay +\ (12)) cho cc hnh trn t%-ng =ng tr6ng thi cc Bit.
- SA ki9n chkDirection_Click():
Khi ng%7i dng Click vo CheckBox chkDirection, tr6ng thi c?a n sM thay +:i,
t%-ng =ng vHi +, Bit D5 c?a thanh ghi Control sM +%,c Set hay Clear. Nh% + thJo
lu'n N trn, Bit D5 sM quy5t +Tnh h%Hng xu)t hay nh'p c?a Port Data.
- SA ki9n lblBit_Click(Index As Integer):
SA ki9n ny xJy ra khi ng%7i dng Click vo cc Label lblBit ( hay Click vo cc
Shape1), nh%ng t6i sao phJi Click vo cc Label m khng l cc Shape1, cu trJ l7i l
cc Shape ni chung khng tSn t6i mt Event no, v v'y vi9c Click vo cc Label thAc
ch)t l mt chi5n thu't c?a ta. Khi cc Label +%,c Click, thng sK Index sM cho bi5t
+ l Label th= m)y trong mJng cc Label lblBit.
Cc dng l9nh ClrPortBit &H378, Index hay "SetPortBit &H378, Index, c
nhi9m v0 xo hay +Vt cc Bit t%-ng =ng trong Port Data .
- CuKi cng trong sA ki9n cmdExit_Click(), l9nh End +2 k5t thc ch%-ng trnh.

Trn +y l v d0 +Iu tin gip b6n lm quen vHi ke thu't l'p trnh giao ti5p thng qua c:ng
LPT c?a my tnh PC +Sng th7i + c@ng l ch%-ng trnh h$u ch gip b6n ki2m tra c:ng LPT c?a
b6n, vi9c hi2u cc cu l9nh s. d0ng trong ch%-ng trnh ny l th't sA cIn thi5t n5u b6n c +Tnh
xy d0ng cc =ng d0ng giao ti5p lHn, tuy nhin c@ng c mt sK v)n +< c th2 gy cho b6n cht t
kh khOn trong v d0 ny, nh)t l cc v)n +< v< lin quan +5n ke thu't sK, v v'y chng ti sM
trnh by d%Hi +y mt sK hi2u bi5t c- bJn nh)t v< nh$ng v)n +< ny. B6n hy +Qc th't ke v +Ki
chi5u l6i vHi ch%-ng trnh vLa thAc hi9n.





Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
31
HH tr7 thm:
- SK nhT phn(Binary), sK Th'p L0c phn(Hexadecimal), sK Th'p phn(Decimal):
V d0 b6n mXc cc Led vo Port Data c?a c:ng LPT nh% sau:

Hnh 15: MXc 7 Led vo Port Data
By gi7 b6n muKn cho cc Led sng xen k^, nghWa l cc Led 0,2,4,6 sng v cc Led cn
l6i sM khng sang, nh% v'y b6n phJi xu)t ra Port Data mt sK c gi trT bao nhiu ?
Tr6ng thi cc Bit c?a Port Data phJi l:
0 1 0 1 0 1 0 1
Gi trT cIn xu)t ra Port Data l 01010101, + l mt sK nhT phn. SK nhT phn l sK +%,c
bi2u diBn chD bNi 2 k tA 0 v 1 (sK Bin hay sK h9 2). ;y l mt cch bi2u diBn r)t ph h,p trong
lWnh vAc ke thu't sK Mt sK nhT phn mang mt gi trT +%,c tnh theo quy tXc
sau:
0
0
1
1 0 1
2 * 2 * ... 2 * ... a a a a a a
n
n n
+ + + = . N5u ta c mt sK nhT phn mang n ch$ sK th gi trT
c?a sK + sM nFm trong khoJng tL 0 +5n 2
n
-1, v d0 mt Port 8 Bit chD c th2 mang gi trT tL 0 +5n
2
8

v d0 : 85 2 * 1 2 * 0 2 * 1 2 * 0 2 * 1 2 * 0 2 * 1 2 * 0 01010101
0 1 2 3 4 5 6 7
= + + + + + + + =
Nh% v'y, theo yu cIu +i<u khi2n nh% trn, ta sM s. d0ng l9nh PortOut c?a th% vi9n IO.dll
vHi cc tham sK nh% sau: PortOut &H378, 85
Trong + 85 l gi trT th'p phn +%,c xu)t ra, t%-ng =ng vHi gi trT nhT phn 01010101, cn
&H378 l +Ta chi c?a c:ng cIn xu)t ra, N +y l +Ta chD c?a Port Data. &H l g ? + l mt k hi9u
dng trong VB chD ra rFng con sK +i theo sau + l mt con sK Th'p L0c phn (Hexadecimal hay
Hex hay h9 16). SK Th'p L0c phn l sK +%,c bi2u biBn bNi 16 k tA 09,A,B,C,D,E,F +6i di9n
cho cc gi trT tL 0 +5n 15. Vi9c quy +:i tL mt sK hex sang mt sK th'p phn +%,c thAc hi9n theo
quy tXc sau :
0
0
1
1 0 1
16 * 16 * ... 16 * ... a a a a a a
n
n n
+ + + = . N5u ta c mt sK hex mang n ch$ sK th
gi trT c?a sK + sM nFm trong khoJng tL 0 +5n 16
n
-1
V d0: 4002 16 * 2 16 * 10 16 * 15 2
0 1 2
= + + = FA
B6n +2 16=2
4
, v v'y 1 ch$ sK (digit) hex c th2 +%,c s. d0ng thay th5 cho mt sK NhT
phn c 4 digit, +Sng th7i vi9c quy +:i gi$a sK hex v sK nhT phn r)t dB dng, chD cIn quy +:i
tLng 4 digit c?a sK nhT phn, +y chnh l %u +i2m lHn nh)t c?a sK hex. V d0:
10110100 (Bin)=B4 (Hex) v 4 digit +Iu 1011(Bin)=11(Dec)=B (Hex). T%-ng tA 4 digit sau
0100=4=4.
Quay l6i v d0 xu)t Port trn, b6n hy nghW xem ta cIn xu)t ra mt sK hex bao nhiu thay
cho sK 85 + dng trn.
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
32
Sau +y chng ti sM tm tXc cch bi2u diBn c?a 16 sK +Iu tin d%Hi d6ng sK th'p phn, nhT
phn v th'p l0c phn +2 b6n c th2 tham khJo v p d0ng quy +:i cc sK b)t kZ khc. B;n c]ng
c th= sg d?ng cng c? Calculator (calc.exe) c shn trong Windows 1= thLc hi*n cc php
quy 1Xi.
SK th'p phn (dec) SK NhT phn (bin) SK Th'p l0c phn (hex)
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

- Ke thu't mVt n6 - Masking:
Ke thu't Masking l ke thu't che hoVc hi*n mt sK Bit mng muKn no + trong mt
hoVc nhi<u thanh ghi. Cng c0 +2 thAc hi9n ke thu't Masking l cc php ton Logic nh%: And,
Or, Xor
V d0 b6n +ang dng c:ng LPT c?a my tnh +2 +i<u khi2n vi9c :n +Tnh m=c ch)t l\ng
cIn thi5t trong mt bSn ch=a, giJ s. b6n chD dng thanh ghi +i<u khi2n: cJm bi5n m=c d%Hi S1 nKi
vHi chn 14, cJm bi5n m=c trn S2 +%,c nKi vHi chn 1, chn 16 dng +i<u khi2n +ng c- B-m, v
chn 17 +i<u khi2n +ng c- +ng mN van. Yu cIu +i<u khi2n +Ki vHi b6n nh% sau, b6n chD cIn
+i<u khi2n +ng c- M +2 mN hoVc tXt B-m, khi cJm bi5n S1 bo c6n (S1=0) b6n cho B-m ch6y
(M=1), khi cJm bi5n S2 bo +Iy (S2=1) b6n cho b-m tXt (M=0). Nh% v'y s- +S k5t nKi thanh
ghi +i<u khi2n sM nh% hnh sau:

V)n +< +Vt ra by gi7 l lm sao +Qc +%,c tr6ng thi c?a tLng Bit +2 bi5t tr6ng thi c?a
tLng cJm bi5n. Ta sM dng ke thu't mVt n6 +2 che cc Bit khng cIn thi5t v hi9n Bit cIn thi5t.
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
33

Hnh 16: S- +S k5t nKi h9 thKng :n +Tnh mAc ch)t l\ng.
;2 +Qc tr6ng thi S1, ta dng l9nh ValIn=PortIn &H37A N +y ValIn l mt bi5n t6m,
l9nh trn sM +Qc ton b thanh ghi +i<u khi2n vo bi5n ValIn, tuy nhin n5u chD dAa vo ValIn ta sM
khng bi5t +%,c tr6ng thi c?a Bit C1, t=c tr6ng thi c?a cJm bi5n S1 bNi v ValIn cn ch=a tr6ng
thi c?a cc Bit khc n$a. c +y ta chD quan tm +5n Bit C1 v v'y ta sM dng php Logic And +2
Masking. ;2 bi5t tr6ng thi c?a C1 ta sM And ValIn vHi mVt n6 Mask= 2 (00000010), k5t quJ
php And +%,c giJi thch nh% sau:


BJng chn trT php And
A B A And B
0
0
1
1
0
1
0
1
0
0
0
1
K5t quJ sau khi And chD c 2 gi trT: Res=0 t%-ng =ng C1=0, C1=1 khi Res=2. N5u b6n
muKn k5t quJ nh'n +%,c chD mang 2 gi trT 0;1 b6n dng dng l9nh Res=(ValIn And 2)/2 thay
cho dng l9nh trn.
C- bJn ta + +Qc +%,c tr6ng thi c?a Bit C1 (ch=a trong bi5n Res), tuy nhin cIn ch Bit
C1 l 1 Bit +Jo, tr6ng thi c?a C1 tri ng%,c vHi tr6ng thi c?a cJm bi5n S1 +Vt vo n, +2 1Eo
tr6ng thi c?a bi5n Res (ch=a tr6ng thi c?a C1) cho ph h,p vHi tr6ng thi c?a cJm bi5n S1 (+i<u
ny th't sA r)t cIn thi5t trong mt sK tr%7ng h,p) ta dng Php Xor +2 Masking.


Res=ValIn And 2
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
34



BJng chn trT php Xor
A B A Xor B
0
0
1
1
0
1
0
1
0
1
1
0
TL bJng chn trT c?a php Xor ta nh'n th)y khi Xor mt Bit vHi 1, tr6ng thi c?a Bit + sM
+:i, ni cch khc php Xor mt Bit vHi 1 chnh l php Not c?a Bit +. V v'y sau dng l9nh
Res=Res Xor 1 tr6ng thi c?a Res sM +Jo.
Ngoi ra trong mt sK tr%7ng h,p Masking ta cn s. d0ng php Or
BJng chn trT php Or
A B A Or B
0
0
1
1
0
1
0
1
0
1
1
1
2. Giao ti:p qua cXng COM
Nh% + trnh by N phIn trn, b6n c th2 giao ti5p vHi cc c:ng COM qua cc +%7ng giao
ti5p chnh th=c theo chuRn RS-232 nh% TxD hay RxD hoVc qua cc +%7ng ph0 tr,. Th% vi9n
Port.dll c +? cc hm hP tr, +2 b6n thAc hi9n vi9c giao ti5p theo cJ 2 cch trn. Tuy nhin bJn
thn VB c@ng c hP tr, mt ph%-ng th=c giao ti5p vHi cc c:ng COM d%Hi d6ng cc +Ki t%,ng.
Theo kinh nghi9m cho th)y khi cIn s. d0ng cc +%7ng ph0 tr, b6n hy s. d0ng th% vi9n Port.dll,
ng%,c l6i n5u cIn truy<n nh'n theo chuRn RS-232 (m0c +ch chnh l +y) b6n nn s. d0ng
ph%-ng th=c +%,c hP tr, sYn trong VB.
* ;2 s. d0ng cc hm hP tr, giao ti5p qua c:ng COM trong th% vi9n Port.dll b6n phJi mN
c:ng bFng hm OPENCOM, v d0:
i=OPENCOM(COM1,9600,N,8,1)
Trong + COM1 l c:ng COM th= 1, 9600 l tKc + baud, N: khng ki2m tra chYn l^, 8: sK
Bit trong 1 Frame truy<n, 1: sK Bit Stop.
Dng l9nh trn b6n c th2 +Vt N b)t c= vT tr no trong ch%-ng trnh nh%ng phJi thAc hi9n
tr%Hc khi s. d0ng cc hm khc trong Port.dll (b6n nn +Vt trong Event Form_Load()).
Sau khi mN c:ng b6n c th2 truy c'p trAc ti5p cc +%7ng d]n thng qua cc hm trAc ti5p
nh%: DTR, RTS,TXD (Xu)t trAc ti5p ra cc +%7ng d]n), CTS, DSR,RI,DCD (;Qc cc +%7ng d]n).
Vd: DTR 1 xu)t ra chn DTR gi trT 1 ( chn ny ln m=c cao)
X=CTS +Qc tr6ng thi chn CTS vo bi5n X

* Trong phIn sau +y chng ta sM khJo st mt v d0 giao ti5p theo chuRn RS-232 bFng
ph%-ng th=c c?a VB. Nh% b6n + bi5t muKn thAc hi9n vi9c giao ti5p theo chuRn RS-232 th ta phJi
c t nh)t 2 thi5t bT +Iu cuKi DTE c hP tr, RS-232, my tnh chng ta l mt. ;2 +-n giJn ta s.
d0ng 2 my tnh PC lm 2 DTE. B6n chD cIn +)u nKi cho 2 my tnh ny (TxD1(chn 3 my 1)
nKi vHi RxD2 (chn 2 my 2), RxD1 nKi TxD2, v nKi 2 chn Ground (chn sK 5) l6i vHi nhau )
sau + chng ta sM ti5n hnh thAc hi9n v d0 giao ti5p.
- T6o 1 Project (exe) mHi, +:i tn l CHAT232, +Ki tn Form l FRMMAIN, Caption:
CHAT232 , l%u Project vHi tn CHAT232
- VHi Form FRMMAIN: +Vt thuc tnh BorderStyle l 1-Fixed Single, thuc tnh
StartUpPosition l 2-CenterScreen.
- ;Vt vo Form 2 +Ki t%,ng Frame, lIn l%,t +:i tn chng thnh FraDisplay v FraSend,
+:i Caption thnh TEMP v SEND.
Res=Res Xor 1
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
35
- ;Vt trong FraDisplay mt TextBox, +Ki tn thnh TXTDISPLAY, +Vt thuc tnh
Lock=True, Multiline=true, ScrollBar=2-Vertical.
- ;Vt trong FraSend mt TextBox, +Ki tn thnh txtSend, +Vt thuc Multiline=true,
ScrollBar=2-Vertical.
- ;Vt trong FraSend mt nt l9nh tn cmdSend, Caption=&SEND
- B6n vo trnh +-n Project chQn Components +2 chn vo +Ki t%,ng giao ti5p qua
c:ng COM m ta sM s. d0ng trong v d0 ny. Khi hp tho6i Components xu)t hi9n,
b6n hy ko thanh tr%,t tm +Ki t%,ng tn l Microsoft Comm control 6.0, +nh d)u
chQn v nh)n OK

Hnh 17: Hp tho6i Componenets
- Trong ToolBox c?a b6n by gi7 xu)t hi9n mt +Ki t%,ng hnh chi5c +i9n tho6i, ko v
+Vt +Ki t%,ng ny ln Form c?a b6n, theo mVc n sM c tn l MSComm1.
Form sau khi thi5t k5 c hnh dng nh% sau:
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
36

Hnh 17: Giao di9n sau khi thi5t k5

By gi7 ta sM vi5t code cho v d0 ny:
- Trong sA ki9n Form_Load():
Private Sub Form_Load()
MSComm1.CommPort = 1 ChQn c:ng +2 giao ti5p l c:ng 1.
MSComm1.Settings = "9600,N,8,1" Khai bo cc thng sK mN c:ng .
MSComm1.PortOpen = True BXt +Iu mN c:ng.
Me.MSComm1.RThreshold = 1 Khai bo sM s. d0ng sA ki9n OnComm
End Sub
Ba dng l9nh +Iu l bXt buc n5u b6n muKn giao ti5p vHi c:ng COM qua +Ki t%,ng
MSComm, nhi9m v0 c?a 3 dng ny l mN c:ng +2 ph0c v0 cho m0c +ch giao ti5p c?a b6n sau
ny.
- Double Click vo nt l9nh cmdSend, trong sA ki9n cmdSend_Click():
Private Sub cmdSend_Click()
Dim txt As String Khai bo 1 bi5n t6m d6ng chuPi
txt = Me.txtSend.Text Gn bi5n t6m l ni dung c?a TextBox txtSend
Me.MSComm1.Output = txt GNi gi trT c?a bi5n t6m ra c:ng nKi ti5p
Me.TXTDISPLAY.Text = Me.TXTDISPLAY.Text + Chr(13) + Chr(10)
Me.TXTDISPLAY.Text = Me.TXTDISPLAY.Text + txt
Me.txtSend = ""
Me.txtSend.SetFocus
End Sub
- Double Click vo MSComm1, trong sA ki9n MSComm1_OnComm():
Private Sub MSComm1_OnComm()
If Me.MSComm1.CommEvent = comEvReceive Then N5u d$ li9u + +%,c gNi tHi
Me.MSComm1.InputLen = 0 ChuRn bT b +9m
Me.TXTDISPLAY.Text = Me.TXTDISPLAY.Text + Chr(13) + Chr(10)
Me.TXTDISPLAY.Text = Me.TXTDISPLAY.Text + Me.MSComm1.Input Ph%-ng
th=c Me.MSComm1.Input dng +2 nh'n gi trT gHi +5n tL c:ng COM
End If
End Sub
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
37
- Trong sA ki9n KeyPress c?a txtSend:
Private Sub txtSend_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Call cmdSend_Click
End Sub
- Trong sA ki9n Form_Unload()
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False ;ng c:ng
End Sub

;2 ch6y th. ch%-ng trnh, b6n dTch ch%-ng trnh thnh file EXE sau + chp file ny qua
my tnh th= 2 (DTE th= 2) + +%,c k5t nKi vHi my tnh c?a b6n. Trn 2 my tnh b6n cho cng
ch6y ch%-ng trnh. Trn b)t kZ my no b6n th. +nh vo TextBox txtSend rSi nh)n Send hoVc
Enter, l'p t=c b6n sM th)y dng thng +i9p c?a b6n sM xu)t hi9n trn TextBox TXTDISPLAY c?a
ch%-ng trnh +ang ch6y trn my kia. Nh% v'y l ta + thnh cng trong vi9c l'p trnh k5t nKi 2
my tnh qua c:ng COM. VHi cch t%-ng tA b6n c th2 tA mnh mN rng ch%-ng trnh +2 ph0c v0
cho m0c +ch c?a chnh b6n.

Trong ti li*u ny chng ti chM 14a ra mDt vi v d? c( bEn gip b;n ki=m tra l
thuy:t 1 147c hRc, nhi<u v d? v bi t3p khc sJ 147c trnh by trong ch4(ng trnh hRc.

































Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
38
PHO LOC 1: CC CONTROL TIU CHUiN

1- Textbox: hay cn gQi l edit field or edit control, hi2n thT thng tin trong th7i gian thi5t
k5 hay lc ch%-ng trnh +ang thAc thi. Vi9c truy xu)t thng tin c?a Textbox +%,c thAc
hi9n thng qua Properties Text

Bi2u
t%,ng

Hnh Jnh Properties Method Event Ghi
ch





Name: Tn +Ki t%,ng
Move
Left,Top,[Width],
[Height] : di chuy2n
VD:
Text1.Move 100, 200,
300,400
L: Di chuy5n Text1
+5n vT tr cch l< tri
100, l< trn 200, rng
300, cao 400
Ch : c th= bj cc
gi trF trong [ ] nh4
Width hay Height
Change: XJy ra khi thay +:i
ni dung Text.

Alignment:canh l<
0:canh tri
1: canh phJi
2: canh gi$a
Click: XJy ra khi Click
mouse vo Text.

Backcolor: mu n<n DblClick: XJy ra khi Click
+i mouse vo Text.

BorderStyle: Vi<n
0: khng vi<n
1: c vi<n n:i
GotFocus: XJy ra khi Text
nh'n Focus.

Enable: cho php hoVc c)m s.
d0ng
(true, false)
KeyDown: XJy ra khi Text
+ang c Focus v 1 phm
+%,c nh)n xuKng.

Height: Chi<u cao Refresh: lm t%-i
Textbox.
KeyPress: XJy ra khi Text
+ang c Focus v 1 phm
+%,c nh)n .

Font: Font c?a ch$ trong Text
Forecolor: Mu c?a ch$ KeyUp: XJy ra khi Text
+ang c Focus v 1 phm
+%,c thJ.

Index: chD sK +Ki t%,ng (mJng
+Ki t%,ng)
Left: KhoJng cch l< tri SetFocus: Lm cho
Textbox nh'n Focus, v
trN thnh +Ki t%,ng
+%,c ch bNi
Windows.
LostFocus: XJy ra khi m)t
Fucos

Lock: cho php hoVc c)m s.a
thng tin ( true hoVc false)
MouseDown: XJy ra khi
nh)n mouse xuKng Text.

MultiLine:
True: cho php xuKng dng
Flase: khng xuKng dng
MouseMove: XJy ra khi c
sA di chuy2n mouse trn
Text.

ScrollBar: Cc thanh tr%,t
0: khng s. d0ng
1: Thanh tr%,t ngang
2: Thanh tr%,t dQc
3: CJ 2 thanh tr%,t
MouseUp: XJy ra khi thJ
mouse ln Text.

Text: Ni dung c?a Textbox
Top: KhoJng cch l< trn
Visible: Rn hi9n +Ki t%,ng.
Width: Chi<u rng Textbox
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
39
2- CommandButton: L cc nt nh)n +%,c s. d0ng +2 bXt +Iu, ngXt hoVc dLng mt qu
trnh no +.
Bi2u
t%,ng

Hnh Jnh Properties Method Event Ghi
ch






Name: Tn +Ki t%,ng
Move Left,Top,[Width],
[Height] : di chuy2n
VD:
Command1.Move 100,
200, 300,400
L: Di chuy5n Command1
+5n vT tr cch l< tri 100,
l< trn 200, rng 300, cao
400
Ch : c th= bj cc gi
trF trong [ ] nh4 Width
hay Height
Click: XJy ra khi Click
mouse vo
CommandButton.

Caption: PhIn ch$ hi2n thT
trn nt nh)n.

Backcolor: mu n<n GotFocus: XJy ra khi
CommandButton nh'n
Focus.

Default:
true: Enter =nh)n Button
false: b\ ch=c nOng ny.

Enable: cho php hoVc c)m
s. d0ng
(true, false)
KeyDown: XJy ra khi
CommandButton +ang
c Focus v 1 phm
+%,c nh)n xuKng.

Height: Chi<u cao Button Refresh: lm t%-i
CommandButton.
KeyPress: XJy ra khi
CommandButton +ang
c Focus v 1 phm
+%,c nh)n .

Font: Font c?a ch$ Caption
Forecolor: Mu c?a ch$ KeyUp: XJy ra khi
CommandButton +ang
c Focus v 1 phm
+%,c thJ.

Index: chD sK +Ki t%,ng
(mJng +Ki t%,ng)
Left: KhoJng cch l< tri SetFocus: Lm cho
CommandButton nh'n
Focus, v trN thnh +Ki
t%,ng +%,c ch bNi
Windows.
LostFocus: XJy ra khi
m)t Fucos.

Picture: hnh chn vo
Button. ChD c tc d0ng khi
Style=1
MouseDown: XJy ra
khi nh)n mouse xuKng
CommandButton.

Style:
0-Standard : mVc +Tnh.
1-Graphic: cho php chn
hnh
MouseMove: XJy ra
khi c sA di chuy2n
mouse trn
CommandButton.


Top: KhoJng cch l< trn
MouseUp: XJy ra khi
thJ mouse ln
CommandButton.


Visible: Rn hi9n +Ki t%,ng.
Width: Chi<u rng Textbox










Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
40
3- PictureBox: l mt +i<u khi2n +%,c s. d0ng ch=a cc lo6i file hnh tiu chuRn. ;Vc bi9t
ta cn c th2 vM ln cc Form
Bi2u
t%,ng

Hnh Jnh Properties Method Event Ghi
ch





Name: Tn +Ki t%,ng
Circle: VM +%7ng trn
trn PictureBox.
VD: Picture1.Circle
(100,200), 50
vM hnh trn tm
(100,200), bn knh 50.
Trn Picture1
Click: XJy ra khi Click
mouse vo PictureBox.

AutoRedraw:cho php tA
vM l6i
true:cc nt vM trn
PictureBox khng m)t khi
thay +:i +Ki t%,ng.
false: ng%,c l6i

Backcolor: mu n<n Cls: Xo cc hnh vM trn
PictureBox, khng xa
hnh n<n.
DblClick: XJy ra khi
Click +i mouse vo
PictureBox.

BorderStyle: Vi<n
0: khng vi<n
1: c vi<n n:i
DrawStyle: quy +Tnh lo6i
nt vM
Move Left,Top,[Width],
[Height] : di chuy2n
VD:
Picture1.Move 100, 200,
300,400
L: Di chuy5n Picture1
+5n vT tr cch l< tri 100,
l< trn 200, rng 300, cao
400
Ch : c th= bj cc gi
trF trong [ ] nh4 Width
hay Height
GotFocus: XJy ra khi
Form nh'n Focus.

DrawWidth: + lHn nt
vM
KeyDown: XJy ra khi
Form +ang c Focus v
1 phm +%,c nh)n
xuKng.

Enable: cho php hoVc
c)m s. d0ng
(true, false)
FillColor: Mu t
FillStyle: Cch t mu.
Height: Chi<u cao Refresh: lm t%-i
PictureBox.
KeyPress: XJy ra khi
PictureBox +ang c
Focus v 1 phm +%,c
nh)n .

Font: Font c?a ch$ trong
Text
Forecolor: Mu vM Line (x1,y1)-(x2,y2),
[color] : VM +%7ng thgng
trong Picture tL (x1,y1)
+5n (x2,y2)

KeyUp: XJy ra khi
Form +ang c Focus v
1 phm +%,c thJ.

Index: chD sK +Ki t%,ng
(mJng +Ki t%,ng)
Left: KhoJng cch l< tri Point (x,y) : l)y mu t6i
+i2m (x,y)
LostFocus: XJy ra khi
m)t Fucos

Picture: hnh hi2n thT
trong Form
MouseDown: XJy ra
khi nh)n mouse xuKng
Picture

ScaleMode: +-n vT +o MouseMove: XJy ra
khi c sA di chuy2n
mouse trn Picture.

MouseUp: XJy ra khi
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
41
Pset (x,y) , color : ch)m
+i2m t6i (x,y)
thJ mouse ln Picture .
Top: KhoJng cch l< trn
Visible: Rn hi9n +Ki
t%,ng.
SetFocus: Lm cho
PictureBox nh'n Focus, v
trN thnh +Ki t%,ng +%,c
ch bNi Windows.
Width: Chi<u rng
Textbox


4- Form: hay bi2u m]u, l +Ki t%,ng quan trQng khi vi5t cc =ng d0ng. Form +%,c xem l
n<n c?a giao di9n, mt =ng d0ng phJi c t nh)t mt Form. C@ng giKng nh% cc ;Ki
t%,ng khc, Form c@ng c cc Properties, Method v Event ring, tuy nhin Form c
cn c 1 +Vc +i2m quan trQng khc l tCt cE cc 85i t47ng nkm trn Form 147c coi
l 1 thnh ph2n cQa Form 1, nh% v'y c th2 dung d)u .+2 truy xu)t cc +Ki t%,ng
trn Form. Vd: trn Form1 c 1 nt l9nh Command1, +2 +Vt gi trT Left c?a Command1
l 100 ta s. d0ng l9nh: Command1.Left=100 hay Form1.Command1.Left=100.
*TB kho Me: tL kho Me +%,c s. d0ng thay cho tn 1 Form no + trong 1 cu l9nh
n5u cu l9nh +%,c vi5t ngay trong Form +. V d0 trn c th2 vi5t l6i:
Me.Command1.Left=100.

Properties Method Event Ghi
ch
Name: Tn +Ki t%,ng
Circle: VM +%7ng trn trn Form.
VD: Form1.Circle (100,200), 50
vM hnh trn tm (100,200), bn
knh 50.
Trn Form1
Cls: Xo cc hnh vM trn Form,
khng xa hnh n<n.
Move Left,Top,[Width], [Height]
: di chuy2n
VD:
Form1.Move 100, 200, 300,400
L: Di chuy5n Form1 +5n vT tr
cch l< tri 100, l< trn 200, rng
300, cao 400
Ch : c th= bj cc gi trF trong
[ ] nh4 Width hay Height

Load: Form +%,c load ln.
AutoRedraw:cho php tA vM l6i
true:cc nt vM trn Form khng m)t khi
thay +:i +Ki t%,ng.
false: ng%,c l6i
Click: XJy ra khi Click
mouse vo Form.

Backcolor: mu n<n DblClick: XJy ra khi Click
+i mouse vo Form.

BorderStyle: Vi<n
0: khng vi<n, khng di chuy2n, khng
thay +:i kch th%Hc +%,c.
1: c vi<n n:i,c th2 di chuy2n nh%ng
khng thay +:i kch th%Hc +%,c.
2: d6ng +Iy +? nh)t. ( mVc +Tnh).
3,4,5Khng quan trQng lXm.
GotFocus: XJy ra khi Form
nh'n Focus.

Caption: Tiu +< sM xu)t hi9n trn Form
khi Form xu)t hi9n.
DrawStyle: quy +Tnh lo6i nt vM
DrawStyle: quy +Tnh lo6i nt vM
Enable: cho php hoVc c)m s. d0ng
(true, false)
KeyDown: XJy ra khi Form
+ang c Focus v 1 phm
+%,c nh)n xuKng.

FillColor: Mu t khi vM
FillStyle: Cch t mu.
Font: Font c?a ch$ trong Text
Forecolor: Mu nt vM Line (x1,y1)-(x2,y2), [color] : VM
+%7ng thgng trong Form tL (x1,y1)
KeyPress: XJy ra khi Form
+ang c Focus v 1 phm

Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
42
+5n (x2,y2)

+%,c nh)n .
Refresh: lm t%-i Form.
Height: Chi<u cao Point (x,y) : l)y mu t6i +i2m (x,y)
Icon: bi2u t%,ng c?a Form khi xu)t hi9n. Pset (x,y) , color : ch)m +i2m t6i
(x,y)
KeyUp: XJy ra khi Form
+ang c Focus v 1 phm
+%,c thJ.

Index: chD sK +Ki t%,ng (mJng +Ki
t%,ng)
SetFocus: Lm cho Form nh'n
Focus, v trN thnh +Ki t%,ng +%,c
ch bNi Windows.
Left: KhoJng cch l< tri LostFocus: XJy ra khi m)t
Fucos

MaxButton: cho php hoVc c)m nt
l9nh phng to Form
MouseDown: XJy ra khi
nh)n mouse xuKng Form.

MiDiChild:
True: Form l mt Form con
Flase: Form l mt Form +c l'p.
MouseMove: XJy ra khi c
sA di chuy2n mouse trn
Form.

MouseUp: XJy ra khi thJ
mouse ln Form.
Picture: hnh n<n trn Form Unload: Khi Form +%,c tXt.
Top: KhoJng cch l< trn
Visible: Rn hi9n +Ki t%,ng.
Width: Chi<u rng Textbox


Ngoi ra cn r)t nhi<u Control khc th%7ng +%,c s. d0ng khi thi5t k5 cc =ng d0ng vHi
VB nh%
Image: c@ng +%,c s. d0ng hi2n thT hnh Jnh nh% Form nh%ng khng th2 vM
+%,c ln +Ki t%,ng ny. ;Vc bi9t kch th%Hc hnh Jnh chn vo c th2 thay +:i
theo kch th%Hc c?a +Ki t%,ng Image n5u thuc tnh Stretch=true.
Label: th%7ng +%,c s. d0ng lm cc nhn, cc +< tAa
Check box: mang hai gi trT true hoVc false khi control ny +%,c +nh d)u chQn
hoVc khng chQn.
OptionButton: Nt lAa chQn
ComboBox: danh sch cc lAa chQn d6ng x: xuKng.
ListBox: c@ng ch=a danh sch cc lAa chQn nh%ng d6ng khung
Frame: khung bao cho mt nhm control c +Vc +i2m chung no +.
HScrollbar: thanh tr%,t ngang.
VScrollbar: thanh tr%,t +=ng.
Nhm DriveListBox, DirListBox, FileListBox: s. d0ng truy xu)t +5n cc
+%7ngd]n trn +Wa.
Timer: l b +Tnh th, th7i gian +Tnh th ch=a trong Properties Interval

Cc Properties, Method, Event c?a cc Control trn sM +%,c giHi thi9u trong tLng cc v d0
c lin quan.

Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
43
PHO LOC 2: MlT Se HM V TON Tm C$ BnN

MDt s5 hm thng d?ng:
Hm, ton tg ChSc nfng, k:t quE V d?:
Abs (x) Tnh gi trT tuy9t +Ki c?a
x
X=-5
A=abs(x), khi + A=5
Atn(x) Tnh Arctang c?a x A=Atn(1), khi + A= /4
Cos(x) Tnh Cosin c?a x A=cos(/3); K5t quJ A=1/2
Date Cho bi5t thng, ngy,
nOm hi9n t6i.
A=Date; KQ: A=5/16/2005
Dir(Pathname) TrJ ra tn File n5u n tSn
t6i
MyFile=Dir("C:\WINDOWS\WIN.INI")
KQ: MyFile=WIN.INI
DoEvents( ) Nh%7ng cho Event khc
+%,c thAc thi.
Xem cc v d0 c s. d0ng vng lVp
Do..Loop
Exp(x) Hm e m@ x A=Exp(2), KQ: A=e
2
FileLen(pathname) Tnh chi<u di di File
FormatNumber ;Tnh d6ng cho sK A = FormatNumber(1.545,1),KQ: A=1.5
FreeFile TrJ ra 1 con sK dng lm
FileHandle
Xem cc v d0 x. l File
Hex(number) ;:i sang sK Hexa (16) x=Hex(11), KQ: x=B
Hour(time) TrJ ra thnh phIn Gi7
trong h9 thKng Gi7: Pht:
Giy
MyTime = #4:35:17 PM#
MyHour = Hour(MyTime)
KQ: MyHour=16
IIf(+ki9n, +ng, sai) Ton t. rM nhnh 3 ngi A=IIf(10>0,1,0); KQ: A=1 v 10>0
LBound TrJ ra sK nh\ nh)t trong
mJng
Dim MyArray(1 To 10, 5 To 15, 10 To 20)
Lower = Lbound(MyArray, 1); KQ: 1
Left(string, length) Trch cc phIn t. c?a 1
chuPi tL l< tri.
Dim AnyString, MyStr
AnyString = "Hello World" .
MyStr = Left(AnyString, 2);KQ: "He".
Len Tnh chi<u di chuPi X=Len(GiaoTrinhVB); KQ:X=11
Fix(number) Lm trn h%Hng v< 0 MyNumber = Fix(99.9) ; KQ:99
MyNumber = Fix(-99.9) ; KQ:-99
Int(number) Lm trn thnh sK nh\
h-n.
MyNumber = Int(99.9) ; KQ:99
MyNumber = Int(-99.9) ; KQ:-100
Mid Trch cc phIn t. c?a 1
chuPi tL vT tr chD +Tnh .
X=Mid(GiaoTrinhVB,2,3); KQ: X=iao
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
44
Minute(time) TrJ ra thnh phIn Pht
trong h9 thKng Gi7: Pht:
Giy
MyTime = #4:35:17 PM#
MyMinute = Minute(MyTime)
KQ: MyMinute=35
Month(date) TrJ ra thnh phIn thng
trong h9 thKng thng:
Ngy:NOm.
Dim MyDate, MyMonth
MyDate = #February 12, 1969#
MyMonth = Month(MyDate); KQ: 2
MsgBox Xu)t hi9n hp tho6i thng
bo.
MsgBox(Xin Chao,VBOkOnly,Vidu)

Now Ngy gi7 h9 thKng
Oct(number) ;:i sang sK Octan (8) x=Oct(9), KQ: x=11
QBColor(Number)
Number:0-15
16 mu c- bJn Picture1.BackColor=QBColor(12)
KQ: Picture1 c mu n<n +\.
RGB(r,g,b)
r,g,b:0-255
H9 thKng mu
Red,Green,Blue
Picture1.BackColor=RGB(255,0,0)
KQ: Picture1 c mu n<n +\.
Right(string, length) Trch cc phIn t. c?a 1
chuPi tL l< phJi.
Dim Chuoi, tr
Chuoi = "Hello World" .
tr = Right(Chuoi, 2);KQ: "ld".
Rnd[(Number)] Cho sK ng]u nhin: 0-1
Round(Num,[Aux]) Lm trn tA nhin Round(1.5216); KQ: 2
Round(1.515645,3); KQ: 1.516
Second(time) TrJ ra thnh phIn Giy
trong h9 thKng Gi7: Pht:
Giy
MyTime = #4:35:17 PM#
MySecond = Second(MyTime)
KQ: MySecond=17
Sgn(number) Xt d)u c?a 1 sK Sgn(2.15), KQ: 1
Sgn(-2),KQ: -1
Shell(pathname) thAc thi mt ch%-ng trnh
EXE
RetVal =
Shell("C:\WINDOWS\CALC.EXE", 1)
Ch6y ch%-ng trnh Calculator.
Sin(x) Tnh sin c?a x A=cos(/6); K5t quJ A=1/2
Space(number) T6o 1 chuPi vHi nhi<u
khoJng trXng.
A=Space(5), KQ: A=
Sqr(Number) Tnh cOn b'c 2 A=Sqr(4); KQ: A=2
Str(Number) ;:i sK ra chuPi A=Str(122); KQ: A=122
Tan(Angle) Tnh tang 1 gc
Time, Timer,
TimeSerial,
TimeValue
Cc hm th7i gian
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
45
UBound(Array) Tnh kch th%Hc MJng Dim Mang(1 to 10), A
A=UBound(Mang), KQ : A=10
Ucase(String) ;:i sang ch$ in Hoa X=Ucase(abc); KQ: X=ABC
Val(String) ;:i chuPi sang sK X=Val(123); KQ: X=123
Weekday(Date) Tm ngy trong tuIn Dim MyDate, MyWeekDay
MyDate = #February 12, 1969#
MyWeekDay = Weekday(MyDate) KQ:
4 v ngy + l th= t%.
Year(date) TrJ ra thnh phIn nOm
trong h9 thKng thng:
Ngy:NOm.
Dim MyDate, MyYear
MyDate = #February 12, 1969#
MyYear = Month(MyDate); KQ: 1969
& (sK & sK) Logic And 15&10=10
+,-,*,/ Ton t. ton hQc
And, Or, Xor, Not Ton t. Logic +i<u ki9n (10>1) and (1<0) : KQ: False
True and False
\ Chia l)y phIn nguyn 12\5=2
Mod Chia l)y phIn d% 12 Mod 5 =2
= Ton t. gn hoVc so snh.
>,>=,<,<= Ton t. so snh
End K5t thc ch%-ng trnh






















Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
46

PHO LOC 3: Sm DONG TI[N Te KHI 8oT TN 8eI TTpNG

85i t47ng (Object) Ti<n t5 (Prefix) V d? (Example)
--------------------------------------------------------------------------
Form frm frmFileOpen
Check box chk ReadOnly
Combo box cbo cboEnglish
Data-bound combo box dbc dbcEnglish
Command button cmd cmdCancel
Data dat datBiblio
Directory list box dir dirSource
Drive list box drv drvTarget
File list box fil filSource
Frame fra fraLanguage
Grid grd grdPrices
Data-bound grid dbg dbgPrices
Horizontal scroll bar hsb hsbVolume
Image img imgIcon
Label lbl lblHelpMessage
Line lin linVertical
List box lst lstPolicyCodes
Data-bound list box dbl dblPolicyCode
Menu mnu mnuFileOpen
OLE container ole oleObject1
Option button opt optFrench
Picture box pic picDiskSpace
Shape shp shpCircle
Text box txt txtGetText
Timer tmr tmrAlarm


85i t47ng (Object) Ti<n t5 (Prefix) V d? (Example)
------------------------------------------------------------------------
Vertical scroll bar vsb vsbRate
Animation button ani aniMailBox
bed Pen Bedit bedFirstName
Checkbox chk chkReadOnly
Picture clip clp clpToolbar
Communications com comFax
Control ctl ctrCurrent
Data control dat datBiblioDirectory
Directory list box dir dirSource
Common dialog ctrl dlg dlgFileOpen
Drive list box drv drvTarget
File list box fil filSource
Form frm frmEntry
Frame (3d) fra fraStyle
Gauge gau gauStatus
Group push button gpb gpbChannel
Graph gra graRevenue
Grid grd grdPrices
Pen Hedit hed hedSignature
Horizontalscrollbar hsb hsbVolume
Image img imgIcon
Pen Ink ink inkMap
Keyboard key status key keyCaps
Label lbl lblHelpMessage
Line lin linVertical
MDI child form mdi mdiNote
MAPI message mpm mpmSentMessage
MAPI session mps mpsSession
MCI mci mciVideo
Lp trnh giao ti$p my tnh b'ng Visual Basic Bin so)n: H* Thanh Tm
L V,n B)n
H Nong Lam TP.HCM
BM. ieu khien Tu dong
47
Menu mnu mnuFileOpen
Object obj objUserTable
Option Button (3d) opt optRed
Outline control out outOrgChart
3d Panel pnl (3d) pnlTitleList
Report control rpt rptQtr1Earnings
Shape controls shp shpCircle
Spin control spn spnPages
Timer tmr tmrAlarm
Vertical scroll bar vsb vsbRate

You might also like