Cân xe cũng như cân những khối lượng lớn là 1 nhu cầu cần thiết cho các nhà máy sản xuất để biết khối lượng hàng hoá , sản phẩm , hay nguyên vật liệu và cho cả các lĩnh vực khác như bến cảng , trạm cân xe phát hiện quá tải của cảnh sát giao thông Vì những ứng dụng kể trên khi nhận đồ án tốt nghiệp chúng em đã tiến hành thực hiện đề tài " Thiết kế bộ xử lý cân điện tử dùng vi điều khiển 89C51 hiện thị dữ liệu ra màn hình LCD có giao tiếp máy tính qua cổng RS 232 ".Cụ thể thiết kế cân điển tử có thể cân tối đa 25000KG
100 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3012 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Thiết kế và thi công mạch cân điện tử sử dụng 89C51, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
2.4.1 Bé khuÕch ®¹i kh«ng ®¶o :
H×nh 2.15 Bé khuÕch ®¹i kh«ng ®¶o :
HÖ sè khuÕch ®¹i kh«ng ®¶o: (2.1)
+
-
+
-
R0
RL
Rf
Vin
Vout
O-P
R1
2.4.2 Bé khuÕch ®¶o :
H×nh 2.16 Bé khuÕch ®¶o
HÖ sè khuÕch ®¹i :
Ch¬ng III: vi ®iÒu khiÓn Giao tiÕp víi m¸y tÝnh
3.1 TruyÒn d÷ liÖu gi÷a m¸y tÝnh vµ vi ®iÒu khiÓn
C¸c m¸y tÝnh truyÒn d÷ liÖu theo hai c¸ch: Song song vµ nèi tiÕp. Trong truyÒn d÷ liÖu song song thêng cÇn 8 hoÆc nhiÒu ®êng d©y dÉn ®Ó truyÒn d÷ liÖu ®Õn mét thiÕt bÞ chØ c¸ch xa vµi bíc. MÆc dï trong c¸c trêng hîp nh vËy th× nhiÒu d÷ liÖu ®îc truyÒn ®i trong mét kho¶ng thêi gian ng¾n nhng kho¶ng c¸ch th× kh«ng thÓ lín ®îc. §Ó truyÒn d÷ liÖu ®i xa th× ph¶i sö dông ph¬ng ph¸p truyÒn nèi tiÕp. Trong truyÒn th«ng nèi tiÕp d÷ liÖu ®îc göi ®i tõng bÝt mét so víi truyÒn song song th× mét hoÆc nhiÒu byte ®îc truyÒn ®i cïng mét lóc. ViÖc truyÒn th«ng gi÷a m¸y tÝnh vµ vi ®iÒu khiÓn ®îc thùc hiÖn b»ng ph¬ng ph¸p truyÒn nèi tiÕp v× vËy trong ch¬ng nµy t«i chØ tr×nh bµy nh÷ng kiÕn thøc liªn quan ®Õn truyÒn th«ng nèi tiÕp
3.1.1. C¬ së cña truyÒn th«ng nèi tiÕp
§èi víi truyÒn th«ng nèi tiÕp th× ®Ó lµm ®îc c¸c byte d÷ liÖu ph¶i ®îc chuyÓn ®æi thµnh c¸c bÝt nèi tiÕp sö dông thanh ghi dÞch vµo - song song - ra - nèi tiÕp. Sau ®ã nã cã thÓ ®îc truyÒn quan mét ®êng d÷ liÖu ®¬n. §iÒu nµy còng cã nghÜa lµ ë ®Çu thu còng ph¶i cã mét thanh ghi vµo - nèi tiÕp - ra - song song ®Ó nhËn d÷ liÖu nèi tiÕp vµ sau ®ã gãi chóng thµnh tõng byte mét. TÊt nhiªn, nÕu d÷ liÖu ®îc truyÒn qua ®êng tho¹i th× nã ph¶i ®îc chuyÓn ®æi tõ c¸c sè 0 vµ 1 sang ©m thanh ë d¹ng sãng h×nh sin. ViÖc chuyÓn ®æi nµy thùc thi bëi mét thiÕt bÞ cã tªn gäi lµ Modem lµ ch÷ viÕt t¾t cña “Modulator/ demodulator” (®iÒu chÕ/ gi¶i ®iÒu chÕ).
Trong truyÒn d÷ liÖu nÕu d÷ liÖu cã thÓ ®îc võa ph¸t vµ võa ®îc thu th× gäi lµ truyÒn song c«ng. §iÒu nµy t¬ng ph¶n víi truyÒn ®¬n c«ng ch¼ng h¹n nh c¸c m¸y in chØ nhËn d÷ liÖu tõ m¸y tÝnh. TruyÒn song c«ng cã thÓ cã hai lo¹i lµ b¸n song c«ng vµ song c«ng hoµn toµn phô thuéc vµo truyÒn d÷ liÖu cã thÓ x¶y ra ®ång thêi kh«ng? NÕu d÷ liÖu ®îc truyÒn theo mét ®êng t¹i mét thêi ®iÓm th× ®îc gäi lµ truyÒn b¸n song c«ng. NÕu d÷ liÖu cã thÓ ®i theo c¶ hai ®êng cïng mét lóc th× gäi lµ song c«ng toµn phÇn. TÊt nhiªn, truyÒn song c«ng ®ßi hái hai ®êng d÷ liÖu (ngoµi ®êng ©m cña tÝn hiÖu), mét ®Ó ph¸t vµ mét ®Ó thu d÷ liÖu cïng mét lóc.
TruyÒn th«ng d÷ liÖu nèi tiÕp sö dông hai ph¬ng ph¸p ®ång bé vµ dÞ bé. Ph¬ng ph¸p ®ång bé truyÒn mét khèi d÷ liÖu (c¸c ký tù) t¹i cïng thêi ®iÓm trong khi ®ã truyÒn dÞ bé chØ truyÒn tõng byte mét. Cã thÓ viÕt phÇn mÒm ®Ó sö dông mét trong hai ph¬ng ph¸p nµy, nh÷ng ch¬ng tr×nh cã thÓ rÊt dµi vµ buån tÎ. V× lý do nµy mµ nhiÒu nhµ s¶n xuÊt ®· cho ra thÞ trêng nhiÒu lo¹i IC chuyªn dông phôc vô cho truyÒn th«ng d÷ liÖu nèi tiÕp. Nh÷ng IC nµy phôc vô nh c¸c bé thu - ph¸t dÞ bé tæng hîp UART (Universal Asynchronous Receiver Transmitter) vµ c¸c bé thu - ph¸t ®ång - dÞ bé tæng hîp UBART (Universal Asynchronous Receiver Transmitter). Bé vi ®iÒu khiÓn 8051 cã mét cµi s½n mét UART.
3.1.2. Tèc ®é truyÒn d÷ liÖu.
Tèc ®é truyÒn d÷ liÖu trong truyÒn th«ng d÷ liÖu nèi tiÕp ®îc gäi lµ bÝt trong gi©y bps (bÝt per second). Ngoµi ra, cßn ®îc sö dông mét thuËt ng÷ réng r·i n÷a lµ tèc ®é baud. Tuy nhiªn, c¸c tèc baud vµ bps lµ hoµn toµn kh«ng b»ng nhau. §iÒu nµy lµ do tèc baud lµ thuËt ng÷ cña modem vµ ®îc ®Þnh nghÜa nh lµ sè lÇn thay ®æi cña tÝn hiÖu trong mét gi©y. Trong c¸c modem cã nh÷ng trêng hîp khi mét sù thay ®æi cña tÝn hiÖu th× nã truyÒn vµi bÝt d÷ liÖu. Nhng ®èi víi mét d©y dÉn th× tèc ®é baud vµ bps lµ nh nhau nªn trong cuèn s¸ch nµy chóng ta cã thÓ dïng thay ®æi c¸c thuËt ng÷ nµy cho nhau.
Tèc ®é truyÒn d÷ liÖu cña mét hÖ m¸y tÝnh ®· cho phô thuéc vµo c¸c cæng truyÒn th«ng kÕt nèi vµo trong hÖ thèng ®o.
8051 truyÒn vµ nhËn d÷ liÖu nèi tiÕp theo nhiÒu tèc ®é kh¸c nhau. Tèc ®é truyÒn cña nã cã thÓ lËp tr×nh ®îc. §iÒu nµy thùc hiÖn nhê sù trî gióp cña bé ®Þnh thêi Timer1. Muèn Timer1 ®Æt tèc ®é baud th× nã ph¶i ®îc lËp tr×nh vÒ chÕ ®é lµm viÖc mode2, ®ã lµ chÕ ®é thanh ghi 8 bÝt tù ®éng n¹p l¹i. §Ó cã tèc ®é baud t¬ng thÝch víi PC ta ph¶i n¹p TH1 theo c¸c gi¸ trÞ cho trong b¶ng 3.1 .
B¶ng 3.1 C¸c gi¸ trÞ cña thanh ghi TH1 trong Timer1 cho c¸c tèc ®é baud kh¸c nhau.
Tèc ®é baud
TH1 (thËp ph©n)
TH1 (sè Hex)
9600
4800
2400
1200
3
6
12
24
FD
FA
F4
F8
3.2 C¸c chuÈn giao tiÕp dïng trong truyÒn th«ng nèi tiÕp.
§Ó cho phÐp t¬ng thÝch gi÷a c¸c thiÕt bÞ truyÒn th«ng d÷ liÖu ®îc s¶n xuÊt bëi c¸c h·ng kh¸c nhau th× mét chuÈn giao diÖn ®îc gäi lµ RS232 ®· ®îc thiÕt lËp bëi hiÖp héi c«ng nghiÖp ®iÖn tö EIA vµo n¨m 1960. N¨m 1963 nã ®îc söa chØnh vµ ®îc gäi lµ RS232A vµ vµo c¸c n¨m 1965 vµ 1969 th× ®îc ®æi thµnh RS232B vµ RS232C. ë ®©y chóng ta ®¬n gi¶n chØ nãi ®Õn RS232. Ngµy nay RS232 lµ chuÈn giao diÖn I/O vµo - ra nèi tiÕp ®îc sö dông réng r·i nhÊt. ChuÈn nµy ®îc sö dông trong m¸y tÝnh PC vµ hµng lo¹t c¸c thiÕt bÞ kh¸c nhau. Tuy nhiªn, v× nã ®îc thiÕt lËp tríc hä l«-gÝc TTL rÊt l©u do vËy ®iÖn ¸p ®Çu vµo vµ ®Çu ra cña nã kh«ng t¬ng thÝch víi møc TTL. Trong RS232 th× møc 1 ®îc biÓu diÔn bëi - 3v ®Õn -25v trong khi ®ã møc 0 th× øng víi ®iÖn ¸p + 3v ®Õn +25v lµm cho ®iÖn ¸p - 3v ®Õn + 3v lµ kh«ng x¸c ®Þnh. V× lý do nµy ®Ó kÕt nèi mét RS232 bÊt kú ®Õn mét hÖ vi ®iÒu khiÓn th× ta ph¶i sö dông c¸c bé biÕn ®æi ®iÖn ¸p nh MAX232 ®Ó chuyÓn ®æi c¸c møc l«gÝc TTL vÒ møc ®iÖn ¸p RS232 vµ ngîc l¹i. C¸c chÝp IC MAX232 nh×n chung ®îc coi nh c¸c bé ®iÒu khiÓn ®êng truyÒn.
3.2.1 ChuÈn RS232.
RS232 gåm 2 lo¹i DB-25(RS232 cã 25 ch©n ) vµ DB-9 (RS232 cã 9 ch©n )
-RS232 d¹ng 25 ch©n cã tªn gäi lµ DB-25 . §Ó ph©n biÖt ngêi ta dïng kÝ hiÖu DB-25P ®Ó chØ ®Çu ®ùc vµ DB-25S ®Ó chØ ®Çu c¸i.
H×nh d¹ng cña chuÈn DB-25:
14
25
13
1
H×nh 3.1 §Çu nèi DB - 25 cña RS232.
-V× kh«ng ph¶i tÊt c¶ mäi ch©n ®Òu ®îc sö dông trong c¸p cña m¸y tÝnh PC, nªn IBM ®a ra phiªn b¶n cña chuÈn vµo/ra nèi tiÕp chØ sö dông cã 9 ch©n gäi lµ DB - 9 nh tr×nh bµy ë b¶ng 3.1 vµ h×nh 3..2
6
9
5
1
.
H×nh3.2 S¬ ®å ®Çu nèi DB - 9 cña RS232
B¶ng 3..2 C¸c tÝn hiÖu cña c¸c ch©n ®Çu nèi DB - 9 trªn m¸y tÝnh IBM PC.
M« t¶
Sè ch©n
1
Da ta carrier detect (DCD
Tr¸nh tÝn hiÖu m¹ng d÷ liÖu
2
Received data (RxD)
D÷ liÖu ®îc nhËn
3
Transmitted data (TxD)
D÷ liÖu ®îc göi
4
Data terminal ready (DTR)
§Çu d÷ liÖu s½n sµng
5
Signal ground (GND)
§Êt cña tÝn hiÖu
6
Data set ready (DSR)
D÷ liÖu s½n sµng
7
Request to send (RTS)
Yªu cÇu göi
8
Clear to send (CTS)
Xo¸ ®Î göi
9
Ring indicator (RL
B¸o chu«ng
3.2.2 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 sÏ ®îc chÊp nhËn bëi c¸c ch©n TxD vµ RxD cña 8051. Bé MAX232 chuyÓn ®æi tõ c¸c møc ®iÖn ¸p RS232 sÏ vÒ møc ®iÖn ¸p TTL vµ ngîc l¹i. Mét ®iÓm m¹nh cña chÝp MAX232 lµ nã dïng ®iÖn ¸p nguån +5v cïng víi ®iÖn ¸p nguån cña 8051. Hay nãi c¸ch kh¸c víi nguån ®iÖn ¸p nuèi +5 chóng ta mµ cã thÓ nu«i 8051 vµ MAX232 mµ kh«ng ph¶i dïng hai nguån nu«i kh¸c nhau nh phæ biÕn trong c¸c hÖ thèng tríc ®©y.
Bé ®iÒu khiÓn MAX232 cã hai bé ®iÒu khiÓn thêng ®Ó nhËn vµ truyÒn d÷ liÖu. C¸c bé ®iÒu khiÓn ®êng ®îc dïng cho TxD ®îc gäi lµ T1 vµ T2. Trong nhiÒu øng dông th× chØ cã mét cÆp ®îc dïng. VÝ dô T1 vµ R1 ®îc dïng víi nhau ®èi víi TxD vµ RxD cña 8051, cßn cÆp R2 vµ T2 th× cha dïng ®Õn. §Ó ý r»ng trong MAX232 bé ®iÒu khiÓn T1 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 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 ®îc nèi tíi ch©n TxD cña ®Çu nèi DB cña RS232 vµ ch©n R1out (ch©n sè 12) lµ ë phÝa TTL mµ nã ®îc nèi tíi ch©n RxD cña bé vi ®iÒu khiÓn, xem h×nh 3.3. §Ó ý r»ng nèi ghÐp modem rçng lµ nèi ghÐp mµ ch©n TxD bªn ph¸t ®îc nèi víi RxD cña bªn thu vµ ngîc l¹i.
P3.1
TxD
P3.0
RxD
Max232
8051
+Vcc
2
6
7
8
9
11
10
14
13
112
10
14
13
T1OUT
T1IIN
R1IIN
R1OUT
T2IIN
R2OUT
T2OUT
R2IIN
RS232 side
TTL side
15
16
DB - 9
122
C3
+
C4
+
3
2
5
12
11
+
C1
+
C2
H×nh3.3 a) S¬ ®å bªn trong cña MAX232
b) S¬ ®å nèi ghÐp cña MAX232 víi 8051 theo moden kh«ng.
3.2.3. C¸c cæng COM cña IBM PC vµ t¬ng thÝch.
C¸c m¸y tÝnh IBM PC vµ t¬ng thÝch dùa trªn c¸c bé vi xö lý ´ 86 (8086, 286, 384, 486 vµ Pentium) thêng cã hai cæng COM. C¶ hai cæng COM ®Òu cã c¸c ®Çu nèi kiÓu RS232. NhiÒu m¸y tÝnh PC sö dông mçi ®Çu nèi mét kiÓu æ c¾m DB - 25 vµ DB - 9. Trong nh÷ng n¨m gÇn ®©y, cæng COM1 ®îc dïng cho chuét vµ COM2 ®îc dïng cho c¸c thiÕt bÞ ch¼ng h¹n nh Modem. Chóng ta cã thÓ nèi cæng nèi tiÕp cña 8051 ®Õn cæng COM2 cña mét m¸y tÝnh PC cho c¸c thÝ nghiÖm vÒ truyÒn th«ng nèi tiÕp.
3.3 C¸c thanh ghi ®iÒu khiÓn thuyÒn th«ng nèi tiÕp.
3.3.1 Bé ®Öm d÷ liÖu nèi tiÕp(SBUF).
SBUF lµ thanh ghi 8 bÝt ®îc dïng riªng cho truyÒn th«ng nèi tiÕp trong 8051. §èi víi mét byte d÷ liÖu cÇn ph¶i ®îc truyÒn qua ®êng TxD th× nã ph¶i ®îc ®Æt trong thanh ghi SBUF. T¬ng tù nh vËy SBUF gi÷ mét byte d÷ liÖu khi nã ®îc nhËn bë ®êng RxD cña 8051. SBUF cã thÓ ®îc truy cËp bëi mäi thanh ghi bÊt kú trong 8051. XÐt mét vÝ dô díi ®©y ®Ó thÊy SBUF ®îc truy cËp nh thÕ nµo?
MOV SBUF, # “D” ; N¹p vµo SBUF gi¸ trÞ 44H m· ACSII cña ký tù D.
MOV SBUF, A ; Sao thanh ghi A vµo SBUF.
MOV A, SBUF ; Sao SBUF vµo thanh ghi A.
Khi mét byte ®îc ghi vµo thanh ghi SBUF nã ®îc ®ãng khung víi c¸c bÝt Start vµ Stop vµ ®êng truyÒn nèi tiÕp qua ch©n TxD. T¬ng tù nh vËy, khi c¸c bÝt ®îc nhËn nèi tiÕp tõ RxD th× 8051 më khung nã ®Ó lo¹i trõ c¸c bÝt Start vµ Stop ®Ó lÊy ra mét byte tõ d÷ liÖu nhËn ®îc vµ ®Æt nã vµo thanh ghi SBUF.
3.3.2. Thanh ghi ®iÒu khiÓn nèi tiÕp SCON.
Thanh ghi SCON lµ thanh ghi 8 bÝt ®îc dïng ®Ó lËp tr×nh viÖc ®ãng khung bÝt b¾t ®Çu Start, bÝt dõng Stop vµ c¸c bÝt d÷ liÖu cïng víi viÖc kh¸c.
Díi ®©y lµ m« t¶ c¸c bÝt kh¸c nhau cña SCON:
D7
D6
D5
D4
D3
D2
D1
D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
a
KÝ hiÖu
VÞ trÝ
ý nghÜa
SM0
SCON.7
Sè x¸c ®Þnh chÕ ®é lµm viÖc cæng nèi tiÕp
SM1
SCON.6
Sè x¸c ®Þnh chÕ ®é lµm viÖc cæng nèi tiÕp
SM2
SCON.5
Dïng cho truyÒn th«ng gi÷a c¸c bé vi xö lý (SM2 = 0)
REN
SCON.4
Dïng cho truyÒn th«ng gi÷a c¸c bé vi xö lý (SM2 = 0)
TB8
SCON.3
Kh«ng sö dông réng r·i
RB8
SCON.2
Kh«ng sö dông réng r·i
T1
SCON.1
Cê ng¾t truyÒn
R1
SCON.0
Cê ng¾t thu
H×nh 3.3: Thanh ghi ®iÒu khiÓn cæng nèi tiÕp SCON.
a.C¸c bit cña SCON b.Chøc n¨ng cña c¸c bit
a. C¸c bÝt SM0, SM1.
§©y lµ c¸c bÝt D7 vµ D6 cña thanh ghi SCON. Chóng ®îc dïng ®Ó x¸c ®Þnh chÕ ®é ®ãng khung d÷ liÖu b»ng c¸ch x¸c ®Þnh sè bÝt cña mét ký tù vµ c¸c bÝt Start vµ Stop. C¸c tæ hîp cña chóng ®îc biÓu diÔn trong b¶ng sau:
B¶ng 3.3 C¸c chÕ ®é ®ãng khung d÷ liÖu
SM0
SM1
ChÕ ®é
0
0
ChÕ ®é nèi tiÕp 0
0
1
ChÕ ®é nèi tiÕp 1, 8 bÝt d÷ liÖu, Start, Stop
1
0
ChÕ ®é nèi tiÕp 2
1
1
ChÕ ®é nèi tiÕp 3
b. BÝt SM2.
BÝt SM2 lµ bÝt D5 cña thanh ghi SCON. BÝt nµy cho phÐp kh¶ n¨ng ®a xö lý cña 8051 vµ nã n»m ngoµi ph¹m vi tr×nh bµy cña phÇn nµy. §èi víi c¸c øng dông cña chóng ta ®Æt SM2 = 0 v× ta kh«ng sö dông 8051 trong m«i trêng ®a xö lý.
c. BÝt REN.
§©y lµ bÝt cho phÐp thu (Receive Enable), bÝt D4 cña thanh ghi SCON. BÝt REN còng ®îc tham chiÕu nh lµ SCON.4 v× SCON lµ thanh ghi cã thÓ ®¸nh ®Þa chØ theo bÝt. Khi bÝt REN cao th× nã cho phÐp 8051 thu d÷ liÖu trªn ch©n RxD cña nã. Vµ kÕt qu¶ lµ nÕu ta muèn 8051 võa truyÒn vµ nhËn d÷ liÖu th× bÝt REN ph¶i ®îc ®Æt lªn 1. Khi ®Æt REN th× bé thu bÞ cÊm. ViÖc ®Æt REN = 1 hay REN = 0 cã thÓ ®¹t ®îc b»ng lÖnh “SETB SCON.4” vµ “CLR SCON.4” t¬ng øng.
d. BÝt TB8 vµ RB8.
BÝt TB8 lµ bÝt SCON.3 hay lµ bÝt D3 cña thanh ghi SCON. Nã ®îc dïng ®Ó cho chÕ ®é nèi tiÕp 2 vµ 3. Ta ®Æt TB8=0 v× nã kh«ng ®îc sö dông trong c¸c øng dông cña m×nh.
BÝt RB8 (bÝt thu 8) lµ bÝt D2 cña thanh ghi SCON. Trong chÕ ®é nèi tiÕp 1 th× bÝt nµy nhËn mét b¶n sao cña bÝt Stop khi mét d÷ liÖu 8 bÝt ®îc nhËn. BÝt nµy còng nh bÝt TB8 rÊt hiÕm khi ®îc sö dông. Trong c¸c øng dông cña m×nh ta ®Æt RB8 = 0 v× nã ®îc sö dông cho chÕ ®é nèi tiÕp 2 vµ 3.
e. C¸c bÝt TI vµ RI.
C¸c bÝt ng¾t truyÒn TI vµ ng¾t thu RI lµ c¸c bÝt D1 vµ D0 cña thanh ghi SCON. C¸c bÝt nµy lµ cùc kú quan träng cña thanh ghi SCON. Khi 8051 kÕt thóc truyÒn mét ký tù 8 bÝt th× nã bËt TI ®Ó b¸o r»ng nã s½n sµng truyÒn mét byte kh¸c. BÝt TI ®îc bËt lªn tríc bÝt Stop. Cßn khi 8051 nhËn ®îc d÷ liÖu nèi tiÕp qua ch©n RxD vµ nã t¸ch c¸c bÝt Start vµ Stop ®Ó lÊy ra 8 bÝt d÷ liÖu ®Ó ®Æt vµo SBUF, sau khi hoµn tÊt nã bËt cê RI ®Ó b¸o r»ng nã ®· nhËn xong mét byte vµ cÇn ph¶i lÊy ®i kÎo nã bÞ mÊt cê RI ®îc bËt khi ®ang t¸ch bÝt Stop. Trong c¸c vÝ dô díi ®©y sÏ nãi vÒ vai trß cña c¸c bÝt TI vµ RI.
3.4 LËp tr×nh 8051 truyÒn th«ng nèi tiÕp
3.4.1. LËp tr×nh 8051 ®Ó truyÒn d÷ liÖu nèi tiÕp.
a. C¸c bíc ®Ó lËp tr×nh truyÒn d÷ liÖu.
Khi lËp tr×nh 8051 ®Ó truyÒn c¸c byte ký tù nèi tiÕp th× cÇn ph¶i thùc hiÖn c¸c bíc sau ®©y:
N¹p thanh ghi TMOD gi¸ trÞ 204 b¸o r»ng sö dông Timer1 ë chÕ ®é 2 ®Ó thiÕt lËp chÕ ®é baud.
N¹p thanh ghi TH1 c¸c gi¸ trÞ cho trong b¶ng 3.1 ®Ó thiÕt lËp chÕ ®é baud truyÒn d÷ liÖu nèi tiÕp .
N¹p thanh ghi SCON gi¸ trÞ 50H b¸o chÕ ®é nèi tiÕp 1 ®Ó ®ãng khung 8 bÝt d÷ liÖu, 1 bÝt Start vµ 1 bÝt Stop.
BËt TR1 = 1®Ó khëi ®éng Timer1.
Xo¸ bÝt TI b»ng lÖnh “CLR TI”
Byte ký tù cÇn ph¶i truyÒn ®îc ghi vµo SBUF.
BÝt cê TI ®îc hiÓn thÞ b»ng lÖnh “JNB TI, xx” ®Ó b¸o ký tù ®· ®îc truyÒn hoµn tÊt cha.
§Ó truyÒn ký tù tiÕp theo quay trë vÒ bíc 5.
b .Qu¸ tr×nh truyÒn sè liÖu.
Thùc hiÖn qua c¸c bíc sau:
Byte ký tù cÇn ph¶i truyÒn ®îc ghi vµo SBUF.
TruyÒn bÝt Start
TruyÒn ký tù 8 bÝt lÇn lît tõng bÝt mét.
BÝt Stop ®îc truyÒn xong, trong qu¸ tr×nh truyÒn bÝt Stop th× cê TI ®îc bËt (TI= 1) bëi 8051 ®Ó b¸o s½n sµng ®Ó truyÒn ký tù kÕ tiÕp.
B»ng viÖc hiÓn thÞ cê TI ta biÕt ch¾c r»ng ta kh«ng n¹p qu¸ vµo thanh ghi SBUF. NÕu ta n¹p mét byte vµo SBUF tríc ghi TI ®îc bËt th× phÇn d÷ liÖu cña byte tríc cha truyÒn hÕt sÏ bÞ mÊt. Hay nãi c¸ch kh¸c lµ 8051 bËt cê TI khi ®· truyÒn xong mét byte vµ nã s½n sµng ®Ó truyÒn byte kÕ tiÕp.
Sau khi SBOF ®îc n¹p mét byte míi th× cê nh»m ®Ó cã thÓ truyÒn byte míi nµy.
Tõ phÇn tr×nh bµy trªn ®©y ta kÕt luËn r»ng b»ng viÖc kiÓm tra bÝt cê ng¾t TI ta biÕt ®îc 8051 cã s½n sµng ®Ó truyÒn mét byte kh¸c kh«ng. Quan träng h¬n cÇn ph¶i nãi ë ®©y lµ bÝt cê TI ®îc bËt bëi tõ 8051 khi nã hoµn tÊt viÖc truyÒn mét byte d÷ liÖu, cßn viÖc xo¸ nã th× ph¶i ®îc lËp tr×nh viªn thùc hiÖn b»ng lÖnh “CLR TI”. Còng cÇn lu ý r»ng, nÕu ta ghi mét byte vµo thanh ghi SBUF tríc khi cê TI ®îc bËt th× sÏ cã nguy c¬ mÊt phÇn d÷ liÖu ®ang truyÒn. BÝt cê TI cã thÓ kiÓm tra b»ng lÖnh “JNB TI …” hoÆc cã thÓ sö dông ng¾t .
3.4.2. LËp tr×nh 8051 ®Ó nhËn d÷ liÖu nèi tiÕp.
a. C¸c bíc ®Ó lËp tr×nh nhËn d÷ liÖu.
Trong lËp tr×nh cña 8051 ®Ó nhËn c¸c byte ký tù nèi tiÕp th× ph¶i thùc hiÖn c¸c bíc sau ®©y.
N¹p gi¸ trÞ 20H vµo thanh ghi TMOD ®Ó b¸o sö dông bé Timer1, chÕ ®é 2 (8 bÝt, tù ®éng n¹p l¹i) ®Ó thiÕt lËp tèc ®é baud.
N¹p TH1 c¸c gi¸ trÞ cho trong b¶ng 3.1 ®Ó t¹o ra tèc ®é baud
N¹p gi¸ trÞ 50H vµo thanh ghi SCON ®Ó b¸o sö dông chÕ ®é truyÒn nèi tiÕp 1 lµ d÷ liÖu ®îc ®ãng gãi bëi 8 bÝt d÷ liÖu, 1 bÝt Start vµ 1 bÝt Stop.
BËt TR1 = 1 ®Ó khëi ®éng Timer1.
Xo¸ cê ng¾t RI b»ng lÖnh “CLR RI”
BÝt cê RI ®îc hiÓn thÞ b»ng lÖnh “JNB RI, xx” ®Ó xem toµn bé ký tù ®· ®îc nhËn cha.
Khi RI ®îc thiÕt lËp th× trong SBUF ®· cã 1 byte. C¸c néi dung cña nã ®îc cÊt lu vµo mét n¬i an toµn.
§Ó nhËn mét ký tù tiÕp theo quay trë vÒ bíc 5.
b .Qu¸ tr×nh nhËn sè liÖu.
Khi nhËn c¸c bÝt qua ch©n RxD cña nã th× 8051 ph¶i ®i quan c¸c bíc sau:
Nã nhËn bÝt Start b¸o r»ng bÝt sau nã lµ bÝt d÷ liÖu ®Çu tiªn cÇn ph¶i nhËn.
Ký tù 8 bÝt ®îc nhËn lÇn lît tõng bÝt mét. Khi bÝt cuèi cïng ®îc nhËn th× mét byte ®îc h×nh thµnh vµ ®Æt vµo trong SBUF.
Khi bÝt Stop ®îc nhËn th× 8051 bËt RI = 1 ®Ó b¸o r»ng toµn bé ký tù ®îc nhËn vµ ph¶i lÊy ®i tríc khi nã bÞ byte míi nhËn vÒ ghi ®Ì lªn.
B»ng viÖc kiÓm tra bÝt cê RI khi nã ®îc bËt lªn chóng ta biÕt r»ng mét ký tù ®· ®îc nhËn vµ ®ang n»m trong SBUF. CÇn sao néi dung SBUF vµo n¬i an toµn trong mét thanh ghi hay bé nhí kh¸c tríc khi nã bÞ mÊt.
Sau khi SBUF ®îc ghi vµo n¬i an toµn th× cê RI ®îc xo¸ vÒ 0 b»ng lÖnh “CLR RI” nh»m cho c¸c ký tù kÕ tiÕp nhËn ®îc ®a vµo SBUF. NÕu kh«ng lµm ®îc ®iÒu nµy th× g©y ra mÊt ký tù võa nhËn ®îc.
Tõ m« t¶ trªn ®©y ta rót ra kÕt luËn r»ng b»ng viÖc kiÓm tra cê RI ta biÕt 8051 ®· nhËn ®îc mét byte ký tù cha hay råi. NÕu ta kh«ng sao ®îc néi dung cña thanh ghi SBUF vµo n¬i an toµn th× cã nguy c¬ ta bÞ mÊt ký tù võa nhËn ®îc. Quan träng h¬n lµ ph¶i nhí r»ng cê RI ®îc 8051 bËt lªn nh lËp tr×nh viªn ph¶i xo¸ nã b»ng lÖnh “CLR RI”. Còng nªn nhí r»ng, nÕu ta sao néi dung SBUF vµo n¬i an toµn tríc khi RI ®îc bËt ta m¹o hiÓm ®· sao d÷ liÖu cha ®Çy ®ñ. BÝt cê RI cã thÓ ®îc kiÓm tra bëi lÖnh “JNB RI, xx” hoÆc b»ng ng¾t .
3.5. Ng«n ng÷ lËp tr×nh Visual basic 6.0.
3.5.1. Giíi thiÖu
Visual Basic lµ ng«n ng÷ lËp tr×nh phæ biÕn nhÊt ngµy nay, lµ ng«n ng÷ lËp tr×nh trªn m«i trêng Windows ra ®êi sím nhÊt vµ ®· t¹o ra mét cuéc c¸ch m¹ng trong c«ng nghiÖp phÇn mÒm. Cã thÓ nãi VB m¹nh vÒ tÊt c¶ (®îc hç trî rÊt nhiÒu kh¶ n¨ng vÒ c¬ së d÷ liÖu, c¸c kü thuËt phÇn mÒm míi nh OLE, COM, DCOM... ) nhng chÝnh v× kh¶ n¨ng nµy nªn tèc ®é nh×n chung lµ chËm.
Víi Visual Basic, c«ng viÖc t¹o giao diÖn trªn m¸y tÝnh trë nªn dÔ dµng h¬n rÊt nhiÒu so víi viÖc t¹o giao diÖn b»ng ng«n ng÷ C tríc ®©y. ChØ víi mét vµi thao t¸c Click – Drag ®¬n gi¶n, ta cã thÓ bæ sung vµo c¸c cöa sæ cßn trèng c¸c lÖnh ®¬n, c¸c hép v¨n b¶n, c¸c nót lÖnh, c¸c nót tuú chän... Sau khi t¹o giao diÖn th× c«ng viÖc chØ lµ viÕt m· cho c¸c ®èi tîng nµy (gäi lµ c¸c ®iÒu khiÓn: control). Nh vËy ta cã thÓ nãi, víi VB c«ng viÖc t¹o giao diÖn ®å ho¹ cho c¸c øng dông ®· ®îc VB ®¶m nhËn.
Visual Basic cho phÐp øng dông t¹o liªn kÕt víi c¸c øng dông Windows kh¸c rÊt dÔ dµng, cho phÐp dÔ dµng t¹o ra c¸c øng dông thiªn vÒ qu¶n lý d÷ liÖu vµ m¹ng.
Visual Basic cho phÐp ngêi sö dông giao tiÕp víi th viÖn liªn kÕt ®éng DLL. §iÒu nµy gióp gi¶m kÝch cì ch¬ng tr×nh, tËp tin thùc thi vµ ®Æc biÖt lµm cho ch¬ng tr×nh cã kh¶ n¨ng n©ng cÊp dÔ dµng h¬n.
3.5.2. TruyÒn th«ng nèi tiÕp dïng VB 6.0
a. §iÒu khiÓn truyÒn th«ng:
B×nh thêng khi ch¹y phÇn mÒm visual basic ta chØ thÊy cã mét sè thµnh phÇn quen thuéc trªn hîp c«ng cô (toolbox). Nhng visual basic cho phÐp nhiÒu thµnh phÇn cã thÓ ®îc bæ sung thªm vµo. §iÒu khiÓn truyÒn th«ng Mscomm cña viual basic lµ mét trong sè c¸c ®èi tîng cã thÓ ®îc bæ sung ®Ó tham gia vµo mét sè øng dông trong viÖc chuyÓn nhËn d÷ liÖu qua cæng nèi tiÕp.
Trong visual basic 5.0 vµ 6.0 ta cã thÓ bæ sung thµnh phÇn MSCOMM ®Ò cËp ë trªn nh sau: chän project=> components (Ctrl-T),cña sæ sau sÏ xuÊt hiÖn:
H×nh3.4: C¸ch chän thªm thµnh phÇn microsoft comm control ë visual basic 6.0
§¸nh dÊu chän thµnh phÇn microsoft comm control 6.0 nh h×nh trªn, sau ®ã nhÊn OK. Khi ®ã thµnh phÇn Mscomm sÏ xuÊt hiÖn trong hîp c«ng cô nh chØ ra ë h×nh díi ®©y:
§iÒu khiÓn Mscomm
H×nh3.5 Thµnh phÇn Mscomm trong hîp c«ng cô (toolbox)
§iÒu khiÓn truyÒn th«ng cung cÊp hai kh¶ n¨ng trao ®æi th«ng tin:
§iÒu khiÓn sù kiÖn:
TruyÒn th«ng ®iÒu khiÓn sù kiÖn lµ ph¬ng ph¸p tèt nhÊt ®îc sö dông trong qu¸ tr×nh viÖc trao ®æi th«ng tin nèi tiÕp khi nã gi¶i phãng m¸y tÝnh ®Ó lµm c¸c c«ng viÖc kh¸c.
Hái vßng (poing):
Ta còng cã thÓ hái vßng c¸c sù kiÖn vµ lçi b»ng c¸ch kiÓm tra gi¸ trÞ cña ®Æc tÝnh comEvent sau mçi chu kú cña ch¬ng tr×nh ®Ó x¸c ®Þnh xem liÖu cã mét sù kiÖn hoÆc mét lçi ®· xuÊt hiÖn.
Visual basic sö dông c¸c bé ®iÒu khiÓn cöa sæ chuÈn cho c¸c cång truyÒn th«ng tin nèi tiÕp (nh serial.dll vµ serial.vxd ). §iÒu khiÓn truyÒn th«ng ®îc bæ sung cho øng dông cña mét cæng nèi tiÕp, nãi kh¸c ®i mçi ®iÒu khiÓn truyÒn th«ng mµ ta dïng chØ cã thÓ ®iÒu khiÓn mét cæng nèi tiÕp. NÕu cÇn truy nhËp nhiÒu cæng trong mét øng dông th× ta ph¶i nhiÒu ®iÒu khiÓn truyÒn th«ng. §Þa chØ cæng vµ ®Þa chØ ng¾t cã thÓ thay ®æi nhë control panel trong windows. C¸c tham sè (nh tèc ®é truyÒn bit, ch¼n lÏ,…)®Òu ®ã cã thÓ thay ®æi b»ng c¸ch lùa chän : control panel=> sestem=> device manager=> port(com vµ lpt)=> port setting. ViÖc thiÕt lËp cæng truyÒn th«ng (IRQ vµ ®Þa chØ cæng) cã thÓ thay ®æi b»ng c¸ch lùc chän : control panel=>sestem=>device manager=> port(com vµ LPT)=>resources. ViÖc nµy ®· ®îc nãi ®Õn ë phÇn cæng nèi tiÕp.
b. §Æc tÝnh (Properti)
H×nh bªn ®©y chØ ra c¸c ®Æc tÝnh cña nã. Theo mÆc ®Þnh, cæng thø nhÊt t¹o ra ®èi tîng cã tªn Mscomm1, ®èi tîng øng víi cæng thø hai ®îc gäi lµ Mscomm2 ,… cã thÓ nh×n thÊy c¸c ®Æc tÝnh chÝnh cña ®èi tîng lµ: Commport, Dtrenable, Eofenable,Hnadshaking, Inbuffersize, Index,Inputlen, Inputmode, Left, Name, Nulldiscard, Outbuffersize, Parityreplace, Rthreshold, Rtsenable, Settings, Sthreshold, Tag, Top. Ta thÊy ®iÒu khiÓn truyÒn th«ng cã nhiÒu ®Æc tÝnh, nhng ®Ó cã thÓ lµm viÖc víi ®iÒu khiÓn truyÒn th«ng, tríc hÕt ta cÇn hiÓu kü c¸c ®Æc tÝnh chÝnh ®îc liÖt kª trong b¶ng sau.
B¶ng 3.4 : B¶ng c¸c ®Æc tÝnh cña ®iÒu khiÓn MSComm
C¸c ®Æt tÝnh
Sù m« t¶
Commport
§Æt vµ tr¶ l¹i sè cæng truyÒn th«ng
Input
Tr¶ l¹i vµ lo¹i bá c¸c ký tù khái x©u ®Öm nhËn
Output
ViÕt mét x©u ký tù tíi vµo bé ®Öm truyÒn
Portopen
Më ®ãng mét cæng vµ ®Æt th«ng sè cho cæng
Setting
§Æt vµ tr¶ l¹i c¸c th«ng sè truyÒn th«ng
ThÝ dô sau ®©y chØ ra c¸ch truyÒn th«ng qua cæng nèi tiÕp cã thÓ ®îc tiÕn hµnh nh thÒ nµo b»ng c¸ch sö dông mét Modem.Private sub form_load
‘biÕn ®Ó lu tr÷ chuçi nhËp vµo
Dim instring as string
‘sö dông com1
Mscomm1.comport =1
‘9600 baud, no parity, 8 bit data, 1 stop bit
Mscomm1.setting = “9600 ,N,8,1”
‘ra lÖnh cho msc ®äc hÕt bé ®Öm nhËn khi dïng lÖnh input
mscomm1.inputlen =0
‘më cæng
Mscomm1.portopen = true
‘gëi lÖnh attention tíi modem
Mscomm1.output = “ATV1Q0”&CHR$(13)
‘®Ó ch¾c r»ng modem ®· tr¶ lêi “OK” ®îi d÷ liÖu tr¶ lêi gëi vÒ cæng nèi tiÕp
do Doevents
Buffer$ = buffer$ & mscomm1.input
Loop until instr (buffer$ &, “OK” &vbCLRF)
‘®äc d÷ liÖu tr¶ lêi “OK” ®ãng cæng nèi tiÕp
Mscomm1.portopen = false
End sub
Sau ®©y ta sÏ lÇn lît t×m hiÓu mét sè ®Æt tÝnh quan träng cña ®iÒu khiÓn truyÒn th«ng
Setting Prorety :
§Æt tÝnh setting ®Æt vµ tr¶ l¹i c¸c th«ng sè truyÒn th«ng cho cæng RS_232, nh tèc ®é baud, tÝnh ch¼n lÎ sè bit data vµ sè bit stop
Có ph¸p cña c©u lÖnh lµ :
[form.]mscomm.setring [=paramstring$]
NÕu paramstring$ kh«ng hîp lÖ (valid) th× khi më cæng ®iÒu khiÓn truyÒn th«ng sÏ ph¸t sinh lçi 380 (lçi gi¸ trÞ thuéc tÝnh kh«ng hîp lÖ).
Parastring$ lµ mét chuçi chøa 4 th«ng sè thiÕt lËp cho truyÒn th«ng RS-232 vµ cã d¹ng nh sau:
“BBBB,P,D,S”
ë ®©y BBBB x¸c ®Þnh tèc ®é baud, P lµ bit chØ tÝnh ch¼n lÎ, D lµ sè bit data,vµ S lµ c¸c bit dõng (stop bits). Gi¸ trÞ mÆc ®Þnh cña paramstring$ lµ:
“9600,N,8,1”
B¶ng sau ®©y liÖt kª c¸c gi¸ trÞ baud hîp lÖ:
B¶ng 3.5 B¶ng liÖt kª c¸c gi¸ trÞ baud hîp lÖ
Th«ng sè tèc ®é baud
110
2400
19200
57600
300
4800
28800
115200
600
9600
38400
128000
1200
14400
56000
256000
B¶ng sau ®©y mæ t¶ c¸c gi¸ ch¼n lÏ hîp lÖ:
B¶ng 3.6 B¶ng m« t¶ c¸c gi¸ trÞ ch¼n lÏ hîp lÖ:
Gi¸ trÞ
M« t¶
E
Even(ch¼n)
M
Mark (dÊu)
N
None (kh«ng kiÓm tra ch¼n lÎ-default)
O
Odd (lÎ)
S
Space (trèng)
Sè bit d÷ hîp lÖ trong mét lÇn truyÒn (khung truyÒn ) lµ :4,5,6,7,8,(default)
Sè bit Stop hîp lÖ lµ:1,1.5,2
ThÝ dô sau cho phÐp ®Æt th«ng sè cho cæng truyÒn ë tèc ®é baud lµ 4800,kh«ng kiÓm tra bit ch¼n lÎ, 8 bit d÷ liÖu, 1 bit dõng:
Mscomm1.Settings = “4800,N,8,1”.
KiÓu data cña Mscomm1.Settings lµ String.
Commport Property:
§Æc tÝnh nµy ®Æt vµ tr¶ sè cæng truyÒn th«ng. Có ph¸p cña c©u lÖnh lµ:
[Form.] Mscomm.commport [= portnumber %]
Trong khi thiÕt kÕ (design time) ta cã thÓ ®Æt portnumber% b»ng mét gi¸ trÞ n»m trong kho¶ng tõ 1 ®Õn 16 (gi¸ trÞ mÆc ®Þnh lµ 1). Tríc khi dïng lÖnh portopen ph¶i thiÕt lÆp cæng b»ng commport. NÕu ta dïng ®Æc tÝnh PortOpen tríc khi thiÕt lËp cæng b»ng Commport th× ®iÒu khiÓn truyÒn th«ng sinh ra lçi 68 (cæng kh«ng tån t¹i).
KiÓu d÷ liÖu: Integer
Portopen Property:
§Æc tÝnh portoper ®Æt vµ tr¶ l¹i tr¹ng th¸i cña cæng truyÒn th«ng ( ®ãng hoÆc më). §Æc tÝnh nµy kh«ng cã trong thêi gian thiÕt kÕ ch¬ng tr×nh. Có ph¸p cña c©u lÖnh lµ:
[Form.]Mscomm.PortOpen [= True/False]
Th«ng sè thiÕt lËp lµ true lµ më cæng, cßn false lµ ®Ó ®ãng cæng vµ xãa néi dung c¸c bé ®Öm nhËn vµ truyÒn. Mscomm tù ®éng ®ãng cæng nèi tiÕp khi øng dông kÕt thóc (terminated).
Tríc khi dïng c¸c ®Æc tÝnh nµy (portopen), ph¶i ®Æt th«ng sè cæng b»ng ®Æc tÝnh CommPort víi mét gi¸ trÞ hîp lÖ, nÕu ta quªn ®i ®Æc tÝnh nµy lçi 68 sÏ ph¸t sinh.
ThÝ dô sau ®©y më cæng truyÒn th«ng sè 1 (Com1) víi tèc ®é baud lµ 4800 buad, kh«ng kiÓm tra tÝnh ch¼n lÎ, 8 bit d÷ liÖu, 1 bit stop.
Mscomm1.Settings =“4800,N,8,1”
Mscomm1.Commport =1
Mscomm1.PortOpen =true
KiÓu data: kiÓu logic (Boolean)
C¸c §Æt TÝnh Phôc Vô NhËp D÷ LiÖu (Input, Inbuffercount Vµ Inbuffersize):
Input :
§Æc tÝnh input tr¶ l¹i vµ xãa bá mét chuçi ký tù tõ bé ®Öm nhËn. §Æc tÝnh nµy kh«ng cã s½n trong thiÕt kÕ vµ lµ chØ ®äc (read _only) khi ch¹y ch¬ng tr×nh. Có ph¸p cña c©u lÖnh lµ:
[Form.] Mscomm.Input
§Æc tÝnh InputLen quy ®Þnh sè ký tù ®îc ®äc bëi c©u lÖnh Input. §Ó x¸c ®Þnh sè c¸c ký tù trong bé ®Öm, ®Æc tÝnh InputBufferCount ®îc kiÓm tra. §Æc tÝnh InputLen lµ 0 ®Ó ®äc toµn bé néi dung cña bé ®Öm nhËn.
§Æc tÝnh InputMode quyÕt ®Þnh kiÓu data thu vÒ qua ®Æc tÝnh Input.NÕu ®Æc tÝnh nµy ®îc set lµ CommInputMode Text th× ®Æc tÝnh Input sÏ tr¶ vÒ d÷ liÖu kiÓu Text vµo 1 biÕn Variant. NÕu InputMOde lµ comINputModeBinary th× Input sÏ tr¶ vÒ d÷ liÖu nhÞ ph©n trong m¶ng c¸c byte vµo mét biÕn Variant.
ThÝ dô díi ®©y chØ ra c¸ch ®äc d÷ liÖu tõ bé ®Öm nhËn.
Mscomm1.InputLen = 0 ‘®äc toµn bé néi dung cña bé ®Öm nhËn’
‘kiÓm tra cã data hay kh«ng’
If Mscomm1.inbufferCount then ‘®äc d÷ liÖu ‘
Instring$ = Mscomm1.Input
End if
KiÓu data : variant
InBufferSize:
§Æc tÝnh InBufferSize ®Æt vµ tr¶ l¹i kÝch thít bé ®Öm nhËn, tÝnh theo sè byte. Có ph¸p lµ c©u lÖnh:
[Form.]Mscomm. InBufferSize [=numbyte%]
§Æc tÝnh nµy cã liªn quan ®Õn kÝch thíc bé ®Öm nhËn. Gi¸ trÞ mÆc ®Þnh lµ 1024 bytes. KÝch thíc cña bé ®Öm ph¶i ®îc ®Æt sao cho cã thÓ cÊt gi÷ ®îc sè lín nhÊt cña c¸c ký tù sÏ ®îc nhËn tríc khi ch¬ng tr×nh øng dông cã thÓ ®äc chóng tõ bé ®Öm, trõ khi ta lµm viÖc ë chÕ ®é b¾t tay (handshaking).
KiÓu data cña ®Æc tÝnh nµy lµ: Integer
InbufferCount:
§Æc tÝnh InbufferCout tr¶ l¹i c¸c sè ký tù trong bé ®Öm nhËn. Nã còng cã thÓ ®îc sö dông ®Ó xãa bé ®Öm b»ng c¸ch ®Æt sè cña c¸c ký tù b»ng 0. §Æc tÝnh nµy kh«ng cã trong thêi gian thiÕt kÕ ch¬ng tr×nh (design time). Có ph¸p c©u lÖnh nh sau:
[Form.] Mscomm.InbufferCout [ =count%]
Ta cã thÓ xãa bé ®Öm b»ng c¸ch ®Æt ®Æc tÝnh InBufferCount = 0
KiÓu d÷ liÖu cña ®Æc tÝnh nµy lµ: Integer
C¸c §Æc TÝnh Phôc Vô ViÖc XuÊt D÷ LiÖu(Output,OutBufferCount Vµ OutBufferSize):
Output property:
§Æc tÝnh output sÏ viÕt mét chuçi ký tù vµo bé ®Öm ®êng truyÒn, ®Æc tÝnh nµy kh«ng cã trong thêi gian thiÕt kÕ ch¬ng tr×nh. Có ph¸p c©u lÖnh lµ:
[Form.]Mscomm.Output [ = outstring$]
ThÝ dô sau ®©y cho biÕt c¸ch göi c¸c ký tù mµ ngêi dïng gâ vµo tõ bµn phÝm:
Private Sub Form_Load(keyAscii As Integer)
Mscomm1.Output = Chr$(keyAscii)
End Sub
§Æc tÝnh Output cã thÓ xuÊt d÷ liÖu d¹ng Text hay Binary. §Ó göi data d¹ng Text ta ph¶i khai b¸o mét biÕn kiÓu Variant vµ cho nã chøa chuçi mÉu göi, sau ®ã g¸n biÕn nµy cho ®Æc tÝnh Output. §Ó göi data d¹ng Binary ta ph¶i truyÒn mét biÕn kiÓu Variant chøa mét m¶ng c¸c byte cho ®Æc tÝnh Output.
Th«ng thêng, nÕu ta göi mét chuçi theo chuÈn ANSI tíi øng dông, ta cã göi data d¹ng Text. NÕu ta cã data mµ ta chøa ký tù ®iÒu khiÓn ®îc nhóng (embedded) nh c¸c ký tù NULL,…th× ta sÏ truyÒn d÷ liÖu theo d¹ng Binary.
KiÓu d÷ liÖu cña ®Æc tÝnh nµy : Variant.
OutBufferSize Property:
§Æc tÝnh OutBufferSize ®Æt vµ tr¶ l¹i kÝch thíc cña c¸c ký tù trong bé ®Öm truyÒn. Có ph¸p c©u lÖnh:
[form.] Mscomm.OutBufferSize [= numbtype%]
Gi¸ trÞ mÆc ®Þnh cña ®Æc tÝnh nµy lµ 512 bytes. Chó ý:
- Kh«ng ®îc nhÇm lÉn gi÷a hai ®Æc tÝnh OutBufferSize vµ OutBufferCount víi nhau. §Æc tÝnh OutBufferCount nãi lªn sè bytes hiÖn ®ang cã trong bé ®Öm truyÒn, cßn OutBufferSize quy ®Þnh tæng kÝch thít cña bé ®Öm truyÒn.
- Kh«ng ®Ó kÝch thíc bé ®Öm truyÒn qu¸ lín. Tuy nhiªn nÕu ®Ó qu¸ nhá th× x¶y ra hiÖn tîng trµn d÷ liÖu (trõ khi lµm viÖc ë chÕ ®é b¾t tay). Th«ng thêng nªn b¾t ®Çu víi kÝch thíc bé ®Öm truyÒn lµ 512 bytes. NÕu lçi trµn x¶y ra th× t¨ng kÝch thíc bé ®Öm cho thÝch hîp víi øng dông hiÖn t¹i.
KiÓu d÷ kiÖu cho ®Æc tÝnh nµy lµ: Integer
OutBufferCount Property:
§Æc tÝnh OutBufferCount tr¶ l¹i sè kÝ tù trong bé ®Öm truyÒn. Nhê ®Æc tÝnh nµy mµ ta cã thÓ xãa néi dung bé ®Öm truyÒn b»ng c¸ch ®Æt gi¸ trÞ cña OutBufferCount = 0. Có ph¸p cña cÊu lÖnh lµ:
[Form.] Mscomm. OutBufferCount [= value%]
KiÓu d÷ liÖu cña ®Æc tÝnh nµy lµ: Integer
Ngoµi c¸c ®Æc tÝnh trªn th× VB 6.0 cßn mét sè ®Æc tÝnh kh¸c nhng kh«ng sö dông trong ph¹m vi cña ®å ¸n nªn em sÏ kh«ng tr×nh bµy ë phÇn nµy
Ch¬ng IV: ThiÕt kÕ vµ thi c«ng
Trong c¸c ch¬ng trªn em ®· tr×nh bµy nh÷ng kiÕn thøc c¬ b¶n liªn quan ®Õn ®å ¸n. Trong ch¬ng nµy em sÏ tr×nh bµy cô thÓ phÇn thiÕt kÕ chi tiÕt
4.1 NhiÖm vô
NhiÖm vô cña ®Ò tµi lµ thiÕt kÕ c©n ®iÖn tö cã thÓ c©n ®îc tõ 0kg-25. 000kg. Do ®ã yªu cÇu thiÕt kÕ gåm:
ThiÕt kÕ khèi nguån cung cÊp cho m¹ch ®iÖn
ThiÕt kÕ m¹ch khuÕch ®¹i ®o lêng
ThiÕt kÕ bé chuyÓn ®æi t¬ng tù - sè (ADC).
ThiÕt kÕ m¹ch giao tiÕp.tÝnh
ViÕt ch¬ng tr×nh ®iÒu khiÓn cho vi ®iÒu khiÓn vµ ch¬ng tr×nh giao tiÕp víi m¸y tÝnh
M« pháng ch¬ng tr×nh trªn m¸y
4.2 S¬ ®å khèi tæng qu¸t cña hÖ thèng
Do ®iÒu kiÖn thiÕt bÞ vµ thêi gian kh«ng cho phÐp nªn em kh«ng ®ñ ®iÒu kiÖn ®Ó thiÕt kÕ mét c©n ®iÖn tö hoµn thiÖn nh em ®· tr×nh bµy ë ch¬ng mét v× vËy trong phÇn nµy em sÏ tiÕn hµnh tÝnh to¸n thiÕt kÕ mét m¹ch cã thÓ c©n ®îc khèi lîng theo yªu cÇu vµ tiÕn hµnh m« pháng trªn m¸y tÝnh theo yªu cÇu víi ®Çy ®ñ c¸c khèi chøc n¨ng nh thùc tÕ.
S¬ ®å khèi tæng qu¸t cña hÖ thèng:
M¸y tÝnh
Loadcell
KhuÕch ®¹i
ADC 0809
HiÓn thÞ
Vi ®iÒu khiÓn
Bµn phÝm
Giao tiÕp
m¸y tÝnh
Nguån
12V ®Õn khuÕch ®¹i
+5V ®Õn c¸c khèi kh¸c
M¸y tÝnh
§èi tîng ®o khèi lîng
+10V ®Õn Loadcell
H×nh 4.1 S¬ ®å khèi tæng qu¸t hÖ thèng
Chøc n¨ng cña c¸c khèi trong hÖ thèng:
- Khèi Loadcell: Thùc hiÖn ®o khèi lîng, chuyÓn ®æi tÝn hiÖu lùc ®Çu vµo thµnh tÝn hiÖu ®iÖn ¸p ë ®Çu ra ®Ó ®a vµo khèi khuÕch ®¹i.
- Khèi khuÕch ®¹i: Thùc hiÖn khuÕch ®¹i tÝn hiÖu ®iÖn ¸p ë ®Çu ra cña c¶m biÕn thµnh d¶i ®iÖn ¸p phï hîp ®Ó ®a vµo khèi chuyÓn ®æi t¬ng tù – sè.
- Khèi chuyÓn ®æi t¬ng tù – sè (ADC): Thùc hiÖn chuyÓn ®æi tÝn hiÖu vµo d¹ng t¬ng tù (®iÖn ¸p) thµnh tÝn hiÖu sè.
- Khèi vi ®iÒu khiÓn: §iÒu hµnh mäi ho¹t ®éng cña hÖ thèng: ®äc d÷ liÖu tõ ADC, xö lý vµ ®a ra khèi hiÓn thÞ, thùc hiÖn giao tiÕp víi m¸y tÝnh
- Khèi hiÓn thÞ: HiÓn thÞ gi¸ trÞ khèi lîng c©n ®îc.
- Khèi nguån: Cung cÊp nguån cho tÊt c¶ c¸c thiÕt bÞ trong hÖ thèng.
- Khèi giao tiÕp víi m¸y tÝnh: Thùc hiÖn truyÒn d÷ liÖu gi÷a m¸y tÝnh vµ vi ®iÒu khiÓn
- M¸y tÝnh: HiÓn thÞ sè liÖu c©n ®îc tõ c¶m biÕn
4.3 TÝnh chän c¸c thiÕt bÞ
4.3.1 Khèi Loadcell.
Do yªu cÇu c©n khèi lîng kho¶ng 25 tÊn nªn ta chän c¶m biÕn loadcell VLC –A123 cã th«ng sè vµ h×nh d¹ng sau.
A= 260 mm
B= 210 mm
d= 11mm
e=50
SR=220
H×nh 4.2 H×nh d¹ng vµ kÝch thíc cña Loadcell VLC-A123
C¸c th«ng sè cña loadcell:
- Kh¶ n¨ng chÞa qu¸ t¶i: 45.000kg
- §é nh¹y: 2mV/V
-§iÖn ¸p cÊp cho Loadcell: 10VDC
-Sai sè tuyÕn tÝnh: 0.01%F.S
- Kh¶ n¨ng qu¸ t¶i an toµn: 150%
- Kh¶ n¨ng qu¸ t¶i tèi ®a: 300%
- Tiªu chuÈn b¶o vÖ: IP68
- VËt liÖu sö dông: ThÐp kh«ng gØ
- Ho¹t ®éng tèt trong m«i trêng c«ng nghiÖp
4.3.2 Khèi khuÕch ®¹i
D¶i ®iÖn ¸p ®Çu ra cña Loadcell rÊt nhá , ®èi víi loadcell cã th«ng sè nh trªn th× ®iÖn ¸p ra øng víi khèi lîng tèi ®a lµ 20mv
Yªu cÇu ®Æt ra lµ x©y dùng mét m¹ch K§ ®iÖn ¸p ®Ó K§ ®iÖn ¸p ®Çu ra cña loadcell sao cho phï hîp víi ®iÖn ¸p ®Çu vµo cña ADC. Gi¶ sö ta cã hµm truyÒn cña m¹ch K§ cã d¹ng:
Ur = a.Uc + b (4.1)
Trong ®ã a, b lµ c¸c hÖ sè K§.
D¶i ®iÖn ¸p lµm viÖc cña ADC 0809 biÕn thiªn tõ 0 – 5V, t¬ng øng víi d¶i ®iÖn ¸p ®Çu ra cña c¶m biÕn tõ 0-20mv
(4.2)
VËy hµm truyÒn cña m¹ch K§ cÇn x©y dùng lµ:
Ur = 250.Uc (4.3)
Dùa vµo hµm truyÒn ta cã thÓ thiÕt kª mét m¹ch K§ víi 1 tÇng K§ nh sau:
Ta sö dông m¹ch K§ kh«ng ®¶o
HÖ sè K§ kh«ng ®¶o:
(4.4)
Víi Kk® = 250 =49
Ta chän: R1 = 10k, R2 = 490
H×nh 4.3: S¬ ®å m¹ch K§
4.3.3 Bé ADC
Chän IC ADC 0809 ®· giíi thiÖu. ADC 0809 cã 8 ngâ vµo t¬ng tù vµ ngâ ra song song 8 bit, bé chän kªnh cã thÓ truy xuÊt bÊt kú kªnh nµo trong c¸c ngâ vµo t¬ng tù mét c¸nh ®éc lËp.
4.3.4 Khèi vi ®iÒu khiÓn
Khèi chuyÓn ®æi t¬ng tù – sè ta ®· chän IC ADC 0809 cã ®é ph©n gi¶i 8 bit, 8 ngâ ra song song, do ®ã chän chip V§K 8051 cña Intel, lµ chip V§K phæ biÕn nhÊt cã c¸c ®Æc trng c¬ b¶n sau:
TÇn sè ho¹t ®éng: 0-24 MHZ.
CPU 8 bit tèi u cho c¸c øng dông ®iÒu khiÓn.
Kh¶ n¨ng xö lý to¸n h¹ng bit.
Kh¶ n¨ng ®Þnh ®Øa chÝ tíi 64 K byte ë bé nhí d÷ liÖu vµ 64 kB ë bé nhí ch¬ng tr×nh.
128 byte nhí d÷ liÖu on- chip.
4 kbyte bé nhí ch¬ng tr×nh on- chip.
32 ®êng vµo ra 2 chiÒu ®Þnh ®Þa chØ ®éc lËp.
2 bé timer/couter 16 bit
Mét cæng trao ®æi tin ®ång bé nèi tiÕp
6 nguån ng¾t t¬ng øng víi 5 ng¾t
Bé dao ®éng on – chÝp
C¸c chÕ ®é ho¹t ®éng tiÕt kiÖm n¨ng lîng
4.3.5 Khèi hiÓn thÞ.
Chän LCD HD44780:
H×nh 4.4 H×nh d¹ng cña LCD
H×nh 4.5 S¬ ®å ghÐp nèi LCD vµ 8051
4.3.6 Khèi nguån.
ë c¸c ®Çu c©n thùc tÕ ngêi ta thêng dïng bé nguån switching nªn cã ®é chÝnh x¸c vµ æn ®Þnh rÊt cao. Tuy nhiªn ®Ó thiÕt kÕ bé nguån ho¹t ®éng tèt theo kiÓu ®ã th× phøc t¹p v¶ l¹i linh kiÖn rÊt khã t×m, bé nguån ë ®©y ®îc thiÕt kÕ theo kiÓu th«ng thêng.
Bé nguån ®îc thiÕt kÕ víi nhiÒu møc ®iÖn ¸p cho c¸c øng dông kh¸c nhau: +5Volt cung cÊp cho ho¹t ®éng cña tÊt c¶ c¸c IC, ngo¹i trõ IC sö dông trong Card m¸y tÝnh th× dïng nguån nu«i cã s½n trong m¸y tÝnh ; nguån ±12Volt cung cÊp cho bé khuÕch ®¹i sö dông op – amp ; nguån 10Volt æn ®Þnh cÊp cho Loadcell. Riªng nguån chuÈn lµm ®iÖn ¸p tham kh¶o cÊp cho ADC ®îc thiÕt thay ®æi ®îc lµ tõ 0 ®Õn 5Volt nh»m môc ®Ých chØnh theo ngâ vµo cña tÝn hiÖu cÇn biÕn ®æi AD. Cã nhiÒu IC æn ¸p lµm nguån tham kh¶o rÊt tèt, tuy nhiªn rÊt khã t×m. ë ®©y sö dông c¸c IC cho chÊt lîng cã thÓ chÊp nhËn ®îc.
JP2
1
2
D5
LM336
4
8
5
R1
1K
R11
1
3
2
JP4
1
2
+12V
0V
S¬ ®å bé nguån nh sau :
H×nh 4.6 C¸c khèi nguån ®îc sö dông trong hÖ thèng
Bé nguån ®îc thiÕt kÕ gåm nh÷ng phÇn riªng biÖt nh sau :
Khèi ±12Volt cung cÊp cho op – amp sö dông IC æn ¸p LM7812 vµ LM7912. §©y lµ hä IC æn ¸p dïng cho nhiÒu øng dông kh¸c nhau. Sö dông t¶n nhiÖt phï hîp sÏ cho dßng ra cã thÓ vît qu¸ 1 Ampere. MÆc dï ®îc chÕ t¹o ®Ó æn ®Þnh ®iÖn ¸p nhng hä IC 78xx cã thÓ thªm c¸c linh kiÖn bªn ngoµi ®Ó ®iÒu chØnh ®îc ®iÖn ¸p vµ dßng ®iÖn ë ngâ ra. Bªn trong hä IC còng cã b¶o vÖ qu¸ nhiÖt vµ ng¾n m¹ch. Sai lÖch ®iÖn ¸p ngâ ra lµ tõ 2% ®Õn 4%. Tô C1 2200mF lµ ®Ó tr¸nh nhÊp nh« ®iÖn ¸p nh trong c¸c chØnh lu th«ng thêng. Tô C2 0,33mF ph¶i cÇn thiÕt khi nguån cung cÊp ë xa. Tô C3 0,1mF th× kh«ng ph¶i ®Ó æn ®Þnh ®iÖn ¸p mµ chØ lµm t¨ng ®¸p øng qu¸ ®é.
Khèi ±5 Volt sö dông 2 IC æn ¸p LM7805, LM7905 dïng lµm nguån nu«i cho tÊt c¶ c¸c IC trong m¹ch vi xö lý. §iÖn ¸p ngâ vµo LM7805, LM7905 ®îc lÊy tõ nguån ±12Volt ®· æn ®Þnh tríc ®ã. §iÖn ¸p vµo IC LM7805 theo catalogue lµ cã thÓ tõ 7Volt ®Õn 20Volt DC.
LM336 sÏ cho ®iÖn ¸p chØnh ®îc tõ 0¸5Volt b»ng c¸ch dïng biÕn trë tinh chØnh bªn ngoµi . Së dÜ ë ®©y dïng nguån chuÈn cã thÓ chØnh ®îc lµ v× tÝn hiÖu dïng ®Ó biÕn ®æi AD cã ®iÖn ¸p toµn tÇm thay ®æi theo tõng lo¹i Loadcell sao cho phï hîp. §iÖn ¸p ngâ vµo cña LM336 lo¹i æn ¸p 5Volt lµ 12Volt còng ®îc lÊy tõ nguån 12Volt ë trªn.
§iÖn ¸p cÊp cho Loadcell ®îc thiÕt kÕ sö dông LM723 nh»m môc ®Ých lµm t¨ng tÝnh æn ®Þnh v× tÝn hiÖu ra cña Loadcell rÊt nhá nªn dÔ bÞ ¶nh hëng nÕu nguån kh«ng æn ®Þnh.
LM723CN lµ IC cã thÓ dïng ®Ó æn ¸p d¬ng hay æn ¸p ©m víi dßng ®iÖn ra ®¹t tíi 150mili Ampere DC. Dßng ®iÖn ngâ ra cã thÓ lµm t¨ng lªn vµi Ampere nÕu dïng mét hay nhiÒu transistor m¾c bªn ngoµi. TÇm nhiÖt ®é sö dông cho IC lo¹i th¬ng m¹i lµ tõ 0¸70°C.
4.3.7 Nót nhÊn
Ta sö dông 1 phÝm nhÊn ®Ó chän chÕ ®é lµm viÖc cho hÖ thèng. NÕu phÝm nhÊn ë møc thÊp (møc 0) th× tiÕn hµnh c©n khèi lîng , nÕu phÝm nhÊn ë møc cao (møc 1) th× ngõng qu¸ tr×nh c©n.
R1
1R
toi VĐK
H×nh 4.7 Nót nhÊn
4.3.8 Khèi giao tiÕp m¸y tÝnh.
S¬ ®å cña khèi nµy nh sau:
H×nh 4.8 S¬ ®å khèi giao tiÕp m¸y tÝnh.
TruyÒn th«ng víi m¸y tÝnh ®îc thùc hiÖn qua Port nèi tiÕp. MÆc dï c¶ ch©n RXD vµ TXD cña AT98C51 ®Òu ®îc kÕt nèi. Tuy nhiªn, chØ cÇn sö dông mét ®êng TXD v× chØ phôc vô cho viÖc truyÒn vÒ m¸y tÝnh mµ kh«ng cÇn nhËn d÷ liÖu vµo vi xö lý. TÝn hiÖu truyÒn sang m¸y tÝnh lµ d¹ng m· ASCII nªn trong ch¬ng tr×nh ngoµi phÇn ®æi sang m· LCD ®Ó hiÓn thÞ cßn cã ch¬ng tr×nh chuyÓn sang m· ASCII tríc khi ph¸t ra Port nèi tiÕp. C¸c tÝn hiÖu TTL nµy ®Òu ®îc chuyÓn sang chuÈn RS232 b»ng IC MAX232 tríc khi truyÒn ®i.
1
2
4
3
4.3.9 Mµn h×nh giao diÖn hiÓn thÞ khèi lîng trªn m¸y tÝnh .
H×nh 4.9 Mµn h×nh giao diÖn hiÓn thÞ khèi lîng
Gåm 4 khèi:
Khèi hiÓn thÞ khèi lîng c©n.
Khèi hiÓn thÞ tèc ®é baud.
Khèi híng dÉn.
Khèi nót ®iÒu khiÓn : gåm 2 nót nhÊn
Nót “C©n” : Khi Ên nót nµy th× man h×nh giao diÖn sÏ hiÓn thÞ khèi lîng c©n ®îc. Nót nµy cã thÓ nhÊn trùc tiÕp trªn mµn h×nh hoÆc nhÊn tæ hîp phÝm t¾t “ alt +c”
Nót “Tho¸t” : Khi Ên nót nµy th× man h×nh giao diÖn sÏ tho¸t ra khái mµn h×nh .Nót nµy cã thÓ nhÊn trùc tiÕp trªn mµn h×nh hoÆc nhÊn tæ hîp phÝm t¾t “ alt +T”
4.4. S¬ ®å nguyªn lý vµ gi¶i thuËt ch¬ng tr×nh.
4.4.1. S¬ ®å nguyªn lý.
.
H×nh 4.10 S¬ ®å nguyªn lý cña hÖ thèng
4.4.2.Ch¬ng tr×nh
Gi¶i thuËt ch¬ng tr×nh
B¾t ®Çu
Nh¶y ®Õn ch¬ng tr×nh chÝnh
Nh¶y ®Õn tr×nh ng¾t nối tiếp
Ch¬ng tr×nh chÝnh
Khëi t¹o ng¾t
Khëi t¹o LCD
Gäi CT chuyÓn ®æi ADC
Gäi hiÓn thÞ LCD
Göi lªn bé ®Öm truyÒn
RAM
30H
=1
1
Gi¶i thuËt ch¬ng tr×nh viÕt cho vi ®iÒu khiÓn.
H×nh 4.11 Gi¶i thuËt ch¬ng tr×nh viÕt cho vi ®iÒu khiÓn
Gi¶i thÝch la ®å: B¾t ®Çu, bá qua kh«ng gian vecter ng¾t nh¶y ®Õn ch¬ng tr×nh chÝnh. Trong ch¬ng tr×nh chÝnh vi ®iÒu khiÓn thùc hiÖn khëi t¹o ng¾t RS232 vµ khëi t¹o LCD, sau ®ã gäi c¸c ch¬ng tr×nh con chuyÓn ®æi ADC vµ hiÓn thÞ LCD. D÷ liÖu sÏ ®îc göi lªn bé ®Öm truyÒn vµ tiÕn hµnh kiÓm tra « nhí 30H trong RAM, nÕu « nhí 30H cã gi¸ trÞ b»ng 1 th× tiÕp tôc quay trë l¹i gäi c¸c ch¬ng tr×nh con chuyÓn ®æi ADC vµ hiÓn thÞ LCD vµ d÷ liÖu sÏ tiÕp tôc ®îc göi lªn bé ®Öm truyÒn vµ tiÕp tôc tiÕn hµnh kiÓm tra « nhí 30H nÕu « nhí vÉn cã gi¸ trÞ b»ng 1 th× tiÕp tôc vßng lÆp cßn nÕu gi¸ trrÞ cña « nhí 30H kh¸c mét th× ch¬ng tr×nh sÏ nh¶y t¹i chç vµ liªn tôc kiÓm tra « nhí 30H cho ®Õn khi « nhí cã gi¸ trÞ b»ng 1 th× tiÕp tôc vßng lÆp. Khi ch¬ng tr×nh chÝnh ®ang lµm viÖc nÕu
cã tÝn hiÖu ng¾t th× ch¬ng tr×nh sÏ nh¶y ®Õn tr×nh phôc vô ng¾t RS232 ®Ó thùc hiÖn.
B¾t ®Çu
Cê RI
NhËn d÷ liÖu tõ m¸y tÝnh
La vµo « nhí RAM 30H
Xo¸ cê TI
KÕt thóc ng¾t
=1
=0
-La ®å gi¶i thuËt tr×nh ng¾t RS232
H×nh 4.12 Gi¶i thuËt tr×nh ng¾t 232
Gi¶i thÝch la ®å tr×nh ng¾t 232: B¾t ®Çu kiÓm tra cê RI , nÕu RI=1 nhËn d÷ liÖu tõ m¸y tÝnh vµ la vµo « nhí 30H trong RAM sau ®ã xo¸ cê TI vµ kÕt thóc ng¾t. NÕu cê RI=0 th× thùc hiÖn xo¸ cê TI vµ kÕt thóc ng¾t ngay.
- Gi¶i thuËt viÕt giao diÖn cho m¸y tÝnh:
Gi¶i thuËt cho timer nhËn vµ hiÓn thÞ:
XuÊt biÕn ra text 1
B¾t ®Çu
XuÊt ch÷ KG
KÕt thóc
§äc bé ®Öm nhËn
B¾t ®Çu
C¾t ®i 2 kho¶ng trèng cña
bé ®Öm
ChuyÓn ®æi sang hÖ ASCII
KÕt thóc
a.
b.
H×nh 4.13 Gi¶i thuËt cho timer nhËn(a) vµ hiÓn thÞ (b)
Gi¶i thÝch la ®å:
Timer nhËn: §äc d÷ liÖu tõ bé ®Öm nhËn sau ®ã c¾t ®i 2 kho¶ng trèng cña bé ®Öm nhËn vµ chuyÓn ®æi d÷ liÖu d¹ng HEX sang hÖ ASCII .
Timer hiÓn thÞ: XuÊt biÕn ra text1 sau ®ã xuÊt ch÷ KG vµ kÕt thóc
Chän cæng COM1
B¾t ®Çu
Chän giao thøc truyÒn th«ng
Khai b¸o ®äc vµo d¹ng text
Khai b¸o bé ®Öm 1 byte
Më cæng COM
CÊm timer ®äc bé ®Öm
CÊm timer hiÓn thÞ
KÕt thóc
Gi¶i thuËt FORM:
H×nh 4.14 Gi¶i thuËt FORM
Gi¶i thÝch la ®å: Khai b¸o chän cæng COM1 , sau ®ã khai b¸o d¹ng truyÒn th«ng vµ ®äc vµo d¹ng text , khai b¸o bé ®Öm 1byte.TiÕp theo khai b¸« më cæng COM1 vµ cÊm timer ®äc vµ hiÓn thÞ (khi cha cã d÷ liÖu) sau ®ã kÕt thóc.
Ch¬ng tr×nh.
Ch¬ng tr×nh cho vi ®iÒu khiÓn
ale equ p2.1
oec equ p2.0
oe equ p2.2
ka equ p2.3
kb equ p2.4
kc equ p2.5
rs equ p1.0
rw equ p1.1
e equ p1.2
org 0000h
jmp main
org 23h
jmp isr_com
main:
jb p1.3, $
mov ie,#10010000b ;ngat com 232,ngat timer0
mov tmod,#00100000b ;timer1 che do 2 tao nhip cho toc do buad
mov th1,#0fdh ;9600 . ta 11.0592mhz
mov scon ,#50h ;1start ,8,n,,cho phÐp ren
mov p0,#0ffh ;xac lap cong doc vao
setb tr1
lap_ko_xuat_data_len_pc:
call doc_loadcell
call delay
call hien_thi_lcd
mov 30h,a
cjne a,#'s',lap_ko_xuat_data_len_pc
co_ket_noi_may_tinh:
call doc_loadcell
call delay
mov a,40h
mov sbuf,a ;xuat len may tinh
call hien_thi_lcd
mp co_ket_noi_may_tinh
doc_loadcell:
clr ka
clr kb
clr kc
clr oe
setb ale
nop
nop
nop
nop
clr ale
;cho cho chuyen doi xong
call delay
clr p1.0
setb oe
nop
nop
mov a,p0
mov 40h,a
clr oec
ret
tach_chuyen_doi_ma_thap_phan_to_ascii:
mov a,40h
mov b,#100
div ab
mov 41h,a ;luu hang tram
mov a,b
mov b,#10
div ab
mov 42h,a ;luu hang chuc
mov 43h,b ;luu hang don vi
mov r0,#40h
mov r1,#50h
giai_ma_tiep:
mov a,@r0
clr c
add a,#48
mov @r1,a
inc r0
inc r1
cjne r1,#53h,giai_ma_tiep
ret
khoi_tao_lcd:
mov a,#38h ;chonn lcd hien thi 2dong matrix5*7
call guilenh ;truong trinh con nap lenh
call delay
mov a,#0ch ;hienthi man hinh va nhap nhay con tro
call guilenh
call delay
mov a,#80h ;dich sang phai
call guilenh
call delay
ret
hien_thi_lcd:
mov a,#'k' ;chu k
call hienthi
call delay
mov a,#'h' ;chu h
call hienthi
call delay
mov a,#'o' ;chu o
call hienthi
call delay
mov a,#'i' ;chu i
call hienthi
call delay
mov a,#'L' ;chu l
call hienthi
call delay
mov a,#'u' ;chu u
call hienthi
call delay
mov a,#'o' ;chu o
call hienthi
call delay
mov a,#'n' ;chu n
call hienthi
call delay
mov a,#'g' ;chu g
call hienthi
call delay
mov a,50h ;con so hang nghin
call hienthi
call delay
mov a,50h ;con so hang van
call hienthi
call delay
mov a,50h ;con so hang tram
call hienthi
call delay
mov a,#'0' ;con so hang chuc
call hienthi
call delay
mov a,#'0' ;con so hang dv
call hienthi
call delay
mov a,#'k' ;don vi kg
call hienthi
call delay
mov a,#'g' ;don vi kg
call hienthi
call delay
ret
guilenh:
mov p1,a ;dua ma lenh ra p1
clr rs ;dat rs=0 de thuc hien gui lenh
clr rw ;dat rw =0 de thuc hien ghi
setb e ;dua chan e len cao de chuan bi chot data
clr e ;cho xong xuon de chot
ret
hienthi:
mov p1,a
setb rs ;thuc hien ghi du lieu ht
clr rw
setb e
clr e
ret
delay: mov r7,#50
del1: mov r6,#0ffh
djnz r6,$
djnz r7,del1
ret
isr_com:
jnb ri,trans
mov a,sbuf
mov 30h,a
clr ri
reti
trans:
clr ti
reti
END
Ch¬ng tr×nh cho m¸y tÝnh:
Dim khoiluong As Double
__________________________________________________________________
Private Sub Command1_Click()
Timer3.Enabled = True
Timer4.Enabled = True
End Sub
________________________________________________________________
Private Sub Command2_Click()
End
End Sub
__________________________________________________________________
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText
MSComm1.InBufferSize = 1
MSComm1.PortOpen = True
Timer3.Enabled = False
Timer4.Enabled = False
End Sub
_________________________________________________________________
Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End Sub
_________________________________________________________________
Private Sub Picture1_Click()
MsgBox " giao dien phan mem ket noi voi modem can dinh luong hien thi tren may tinh.dung loadcell.phien ban v1.0 demo. voi giao thuc truyen la com1. buad 900,n,8,1.", vbOKOnly, "gioi thieu so bo ve phan mem! "
End Sub
Private Sub Picture2_Click()
MsgBox " do an tot nghiep dai hoc su pham ki thuat nam dinh. de tai can dinh luong dung loadcell va vdk 89c51 ket noi voi may tinh", vbOKOnly, "gioi thieu so bo ve phan mem! "
End Sub
___________________________________________________________________
Private Sub Timer1_Timer()
Text2.Text = "com1 9600,N,8,1 "
End Sub
Private Sub Timer2_Timer()
Text2.Text = ""
End Sub
__________________________________________________________________
Private Sub Timer3_Timer()
Dim klTest As String 'Tao mot bien de luu du lieu tam thoi tu com truyen ve
klTest = MSComm1.Input
On Error Resume Next 'Co gang convert du lieu thanh kieu Int
klTest = Trim$(klTest) 'Cat khoang trang 2 dau
khoiluong = Asc(klTest) 'Convert to Interger
MSComm1.InputLen = 0 'Xoa bo dem
End Sub
__________________________________________________________________
Private Sub Timer4_Timer()
Text1.Text = khoiluong & "Kg"
End Sub
C- kÕt luËn
Sau b¶y tuÇn thùc hiÖn ®å ¸n nµy víi sù híng dÉn tËn t×nh cña thÇy Ph¹m Xu©n B¸ch cïng c¸c thÇy c« trong Khoa §iÖn - §iÖn tö, céng víi sù cè g¾ng nç lùc cña b¶n th©n vµ sù gióp ®ì cña c¸c b¹n, em ®· hoµn thµnh ®å ¸n nµy ®óng thêi gian quy ®Þnh theo yªu cÇu cña ®Ò tµi lµ: ThiÕt kÕ c©n ®iÖn tö dïng vi ®iÒu khiÓn 8051 hiÓn thÞ ra mµn h×nh LCD vµ giao tiÕp víi m¸y tÝnh qua cæng RS232
§Ó thùc hiÖn ®îc c¸c yªu cÇu trªn em ®· nghiªn cøu, t×m hiÓu c¸c vÊn ®Ò vÒ vi ®iÒu khiÓn, vi xö lý, c¸c ph¬ng ph¸p ®o khèi lîng, c¸c vÊn ®Ò liªn quan ®Õn truyÒn th«ng nèi tiÕp vµ c¸c vÊn ®Ò kh¸c cã liªn quan ®Õn ®Ò tµi.
Néi dung chÝnh cña ®Ò tµi nµy bao gåm nh÷ng phÇn chÝnh sau:
PhÇn kiÕn thøc:
+Nghiªn cøu vÒ hÖ thèng c©n ®iÖn tö.
+Nghiªn cøu cÊu tróc vµ tËp lÖch cña 8051, ADC 0809, LCD, vµ c¸c bé khuÕch ®¹i.
+ Nghiªn cøu c¸c vÊn ®Ò vÒ truyÒn th«ng nèi tiÕp .
PhÇn thiÕt kÕ, thi c«ng:
+ X©y dùng s¬ ®å khèi toµn m¹ch.
+ X©y dùng lu ®å gi¶i thuËt.
+ ViÕt ch¬ng tr×nh ®iÒu khiÓn.
+ X©y dùng s¬ ®å nguyªn lý m¹ch ®o
+ M« pháng m¹ch ®o trªn phÉn mÒm Proteus.
+ M« pháng ch¬ng tr×nh giao tiÕp víi m¸y tÝnh trªn phÉn mÒm VB6.0
Trªn ®©y lµ nh÷ng néi dung mµ em ®· thùc hiÖn ®îc trong ®å ¸n nµy.
Theo nhËn ®Þnh chñ quan cña em th× tËp ®å ¸n nµy ®· tr×nh bµy t¬ng ®èi ®Çy ®ñ c¸c néi dung, nh÷ng kiÕn thøc liªn quan, gi¶i quyÕt ®îc nh÷ng yªu cÇu ®Æt ra.
Song do kiÕn thøc cßn h¹n chÕ vµ thêi gian thùc hiÖn kh«ng ®îc nhiÒu nªn ®Ò tµi cña em cßn nhiÒu h¹n chÕ. MÆc dï ®· tÝnh to¸n vµ thiÕt kÕ chi tiÕt m¹ch vµ c¸c th«ng sè cña m¹ch nhng do ®iÒu kiÖn ®å ¸n cña em míi chØ dõng l¹i ë viÖc m« pháng trªn m¸y nªn cßn mang nÆng tÝnh lý thuyÕt vµ cã thÓ kh¸c thùc tÕ, h¬n n÷a chØ gi¶i quyÕt ®îc yªu cÇu lµ : ®o khèi lîng vµ hiÓn thÞ trªn LCD vµ ch¬ng tr×nh giao tiÕp víi m¸y tÝnh míi chØ thùc hiÖn ®îc phÇn khèi lîng cña ®èi tîng .Em mong cã sù gãp ý vµ söa ch÷a cña c¸c thÇy c« ®Ó ®Ò tµi nµy cã tÝnh kh¶ thi h¬n vÒ c¶ ph¬ng diÖn kinh tÕ còng nh kÜ thuËt.
§Ó ®Ò tµi nµy thªm phong phó vµ t¨ng hiÖu qu¶ sö dông th× cÇn ®¸p øng ®îc nh÷ng yªu cÇu sau:
- Cã thÓ c©n ®îc d¶i khèi lîng lín h¬n.
- Sö dông c¸c thiÕt bÞ kh¸c ®Ó c©n.
- Cã thÓ giao tiÕp víi m¸y tÝnh ®Ó thùc hiÖn c¸c chøc n¨ng kh¸c nh tÝnh tiÒn tù ®éng, in ho¸ ®¬n tÝnh tiÒn, phiÕu c©n hµng, la tr÷ sè liÖu ®Ó b¸o c¸o.....
§ã lµ nh÷ng yªu cÇu mµ em cha cã ®iÒu kiÖn thùc hiÖn, mong r»ng ®Ò tµi nµy sÏ ®îc c¸c b¹n sinh viªn kho¸ sau tiÕp tôc thùc hiÖn nh÷ng yªu cÇu trªn vµ kh¾c phôc ®îc nh÷ng h¹n chÕ cña ®Ò tµi nµy, ®Ó t¹o ra mét s¶n phÈm cã chÊt lîng cao phôc vô cho s¶n xuÊt vµ ®êi sèng x· héi.
Sau cïng mét lÇn n÷a em xin ch©n thµnh c¶m ¬n thÇy Ph¹m Xu©n B¸ch cïng quý thÇy c« Khoa §iÖn - §iÖn tö ®· tËn t×nh híng dÉn vµ t¹o ®iÒu kiÖn cho em trong suèt nh÷ng n¨m häc võa qua vµ hoµn thµnh ®å ¸n nµy!
Xin ch©n thµnh c¶m ¬n c¸c b¹n sinh viªn ®· ®ãng gãp nh÷ng ý kiÕn quý b¸u ®Ó cho ®å ¸n cña t«i hoµn thµnh tèt ®Ñp!
Sinh viªn thùc hiÖn
NguyÔn ThÞ H¬ng Cóc
Tµi liÖu tham kh¶o
1 .Kü thuËt vi ®iÒu khiÓn- Lª v¨n Doanh - Ph¹m Kh¾c Ch¬ng-NXB khoa häc kü thuËt.
2. §o lêng vµ ®iÒu khiÓn b»ng m¸y tÝnh –Ng« Diªn TËp-NXB Khoa häc kü thuËt
3. Gi¸o tr×nh vi m¹ch sè-Nguyªn H÷u Ph¬ng-Trêng §H KH Tù Nhiªn TP HCM
4. ThiÕt kÕ hÖ thèng víi hä 8051 – Tèng V¨n On – NXB KHKT
5. CÊu tróc vµ lËp tr×nh hä V§K 8051 – NguyÔn T¨ng Cêng, Phan Quèc Th¾ng – NXB KHKT
6. CÊu tróc-LËp tr×nh-GhÐp nèi vµ øng dông V§K – NguyÔn M¹nh Giang – NXB Gi¸o Dôc
7. Gi¸o tr×nh ®o lêng c¸c ®¹i lîng ®iÖn vµ kh«ng ®iÖn-NguyÔn V¨n Hoµ- Nhµ XB Gi¸o Dôc
8. Vi ®iÒu khiÓn 8051-NguyÔn T¨ng Cêng-Nhµ xuÊt b¶n khoa häc kÜ thuËt
9. Gi¸o tr×nh nhËp m«n lËp tr×nh VB6.0 –Ph¹m H÷a Khang/§oµn ThiÖn Nh©n-Nhµ xu¸t b¶n Lao §éng X· Héi
10. Bµi gi¶ng kÜ thuËt sè-§µo Thanh To¶n/ Ph¹m Thanh Toµn-NXB §H GTVT
11. KÜ thuËt sè –NguyÔ Thuý V©n- Nhµ xuÊt b¶n khoa häc kÜ thuËt
12. The 8051 Microcontroller –University of Guelph-I.SCOTT MACKENZIE.
13. Digital Systems Principles andApplications-RONALD J. TOCCI.
14. Microcomputer for engineer and Scientists-Glenn A. Gibson,Ya Cheng Liu.
Instrumebts.
Trang Web:
3c.com.vn
Dientuvietnam.net
Picvietnam.com
Google.com.vn
C©n®iÖntö .com.vn
loadcellsystems.co.za
loadcells.com
Các file đính kèm theo tài liệu này:
- can dien tu.doc
- manguon_can loadcell_232.doc