Thông tin tài liệu
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
Lêi Nãi §Çu
Ngµy nay, c¸c thiÕt bÞ m¸y mãc, hÖ thèng nh»m phôc vô ®êi sèng con ngêi trong sinh ho¹t còng nh trong s¶n xuÊt ph¸t triÓn nhanh vµ ngµy cµng th«ng
minh. Së dÜ cã ®îc ®iÒu ®ã lµ nhê øng dông thµnh tùu cña khoa häc kü thuËt.
Mét trong v« sè nh÷ng thµnh tùu cña khoa häc kü thuËt nãi chung, cña khoa häc
kü thuËt ®iÖn tö nãi riªng lµ bé vi ®iÒu khiÓn, ghÐp nèi m¸y tÝnh.
Trong c¸c thiÕt bÞ ®iÖn vµ ®iÖn tö d©n dông, c¸c bé vi ®iÒu khiÓn ®iÒu
khiÓn c¸c ho¹t ®éng cña ti vi, m¸y giÆt, ®Çu ®äc laser, ®iÖn tho¹i, lß vi ba...trong
hÖ thèng s¶n xuÊt tù ®éng, bé vi ®iÒu khiÓn ®îc sö dông trong rô bèt, d©y truyÒn
tù ®éng,...c¸c hÖ thèng cµng th«ng minh th× vai trß cña hÖ vi ®iÒu khiÓn cµng
quan träng. §©y lµ nãi ®Õn vi ®iÒu khiÓn, cßn ghÐp nèi m¸y tÝnh cã nã còng cã
rÊt nhiÒu øng dông cã liªn quan ®Õn vi ®iÒu khiÓn. GhÐp nèi m¸y tÝnh víi m¸y
in, m¸y quÐt, m¸y ¶nh, m¸y quay phim ... qua c¸c cæng ghÐp nèi cña m¸y tÝnh.
Qua häc tËp vµ nghiªn cøu chóng em ®· t×m hiÓu vÒ ®Ò tµi : Thiết kế bộ
điều khiển động cơ điện 1 chiều sử dụng cổng nối tiếp . §îc sù híng
dÉn tËn t×nh cña thầy: VŨ TRUNG KIÊN, cïng c¸c thÇy gi¸o kh¸c trong bé
m«n, em còng ®· n¾m v÷ng ®ù¬c cÊu t¹o, nguyªn lý ho¹t ®éng, c¸ch thøc lËp
tr×nh vµ øng dông cña vi ®iÒu khiÓn trong ®o lêng, tù ®éng ho¸ nh»m n©ng cao
kÕt qu¶ cña ®Ò tµi em ®· chän.
Do thêi gian nghiªn cøu vµ kinh nghiÖm cßn h¹n chÕ nªn kh«ng tr¸nh
khái nh÷ng thiÕu sãt.
V× vËy, em rÊt mong sù gãp ý chØ b¶o cña c¸c thÇy c« vµ c¸c b¹n.
Chóng em xin ch©n thµnh c¶m ¬n!
Hµ Néi, Ngµy 26 Th¸ng 03 N¨m 2010
Gi¸o viªn híng dÉn
:Vũ Trung Kiên
Nhãm sinh viªn thùc hiÖn: Nguyễn Văn Công
Bùi Huy Phương
Vũ Đình Tiệp
Líp : §iÖn Tö 4- K9
Khoa §iÖn Tö
1
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
PhÇn I: Giíi thiÖu chung vÒ ghÐp nèi m¸y tÝnh
A. Giíi thiÖu
Sù ph¸t triÓn cña ghÐp nèi m¸y tÝnh ®· më réng ®¸ng kÎ c¸c lÜnh vùc øng
dông cña m¸y tÝnh, ®Æc biÖt lµ ®o lêng vµ ®iÒu khiÓn. Thùc tÕ cho thÊy, trong c¸c
c«ng ty xÝ nghiÖp ®· ứng dông kü thuËt ghÐp nèi rÊt nhiÒu, VÝ Dô: Nh÷ng ®iÒu
khiÓn CNC, d©y truyÒn c«ng nghÖ s¶n xuÊt xi m¨ng, ®iÒu khiÓn c¸c thiÕt bÞ kh¸c
nhau như nh÷ng phÇn cøng vµ ch¬ng tr×nh do ngêi sö dông viÕt, ng«n ng÷ giao
tiÕp lµ: Pascal, C++, ASM, VB, VB.net...cã kh¶ n¨ng ghÐp nèi m¸y tÝnh cã ®é
chÝnh x¸c cao, thêi gian thu nhËp sè liÖu ng¾n vµ quan träng lµ møc thu thËp vµ
xö lý c¸c kÕt qu¶.
§Ò tµi, ®o ®iÖn ¸p mét chiÒu hiÓn thÞ trªn mµn h×nh LCD vµ trªn m¸y tÝnh
d¹ng ®å thÞ lµ mét ®Ò tµi t¬ng ®èi khã vµ cã nhiÒu øng dông trong ngµng ®iÖn tö
vµ mé sè ngµnh kh¸c.
B. Sù giao tiÕp gi÷a m¸y tÝnh vµ c¸c khèi ghÐp nèi.
I. M¸y tÝnh vµ c¸c khèi ghÐp nèi.
Nh chóng ta ®· biÕt cÊu tróc cña mét m¸y tÝnh ®îc chia lµm 3 phÇn chÝnh:
Khèi xö lý trung t©m CPU lµm nhiÖm vô thu thËp vµ xö lý mỗi d÷ liÖu.
Khèi nhí (Memory): Lu tr÷ c¸c lo¹i d÷ liÖu kh¸c nhau ®a vµo lÊy vµ lÊy ra
ë CPU.
Khèi vµo ra (I/O): Lµm nhiÖm vô t¬ng thÝch víi c¸c thiÕt bÞ bªn ngoµi vµ
®êng Bus trong m¸y tÝnh.
Trong m¸y tÝnh hiÖn nay thêng cã c¸c thiÕt bÞ ngo¹i vi sau: Mµn H×nh, bµn
phÝm, chuét, loa, m¸y in.... Víi c¸c thiÕt bÞ ngo¹i vi ®ã, m¸y tÝnh ®Òu cã khèi xö
lý t¬ng øng, vÝ dô: Khèi ghÐp gi÷a bus m¸y tÝnh víi mµn h×nh lµ card mµn h×nh
(VGA), khèi ghÐp gi÷a bus m¸y tÝnh víi loa lµ soundcard... th«ng thêng c¸c m¸y
tÝnh thÕ hÖ hiÖn nay th× c¸c khèi ghÐp nèi cho c¸c thiÕt bÞ ngo¹i vi th«ng dông
nµy ®Òu ®îc tÝch hîp trªn mét b¶n m¹ch chÝnh gäi lµ Mainboard.
Tuy nhiªn m¸y tÝnh kh«ng chỉ dõng l¹i ë ghÐp nèi víi m¸y in, mµn h×nh,
loa,..mµ nã cßn ®îc øng dông v« cïng réng r·i trong nhiÒu lÜnh vùc. Nhê c¸c
cæng ghÐp nèi RS232, LPT, cæng USB, c¸c khe c¨m më réng...mµ chóng ta cã
thÓ t¹o ra c¸c phÇn cứng cã thÓ ghÐp nèi v¬i m¸y tÝnh díi sù ®iÒu khiÓn cña c¸c
phần mÒm.
Néi dung cña m«n häc nµy lµ chóng ta ®i vµo nghiªn cöu c¸c cæng, các
khe c¾m më réng cña m¸y tÝnh, ®ể tõ ®ã ta cã thÓ chÕ t¹o ra c¸c khèi ghÐp nèi
phôc vô trong nhiÒu lÜnh vùc trong c«ng nghiÖp nh lµ đo lêng vµ ®iÒu khiÓn.
Khoa §iÖn Tö
2
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
1. C¸c d¹ng tin trao ®æi cña m¸y tÝnh
a. D¹ng sè (Digital)
§©y lµ mét chuçi c¸c bit 0 vµ 1 ®îc biÓu diÔn theo hÖ ®Õm nh: nhị ph©n, hÖ
thËp lôc ph©n... C¸c tÝn hiÖu nµy cã thÎ ë d¹ng nèi tiÕp hoÆc song song vµ møc
cã thÎ lµ RS hoÆc TTL...
b. D¹ng ch÷ (Text)
§©y biÓu diÔn cña c¸c ký tù díi d¹ng sè, trªn thÕ giíi hiÖn nay th«ng dông
lµ biÓu diÔn c¸c ký theo m· ASCCII. Theo c¸ch nµy th× c¸c ký tù ®îc biÓu diÔn
b»ng c¸c chÝnh lµ đọc bit 0,1 trªn hÖ thËp lôc ph©n, vÝ dô: M· ký tù A lµ 41h.
D¹ng tÝn hiÖu nµy cã thÓ coi lµ t×n hiÖu sè.
c. D¹ng t¬ng tù (Analog)
§©y lµ c¸c dßng ®iÖn hay ®i ện ¸p biÕn ®æi liªn tôc theo thêi gian. §iÓn
h×nh lµ ®¹i lîng vËt lý thu thËp tõ c¸c bé c¶m biÕn (sensor). Muèn xö lý ®îc c¸c
tÝn hiÖu nµy, m¸y tÝnh (khèi ghÐp nèi) ph¶i chuyÓn nã sang d¹ng sè b»ng c¸c bé
biÕn ®æi ADC.
d. D¹ng ©m tÇn
§©y lµ d¹ng tæng hîp cña nhiÒu tÝn hiÖu t¬ng tù v¬i tÝn hiÖu sè với c¸c
biªn ®é kh¸c nhau. Còng cã thÎ coi ®ây lµ mét d¹ng cña tÝn hiÖu Analog.
2. C¸c d¹ng th«ng tin trao ®æi cña m¸y tÝnh
Trong qu¸ tr×nh göi tin tõ c¸c thiÕt bÞ ngo¹i vi vµo m¸y tÝnh cã c¸c d¹ng
tÝn hiÖu sau:
Tin vÒ tr¹ng th¸i cña thiÕt bÞ ngo¹i vi
Tin m¹ng d÷ liÖu cÇn trao ®æi.
Trong qu¸ tr×nh ngîc l¹i.
Tin vÒ d÷ liÖu trao ®æi.
Tin mang lÖnh ®iÒu khiÓn
3. C¸c ph¬ng thøc trao ®æi tin cña m¸y tÝnh
Trao ®æi theo ch¬ng tr×nh (Assembly, Pascal, C++, VB, VB.net...)
Trao ®æi trùc tiÕp víi c¸c khèi nhí (DMA – Direct Memory Access)
a. ChÕ ®é trao ®æi tin theo ch¬ng tr×nh
§©y lµ chÕ ®é trao ®æi tin trong ®ã m¸y tÝnh trao ®æi víi c¸c thiÕt bÞ ngo¹i
vi b»ng c¸c lÖnh vµo ra. LÖnh dÞch chuyÓn d÷ liÖu gi÷a c¸c thanh ghi. Cô thÓ:
Trong ng«n ng÷ Asembly c¸c lÖnh ®îc lÖnh dµnh cho trao ®æi IN, OUT,
MOV.
Trong ng«n ng÷ Pascal:
§äc mét byte d÷ liÖu: X:=PORT[®Þa chØ]
§a mét byte d÷ liÖu: PORT[®Þa chØ]: =y;
§äc mét byte d÷ liÖu: OUTPORT(®Þa chØ, y)
Trong chÕ ®é trao ®æi theo ch¬ng tr×nh cã 3 ph¬ng ph¸p:
Khoa §iÖn Tö
3
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
• Ph¬ng ph¸p trao ®æi ®ång bé.
ë ph¬ng ph¸p nµy, m¸y tÝnh sÏ tiÕn hµnh trao ®æi tin ngay v ới thiÕt bÞ
ngoµi khi khëi ®éng xong mµ kh«ng cÇn biÕt tr¹ng th¸i cña tr¹ng th¸i ®êng d©y
còng nh thiÕt bÞ ngoµi.
§Ó cã thÓ thùc hiÖn ®îc ph¬ng ph¸p nµy th× yªu cÇu lµ:
+ Tèc ®é trao ®æi tin cña thiÕt bÞ ngoµi lín h¬n tèc ®é trao ®æi tin cña m¸y
tÝnh.
+ ThiÕt bÞ ngoµi cÇn ph¶i ë tr¹ng th¸i s½n sµng ngay khi m¸y tÝnh khëi
®éng xong.
+ Ph¬ng ph¸p nµy cã u ®iÓm lµ tèc ®é trao ®æi tin nhanh nhng cã nhîc
®iÓm lµ dÔ bÞ mÊt tin khi thiÕt bÞ ngoµi cha ë tr¹ng th¸i s·n sµng.
• Ph¬ng ph¸p kh«ng ®ång bé
Trong ph¬ng ph¸p nµy, tríc khi trao ®æi tin, m¸y tÝnh tiÕn hµnh ®äc, kiÓm
tra tr¹ng th¸i cña thiÕt bÞ ngoµi, nªn thiÕt bÞ ngoµi ®· ë tr¹ng th¸i s½n sµng th×
tiÕn hµnh trao ®æi tin cßn ngîc l¹i sÏ chê.
Ngoµi ra trong qu¸ tr×nh trao ®æi, nÕu tin bÞ lçi th× yªu cầu truyÒn l¹i.
Ph¬ng ph¸p nµy cã ®é tin cËy cao nhng tèc ®é chËm h¬n ph¬ng ph¸p ®ång
bé.
• Ph¬ng ph¸p trao ®æi ng¾t ch¬ng tr×nh
Ph¬ng ph¸p nµy lîi dông ®îc u ®iÓm, kh¾c phôc ®îc nhîc ®iÓm cña hai ph¬ng
ph¸p trªn:
+ Khi thiÕt bÞ ngoµi cã yªu cÇu trao ®æi sÏ göi tin tÝn hiÖu theo yªu cÇu
(ng¾t) ®Õn m¸y tÝnh.
+ M¸y tÝnh dõng ch¬ng tr×nh ®ang phôc vô (nÕu thiÕt bÞ ngoµi ®ang yªu
cÇu cã møc yªu tiªn cao h¬n) vµ nhí l¹i dõng ®ång thêi göi tÝn hiÖu x¸c nhËn,
yªu cÇu thiÕt bÞ ngoµi trao ®æi tin.
+ M¸y tÝnh vµ thiÕt bÞ ngoµi trao ®æi tin theo ch¬ng tr×nh (gäi lµ ch¬ng
tr×nh con phôc vô ng¾t).
+ KÕt thóc qu¸ tr×nh trao ®æi tin, m¸y tÝnh trë l¹i ch¬ng tr×nh tõ ®iÓm
dõng.
+ Ph¬ng ph¸p trao ®æi theo ng¾n ch¬ng tr×nh kh¾c phôc ®îc nhîc ®iÓm
cña hai ph¬ng ph¸p ®ång bé vµ kh«ng ®ång bé, nã cho phÐp tËn dông tèi ®a thêi
gian lµm viÖc cña m¸y tÝnh.
b. Trao ®æi MDA.
§©y lµ ph¬ng thøc trao ®æi trùc tiÕp víi khèi nhí cña m¸y tÝnh mµ kh«ng
th«ng qua CPU. Khi ®ã CPU sÏ ë tr¹ng th¸i treo nhêng quyÒn ®iÒu khiÓn bï cho
ghÐp nèi. ThiÕt bÞ ngoµi vµ khèi nhí cña m¸y tÝnh sÏ tiÕn hµnh trao ®æi (®äc/ghi
d÷ liÖu). Sau khi qu¸ tr×nh kÕt thóc sÏ nhêng l¹i quyÒn ®iÒu khiÓn Bus cho CPU.
Khoa §iÖn Tö
4
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
PhÇn II: ghÐp nèi truyÒn tin nèi tiÕp
I. Kh¸i NiÖm VÒ TruyÒn Tin Nèi TiÕp .
1. Kh¸i niÖm
TruyÒn tin nèi tiÕp lµ ph¬ng thøc truyÒn tin trong ®ã c¸c bit mang th«ng
tin ®îc truyÒn kÕ tiÕp nhau trªn 1 ®êng dÉn vËt lý . T¹i 1 thêi ®iÓm phÝa bªn
truyÒn vµ bªn nhËn chØ cã thÓ truyÒn ( hoÆc nhËn) 1 bit .
¦u ®iÓm cña truyÒn tin nèi tiÕp :
+ TiÕt kiÖm ®êng dÉn
+ Cã kh¶ n¨ng truyÒn ®i xa
Nhîc ®iÓm
+ Tèc ®é chËm h¬n c¸c thiÕt bÞ thêng ph¶i cã khèi chuyÓn ®æi nèi tiÕp
song song, song song nèi tiÕp khi sö dông ph¬ng ph¸p nµy ®Ó trao ®æi tin .
2. C¸c ph¬ng thøc truyÒn tin nèi tiÕp
Cã 3 ph¬ng thøc truyÒn tin nèi tiÕp :
+ Ph¬ng thøc ®ång bé : C¸c byte chøa c¸c bit th«ng tin ®îc truyÒn liªn
tiÕp trªn ®êng truyÒn vµ chØ ®îc ng¨n c¸ch ( ph©n biÖt ) nhau b»ng bit ®ång bé
khung (SYN). H×nh 1
+ Ph¬ng thøc kh«ng ®ång bé : C¸c byte chøa c¸c bit th«ng tin ®îc chøa
trong 1 khung. 1 khung ®îc b¾t ®Çu b»ng 1 bit start, tiÕp theo lµ c¸c bit mang
th«ng tin, kÕ tiÕp lµ c¸c bit kiÓm tra ch½n lÎ vµ kÕt thóc lµ 1 bit stop . Kho¶ng
c¸ch gi÷a c¸c khung lµ c¸c bit dõng bÊt kú , khi ®ã ®êng truyÒn ®îc lÊy lªn møc
cao (h×nh 2 ).
+ Ph¬ng thøc lai : Đ©y lµ ph¬ng thøc kÕt hîp cña hai ph¬ng ph¸p trªn ,
trong ®ã c¸c bit trong 1 khung ®îc truyÒng theo ph¬ng thøc kh«ng ®ång bé cßn
c¸c byte ®îc truyÒn theo ph¬ng thøc ®ång bé
H×nh 1
H×nh 2
Khoa §iÖn Tö
5
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
II. Cæng Nèi TiÕp
1. Giíi thiÖu
Cæng nèi tiÕp RS232 lµ 1 giao diÖn phæ biÕn réng r·i nhÊt , ta cßn gäi lµ
cæng com 1 ,com2 , ®Ó tù do cho c¸c øng dông kh¸c nhau , gièng nh cæng
m¸y in , cæng nèi tiÕp RS232 còng ®îc dö dông rÊt thuËn tiÖn trong viÖc ghÐp
nèi m¸y tÝnh víi c¸c thiÕt bÞ ngo¹i vi . ViÖc truyÒn d÷ liÖu qua cæng RS232 ®îc tiÕn hµnh theo c¸ch nèi tiÕp nghÜa lµ c¸c bit d÷ liÖu ®îc göi ®i nèi tiÕp víi
nhau trªn 1 ®êng dÉn .
2. CÊu tróc cæng nèi tiÕp
Ý nghÜa c¸c ch©n tÝn hiÖu nh sau :
Møc tÝn hiÖu trªn c¸c ch©n cña cæng nèi tiÕp thêng n»m trong kho¶ng
-12v _ +12v
C¸c bit d÷ liÖu ®îc ®¶o ngîc l¹i . møc ®iÖn ¸p ë møc logic 1 : -12v _ -3v
møc ®iÖn ¸p ë møc logic 0 : +3v _ +12v
tr¹ng th¸i tÜnh trªn ®êng dÉn cã møc ®iÖn ¸p -12v
b»ng tèc ®é baund ta thiÕt lËp tèc ®é truyÒn d÷ liÖu c¸c gi¸ trÞ th«ng thêng lµ :
300, 600, 1200, 2400,4800, 9600…
3. ĐÞa chØ c¸c cæng nh sau :
Com1: ®Þa chØ c¬ b¶n lµ : 3F8H
Com2: ®Þa chØ c¬ b¶n lµ : 2F8H
Com3: ®Þa chØ c¬ b¶n lµ : 3E8H
Com4: ®Þa chØ c¬ b¶n lµ : 2E8H
Khoa §iÖn Tö
6
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
Sù trao ®æi c¸c ®êng dÉn tÝn hiÖu :
Trªn m¸y tÝnh cã mét vi m¹ch ®¶m b¶o viÖc truyÒn (nhËn) d÷ liÖu th«ng qua
cæng nèi tiÕp, vi m¹ch ®ã gäi lµ UART ( bé truyÒn nhËn nèi tiÕp kh«ng ®ång bé
) . UART ®Ó ®iÒu khiÓn sù trao ®æi th«ng tin gi÷a m¸y tÝnh vµ c¸c thiÕt bÞ ngo¹i
vi , phæ biÕn nhÊt lµ vi m¹ch 8250 cña h·ng NSC hoÆc c¸c thiÕt bÞ tiÕp theo , nh
16C550 , bé UART cã 10 thanh ghi ®Ó ®iÒu khiÓn tÊt c¶ chøc n¨ng cña viÖc nhËp
vµo xuÊt ra d÷ liÖu theo c¸ch nèi tiÕp .
4. C¸c thanh ghi ®iÒu khiÓn .
a) Thanh ghi ®iÒu khiÓn modem(3F8 +4)
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
LOOP OUT2 OUT1 RTS
DTR
D0=1 : ®a DTR=0
D0=0 : ®a DTR =1
D1=1: ®a RTS =0
D1=0: ®a RTS =1
OUT1 , OUT2 ®iÒu khiÓn ®Çu ra phô
b) Thanh ghi tr¹ng th¸i modem(3F8+6)
RLSD RI
DSR
CTS
RLSD1 RI1
DSR1
CTR1
Thanh ghi nµy nhiÖm vô th«ng b¸o vÒ tr¹nh th¸i c¸c ®êng dÉn b¾t tay ®iÒu chó ý
ë thanh ghi nµy lµ : D4, D5 ,D6 chÝnh lµ lèi vµo cña c¸c ®êng dÉn CTS , DSR ,
RI
®· ®îc ®¶o .
c) Thanh ghi ®iÒu khiÓn ®êng truyÒn( 3F8+3)
C7
C6
C5
C4
C3
C1, C0 : ®Æt sè bit trong mçi tõ
00: 5 bit
01: 6 bit
10 : 7 bit
11: 8 bit
C2 : c¸c bit dõng
0 : 1 bit dõng
1: 1,5 bit dõng
C3 : bit kiÓm tra ch½n lÎ
0 : kh«ng kiÓm tra
1 : cã kiÓm tra
C4 : lo¹i ch½n lÎ
0: bit lÎ
Khoa §iÖn Tö
7
C2
C1
C0
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
1: bit ch½n
C5 : stick bit
0: kh«ng cã stick bit
1: stick bit
C6 : ®Æt break
0: normal output
1: göi 1 break
C7 ( DLAB) : bit ph©n chia truy nhËp cho c¸c thanh ghi cïng ®Þa chØ
d) Thanh ghi tr¹ng th¸i ®êng truyÒn (3F8+5)
0
S6
S5
S4
S3
S2
S1
S0
S0=1: Khi cã 1 byte míi nhËn ®îc
S1=1: Khi ký tù tríc kh«ng ®îc ®äc ký tù míi ®Õn sÏ xo¸ ký tù cò trong bé
®Öm
S2=1: Khi cã lçi ch½n lÎ
S3=1: Khi cã lçi khung truyÒn
S4=1 : Khi cã gi¸n ®o¹n ®êng truyÒn
S5=1 : Khi bé truyÒn rçng cæng nèi tiÕp cã thÓ truyÒn nhËn
S6=1: Khi bé ®Öm truyÒn rçng
S7=0: Kh«ng sö dông
e) Thanh ghi cho phÐp ng¾t ( 3F8+1)
D7
D6
D5
D4
D3
D2
D1
D0
D0=1 : Cho phÐp ng¾t khi nhËn 1 ký tù
D1=1 : Cho phÐp ng¾t khi bé ®Öm truyÒn rçng
D2=1: Cho phÐp ng¾t khi thay ®æi tr¹ng th¸i ®êng truyÒn
D3=1: Cho phÐp ng¾t khi thay ®æi tr¹ng th¸i modem
D4=0
D5=0
D6=0
D7=0
f) Thanh ghi nhËn d¹ng ng¾t ( 3F8+2)
D7
D6
0
0
D5
0
D4
0
D2
D1 D0 Møc u tiªn
0
1
0
1
Khoa §iÖn Tö
1
0
D3
D2
D1
D0
0
Nguån
g©y ĐÆt l¹i ng¾t
ng¾t
Kh«ng kiÓm tra ng¾t
Cao nhÊt
Lçi ®êng nhËn d÷ liÖu
Đäc thanh ghi
8
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
tr¹ng th¸i ®êng
truyÒn
Đäc thanh ghi
®Öm
1
0
0
Thø 2
Cã d÷ liÖu nhËn
0
1
0
Thø 3
0
0
0
Thø 4
Thanh ghi ®Öm truyÒn
rçng
Các trạng thái modem
Đọc thanh ghi
trạng
thái
modem
g) Thanh ghi chøa sè chia tèc ®é baud (byte thÊp - ®Þa chØ c¬ së )
thanh ghi nµy gåm cã 8 bit , chøa phÇn thÊp sè chia cña tèc ®é baud . sè chia tèc
®é baud tÝnh theo c«ng thøc :
sè chia tèc ®é baud = 1843200/( 16*tèc ®ä baud cÇn thiÕt lËp )
h) Thanh ghi chøa sè chia tèc ®é baud( byte cao – 3F8+1)
i) Thanh ghi ®Öm ®äc viÕt ( 3F8)
iii. Nèi ghÐp 8051 víi RS232
ChuÈn RS232 kh«ng t¬ng thÝch víi møc logic TTL, nªn cÇn bæ sung thªm
mét bé ®iÒu khiÓn ®êng truyÒn, ch¼ng h¹n nh chip MAX232 ®Ó chuyÓn ®æi c¸c
møc ®iÖn ¸p RS232 vÒ c¸c møc TTL vµ ngîc l¹i. Do vËy nèi ghÐp 8051 víi ®Çu
nèi RS232 th«ng qua chip MAX232.
a. Ch©n RxD vµ TxD cña 8051
8051 cã hai ch©n ®îc dïng chuyªn cho truyÒn vµ nhËn d÷ liÖu nèi tiÕp.
Hai ch©n nµy lµ RxD vµ TxD vµ lµ mét phÇn cña cæng P3 (®ã lµ P3.0 vµ P3.1 t ¬ng øng). P3.0 lµ ch©n sè 10 cña 8051, cßn P3.1 lµ ch©n sè 11. C¸c ch©n nµy t¬ng thÝch víi møc logic TTL. Do vËy cÇn cã thªm mét bé ®iÒu khiÓn ®êng
truyÒn ®Ó chóng t¬ng thÝch víi RS232. Bé ®iÒu khiÓn nh vËy cã thÓ lµ chip
MAX232.
b. Bé ®iÒu khiÓn ®êng truyÒn MAX232
V× RS232 kh«ng t¬ng thÝch víi c¸c bé vi xö lý vµ vi ®iÒu khiÓn hiÖn nay
nªn ta cÇn mét bé ®iÒu khiÓn ®êng truyÒn (bé chuyÓn ®æi ®iÖn ¸p) ®Ó chuyÓn ®æi
c¸c tÝn hiÖu RS232 vÒ c¸c møc ®iÖn ¸p TTL ®îc c¸c ch©n TxD vµ RxD cña 8051
chÊp nhËn. Mét vÝ dô cña bé chuyÓn ®æi nh vËy lµ chip MAX232 cña h·ng
Maxim. Bé MAX232 chuyÓn ®æi tõ c¸c møc ®iÖn ¸p RS232 vÒ møc TTL vµ ngîc l¹i. Mét ®iÓm m¹nh kh¸c cña chip MAX232 ®ã lµ dïng ®iÖn ¸p cña ©n RxD
cña ®Çu nèi DB cña RS232. Bé ®iÒu khiÓn ®êng R1 còng cã g¸n R1in vµ R1out
trªn c¸c ch©n sè 13 vµ 12 t¬ng øng. Ch©n R1in (ch©n sè 13) lµ ë phÝa RS232 ®
MAX232 cã g¸n T1in vµ T1out trªn c¸c ch©n sè 11 vµ 1 t¬ng øng. Ch©n T1in lµ ë
phÝa TTL vµ ®îc nèi tíi ch©n RxD cña bé vi ®iÒu khiÓn, cßn T1out lµ ë phÝa
RS232 ®îc nèi tíi ch©n TxD ®Çu nèi DB cña RS232 vµ ch©n R1 out (ch©n sè 12) lµ
ë phÝa TTL vµ ®îc nèi tíi ch©n RxD cña bé vi ®iÒu khiÓn, ch©n TxD bªn ph¸t ®îc nèi víi RxD cña bªn thu vµ ngîc l¹i. MAX232 cÇn cã 4 tô ®iÖn gi¸ trÞ tõ 1
®Õn 22µF. gi¸ trÞ thêng dïng lµ 22µF.
Khoa §iÖn Tö
9
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
PhÇn III: Néi dung ®Ò tµi
I. Ch¬ng tr×nh ®iÒu khiÓn b»ng VB
1. Form chÝnh
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
With Me.SerialCOM
.PortName = "COM1"
.BaudRate = 9600
.Parity = IO.Ports.Parity.None
.Open()
End With
Me.ButtonStop.Enabled = False
Me.ButtonStart.Enabled = True
Me.RadioButton5V.Checked = True
Me.ChonNguonDC()
Khoa §iÖn Tö
10
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
End Sub
Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
Me.SerialCOM.Write(Convert.ToChar(e.KeyChar))
End Sub
Public Sub UpDateStatus()
' Update các thông số cổng COM đưa tới
Status bar
Dim ParityTemp As String = "?"
Dim StopbitTemp As String = "?"
Select Case Me.SerialCOM.Parity
Case IO.Ports.Parity.None
ParityTemp = "N"
Case IO.Ports.Parity.Odd
ParityTemp = "O"
Case IO.Ports.Parity.Even
ParityTemp = "E"
Case IO.Ports.Parity.Mark
ParityTemp = "M"
Case IO.Ports.Parity.Space
ParityTemp = "S"
End Select
Select Case Me.SerialCOM.StopBits
Case IO.Ports.StopBits.One
StopbitTemp = "1"
Case IO.Ports.StopBits.Two
StopbitTemp = "2"
End Select
Me.StatusLabel.Text = Me.SerialCOM.PortName + "-" +
Me.SerialCOM.BaudRate.ToString + "-" + Me.SerialCOM.DataBits.ToString + "-"
+ ParityTemp + "-" + StopbitTemp
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Timer1.Tick
Me.LabelTimer.Text = Date.Now.ToLongTimeString
Me.LabelDate.Text = Date.Now.ToLongDateString
Me.UpDateStatus()
End Sub
Private Sub ChonNguonDC()
If Me.RadioButton5V.Checked Then
Me.SerialCOM.Write("#5")
' Nguồn 5V
ElseIf Me.RadioButton12V.Checked Then
Me.SerialCOM.Write("#1")
' Nguồn 12V
Else
Me.SerialCOM.Write("#2")
' Nguồn 24V
End If
End Sub
Private Sub RadioButton5V_CheckedChanged(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles RadioButton5V.CheckedChanged
Me.ChonNguonDC()
End Sub
Private Sub RadioButton12V_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
RadioButton12V.CheckedChanged
Me.ChonNguonDC()
Khoa §iÖn Tö
11
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
End Sub
Private Sub RadioButton24V_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
RadioButton24V.CheckedChanged
Me.ChonNguonDC()
End Sub
Private Sub ButtonStart_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonStart.Click
Me.SerialCOM.Write("R")
Me.ButtonStart.Enabled = False
Me.ButtonStop.Enabled = True
End Sub
Private Sub ButtonStop_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonStop.Click
Me.SerialCOM.Write("Q")
Me.RadioButton5V.Checked = True
Me.ButtonStart.Enabled = True
Me.ButtonStop.Enabled = False
End Sub
Private Sub ButtonDung_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonDung.Click
Me.SerialCOM.Write("Q")
End Sub
Private Sub ButtonChay_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonChay.Click
Me.SerialCOM.Write("R")
Me.ButtonStart.Enabled = False
Me.ButtonStop.Enabled = True
End Sub
Private Sub ButtonTang_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonTang.Click
Me.SerialCOM.Write("T")
Me.ButtonStart.Enabled = False
Me.ButtonStop.Enabled = True
End Sub
Private Sub ButtonGiam_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonGiam.Click
Me.SerialCOM.Write("G")
End Sub
Private Sub ButtonDao_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonDao.Click
Me.SerialCOM.Write("D")
End Sub
Private Sub ButtonSetting_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles ButtonSetting.Click
FormSetting.Show()
End Sub
Private Sub LabelAbout1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Label1.Click
Form2.Show()
Khoa §iÖn Tö
12
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
End Sub
Private Sub LabelAbout2_Click_1(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles LabelAbout1.Click
Form2.Show()
End Sub
Private Sub ButtonExit_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonExit.Click
If MessageBox.Show("Are you sure you want to exit now ?
",
"(^_o)D&A Pro(o_^) !", MessageBoxButtons.YesNo, MessageBoxIcon.Question) =
Windows.Forms.DialogResult.Yes Then
Me.Close()
End If
End Sub
End Class
2.Form setting
Public Class FormSetting
Private Sub FormSETTING_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Me.ComboBoxPortName.Text = Form1.SerialCOM.PortName
Me.ComboBoxBaudRate.Text = Form1.SerialCOM.BaudRate
Me.ComboBoxDataBit.Text = Form1.SerialCOM.DataBits
Select Case Form1.SerialCOM.Parity
Case IO.Ports.Parity.None
Me.ComboBoxParity.Text = "None"
Case IO.Ports.Parity.Odd
Me.ComboBoxParity.Text = "Odd"
Case IO.Ports.Parity.Even
Me.ComboBoxParity.Text = "Even"
Case IO.Ports.Parity.Mark
Me.ComboBoxParity.Text = "Mark"
Case IO.Ports.Parity.Space
Me.ComboBoxParity.Text = "Space"
End Select
Me.ComboBoxStopBit.Text = Form1.SerialCOM.StopBits
End Sub
Private Sub ButtonOK_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles ButtonOK.Click
Form1.SerialCOM.Close()
With Form1.SerialCOM
.PortName = Me.ComboBoxPortName.Text
.BaudRate = Convert.ToInt32(Me.ComboBoxBaudRate.Text)
.DataBits = Convert.ToInt16(Me.ComboBoxDataBit.Text)
Select Case Me.ComboBoxParity.Text
Case Is = "None"
Khoa §iÖn Tö
13
Trêng §H C«ng NghiÖp Hµ Néi
ghÐp Nèi M¸y TÝnh
Form1.SerialCOM.Parity = IO.Ports.Parity.None
Case "Odd"
Form1.SerialCOM.Parity = IO.Ports.Parity.Odd
Case "Even"
Form1.SerialCOM.Parity = IO.Ports.Parity.Even
Case "Mark"
Form1.SerialCOM.Parity = IO.Ports.Parity.Mark
Case "Space"
Form1.SerialCOM.Parity = IO.Ports.Parity.Space
End Select
.StopBits = Convert.ToInt16(Me.ComboBoxStopBit.Text)
End With
Form1.SerialCOM.Open()
Form1.StatusLabel.Text = Me.ComboBoxPortName.Text & "-" &
Me.ComboBoxBaudRate.Text & "-" & Me.ComboBoxParity.Text & "-" &
Me.ComboBoxDataBit.Text & "-" & Me.ComboBoxStopBit.Text
Me.Close()
End Sub
Private Sub ButtonDefault_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles ButtonDefault.Click
Me.ComboBoxPortName.Text = "COM1"
Me.ComboBoxBaudRate.Text = "9600"
Me.ComboBoxDataBit.Text = "8"
Me.ComboBoxParity.Text = "None"
Me.ComboBoxStopBit.Text = "1"
End Sub
Private Sub ButtonCancel_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles ButtonCancel.Click
Me.Close()
End Sub
End Class
II. Ch¬ng tr×nh vi ®iÒu khiÓn
#include
#include
bit PWM,k;
unsigned char dem=0;
unsigned char ch;
unsigned int phantram_PWM=20;
void delay(unsigned long int t)
{
unsigned long int i,j;
for (i=0;i[...]... TMOD = 0x20; TH1= -3; //Toc do 9600 baud SCON=0x50; SCON=0x50; TR1 =1; TI = 1; //Timer 1 che do 2 while (1) { tangtoc(); giamtoc(); ch = _getkey(); chonchedo(ch); ch = '@'; // hienthi((30-phantram_PWM) /10 ,(30-phantram_PWM) %10 ); } } Khoa §iÖn Tö 16 Trêng §H C«ng NghiÖp Hµ Néi Iii S¬ Đå Nguyªn Lý Khoa §iÖn Tö 17 ghÐp Nèi M¸y TÝnh Trêng §H C«ng NghiÖp Hµ Néi IV Sơ Đồ Mạch In: Khoa §iÖn Tö 18 ghÐp Nèi M¸y... 8 BIT TU NAP TH0=0X9B;// nap gia tri 15 5 ma hex TL0=0X9B; EA =1; TR0 =1; ET0 =1; } */ void ngat_timer0(void) interrupt 1/ /tao xung PWM { TR0=0; TF0=0; dem++; if (dem>=phantram_PWM) { PWM =1; } else { PWM=0; } if (dem==30) dem=0; TR0 =1; } // HAM DUNG DONG CO void stopdc() { P0_0=0; P0 _1= 0; } unsigned char chieu() { k=!k; if (k= =1) { P0 _1= PWM; P0_0=0; } if (k==0) { P0 _1= 0; P0_0=PWM; } return(k); } unsigned... Nèi M¸y TÝnh Form1.SerialCOM.Parity = IO.Ports.Parity.None Case "Odd" Form1.SerialCOM.Parity = IO.Ports.Parity.Odd Case "Even" Form1.SerialCOM.Parity = IO.Ports.Parity.Even Case "Mark" Form1.SerialCOM.Parity = IO.Ports.Parity.Mark Case "Space" Form1.SerialCOM.Parity = IO.Ports.Parity.Space End Select StopBits = Convert.ToInt16(Me.ComboBoxStopBit.Text) End With Form1.SerialCOM.Open() Form1.StatusLabel.Text... unsigned long int i,j; for (i=0;i
Ngày đăng: 01/10/2015, 08:48
Xem thêm: ĐỒ ÁNThiết kế bộ điều khiển động cơ điện 1 chiều sử dụng cổng nối tiếp, ĐỒ ÁNThiết kế bộ điều khiển động cơ điện 1 chiều sử dụng cổng nối tiếp