Thiết kế và thi công mạch cân điện tử sử dụng 89C51

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

doc100 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3012 | Lượt tải: 2download
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 nh­ng 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. Nh­ng ®è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× ch­a 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 ch­a. §Ó 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 ch­a 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 l­u ý 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 ch­a. Khi RI ®­îc thiÕt lËp th× trong SBUF ®· cã 1 byte. C¸c néi dung cña nã ®­îc cÊt l­u 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ù ch­a 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 ch­a ®Ç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... ) nh­ng 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). Nh­ng 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, nh­ng ®Ó 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 ®Ó l­u 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 nh­ng 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 tr­ng 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 nh­ng 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 l­u 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 l­a ®å: 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 L­a vµo « nhí RAM 30H Xo¸ cê TI KÕt thóc ng¾t =1 =0 -L­a ®å 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 l­a ®å 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µ l­a 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 l­a ®å: 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 l­a ®å: 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 ch­a 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 l­u ®å 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 nh­ng 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, l­a tr÷ sè liÖu ®Ó b¸o c¸o..... §ã lµ nh÷ng yªu cÇu mµ em ch­a 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:

  • doccan dien tu.doc
  • docmanguon_can loadcell_232.doc