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