You are on page 1of 38

GVHD: Thy gio PHM CNG CNH

A. LI M U
Trong nhng thp nin cui th k 20, k thut in t lin tc c nhng tin b vt bc, c bit l trong k thut ch to vi mch in t. S ra i v pht trin nhanh chng ca k thut in t m c trng l k thut vi x l to ra mt bc ngot quan trng trong s pht trin ca khoa hc tnh ton v x l thng tin, n nh hng quyt nh n con ng tin hc ho x hi, tc l con ng m thng tin v ang tr thnh lc lng sn xut trc tip trong nn sn xut ca k nguyn ti. Nm 1970, cng ty Intel cho ra i b vi x l u tin, c tn gi l Intel 4004, nhm p ng nhu cu cn thit ca mt cng ty kinh doanh l hng truyn thng BUSICOM. Intel 4004 l kt qu mt tng quan trng trong s pht trin k thut vi x l s. l mt kt cu logic m c th thay i chc nng ca n bng chng trnh ngoi ch khng pht trin theo hng mt cu trc ch thc hin mt s chc nng nht nh nh trc y. Do kh nng mm do ho trong cc thao tc ca mnh, nm 1970 Intel 4004 tr thnh b vi x l u tin trn th trng th gii. Intel - 4004 l b vi x l 4 bits song song, c ch to theo quy trnh cng ngh MOS knh cm ng loi P. Thi gian ti thiu thc hin mt lnh l 10,8s. Nm 1972, hng Intel cho xut xng b vi x l c tn gi l Intel 8008. Kiu ny vn c ch to theo cng ngh PMOS nhng l lai 8 bits song song. B vi x l ny l CPU ca my tnh MICRAL do Php ch to. n y, hng lot cc hng in t ni ting hng u ca h gii nh National, Rockwell, nhanh chng i vo cng ngh sn xut v ch to cc b vi x l.

Nhm 2 CNTT4_K2

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH Nm 1974, hng Intel cho ra i b vi x l 8080 8 bits song song c ch to theo cng ngh NMOS vi thi gian thc hin mt lnh l 2s, nh du mt bc tin ln trn con ng lm ch tc x l tin ca k thut in t hin i. Cc hng khc cng cho ra i nhng b vi x l c tn nng tng ng: 6800 (Motorola), 8080 (Texas Intrusment), Nm 1978, lai 8080 c ci tin thnh loi 8085. Lc ny xut hin nhng my tnh mini s dng cc b vi x l ni trn. Theo cc thng s c bn ca b vi x l ngy cng ci thin: tc nag cng cao (cc b vi x l hin i ca Intel t ti tc 500 800 MHz), rng knh thng tin ngy cng ln (cc b vi x l hin i ca Intel c knh d liu 16/32/64 bit). iu gip cho bi ton thit k cc h vi x l chuyn dng vi tnh nng rng ln tr nn d dng hn. Mt h vi x l c thit k ti thiu bao gm mt b vi x l (y l khi iu khin trung tm), mt b nh RAM, mt b nh c nh ROM v cc cng vo ra s liu cng nhng thi b ngoi vi cn thit. Mt h vi x l ti a khngc gii hn v s lng thnh phn, v chc nng thc hin v v quy m ng dng. Ngy nay, nhng ng dng ca vi iu khin i su vo i sng sinh hot v sn xut ca con ngi, l mt phn tt yu khng th thiu trong i sng hin i. Th k 21 c xem l th k ca khoa hc cng ngh, l th k m my mc c thit k v lp trnh mt cch t ng thay th cc hot ng ca con ngi trong sn xut, cng nh phc v cc cng vic trong sinh hot. Trong mt cuc sng mang tnh t ng ho cao th cc mch vi x l nh l mt cng c c lc, quan trng , h tr cho con ngi thc hin nhu cu ngy cng cao v cng hon thin ca mnh.

Nhm 2 CNTT4_K2

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH ang l sinh vin ngi trn gh nh trng, c hi tip cn, hc tp nhng cng ngh tin tin, hin i cha nhiu, nn trong qu trnh t hc v nghin cu, nhm chng em c gng tm hiu v b vi x l, cng nh cc ng dng ca n trong cc h vi x l. Vi nhng g nghin cu c, nhm chng em lm thc hnh ng dng thng qua vic thit k ng h in t. Cu trc chnh ca ng h in t bao gm b vi x l AT89S52 kt hp vi cc IC gii m 74LS138, hin th bng LED 7 thanh vi ngun cung cp l 5V.

Nhm 2 CNTT4_K2

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

B. NI DUNG
I. Gii thiu v h vi x l 8051 1.1. Tm tt lch s h vi x l 8051 Vo nm 1981, hng Intel gii thiu mt s b vi iu khin c gi l 8051. B vi iu khin ny c 128 byte RAM, 4K byte ROM trn chp, hai b nh thi, mt cng ni tip v 4 cng (u rng 8 bit) vo ra tt c c t trn mt chp. Lc y n c coi l mt h thng trn chp. Vi x l 8051 l mt b x l 8 bit c ngha l CPU ch c th lm vic vi 8 bit d liu ti mt thi im. D liu ln hn 8 bit c chia ra thnh cc d liu 8 bit cho x l. Vi x l 8051 c tt c 4 cng vo ra I/O, mi cng rng 8 bit. Mc d 8051 c th c mt ROM trn chp cc i l 64KB, nhng cc nh sn xut lc cho xut xng ch vi 4KB ROM trn chp. Vi x l 8051 tr nn ph bin sau khi Intel cho php cc nh sn xut khc sn xut v bn bt k dng bin th no ca 8051 m h thch vi iu kin h phi li m tng thch vi 8051. iu ny dn n s ra i nhiu phin bn ca 8051 vi tc khc nhau v dung lng ROM trn chp khc nhau c bn bi hn na cc nh sn xut. iu ny quan trng l mc d c nhiu bin th khc nhau ca 8051 v tc v dung lng nh ROM trn chp nhng tt c chng u tng thch vi 8051 ban u v cc lnh. iu ny c ngha l nu ta vit chng trnh ca mnh cho mt phin bn no th n cng s chy vi mi phin bn bt k khc m khng phn bit n t hng sn xut no.

Nhm 2 CNTT4_K2

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

Hnh 1. B tr bn trong ca khi 8051

1.2. Cc thnh vin khc ca h 8051 a. B vi iu khin 8052: B vi iu khin 8052 c tt c cc c tnh chun ca 8051 ngoi ra n cn c thm 128 byte RAM v mt b nh thi. N cng c 8KB ROM trn chp thay v 4KB nh 8051. b. B vi iu khin 8031: Chp 8031 thng c coi l 8051 khng c ROM trn chp v n c 0KB ROM trn chp. s dng chp ny ta phi b sung ROM ngoi cho n. ROM ngoi phi cha chng trnh c cha trong ROM trn chp b gii hn bi 4KB, cn ROM ngoi cha chng trnh c gn vo 8031 th c th ln hn 64KB. Khi b sung cng, ch vy ch cn hai cng thao tc. gii quyt vn ny ta c th b sung cng vo ra cho 8031.

Nhm 2 CNTT4_K2

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH c.Cc b vi iu khin 8051 t cc hng khc nhau: - B vi iu khin 8751: Chp 8751 ch c 4KB b nh UV-EPROM trn chp. S dng chp ny pht trin yu cu truy nhp n mt b t PROM cng nh b xo UVEPROM xo ni dung ca b nh UV-EPROM bn trong trc khi ta c th lp trnh li n. Do mt thc t l ROM trn chp i vi 8751 l UV-EPROM nn cn phi mt 20 pht xo i trc khi n c th lp trnh tr li. - B vi iu khin AT89C51: Chp 8951 c ROM trn chp dng b nh Flash. iu ny l l tng i vi nhng pht trin nhanh v b nh Flash c th c xo trong vi giy trong tng quan so vi 20 pht hoc hn m 8751 yu cu. V l do ny m AT89C51 dng pht trin mt h thng da trn b vi iu khin yu cu mt b t ROM m c h tr b nh Flash. Tuy nhin li khng yu cu xo ROM.

Hnh 2. Cc phin bn ca 8051 t Atmel ( Flash Rom)

Nhm 2 CNTT4_K2

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH II. Cc thnh phn ca mch ng h in t 2.1. Vi iu khin AT89S52 2.1.1. Tng quan v vi iu khin AT89S52 AT89S52 l mt vi iu khin 8 bit h CMOS c cng sut thp, hiu sut cao vi 8k bytes b nh Flash c th lp trnh trong h thng. Cu trc dng s khi tng qut:

Cu trc bus

Bus a ch ca h vi iu khin 8051 gm 16 dng tn hiu ( thng gi l bus a ch 16 bit ). Vi s lng bt a ch nh trn, khng gian nh ca chip c m rng ti a 65536 a ch. Bus d liu ca h vi iu khin 8051 gm 8 ng tn hiu ( thng gi l bus d liu 8 bit ) v th 8051 l h vi iu khin 8 bit. Vi rng ca bus d liu nh vy,cc chip ca h 8051 c th x l cc ngun d liu 8 bit trog mt chu klnh, nu ln hn 8 bt th dc chia thnh nhiu d liu 8 bit x l.

Nhm 2 CNTT4_K2

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH


CPU ( Central Processing Unit )

CPU l n v x l trung tm, l b no ca ton b h thng vi in t c tch hp trn chip vi iu khin. CPU c a c u t o c h n h l mt n v x l s hc v logic ALU ( Arithmethic Logic Unit ) l nithc hin tt c cc php ton s hc v php logic cho qu trnh x l.
B nh chng trnh ( Program Memory )

Khng gian b nh chng trnh ca AT89 l 64K , tuy nhin hu ht c c v i i u k h i n AT89 t r n t h t r n g c h t c h h p s n t r n c h i p m t lng b nh chng trnh nht nh v chim di a ch t 0000h tr i. AT89s52 c 4 k b n h c h n g t r n h l o i F l a s h t c h hp sn bn trong chip. y l b nh cho php ghi/xa n h i u l n . B n h c h n g t r n h c dng cha m chng trnh np vo chip. Mi lnh c m ha bi mt hoc vi byte, dung lng ca b nh chng trnh phn nh s l n g l n h m b n h c t h c h a c . b n h u t i n c a b n h chng trnh l 0x0000 chnh l a ch RESET ca 8051. Ngay sau khi reset (do tt/bt ngun, do mc in p ti chn reset b ko ln 5V ), CPU s chy n thc hin lnh dt ti a ch ny trc tin, lun lun l nh vy, phn cn trng trong khng gian chng trnh khng c d n g . N u m u n m r n g b n h c h n g t r n h t a p h i d n g b n h ngoi. Khi dng b nh ngoi th b nh trong ca chip s khng c dng na v n chim di a ch ngay t 0x0000.

Nhm 2 CNTT4_K2

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH


B nh d liu ( Data Memory )

8051 c b nh d liu l 64k a ch, cng l dung lng b nh d liu ln nht trong h 8051. y chnh l ni cha cc bin trung gian trong qu trnh chip hot ng.

i v i c c c h i p c b n h SRAM 128 byte th a ch ca cc byte SRAM ny c nh s t 00H n 7FH. i vi cc chip c bnh SRAM 256 byte th a ch ca cc byte trong SRAM c nh st 00H n FFh. SRAM c a ch t 00H 7FH l vng RAM thp vphn c a ch t 80H FFH l vng RAM cao. Cng vo/ra song song (I/O Port) 8051 c 4 cng vo/ra song song l P0, P1, P2, P3. Tt c cc cng ny u l cng vo/ra c hai chiu 8 bit. Cc bit ca mi cng l mt chn trn chip, nh vy mi cng s c 8 chn trn chip.

Nhm 2 CNTT4_K2

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH Cng P0 khng c in tr treo cao bn trong, mch li to mc cao ch c khi s dng cng ny vi tnh nng l bus dn knh a ch/d l i u . n h v y v i c h c n n g r a t h n g t h n g t h P0 l c n g r a c n v i c h c n n g v o t h P0 l c n g v o c a o t r . N u m u n s d n g P0 lmcng vo/ra thng thng ta phi thm in tr bn ngoi. Gi tr in tr bn ngoi thng l 4k 10k. Cc cng P1, P2, P3 u c in tr bn trong, do c th dng vi cc chc nng cng vo/ra thng thng m khng cn thm in tr ngoi. Thc cht in tr bn ngoi cc FET khng phi in tr tuyn tnh thng thng nhng kh nng to dng ra ca mch li khi u ra mc cao ( hoc khi l u vo ) rt nh, ch khong 100 micro Ampe.
Cng vo ra ni tip ( Serial Port )

Cng ny thng ch c s sng khi giao tip vi my tnh h o c giao tip vi vi iu khin khc. Cng ni tip c hai thanh ghi SCON, SBUF v PCON. Thanh ghi PCON khng nh a ch bit v c bt 7 l SMOD q u y n h t c t r u y n c a c n g n i t i p ( t c g p i n u SMOD = 1 v khng gp i nu SMOD=0).
Ngt ( Interrupt)

8051 ch c mt s t cc ngun ngt hay gi l nguyn nhn n g t . Mi ngt c mt vector ngt ring l mt a ch c nh nm trong b nh chng trnh. Khi sy ra ngt th CPU s t ng chuyn n thc hin lnh ti a ch ny.

Nhm 2 CNTT4_K2

10

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

Nhm 2 CNTT4_K2

11

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH cho php mt ngt ngoi th bit tng ng vi ngt v b i t EA phi c t bng 1. Thanh ghi IE l thanh nh a ch bit nn c th dng cc lnh tc ng bit tc ng ring l ln tng bit m khng l m a n h h n g n c c g i t r bi t k h c . C n g t h o t n g c l p v i vic cho php ngt, iu c ngha l c ngt s t ng t ln bng 1 khi c s kin gy ngt sy ra bt k s kin c c cho php ngt hay khng. Do vy, trc khi cho php mt ngt ta nn xa c ngt m bo sau khi cho php cc s kin gy ngt trong qu kh khng th gy ngt na. 8051 c hai ngt ngoi l INT0 v INT1. Ngt ngoi c hiu l ngt c gy ra bi s kin mc logic 0 ( mc in p thp gn v 0V ) hoc sn xung ( s chuyn mc in p t mc cao v mc thp ) sy ra chn ngt tng ng (P3.2 vi ngt ngoi 0 v P3.3 vi ngt ngoi 1 ) . V i c la chn kiu ngt c thc hin bng cc bit IT (InterruptT y p e ) n m t r o n g t h a n h g h i TCON. y l t h a n h g h i i u k h i n t i m e r nhng 4 bit LSB ( bit 0 - 3) c dng cho cc ngt ngoi.

Khi I T x = 1 th ngt ngoi tng ng c chn kiu l ngt theo sn xung, ITx = 0 th ngt theo mc thp. Cc bit IE l cc bit c ngt ngoi ch c tc dng trong trng hp ngt theo sn xung, khi kiu ngt theo sn xung c chn th ngt s sy ra duy nht mt ln khi c sn xung ca tn hiu, sau khi tn hiu mc thp hoc sn ln hay mc cao cng khng sy ra ngt cho n khi c sn xung tip theo. C ngt IE s c khi c sn xung v t ng b xa khi CPU bt u x l ngt. Nu kiu ngt mc thp Nhm 2 CNTT4_K2
12

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH c chn th ngt s xy ra b t k k h i n o t n h i u t i c h n n g t m c t h p v c n g t I E k h n g c s dng. Thng thng th ngi ta chn ngt theo sn xung.
B nh thi/ b m (Timer/Counter)

AT89S52 c 3 b nh thi 16 bit l Timer0, Timer1, Timer2. Gi tr m max l 65536. Cc b nh thi hot ng c lp vi nhau. Sau khi cho php hot ng th c c thm mt xung ti u vo m th gi tr ca Timer tng thm mt n v. Khi tng n gi tr max th t i m e r t ng c a v gi tr min (thng thng m i n = 0 ) . S k i n g i l trn timer v c th gy ra ngt nu trn timer c cho php ( bit ETx=1) . V i c c h o T i m er h o t n g h a y d n g c t h c h i n b i c c b t TR trong thanh ghi TCON ( nh a ch tng bit). TRx = 1 th Timer hot ng, TRx = 0 th Timer khng hot ng d v n c x u n g v o . K h i d n g m , g i t r c a t i m er g i n g u y n . Cc bit TFx l cc c bo trn ca timer, khi s kin trn x y r a c t r n s t ng c t bng 1 v nu ngt trn timer c cho php th ngt s xy ra. Khi CPU x l ngt trn timer c ngt TFx tng ng s t ng c x a b n g p h n m m . G i t r m 1 6 b i t c a t i m er c l u t r o n g thanh ghi THx ( byte cao) v thanh TLx ( byte thp ). Hai thanh ghi ny c th ghi c bt k lc no. Tuy nhin nn dng timer (TRx = 0) trc k h i g h i / c c c t h a n h g h i c h a gi t r m . c c t i m e r c t h h o t n g theo nhiu ch c quy inh bi cc bit trong thanh TMOD. xc nh thi gian ngi ta chn ngun xung nhp (clock) a vo m t r o n g t i m er l x u n g n h p b n t r o n g( d n h c h o CPU). Ngun xung clock ny thng c tn s n nh, do t s m ca timer ta c th xc nh thi gian Nhm 2 CNTT4_K2
13

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH thc. m cc s kin bn ngoi ta chn xung vung a vo timer (0V/5V) . C c t n h i u n y s c n i v i c c b i t c n g d n k n h t h m cc tnh nng T0/T1/T2. Khi c s thay i mc xung th timer s tng t h m m t n v c h o n l c t r n . V l c n y n g i t a g i t i m e r l counter. 2.1.2. S chn

Vi x l AT89S52 c 40 chn th c 32 chn dnh cho cc cng P0, P1, P2 v P3 vi mi cng c 8 chn. Cc chn cn li c dnh cho ngun Vcc, t GND, cc chn giao ng XTAL1 v XTAL2, ti lp RST, cho php cht a ch ALE, truy cp c a ch ngoi trnh
PSEN

EA ,

cho php ct chng

- Chn Vcc: Chn s 40 l Vcc cp in p ngun cho chp. Ngun in p l 5V. Nhm 2 CNTT4_K2
14

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH - Chn GND: Chn s 20 l GND, ni t. - Chn XTAL1 v XTAL2 : Vi x l AT89S52 c mt b dao ng trn chp nhng n yu cu c mt xung ng h ngoi chy n. B giao ng thch anh thng xuyn nht c ni vi cc chn u vo XTAL1 (chn 19) v XTAL2 (chn 18). B giao ng thch anh c ni vi thch anh cn c hai t in gi tr 22pF. Mt pha ca t in c ni xung t.

- Chn RST Chn s 9 l chn ti lp RESET. N l mt u vo v c mc tch cc cao (bnh thng mc thp). Khi cp xung cao ti chn ny th b vi iu khin s ti lp v kt thc mi hot ng. Khi kch hot ti bt ngun s lm mt mi gi tr trn thanh ghi. - Chn
EA :

Cc thnh vin ca h 8051 u c ROM trn chp lu ct chng trnh. Trong cc trng hp nh vy th chn
EA

c ni vi Vcc. i vi

nhng h khng c b nh ROM th m chng trnh c lu ct trn b nh ROM ngoi v chng c np cho chp. Do vy i vi nhng loi ny th chn
EA

phi ni t bo rng m chng trnh c ct

Nhm 2 CNTT4_K2

15

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH ngoi. Chn - Chn


EA

c ngha l truy cp ngoi, l chn s 31. N l mt chn

u vo v phi c ni vi Vcc hoc GND.


PSEN

y l chn u ra cho php ct chng trnh trong h thng. Vi nhng chp chng trnh c ct b nh ROM ngoi th chn ny c ni ti chn OE ca ROM. - Chn ALE: Chn ny cho php cht a ch, ALE l chn u ra v c tch cc cao. - Cng P0 : Cng 0 chim tt c 8 chn (t 32 n 39). N c th c dng nh cng u ra, s dng cc chn cng 0 va lm u ra , va lm u vo th mi chn phi c ni ti mt in tr ko bn ngoi 10k. iu ny l do thc t cng P0 l mt mng m khc vi cng P1, P2 v P3. - Cng P1 : Cng P1 cng chim tt c 8 chn ( t chn 1 n 8), n c th c s dng nh u vo hoc u ra. So vi cng P0 th cng ny khng cn n in tr ko v n c cc in tr ko bn trong. Trong qu trnh ti lp th cng P1 c cu hnh nh mt cng u ra. bin cng P1 thnh u vo th n phi c lp trnh bng cch ghi 1 n tt c cc bit ca n. AT89S52 c chc nng np ISP qua cc cng P1.5, P1.6, P1.7.

- Cng P2 :

Nhm 2 CNTT4_K2

16

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH Cng P2 cng chim 8 chn ( t chn 21 n 28), n c th c s dng nh u vo hoc u ra ging nh cng P1, cng P2 cng khng cn in tr ko v n c cc in tr ko bn trong. Khi ti lp, cng P2 c cu hnh nh mt cng u ra. to cng P2 nh u vo th n phi c lp trnh bng cch ghi s 1 vi tt c cc chn ca n. Trong h thng chp c b nh ROM th P2 c s dng nh u ra n gin. Tuy nhin trong h thng chp cn b nh ROM ngoi th cng P2 phi c dng cng vi P0 to ra a ch 16 bit i vi b nh ngoi. V cc loi chp ny c kh nng trung cp 64 KB b nh ngoi, n cn mt a ch 16 bit. Trong khi P0 cung cp 8 bit thp t A1 A7. Cng vic ca P2 l cung cp cc bit a ch cao t A8 A15. - Cng P3 : Cng P3 chim tng cng 8 chn (t chn 10 n chn 17). N c th c s dng nh u vo hoc u ra. Cng P3 cng khng cn in tr ko. Mc d cng P3 c cu hnh nh mt u ra khi ti lp, nhng y khng phi l cch n c s dng ph bin nht. Cng P3 c chc nng b sung l cung cp mt s tn hiu quan trng c bit chng hn nh ngt.

Cc bit P3.0 v P3.1 c dng cho cc tn hiu nhn v pht d liu trong truyn thng d liu ni tip. Cc bit P3.2 v P3.3 c dng cho cc ngt Nhm 2 CNTT4_K2
17

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH ngoi. Cc bit P3.4 v P3.5 c dng cho cc b nh thm 0 v 1. Cc bit P3.6 v P3.7 c cp cho tn hiu ghi v c cc b nh ngoi c ni ti trong cc chp khng c b nh ROM trn chp. 2.2. IC 74LS138

y l b gii m 3 bit thnh 8 ng loi vi mch hay mch c 3 ng vo v 8 ng ra, cn c gi l mch gii m nh phn sang octal (binary to octal decoder) , vi ng ra tch cc mc 1, 74LS138 co cng dung dich bit logic 0 t trn xung va t di ln theo ma BCD . No hay c dung h tr quet.

- Bng chn tr:

Nhm 2 CNTT4_K2

18

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

- S nguyn l

Nhm 2 CNTT4_K2

19

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

G1: l chn iu khin uc dng lm ng vo ca d liu (lun mc 1). G2A, G2B: l hai tn hiu iu khin c chc nng cho php d liu thng hay khng thng ( cho php thng khi G2A, G2B ng thi mc tch cc thp tc l mc 0)Cc ch s t 0, 1, 2, 3 , 7 ca cc knh ra tng ng vi t hp cc bt nh phn li vo iu khin chn knh A, B, C.

2.3. LED 7 thanh Nhm 2 CNTT4_K2


20

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH 2.3.1. S cc chn hin th

2.3.2. Quy tc giao tip vi LED 7 thanh

III. Nguyn l lm vic ca mch ng h in t Nhm 2 CNTT4_K2


21

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH S khi

Mch gm 5 khi chnh: - Khi ngun - Khi nh thi - Khi hin th - Khi iu khin - Bn phm

3.1. Khi ngun

Nhm 2 CNTT4_K2

22

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

- J1: jack ngun - BR1: diode cu, chnh lu in p u vo - U1: 7805 IC n p vi in p ra 5VDC, in p vo t 6-35VDC - C1: t lc u vo U1 - C2, C3: t lc u ra U1 - D1: n bo ngun - R31: in tr hn dng cho D1

Nhm 2 CNTT4_K2

23

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

3.2. Khi nh thi

- U3: DS1307 IC ng h thi gian thc lu cc gi tr thi gian (ngy, thng, nm, gi, pht, giy), c gi tr n nm 2100. DS1307 s dng giao tip I2C (2 chn SCL v SDA). - Thch anh 32.768kHz to dao ng cho DS1307 hot ng chnh xc. - Pin 3V cp ngun d phng. - Chn SQW dng xut xung vung vi tn s 1Hz, 4kHz, 8kHz, v 32kHz.

Nhm 2 CNTT4_K2

24

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

3.3. Khi hin th

- U3, U4: 74138 IC chn knh, chn u ra tng ng nhm iu khin ngun cho led 7 on, mc ch dng qut led, vi u vo c iu khin bi 8051. - Q1..Q14: transistor A1015, dng cp ngun cho led, c iu khin bi 74138

Nhm 2 CNTT4_K2

25

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH - R3,R5,R7,..,R29: in tr hn dng - R2,R4,R6,..,R28: in tr hi tip - Led 7 on: l led anode chung, anode c chn bi 74138, cc chn u vo tng ng c iu khin bi 8051 hin th s

3.4. Khi iu khin

- U2: AT89S52 l 1 vi iu khin 8 bit h 8051. Cc chn P1.0, P1.1, P1.2 iu khin cc led hin th gi, P1.4, P1.5, P1.6 iu khin cc led hin th ngy. P3.0, P3.1 giao tip vi DS1307. P3.2 nhn ngt t bn phm. P3.3nhn xung vung t DS1307. Port P2 qut ma trn phm. Port P0 hin th s cho cc led. Nhm 2 CNTT4_K2
26

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH - Thch anh 12Mhz cng C4, C5 to thnh b to dao ng cho 89S52 - R1, C6, nt Reset: to thnh mch reset cho 89S52 - D2: bo xung t DS1307, vi R32 hn dng - RP1, RP2: tr treo

3.5. Bn phm

Nhm 2 CNTT4_K2

27

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

Nhm 2 CNTT4_K2

28

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH S dng dng ma trn 4x4 phm - Num0..Num9: cc s tng ng - Change/Set: thay i thi gian v lu thi gian sa i - Left: sang tri 1 ch s - Right: sang phi 1 ch s - RST: a thi gian v gi tr hin ti (thot trng thi sa i) - On/Off Time: tt hin th thi gian - On/Off Date: tt hin th ngy thng - C7..C22: t lc nhiu, kt hp vi U7 chng ny cho bn phm - U6: 7408 IC logic 4 cng AND, xc nh 1 phm c bm. Chn ny c a v ngt INT0 ca 8051. - U7: 7414 IC logic NOT vi u vo Schmitt Ttrigger

IV. Chng trnh chy Chng trnh chy c vit bng ngn ng lp trnh C c a vo AT89S52 thng qua b np. /***************** CLOCK ********************** Microcontroller : 89S52 Created Date : 13/01/2011 Modified Date : 16/01/2011 Compiler : MikroC Coded by : Michu **********************************************/ Nhm 2 CNTT4_K2
29

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

/* Declare I2C interface */ sbit Soft_I2C_Scl at P3_0_bit; sbit Soft_I2C_Sda at P3_1_bit; sbit CON1 at P3_6_bit; sbit CON2 at P3_7_bit; /* Declare matrix keyboard */ sbit Row1 at P2_3_bit; sbit Row2 at P2_2_bit; sbit Row3 at P2_1_bit; sbit Row4 at P2_0_bit; sbit Col1 at P2_4_bit; sbit Col2 at P2_5_bit; sbit Col3 at P2_6_bit; sbit Col4 at P2_7_bit; /* Declaration for RTC DS1307 */ #define DS1307_ID 0xD0 // ID of DS1307 #define SECOND_ADD 0x00 // Second Register address #define MINUTE_ADD 0x01 // Minute Register address #define HOUR_ADD 0x02 // Hour Register address #define DAY_ADD 0x03 // Day Register address #define DATE_ADD 0x04 // Date Register address #define MONTH_ADD 0x05 // Month Register address #define YEAR_ADD 0x06 // Year Register address #define CONTROL_ADD 0x07 // Control Register address #define YearOffset 2000 // Current year offset /* Declare vars */ unsigned char sec,min,hour,date,mon,count,sel; unsigned int year; unsigned char HIGH,LOW; unsigned char num[10]={0x11,0xD7,0x32,0x92,0xD4,0x98,0x18,0xD3,0x10,0x90}; // Number array for 7-SEG LED unsigned char numd[10]={0x01,0xC7,0x22,0x82,0xC4,0x88,0x08,0xC3,0x0,0x80}; // Number array for 7-SEG LED with dot Nhm 2 CNTT4_K2
30

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH unsigned char dis[14]={0x0,0x4,0x2,0x6,0x1,0x5,0x70,0x30,0x50,0x10,0x60,0x20,0x40,0 x0}; bit pressed,released,changing,num0,num1,num2,num3,num4,num5,num6,num7 ,num8,num9,change,left,right,offtime,offdate,offt,offd,exit; const int timer=-1300; /* Initalize main program */ void init(){ Soft_I2C_Init(); // Init I2C interface TMOD=0x01; // Set TIMER0 in 16bit timer mode EA_bit=1; // Enable interrupt TF0_bit=0; // Clear timer0 flag ET0_bit=1; // Enable timer0 interrupt HIGH=timer>>8; LOW=timer; TH0=HIGH; // Set High Byte for timer0 TL0=LOW; // Set Low Byte for timer0 P2=0xF0; pressed=released=offt=offd=sel=0; } /* DS1307 Reading function */ unsigned char DS1307_read(unsigned char addr){ unsigned char buf; Soft_I2C_Start(); Soft_I2C_Write(DS1307_ID); Soft_I2C_Write(addr); Soft_I2C_Start(); Soft_I2C_Write(DS1307_ID+1); buf=Soft_I2C_Read(0); Soft_I2C_Stop(); buf = ((((buf & 0xF0)>>4)*10)+ (buf & 0x0F)); // convert BCD from DS1307 to HEX return buf; } /* DS1307 Writing function */ void DS1307_write(unsigned char addr, unsigned char dat){ Nhm 2 CNTT4_K2
31

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH dat = (((dat/10)<<4)|(dat%10)); Soft_I2C_Start(); Soft_I2C_Write(DS1307_ID); Soft_I2C_Write(addr); Soft_I2C_Write(dat); Soft_I2C_Stop(); } /* DS1307 Control Register Writing function */ void DS1307_writecon(unsigned char dat){ Soft_I2C_Start(); Soft_I2C_Write(DS1307_ID); Soft_I2C_Write(CONTROL_ADD); Soft_I2C_Write(dat); Soft_I2C_Stop(); } /* Display function */ void display(){ P0=0xFF; if((count<6)&&(!offt)){ CON1=1; CON2=0; P1=dis[count]; if((count==0)&&(sel!=1)) P0=num[hour/10]; else if((count==1)&&(sel!=2)) P0=numd[hour%10]; else if((count==2)&&(sel!=3)) P0=num[min/10]; else if((count==3)&&(sel!=4)) P0=numd[min%10]; else if((count==4)&&(sel!=5)) P0=num[sec/10]; else if((count==5)&&(sel!=6)) P0=num[sec%10]; } else if((count>5)&&(!offd)){ CON1=0; CON2=1; P1=dis[count]; if((count==6)&&(sel!=7)) P0=num[date/10]; else if((count==7)&&(sel!=8)) P0=numd[date%10]; else if((count==8)&&(sel!=9)) P0=num[mon/10]; else if((count==9)&&(sel!=10)) P0=numd[mon%10]; else if((count==10)&&(sel!=11)) P0=num[year/1000]; Nhm 2 CNTT4_K2
32

// convert DEC to BCD for DS1307

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH else if((count==11)&&(sel!=12)) P0=num[(year%1000)/100]; else if((count==12)&&(sel!=13)) P0=num[(year%100)/10]; else if((count==13)&&(sel!=14)) P0=num[year%10]; } } /* Timer0 Interrupt */ void disp() org IVT_ADDR_ET0{ TR0_bit=0; TF0_bit=0; TH0=HIGH; TL0=LOW; TR0_bit=1; if(count<13) count++; else count=0; display(); } /* 4x4 Matrix Keyboard Scan Function */ void scankey(){ if(!pressed){ if(!Col1){ pressed=1; while(pressed){ P2=0x0F; if((!Row1)&&Row2&&Row3&&Row4) {num7=1; break;} else if((!Row2)&&Row1&&Row3&&Row4) {num4=1; break;} else if((!Row3)&&Row2&&Row1&&Row4) {num1=1; break;} else if((!Row4)&&Row2&&Row3&&Row1) {change=1; break;} } } else if(!Col2){ pressed=1; while(pressed){ P2=0x0F; if((!Row1)&&Row2&&Row3&&Row4) {num8=1; break;} else if((!Row2)&&Row1&&Row3&&Row4) {num5=1; break;} else if((!Row3)&&Row2&&Row1&&Row4) {num2=1; break;} else if((!Row4)&&Row2&&Row3&&Row1) {num0=1; break;} } Nhm 2 CNTT4_K2
33

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH } else if(!Col3){ pressed=1; while(pressed){ P2=0x0F; if((!Row1)&&Row2&&Row3&&Row4) {num9=1; break;} else if((!Row2)&&Row1&&Row3&&Row4) {num6=1; break;} else if((!Row3)&&Row2&&Row1&&Row4) {num3=1; break;} else if((!Row4)&&Row2&&Row3&&Row1) {left=1; break;} } } else if(!Col4){ pressed=1; while(pressed){ P2=0x0F; if((!Row1)&&Row2&&Row3&&Row4) {offtime=1; break;} else if((!Row2)&&Row1&&Row3&&Row4) {offdate=1; break;} else if((!Row3)&&Row2&&Row1&&Row4) {exit=1; break;} else if((!Row4)&&Row2&&Row3&&Row1) {right=1; break;} } } P2=0xF0; } } /* Time Changing Execution */ void update(unsigned char val){ if(sel==1) hour=val*10+(hour%10); if(sel==2) hour=(hour-(hour%10))+val; if(sel==3) min=val*10+(min%10); if(sel==4) min=(min-min%10)+val; if(sel==5) sec=val*10+(sec%10); if(sel==6) sec=(sec-sec%10)+val; if(sel==7) date=val*10+(date%10); if(sel==8) date=(date-date%10)+val; if(sel==9) mon=val*10+(mon%10); if(sel==10) mon=(mon-mon%10)+val; if(sel==11) year=val*1000+(year%1000); if(sel==12) year=year-(year%1000)+(val*100)+(year%100); if(sel==13) year=year-(year%100)+(val*10)+(year%10); Nhm 2 CNTT4_K2
34

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH if(sel==14) year=year-(year%10)+val; if((sec>59)&&(sel==7)) sec=0; if((min>59)&&(sel==5)) min=0; if((hour>23)&&(sel==3)) hour=0; if((year>9999)&&(sel==1)) year=0; if((mon>12)&&(sel==11)) mon=1; if(( ((mon<8)&&(mon%2)&&(date>31)) || ((mon<8)&&(!(mon %2))&&(date>30)) || ((mon>7)&&(mon%2)&&(date>30)) || ((mon<7)&&(! (mon%2))&&(date>31)) ) && (sel==9)) date=1; } /* Main Program */ void main(){ init(); // Call init function TR0_bit=1; // Start timer0 while(1){ if(!changing){ year=DS1307_read(YEAR_ADD)+YearOffset; mon=DS1307_read(MONTH_ADD); date=DS1307_read(DATE_ADD); hour=DS1307_read(HOUR_ADD); min=DS1307_read(MINUTE_ADD); sec=DS1307_read(SECOND_ADD); } if(P2!=0xF0) scankey(); if(pressed) if(P2==0xF0) {released=1; pressed=0;} if(released){ released=0; if(!changing){ if(change){ changing=sel=1; change=offt=offd=0; } else if(offtime) {offtime=0; offt=~offt;} else if(offdate) {offdate=0; offd=~offd;} } else{ if(left){ left=0; sel--; Nhm 2 CNTT4_K2
35

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH if(!sel) sel=14; } else if(right){ right=0; sel++; if(sel>14) sel=1; } else if(exit) exit=changing=sel=0; else if(change){ change=changing=sel=0; DS1307_write(YEAR_ADD,year-YearOffset); DS1307_write(MONTH_ADD,mon); DS1307_write(DATE_ADD,date); DS1307_write(HOUR_ADD,hour); DS1307_write(MINUTE_ADD,min); DS1307_write(SECOND_ADD,sec); } else if(num0) {num0=0; update(0); sel++;} else if(num1) {num1=0; update(1); sel++;} else if(num2) {num2=0; update(2); sel++;} else if(num3) {num3=0; update(3); sel++;} else if(num4) {num4=0; update(4); sel++;} else if(num5) {num5=0; update(5); sel++;} else if(num6) {num6=0; update(6); sel++;} else if(num7) {num7=0; update(7); sel++;} else if(num8) {num8=0; update(8); sel++;} else if(num9) {num9=0; update(9); sel++;}

Nhm 2 CNTT4_K2

36

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

C. KT LUN
Trn y l ton b nguyn l hot ng v s cu to ca chic ng h in t. Tuy nhin do thi gian v nng lc cn hn ch nn nhm lm bo co cha th tm hiu c ht v cc chc nng ca tng linh kin trong mch. Mong thy thng cm. Qua vic thit k mch ng h ny, nhm cng hc tp c thm v kh nng lp trnh, s dng vi iu khin v cc phn mm lin quan c bit l tng kh nng lm vic theo nhm, t to tin cho vic gii quyt cc vn phc tp hn sau ny. Nhm chng em xin chn thnh cm n thy gio Phm Cng Cnh hng dn v gip chng em hon thnh bi bo co ny.

Nhm 2 CNTT4_K2

37

MCH NG H IN T

GVHD: Thy gio PHM CNG CNH

Ti liu tham kho - H vi iu khin 8051 - Tng Vn On, Hong c Hi.


- Cu trc lp trnh v h vi iu khin 8051 - Nguyn Tng Cng , Phan Quc Thng - www.datasheetcatalog.com

Nhm 2 CNTT4_K2

38

MCH NG H IN T

You might also like