TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

`

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ế đồng hồ thời gian thực hiển thị LCD sử dụng cổng nối tiếp. 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 08Th¸ng 03N¨m 2011 Gi¸o viªn híng dÉn :Phạm Văn Chiến Nhãm sinh viªn thùc hiÖn: Nguyễn Đức Cường :Lê Việt Hùng :Mai Thị Thảo Líp : Điện Tử 2_k2

Lớp điện tử 2 k2

1

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

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.
Lớp điện tử 2 k2

2

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

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.

Lớp điện tử 2 k2

3

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

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:
Lớp điện tử 2 k2

4

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

§ä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:

Lớp điện tử 2 k2

5

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

• 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
Lớp điện tử 2 k2

6

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

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.

Lớp điện tử 2 k2

7

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

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

Lớp điện tử 2 k2

8

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

H×nh 2 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
Lớp điện tử 2 k2

9

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

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 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) RLS D RI DSR CTS RLSD 1 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
Lớp điện tử 2 k2

10

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

®· ®îc ®¶o . c) Thanh ghi ®iÒu khiÓn ®êng truyÒn( 3F8+3) C7 C6 C5 C4 C3 C2 C1 C0

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Î 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
Lớp điện tử 2 k2

11

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

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 D1 0 0 D0 0 0 0 D6 D5 D4 D3 D2

D2 0 1

D 1 0 1

D 0 1 0

1 0 0

0 1 0

0 0 0

Møc u Nguån g©y ĐÆt l¹i ng¾t tiªn ng¾t Kh«ng kiÓm tra ng¾t Cao nhÊt Lçi ®êng nhËn d÷ Đäc thanh liÖu ghi tr¹ng th¸i ®êng truyÒn Thø 2 Cã d÷ liÖu nhËn Đäc thanh ghi ®Öm Thø 3 Thanh ghi ®Öm truyÒn rçng Thø 4 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 )
Lớp điện tử 2 k2

12

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

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 R1out (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µ 10µ F.

Lớp điện tử 2 k2

13

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

PhÇn III: Néi dung ®Ò tµi I. Ch¬ng tr×nh ®iÒu khiÓn b»ng VB 1. Form chÝnh

Lớp điện tử 2 k2

14

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

2.Chương trình vb
Dim chg As String Dim a, b, c As Integer Private Sub Command1_Click() Text3.Text = Format(Now, "hh:nn:ss") phut giay hien tai trong text3 End Sub

'hien thi gio

Private Sub Command2_Click() If IsDate(Text3.Text) Then 'text3="hh:nn:ss" data type chua ca ngay lan gio la DATE Time = Format(Text3.Text, "hh:nn:ss") 'cho phep dat lai gio he thong trong text3 Else MsgBox "loi nhap gio.moi ban nhap lai gio!" 'thong bao loi nhap gio End If End Sub Lớp điện tử 2 k2

15

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

Private Sub Command3_Click() Text4.Text = Format(Now, "dd/mm/yyyy") 'hien thi ngay thang nam hien tai trong text4 End Sub Private Sub Command4_Click() If IsDate(Text4.Text) Then 'text4="dd/mm/yyyy" Date = Format(Text4.Text, "dd/mm/yyyy") 'cho phep dat lai ngay he thong trong text4 Else MsgBox "loi nhap ngay.moi ban map lai ngay!" 'thong bao loi nhap ngay End If End Sub Private Sub Command5_Click() 'lenh thoat If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End If End End Sub Private Sub Command6_Click() ' hien tho gio phut Timer1.Enabled = True Timer2.Enabled = False Timer3.Enabled = False Timer4.Enabled = False Timer1.Interval = 100 End Sub Private Sub Command7_Click() 'hien thi phut giay Timer1.Enabled = False Timer2.Enabled = True Timer3.Enabled = False Timer4.Enabled = False Timer2.Interval = 100 End Sub Private Sub Command8_Click() 'hien thi ngay thang Timer1.Enabled = False Timer2.Enabled = False Timer3.Enabled = True Timer4.Enabled = False Timer3.Interval = 100 End Sub Private Sub Command9_Click() 'hien thi thang nam Timer1.Enabled = False Timer2.Enabled = False Lớp điện tử 2 k2

16

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

Timer3.Enabled = False Timer4.Enabled = True Timer4.Interval = 100 End Sub Private Sub Form_Load() MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.RThreshold = 1 MSComm1.InputMode = 1 MSComm1.SThreshold = 1 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If Text3.Text = " " Text4.Text = " " Text5.Text = " " End Sub Private Sub Timer1_Timer() Text1.Text = Format(Now, "hh:nn:ss") phut giay hien tai trong text1 Text2.Text = Format(Now, "dd/mm/yyyy") thang nam hien tai trong text2 Text5.Text = Format(Now, "hh:nn") thi gio phut send ("g") xuong VDK a = Hour(Now) tai cho bien a send (Chr(a Mod 256)) cua gio xuong VDK send (Chr(a \ 256)) cua gio xuong VDK b = Minute(Now) tai cho bien b send (Chr(b Mod 256)) cua phut xuong VDK send (Chr(b \ 256)) cua phut xuong VDK c = Second(Now) tai cho bien c send (Chr(c Mod 256)) cua giay xuong VDK send (Chr(c \ 256)) cua giay xuong VDK d = Day(Now) tai cho bien d send (Chr(d Mod 256)) cua ngay xuong VDK Lớp điện tử 2 k2

'mo cong

'gio phut 'hien thi gio 'hien thi ngay 'dinh dang hien ' gui ky tu g ' gan gio hien ' gui byte thap ' gui byte cao ' gan phut hien ' gui byte thap ' gui byte cao ' gan giay hien ' gui byte cao ' gui byte cao ' gan ngay hien ' gui byte thap

17

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

send (Chr(d \ 256)) ' cua ngay xuong VDK e = Month(Now) ' tai cho bien e send (Chr(e Mod 256)) ' cua thang xuong VDK send (Chr(e \ 256)) ' cua thang xuong VDK f = Year(Now) ' tai cho bien f send (Chr(((f Mod 1000) Mod 100) Mod 256)) thap cua nam xuong VDK send (Chr(((f Mod 1000) Mod 100) / 256)) ' cua nam xuong VDK End Sub Private Sub Timer2_Timer() 'phut giay Text1.Text = Format(Now, "hh:nn:ss") Text2.Text = Format(Now, "dd/mm/yyyy") Text5.Text = Format(Now, "nn:ss") send ("p") ' gui ky tu p xuong VDK a = Hour(Now) send (Chr(a Mod 256)) send (Chr(a \ 256)) b = Minute(Now) send (Chr(b Mod 256)) send (Chr(b \ 256)) c = Second(Now) send (Chr(c Mod 256)) send (Chr(c \ 256)) d = Day(Now) send (Chr(d Mod 256)) send (Chr(d \ 256)) e = Month(Now) send (Chr(e Mod 256)) send (Chr(e \ 256)) f = Year(Now) send (Chr(((f Mod 1000) Mod 100) Mod 256)) send (Chr(((f Mod 1000) Mod 100) / 256)) End Sub Private Sub Timer3_Timer() 'ngày tháng Text1.Text = Format(Now, "hh:nn:ss") Text2.Text = Format(Now, "dd/mm/yyyy") Text5.Text = Format(Now, "dd/mm") send ("t") ' gui ky tu t xuong VDK a = Hour(Now) send (Chr(a Mod 256)) send (Chr(a \ 256)) b = Minute(Now) send (Chr(b Mod 256)) Lớp điện tử 2 k2

gui byte cao gan thang hien gui byte thap gui byte cao gan nam hien ' gui byte gui byte cao

18

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

send (Chr(b \ 256)) c = Second(Now) send (Chr(c Mod 256)) send (Chr(c \ 256)) d = Day(Now) send (Chr(d Mod 256)) send (Chr(d \ 256)) e = Month(Now) send (Chr(e Mod 256)) send (Chr(e \ 256)) f = Year(Now) send (Chr(((f Mod 1000) Mod 100) Mod 256)) send (Chr(((f Mod 1000) Mod 100) / 256)) End Sub Private Sub Timer4_Timer() 'thang nam Text1.Text = Format(Now, "hh:nn:ss") Text2.Text = Format(Now, "dd/mm/yyyy") Text5.Text = Format(Now, "mm / yy") send ("n") ' gui ky tu n xuong VDK a = Hour(Now) send (Chr(a Mod 256)) send (Chr(a \ 256)) b = Minute(Now) send (Chr(b Mod 256)) send (Chr(b \ 256)) c = Second(Now) send (Chr(c Mod 256)) send (Chr(c \ 256)) d = Day(Now) send (Chr(d Mod 256)) send (Chr(d \ 256)) e = Month(Now) send (Chr(e Mod 256)) send (Chr(e \ 256)) f = Year(Now) send (Chr(((f Mod 1000) Mod 100) Mod 256)) send (Chr(((f Mod 1000) Mod 100) / 256)) End Sub Sub send(buffer As String) If MSComm1.PortOpen = True Then MSComm1.Output = buffer End If End Sub

II. Ch¬ng tr×nh vi ®iÒu khiÓn // Chuong trinh hien thi thoi gian thuc tren LCD // Giao tiep voi may tinh qua cong COM

Lớp điện tử 2 k2

19

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

// lap trinh vi dieu khien ghep noi may tinh hien thi lcd #include <regx52.h> #include <stdio.h> #include<math.h> #include<string.h> //Dinh nghia I/O sbit en_lcd=P2^6; sbit rw_lcd=P2^5; sbit rs_lcd=P2^4; sbit d7=P0^7; unsigned int gp[13]; //mang giu lieu unsigned char i,j, count1,count2,sec1,sec2,h1,h2,m1,m2,ngay1,ngay2,thang1,tha ng2,nam1,nam2; char hour,minute,sec,ngay,thang,nam; void delay(unsigned int number) { unsigned char j; unsigned int i; for(i=0;i<=number;i++) { for(j=0;j<=100;j++) {} } } /******************* Ham kiem tra LCD ******************/ void lcd_ban(void) { long n=0; P0=0xff; en_lcd=1; rs_lcd=0; rw_lcd=1; while(d7==1) { n++; if(n>=100) break; } en_lcd=0; }
Lớp điện tử 2 k2

20

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

/**************** Ham gui mot lenh len LCD*********************/ void write_command(unsigned char command) { lcd_ban(); rs_lcd=0; rw_lcd=0; P0=command; // gui lennh command len LCD en_lcd=1; delay(1); en_lcd=0; // dua xung EN xuong muc thap de chot du lieu delay(1); } /***************** Ham gui du lieu len LCD ****************/ void write_data(unsigned char lcd_data) { lcd_ban(); rs_lcd=1; rw_lcd=0; P0=lcd_data; // gui du lieu data len LCD en_lcd=1; delay(1); en_lcd=0; delay(1); } /*************** Ham khoi tao cho LCD*****************/ void khoitao() { write_command(0x01); write_command(0x38); tran 5x7 write_command(0x0c); write_command(0x06);
Lớp điện tử 2 k2

//xoa man hinh //che do 2 dong va ma // bat con tro,tat hien thi // dich con tro sang phai
Nhóm thực hiên:DCN105

21

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

write_command(0x0c); con tro }

// bat hien thi nhap nhay

/*************************** Ham gui mot ki tu len LCD *****************************/ void write_string(char *s) { while(*s) { write_data(*s); // viet tung ki tu len lcd khi chuoi do con ki tu s++; } } /************ Ham hien thi cho LCD ***************/ void hienthi(unsigned int n) { write_data(48+n); } void main(void) { SCON = 0x52; // cong noi tiep hoat dong o che do 1 TMOD = 0x21; // timer1 hoat dong o che do 2-8 bit tu nap lai,timer 0 hoat dong che do 1 16 bit TH1=TL1= -3; // tao toc do duong truyen cho cong noi tiep baud=9600 TR1 = 1; // de timer 1 bat dau hoat dong IE = 0x91; // cho phep ngat toan bo va cho phep ngat port noi tiep,cho phep ngat ngoai 0, IT0 = 1; // cho phep ngat suon am IP = 0x01;// uu tien ngat cong noi tiep khoitao(); write_command(0x01); // xoa man hinh delay(20); write_command(0x80); write_string("* DONG HO LCD *"); write_command(0xc8);
Lớp điện tử 2 k2

22

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

write_string("/" ); delay(10); sec=0; hour=0; minute=0; thang=0; nam=0; ngay=0; while(1) { for(i=0;i<13;++i) { gp[i]=_getkey(); } if (gp[0]=='p')//phut giay { hour=gp[2]*256+gp[1]; minute=gp[4]*256+gp[3]; sec=gp[6]*256+gp[5]; ngay=gp[8]*256+gp[7]; thang=gp[10]*256+gp[9]; nam=gp[12]*256+gp[11]; } if (gp[0]=='g')// gio phut { hour=gp[2]*256+gp[1]; minute=gp[4]*256+gp[3]; sec=gp[6]*256+gp[5]; ngay=gp[8]*256+gp[7]; thang=gp[10]*256+gp[9]; nam=gp[12]*256+gp[11]; } if (gp[0]=='t')// thang ngay { hour=gp[2]*256+gp[1]; minute=gp[4]*256+gp[3]; sec=gp[6]*256+gp[5]; ngay=gp[8]*256+gp[7]; thang=gp[10]*256+gp[9]; nam=gp[12]*256+gp[11];
Lớp điện tử 2 k2

23

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

} if (gp[0]=='n')// nam thang { hour=gp[2]*256+gp[1]; minute=gp[4]*256+gp[3]; sec=gp[6]*256+gp[5]; ngay=gp[8]*256+gp[7]; thang=gp[10]*256+gp[9]; nam=gp[12]*256+gp[11]; } m1=minute/10; m2=minute%10; h1=hour/10; h2=hour%10; sec1=sec/10; sec2=sec%10; thang1=thang/10; thang2=thang%10; ngay1=ngay/10; ngay2=ngay%10; nam1=nam/10; nam2=nam%10; if(gp[0]=='p') { write_command(0x80); write_string(" H.THI PHUT-GIAY"); write_command(0xc6); hienthi(m1); hienthi(m2); write_command(0xc9); hienthi(sec1); hienthi(sec2); } if(gp[0]=='g') { write_command(0x80); write_string(" H.THI GIO-PHUT"); write_command(0xc6); hienthi(h1); hienthi(h2); write_command(0xc9); hienthi(m1);
Lớp điện tử 2 k2

24

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

hienthi(m2); } if(gp[0]=='t') { write_command(0x80); write_string("H.THI THANG-NGAY"); write_command(0xc6); hienthi(thang1); hienthi(thang2); write_command(0xc9); hienthi(ngay1); hienthi(ngay2); } if(gp[0]=='n') { write_command(0x80); write_string("H.THI NAM-THANG"); write_command(0xc6); hienthi(nam1); hienthi(nam2); write_command(0xc9); hienthi(thang1); hienthi(thang2); } } }

Lớp điện tử 2 k2

25

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

Iii. S¬ Đå Nguyªn Lý

IV. Sơ Đồ Mạch In:

Lớp điện tử 2 k2

26

Nhóm thực hiên:DCN105

TÝnh

Trêng §H C«ng NghiÖp Hµ Néi

ghÐp Nèi M¸y

Lớp điện tử 2 k2

27

Nhóm thực hiên:DCN105

Sign up to vote on this title
UsefulNot useful