You are on page 1of 66

1 Mc lc

M u .......................................................................................................................................................... 2 1 Gii thiu vi x l AVR ............................................................................................................................ 3 2 Mt s phn mm, thit b h tr cho vic lp trnh AVR..................................................................... 5 2.1 Phn mm CodeVision ...................................................................................................................... 5 2.2 Phn mm m phng Proteus ........................................................................................................... 5 2.3 Mch np v phn mm np ............................................................................................................ 6 3 ng dng ca vi x l ATmega16 ............................................................................................................ 7 3.1 iu khin I/O (In/Out)..................................................................................................................... 7 3.2 Ngt ngoi (Interrupt) ....................................................................................................................... 8 3.3 Timer/Counter ................................................................................................................................... 9 3.4 iu khin rng xung PWM ................................................................................................... 11 3.4.1 Khi nim rng xung ............................................................................................................ 11 3.4.2 To PWM bng ATmega16 ....................................................................................................... 11 3.5 Chuyn i ADC .............................................................................................................................. 14 3.6 Giao tip USART ............................................................................................................................. 16 3.6.1 Cc thut ng c dng trong giao tip USART ..................................................................... 16 3.6.2 Giao tip USART trn ATmega16 ............................................................................................ 17 4 Cc bi tp v d ...................................................................................................................................... 19 4.1 Lp trnh iu khin thit b ngoi (Led, ng c) ................................................................... 19 4.1.1 Phn tch mch in ................................................................................................................... 19 4.1.2 Xy dng nguyn l iu khin ................................................................................................. 19 4.1.3 M phng trn Proteus............................................................................................................... 21 4.1.4 Lp trnh cho vi x l ................................................................................................................ 22 4.1.5 Chy th trn mch m phng ................................................................................................... 29 4.2 Lp trnh ngt ngoi (INT) ............................................................................................................. 31 4.2.1 Phn tch mch in ................................................................................................................... 31 4.2.2 Nguyn l iu khin v xy dng mch m phng trn Proteus.............................................. 31 4.2.3 Lp trnh cho vi x l ................................................................................................................ 32 4.3 Lp trnh Timer/Counter................................................................................................................ 35 4.3.1 Phn tch, xy dng nguyn l iu khin v mch m phng .................................................. 35 4.3.2 Lp trnh cho vi x l ................................................................................................................ 35 4.4 iu khin rng xung PWM ...................................................................................................... 42 4.4.1 Phn tch mch in ................................................................................................................... 42 4.4.2 Nguyn l iu khin ................................................................................................................. 42 4.4.3 Xy dng mch m phng trn Proteus ..................................................................................... 43 4.4.4 Lp trnh cho vi x l ................................................................................................................ 43 4.5 Chuyn i ADC .............................................................................................................................. 46 4.5.1 Phn tch mch in ................................................................................................................... 46 4.5.2 Nguyn l iu khin v mch m phng trn Proteus ............................................................. 47 4.5.3 Lp trnh cho vi x l ................................................................................................................ 49 4.6 Truyn nhn d liu vi my tnh.................................................................................................. 58 4.6.1 Phn tch mch in ................................................................................................................... 58 4.6.2 Nguyn l iu khin v mch m phng ................................................................................. 58 4.6.3 Lp trnh cho vi x l ................................................................................................................ 59 Ph lc ......................................................................................................................................................... 64

2 M u Hin nay cc vi x l, hay vi iu khin (MCU Micro Controller Unit) ang c s dng rng ri trong nhiu knh vc nh: iu khin, t ng ha, o c, truyn thng So vi cc phng php iu khin, o c truyn thng (c kh, in t tng t), th s dng vi x l c cc u im nh: nh gn, t tn nng lng, thi gian p ng nhanh, c th lp trnh c Vi x l h AVR ca hng ATMEL hin ang c s dng tng i ph bin. Vi x l h AVR l cc vi x l lp trnh c. Sau khi c lp trnh, vi x l s hot ng theo thut ton c vit trong lp trnh ca ngi dng. Nh vy ngi dng c th lp trnh cho vi iu khin hot ng theo ca mnh gii quyt mt cc bi ton (iu khin, o c). Trong lp trnh cho vi iu khin, thng s dng ngn ng lp trnh C v c lin quan ti cu trc ca vi x l, ngi c cha c hc v ngn ng lp trnh C hoc cu trc vi x l c th d dng theo di, nhng phn s c din gii theo cch cng n gin cng tt. Nh vy ngi c c th theo di ti liu m khng thy qu kh hiu, tuy nhin cng v th nn cc kin thc c trnh by khng y v ch mc c bn nht, ngi c c th nhanh chng t lp trnh c mt s ng dng c bn vi vi iu khin AVR.

3 1 Gii thiu vi x l AVR AVR l tn gi chung cc vi x l ca hng ATMEL. Hng ATMEL sn xut cc vi x l vi cc chc nng, kh nng tnh ton khc nhau, c t tn khc nhau: ATtiny25, ATtiny48,ATmega8, ATmega16, ATmega128 Cc vi x l khc nhau th khc nhau v dung lng b nh ROM, RAM, cc khi chc nng, s lng chn Trong ti liu ny, cc hng dn v v d c vit cho vi x l ATmega16. S chn, cc khi chc nng v cch s dng, c tnh lm vic ca vi l c nh sn xut ghi trong file datasheet km theo, c th tm trn internet.

Hnh 1: Vi x l ATmega16

Cc vi x l c lp trnh bng ngn ng lp trnh (trong ti liu ny s dng ngn ng lp trnh C) nh cc phn mm (AVRStudio, CodeVision). Cc vi x l u c chung mt s c tnh in khi lm vic nh sau: in p lm vic l +5V. Dng in qua cc chn ca vi x l nh (c vi chc mA), nn khng th u trc tip vi iu khin vi cc thit b cng sut ln (ng c). Vi x l Atmega 16 c 2 kiu ng gi khc nhau, loi ng gi nh hnh sau l loi thng, ph bin nht, 40 chn theo s :

Hnh 2:S chn ca Atmega16

Tt c cc chn ca ATmega16 c nh s th t t 1 n 40 nh hnh v, chiu ca vi x l c ly theo u lm hoc chm trn trn vi x l. Khi lm vic, cc chn ca vi iu khin c hai mc trng thi l 0 v 1. Trng thi 0 ng vi mc in p 0 V cn trng thi 1 ng vi mc in p +5V.

4 Chc nng ca cc chn trn vi x l ATmega16 nh sau: Chn 10 VCC: L chn cp ngun +5V cho vi x l. Chn 11 v 31 GND: L hai chn ni vi ngun m. Khi thit k mch, phi ni c hai chn 11 v 31 vi ngun m. Chn 9 RESET: Bnh thng chn 9 trng thi 0, khi cp in +5V vo chn RESET, trng thi ca n t 0 ln 1, v reset li ton b hot ng ca vi x l, tng ng vi vic ngt ngun nui vi x l ri cp ngun li. Chn 12 XTAL1 v 13 XTAL2: L hai chn ni vi thch anh. Thch anh l mt linh kin c tc dng to dao ng in, vi x l s hot ng theo cc dao ng ny (v d 4Mhz, 12 Mhz). Trong mt s trng hp c th dng thch anh c gn sn trong vi x l, hai chn XTAL1 v XTAL2 c b trng. Chn 30 AVCC: L chn cp ngun cho khi chuyn i ADC (Analog to Digital Converter). ACD l mt chc nng ca vi x l, cho php o in p t ti chn 33, 34, , 40 ca vi x l. Xem thm mc Chuyn i ADC. Chn 32 AREF: in p tham chiu. Chn AREF c s dng khi cn dng chc nng ADC ca vi iu khin. Khi cn dng chc nng ADC, ngi dng cn t vo chn AREF mt in p, gi l in p tham chiu. Xem thm mc S dng ADC. Cc chn 1 8: c nhm chung thnh mt cng, gi l PORT B, tng chn trong Port B c k hiu PB0, PB1, , PB7 ng vi cc chn t 1 n 8. Cc chn ny c th m nhim cc chc nng khc nhau, ty vo thit lp ca ngi dng khi lp trnh. Cc chn 14 21: c nhm chung thnh mt cng, gi l PORT D, tng chn trong Port D c k hiu PD0, PD1, , PD7 ng vi cc chn t 14 n 21. Cc chn ny c th m nhim cc chc nng khc nhau, ty vo thit lp ca ngi dng khi lp trnh. Cc chn 22 29: c nhm chung thnh mt cng, gi l PORT C, tng chn trong Port C c k hiu PC0, PC1, , PC7 ng vi cc chn t 22 n 29. Cc chn ny c th m nhim cc chc nng khc nhau, ty vo thit lp ca ngi dng khi lp trnh. Cc chn 33 40: c nhm chung thnh mt cng, gi l PORT A, tng chn trong Port A c k hiu PA0, PA1, , PA7 ng vi cc chn t 1 n 8. Cc chn ny c th m nhim cc chc nng khc nhau, ty vo thit lp ca ngi dng khi lp trnh. Tm tt 1 Vi x l ATmega16: L vi x l lp trnh c. in p lm vic +5V, dng nh. C 4 port l Port A, Port B, Port C, Port D. Mi port c 8 chn, c th m nhim cc chc nng khc nhau.

5 2 Mt s phn mm, thit b h tr cho vic lp trnh AVR 2.1 Phn mm CodeVision Phn mm CodeVision l phn mm h tr lp trnh cho vi x l AVR bng ngn ng C. Cch s dng c th CodeVision c vit trong cc v d trong ti liu.

Hnh 3: Giao din CodeVision

2.2 Phn mm m phng Proteus

Hnh 4: Giao din Proteus

Proteus l phn mm m phng mch in trn my tnh, c giao din trc quan, vi cc linh kin in t c sp xp trn mn hnh v c ni dy, t cc thng s c th chy th mch in trn my tnh. Proteus c sn rt nhiu cc linh kin in t c th tm thy trn th trng, bao gm c cc vi x l AVR. Cc lnh theo ngn ng C sau khi c vit bng CodeVision c th c a vo Proteus chy vi x l AVR tng ng. Dng Proteus ta c th kim tra xem lp trnh vit trong CodeVision ng hay cha, nh vy khng cn thit phi th trn mch tht, tit kim thi gian, tin bc. Tuy nhin do l m phng trn my tnh, nn mt s phn quan trng trong mch thc (ngun in, s tng thch v cng sut gia cc phn t) khng c tnh n, dn ti mch in m phng ch c gi tr tham kho, kim tra nguyn l hot ng trc khi tin hnh lm mch tht.

6 2.3 Mch np v phn mm np Sau khi th trn Proteus, v lm mt mch in tht bn ngoi c vi x l AVR, cho vi x l AVR chy c nhng g lp trnh, phi np chng trnh cho n (gn ging nh ci phn mm cho my tnh), mun lm iu chng ta cn mch np v phn mm np. Mch np l mt mch in ni gia vi x l v my tnh, cn phm mm np c ci trn my tnh iu khin mch np. Sau khi np, chng trnh chng ta vit bng AVRStudio s c nh trong b nh ca vi x l, v vi x l s hot ng theo nh chng trnh . Tm tt 2 Lp trnh bng ngn ng C cho vi iu khin AVR bng phn mm CodeVision hoc AVRStudio. Chy m phng vi x l trn my tnh kim tra bng phn mm Proteus. Np chng trnh cho vi x l bng mch np v phn mm Khazama.

7 3 ng dng ca vi x l ATmega16 Cc chc nng c bn ca vi x l ATmega16 s c trnh by trong ti liu gm c: Chc nng I/O (In/Out). Ngt ngoi (INT INTerrupt). m thi gian (Timer/Counter). iu khin rng xung (PWM Pulse Width Module). Chuyn i ADC (Analog to Digital Converter). Truyn nhn d liu vi my tnh (USART Universal Synchronous and Asynchronous serial Receiver and Transmitter). Cn cc chc nng khc ca ATmega16 nh SPI, s khng c trnh by y. 3.1 iu khin I/O (In/Out) iu khin I/O, hay cn gi l iu khin Vo/Ra, l mt chc nng c bn nht ca vi x l. Chc nng I/O cho php ngi lp trnh gn trng thi 0 hoc 1 (ng vi mc in p 0V v +5V tng ng) cho mt hoc nhiu chn trong cc Port A, B, C hoc D. Ni cch khc, ngi lp trnh c th iu khin in p ti mt chn bt k trong s 4 port mc 0V hoc +5V. Vi chc nng In/Out, vi x l c th iu khin bt/tt trc tip hoc gin tip cc thit b ngoi nh n Led, ng c in Nu mun s dng mt chn no trong s cc port A, B, C hoc D (chng hn nh chn PB6), khi lp trnh ngi dng phi thit lp chc nng I/O cho chn PB6. Cch thit lp s c trnh by trong v d Lp trnh iu khin thit b ngoi. Tm tt 3.1 Dng chc nng I/O iu khin trng thi cc chn vi x l.

8 3.2 Ngt ngoi (Interrupt) Ngt (Interrupt) trong AVR, bao gm c ngt ngoi, l mt tn hiu khn cp gi n b x l, yu cu b x l dng cc cng vic hin ti (A) thc hin mt vic no (B). Sau khi khi kt thc B, b x l s quay v lm tip vic A ang dang d. Tn hiu khn cp c th n t bn trong vi x l (t b Timer, USART) hoc t bn ngoi (nhn mt nt bm). Ngt ngoi l loi ngt duy nht c lp vi cc thit b ca vi x l, v tn hiu ngt n t bn ngoi, v d nh khi ngi dng bm mt nt bm bn ngoi Trn Atmega16 c ba b ngt ngoi, ng vi cc chn 16 (PD2), 17 (PD3) v chn 3 (PB2), k hiu ln lt l INT0, INT1 v INT2. Hnh sau th hin mt tn hiu ngt to ra bng mt button (nt bm) ti ngt INT0.

Hnh 5: Tn hiu ngt

Vi mch in button nh hnh trn, khi cha nhn nt, in p t trn chn INT0 gn bng +5V. Khi nhn nt, chn INT0 c ni vi GND nn in p chn INT0 lc ny l 0V. Sau khi nh nt, in p chn INT0 li tr v +5V. Qu trnh in p chn INT0 gim nhanh t gn +5V xung 0V gi l Falling Edge (cnh xung), cn qu trnh in p tng t 0V ln +5V gi l Rising Edge (cnh ln). Ngi dng c th lp trnh cho ngt INT0 hot ng khi xy ra Falling Edge, Rising Edge hoc c hai. Nu chn Falling Edge, ngt xy ra khi va nhn xong nt. Nu chn Rising Edge, ngt xy ra khi nh xong nt. Nu chn c Falling Edge v Rising Edge, ngt s xy ra 2 ln khi va nhn xong nt v sau kh nh xong nt. Cch kch hot chc nng ngt ngoi INT0, INT1 hoc INT2 v cch la chn cnh xung/cnh ln c hng dn trong v d Lp trnh ngt ngoi. Ngt ngoi thng dng thc hin giao tip gia ngi v vi x l (thng qua thao tc nhn nt), hoc c th dng m s kin bn ngoi (v d nh s sn phm i qua cm bin) Tm tt 3.2 ATmega16 c 3 ngt. Ngt theo cnh xung, cnh ln hoc c hai.

9 3.3 Timer/Counter Timer/Counter, hay cn gi l b m thi gian, b nh thi c chc nng m, hoc nh ra mt khong thi gian v c m s kin. Trn mt s vi x l, timer/counter cn c thm chc nng iu chnh rng xung (PWM). Trn ATmega16 c 3 b timer/counter, gi tt l T/C0, T/C1,T/C2. Cc b T/C hot ng bng cch m s xung dao ng ca thch anh nui vi x l theo t l (Prescale) 1:1 hoc 1:8,... Thch anh, nh ni phn 1, to ra dao ng vi x l hot ng. Mi linh kin thch anh c mt tn s dao ng nht nh (v d 4 Mhz, 12Mhz). Mi chu k dao ng ng vi mt khong thi gian t nh, bng cch m cc dao ng ny, cc b T/C c th nh ra cc khong thi gian khc nhau. V d vi thch anh 1Mhz, th chu k dao ng l: 1 t = = 106 ( s) = 1( s) 6 1.10 Nu mun xc nh mt khong thi gian 1ms = 1000 s , b T/C s phi dng mt bin m m 1000 ln. Cc bin m c t tn l TCNT0, TCNT1 hoc TCNT2 ty theo b T/C0, T/C1, T/C2 tng ng. Cc bin m TCNT c lu trong vi x l bng 8 hoc 16 bit (bit l cc nh trong vi x l v ch c hai trng thi 0 hoc 1, t hp ca cc bit ny s tng ng vi gi tr ca bin TCNT theo h nh phn). Thng dng tn gi T/C 8 bit hoc T/C 16 bit chnh l ni ti s bit dng lu gi tr ca bin TCNT. V s bit b gii hn, nn kh nng m ca bin TCNT b gii hn (vi 8 bit, c th m ti a t 0 n 255), dn ti khong thi gian xc nh c nu m trc tip s dao dng ca thnh anh cng b gii hn. Gii php a ra l m theo t l (prescale) ni trn. Thay v m mi dao ng mt ln, nu m theo t l, v d 1:8, th c 8 dao ng ca thnh anh, T/C mi m mt ln, tc l gi tr TCNT tng thm 1.

Hnh 6: m theo t l 1:1 v 1:8

Nh vy vi v d trn, nh c khong thi gian 1ms, b T/C ch cn m: 1000 = 125 (ln) 8 Lc ny bin m TCNT ch phi chy, v d nh t gi tr ban u 131 ti gi tr ti a 255 ( 125 ln m). Khi bin TCNT ti gi tr 255, th s c reset v gi tr ban u m tip, ng thi xy ra ngt. Do vy tn hiu ngt ca T/C l khi bin TCNT ti gi tr cc i, v ngt c T/C to ra gi l ngt trong.

10 Cch chn t l, gi tr ban u, gi tr ti a v cc thit lp lin quan khc ca T/C s c trnh by trong v d Lp trnh Timer/Counter. Tm tt 3.3 Timer/Counter (T/C) to ngt trong theo cc qung thi gian nh trc. ATmega16 c 2 T/C 8 bit v 1 T/C 16 bit. Bin m TCNT v t l Prescale.

11 3.4 iu khin rng xung PWM 3.4.1 Khi nim rng xung hiu khi nim rng xung, ta xt mch in n gin sau y:

Hnh 7: Mch in v d rng xung

Mt ng c c mc ni tip vi mt nt bm nh hnh v. Nu ta bm nt, ng c s chy, nh nt, ng c s dng. in p gia hai u ng c c dng xung nh trn hnh 7. Nu nhn, nh nt bm theo chu k, th in p hai u ng c cng thay i theo chu k, lc ny s c khi nim Time Period v Duty Cycle. Duty Cycle l thi gian in p mc +5V, cn Time Period l chu k ca xung, bao gm Duty Cycle v thi gian in p bng 0V cn li. Nu gim Duty Cycle, th ng c chy chm li. Ngc li, nu tng Duty Cycle th ng c chy nhanh ln. Duty Cycle gim ti thiu bng 0 v tng ti a bng Time Period. iu chnh rng xung chnh l iu chnh Duty Cycle, v i khi l c Time Period. 3.4.2 To PWM bng ATmega16 V iu chnh rng xung l iu chnh thi gian Time Period v thi gian Duty Cycle, v vy c th dng T/C to PWM. Vi x l ATmega16 c th to cng lc 4 tn hiu PWM, gi l 4 knh PWM ti cc chn nh hnh sau:

Hnh 8: V tr cc chn c th dng to tn hiu PWM

Trong PWM0 do T/C0 to ra, PWM1A v PWM1B d T/C1 to ra, PWM2 do T/C2 to ra. Mun to PWM no th ta cn phi thit lp T/C tng ng.

12 d hiu hy ly v d mun to tn hiu PWM ti chn PD4 (PWM1B), ta phi dng T/C1 v thit lp cho T/C1 ch to PWM. T/C1 l timer/counter 16 bit, do bin TCNT1 c th m ti gi tr MAX l 65535. tng y l bin TCNT1 chy t 0 ti gi tr OCR1B, sau chy tip ti gi tr ICR1. Trong OCR1B l mt gi tr do ngi dng t trc ng vi khong thi gian Duty Cycle. Gi tr ICR1 cng l mt gi tr do ngi dng t trc nhng ng vi Time Period. Nh vy khi bin TCNT1 chy t 0 qua OCR1B ti ICR1, in p trn chn OC1B s thay i theo Duty Cycle v Time Period tng ng. T/C1 c 3 ch hot ng to PWM l: Fast PWM (PWM tn s cao). Phase correct PWM (PWM vi pha chnh xc). Phase correct and frequency correct PWM (PWM vi pha v tn s chnh xc). Ba ch trn khc nhau cch tnh Duty Cycle v sai s iu khin. Trong ti liu ny s gii thiu hai ch thng dng nht l Fast PWM. Fast PWM: Hot ng ca T/C1 ch to Fast PWM c th c biu din qua th di:

Hnh 9: Ch Fast PWM

Max l gi tr cc i m bin TCNT1 c th m c, vi T/C1 l Timer/Counter 16 bit nn Max = 65535. Khi thit lp cc gi tr cho OCR1B v ICR1 khng c vt qu gi tr Max ny. ch Fast PWM bin TCNT1 m xung thch anh theo t l Prescale nh trc, chy t 0 ti OCR1B, lc ny in p trn chn OC1B l +5V. Khi TCNT1 chy t OCR1B ti ICR1, in p chn OC1B l 0V. ng thi khi TCNT1 chm mc ICR1, bin TCNT1 c reset v 0 tip tc m cho chu k tip theo. Nh vy thi gian bin TCNT1 chy t 0 ti OCR1B ng vi Duty Cycle, thi gian bin TCNT1 chy t 0 ti ICR1 ng vi Time Period.

13 Chng hn mun to mt xung PWM c Time Period l 2ms, Duty Cycle l 1 ms vi thch anh 4 Mhz, t l Prescale = 8, ta c: Mi dao ng thch anh ng vi khong thi gian l: 1 = = 0, 25.106 ( s ) = 0, 25.10 3 (ms) 6 4.10 Mi ln m ca bin TCNT1 ng vi khong thi gian l:

= 8. = 8.0, 25.103 = 2.103 (ms) Suy ra to c Time Period (chu k) ca PWM l 2 ms, ta phi cho bin TCNT1 m 1000 ln, t 0 ti 1000, tc l gi tr ICR1 = 1000. Tng t, to c Duty Cycle ca PWM l 1 ms, th gi tr OCR1B = 500. Thng thng khi lp trnh, ngi ta c nh gi tr ICR1 ngay t u (Time Period c nh), cn gi tr OCR1B c thay i khi vi x l hot ng, nhm to ra PWM c Duty Cycle thay i. Cch kch hot ch Fast PWM, chn cc gi tr OCR1B, ICR1 v cc thng s khc s c trnh by trong v d iu khin rng xung PWM. Tm tt 3.4 PWM to ra do b T/C, ATmega16 c 4 knh PWM (ti chn OC0; OC1A; OC1B; OC2). PWM dng iu chnh tc ng c, ng c bc v ng c servo. To PWM nh bin TCNT v cc gi tr OCR v ICR. iu chnh rng xung bng cch iu chnh gi tr OCR.

14 3.5 Chuyn i ADC Trong cc ng dng o lng v iu khin bng vi x l, b chuyn i tng t-s (ADC) l mt thnh phn rt quan trng. Cc i lng vt l nh nhit , p sut, dng in, u c th dng cm bin v cc mch x l chuyn v dng tn hiu in p. Trn vi x l ATmega16, c th o 8 in p khc nhau t trn cc 8 chn thuc PORT A, gi l 8 knh ADC, c k hiu l ADC0, , ADC7. in p cp cho b chuyn i ADC l +5V v c cp qua chn AVCC.

Hnh 10: 8 knh ADC ca ATmega16

in p t ti mt trong s cc knh ADC, v d ADC0, s c b chuyn i ADC ca ATmega16 o v tr li mt gi tr tng ng. hiu r hn v hot ng ca ADC ta cn hiu mt s khi nim sau: in p tham chiu - Vref: L gi tr ln nht m b ADC c th o c. Trong o c truyn thng, vi cc thit b o, chng ta cng gp khi nim gi tr ln nht m thit b c th o c. V d nh mt ng h o p sut c th o c ti a 70 bar, c ngha l ng h ny ch dng o p sut nh hn 70 bar. Vi ADC trn ATmega16, Vref (in p tham chiu) c ngi lp trnh t trc khi kch hot chc nng ADC. C 3 cch chn in p tham chiu nh sau: Chn in p so snh bng in p trn chn VREF. Chn in p so snh bng +5V, ni chn VREF vi chn AVCC. Chn in p tham chiu ni Vref = 2,56 V. in p tham chiu ni ny c to ra bn trong vi x l, ngi dng khng cn cp in p qua chn VREF. phn gii: Cho bit mc chnh xc ca php o bng chuyn i ADC, cng l s bit dng cha gi tr u ra ca b chuyn i ADC. Chuyn i ADC trn ATmega16 l b ADC 10 bit, gi tr b ADC tr v sau khi o c gi tr t 0 n 1023, ng vi 1023 khong chia. Hot ng ca ADC c th gii thch n gin nh sau, u tin vi x l chia nh in p tham chiu Vref lm 1023 khong, sau so snh gi tr in p t ti chn u vo ADC xem in p cn o nm khong bao nhiu. Gi tr ADC o c chnh l s th t ca khong in p tng ng.

Hnh 11: Hot ng ca ADC

15 Nh hnh trn, Vref c chia lm 1023 khong, t 0 n 1023. in p cn o Vin t vo chn ADC0, sau khi o, b ADC s tr v gi tr i, l khong in p ng vi Vin. Nh vy gi tr in p Vin cn o l: i Vin = Vref 1023 Vi phn gii khng i, ta thy nu cng gim Vref th cc khong in p cng thu nh, tc l ta o c in p Vin cng chnh xc. Tuy nhin Vref khng c nh hn gi tr ln nht ca Vin. Cc cch kch hot b chuyn i ADC, chn knh o, in p tham chiu v o bng ADC s c trnh by trong v d Chuyn i ADC. Tm tt 3.5 Dng ADC o in p ti cc knh ADC. ATmega16 c 8 knh ADC vi phn gii 10 bit. Chn Vref khng qu ln php o c chnh xc. in p cn o: =

16 3.6 Giao tip USART USART c trnh by trong ti liu ny l mt chun truyn thng ni tip khng ng b gia cc thit b digital. Chc nng USART trn vi x l ATmega16 l mt trong s cc chc nng vi x l dng truyn/nhn d liu vi cc thit b khc (my tnh, vi x l khc). 3.6.1 Cc thut ng c dng trong giao tip USART Truyn thng ni tip khng ng b: Trong nhiu bi ton cn s dng vi x l v my tnh kt ni vi nhau. Trong qu trnh lm vic vi x l cn trao i d liu vi my tnh, v d nh vi x l gi gi tr o c bng ADC v my tnh v my tnh gi tn hiu iu khin xung vi x l Gi s d liu cn trao i l cc m c chiu di 8 bit, cch n gin nht l kt ni 1 PORT (8 bit) ca vi iu khin vi my tnh, mi dy ni s chu trch nhim truyn/nhn 1 bit d liu. y gi l cch giao tip song song, cch ny l cch n gin nht, nhng nhc im ca cch truyn ny l s ng truyn qu nhiu, gi tr cng ln th s ng truyn cng s nhiu thm. Trong truyn thng ni tip d liu c truyn tng bit trn 1 (hoc mt t) ng truyn, v th tit kim ng truyn d liu. Hnh sau m t s so snh gia 2 cch truyn song song v ni tip trong vic truyn con s 187 thp phn (tc 10111011 nh phn).

Hnh 12: Phng php truyn song song (a) v ni tip (b)

V d liu cn c chia nh thnh tng bit khi truyn/nhn, tc truyn ni tip s b gim. Mt khc, m bo tnh chnh xc ca d liu, b truyn v b nhn cn c nhng tha hip hay nhng tiu chun nht nh. Khi nim ng b ch s bo trc trong qu trnh truyn. Ly v d thit b 1 (tb1) kt vi vi thit b 2 (tb2) bi 2 ng, mt ng d liu v 1 ng xung nhp. C mi ln tb1 mun gi 1 bit d liu, tb1 iu khin ng xung nhp chuyn t mc thp ln mc cao bo cho tb2 sn sng nhn mt bit. Bng cch bo trc ny tt c cc bit d liu c th truyn/nhn d dng vi t ri ro trong qu trnh truyn. Tuy nhin, cch truyn ny i hi t nht 2 ng truyn cho 1 qu trnh (gi hoc nhn d liu). Khc vi cch truyn ng b, truyn thng khng ng b ch cn mt ng truyn cho mt qu trnh. Khung d liu c chun ha bi cc thit b nn khng cn ng xung nhp bo trc d liu n. V d 2 thit b ang giao tip vi nhau theo phng php ny, chng c tha thun vi nhau rng c 1ms th s c 1 bit d liu truyn n, nh th thit b nhn ch cn kim tra v c ng truyn mi mili-giy c cc bit d liu v sau kt hp chng li thnh d liu c ngha. Truyn thng ni tip khng ng b v th hiu qu hn truyn thng ng b (khng cn nhiu ng truyn). Tuy nhin, qu trnh truyn thnh cng th vic tun th cc tiu chun truyn l ht sc quan trng. Baud rate (tc Baud): nh trong v d trn v vic truyn 1 bit trong 1ms, bn thy rng vic truyn v nhn khng ng b xy ra thnh cng th cc thit b tham gia phi thng nht nhau v khong thi dnh cho 1 bit truyn, hay ni cch khc tc truyn phi

17 c ci t nh nhau trc, tc ny gi l tc Baud. Theo nh ngha, tc baud l s bit truyn trong 1 giy. V d nu tc baud c t l 19200 th thi gian dnh cho 1 bit truyn l 1/19200 ~ 52.083us. Frame (khung truyn): Khung truyn bao gm cc quy nh v s bit trong mi ln truyn, cc bit bo nh bit Start v bit Stop, cc bit kim tra nh Parity, ngoi ra s lng cc bit trong mt data cng c quy nh bi khung truyn. Hnh di l mt v d ca mt khung truyn theo UART, khung truyn ny c bt u bng mt start bit, tip theo l 8 bit data, sau l 1 bit parity dng kim tra d liu v cui cng l 1 bits stop.

Hnh 13: Khung truyn theo USART

Start: start l bit u tin c truyn trong mt frame truyn, bit ny c chc nng bo cho thit b nhn bit rng c mt gi d liu sp c truyn ti. Start l bit bt buc phi c trong khung truyn. Data: data hay d liu cn truyn l thng tin chnh m chng ta cn gi v nhn. Thng data gm 8 bit. Parity bit: parity l bit dng kim tra d liu truyn ng khng (mt cch tng i). Parity bit khng phi l bit bt buc v v th chng ta c th loi bit ny khi khung truyn (cc v d trong ti liu ny khng dng bit parity). Stop bits: stop bits l mt hoc cc bit bo cho thit b nhn rng mt gi d liu c gi xong. Stop bits l cc bits bt buc xut hin trong khung truyn. 3.6.2 Giao tip USART trn ATmega16 Vi iu khin Atmega16 c 1 module truyn thng ni tip USART. Vi ch truyn ni tip khng ng b (c th trong ti liu ny l giao tip vi my tnh), chng ta s dng 2 chn ca Atmega16 phc v cho truyn nhn d liu l: chn truyn d liu TxD (Transmitted Data) v chn nhn d liu RxD (Reveived Data).

Hnh 14: Hai chn RXD v TXD dng trong giao tip vi my tnh

M-un USART trn chip Atmega16 hot ng theo ch qu trnh truyn v nhn d liu c th xy ra ng thi. Khi s dng USART giao tip vi my tnh, phi thit lp cc thng s hot ng vi x l v trn my tnh ging nhau, bao gm:

18 Baud rate: Baud rate cng cao, tc truyn cng nhanh, tuy nhin xc sut xy ra li trong qu trnh truyn/nhn cng ln hn. Thng chn Baud rate = 9600 vi cc ng dng khng i hi tc cao. Frame: Khung truyn bao gm start bit, data, parity bit v stop bit, trong start bit l c nh v khng thay i. V d trong ti liu ny s ly khung truyn c 8 bit data, khng dng parity bit v 1 bit stop. USART ca ATmega16 cng c tnh nng ngt. Ngt ca USART xy ra khi hon tt gi xong mt d liu, hoc nhn xong mt d liu. Tnh nng ngt khi nhn xong mt d liu s c dng trong ng dng truyn d liu t vi x l v my tnh. Cch kch hot m-un USART, thit lp cc thng s Baud rate, Frame v cch s dng USART s c trnh by trong v d Giao tip USART. Tm tt 3.6 Kt ni vi my tnh dng chc nng USART. Baud rate = 9600; khung truyn c 8 bit data, 1 bit stop, khng dng parity. Ngt khi truyn/nhn d liu hon tt.

19 4 Cc bi tp v d Tt c cc mch in s dng vi x l lp trnh c u c thit k theo trnh t: Phn tch mch: Yu cu, c im lm vic, Xy dng nguyn l iu khin. V mch m phng. Lp trnh cho vi x l. Kim tra lp trnh trn mch m phng, sa li lp trnh hoc mch nguyn l nu pht hin li. Lm mch tht. Kim tra li trn mch tht v tin hnh sa hoc lm li mch nu cn thit. Cc bi tp v d trong ti liu ny s hng dn ngi c chy m phng trn phn mm Proteus. Phn chy th trn mch tht c thc hin trn mch c lm sn, s c s nguyn l v s i dy km theo. 4.1 Lp trnh iu khin thit b ngoi (Led, ng c) y l v d u tin v n gin nht trong cc v d ng dng vi x l, v vy s c vit k tng bc v gii thch tht n gin. Bi v d Lp trnh iu khin thit b ngoi ang ni ti thc ra l iu khin ngngt cc thit b ngoi (n Led, ng c) thay cho cng-tc in, v l dng iu khin n gin nht trong cc ng dng ca vi iu khin. Mch in trong v d ny s lm vic nh sau: iu khin n Led sng/tt theo chu k 0,5 giy. 4.1.1 Phn tch mch in Vi bt c mt d n (Project) thit k mch in no, cng vic u tin cng u l phn tch mch in cn thit k. Da vo yu cu v c im lm vic, chng ta c th xy dng c nguyn l lm vic ca cc khi c bn ca mch (khi iu khin, khi cng sut) v lp trnh cho vi x l. Vi v d iu khin Led nh trn, yu cu v c im lm vic nh sau: Led sng ri tt theo chu k 0,5 giy. Gia cc ln sng/tt ca Led, khng iu khin thm thit b no khc. Led c cng sut b (c 0,1 W). 4.1.2 Xy dng nguyn l iu khin Nh phn 1 ni, ngi dng c th lp trnh iu khin in p ti mt hay mt s chn ca vi iu khin. C hai mc in p l 0V v +5V, v c gn vi trng thi 0 v 1 tng ng. V d chn s 6 (PB5) ca vi iu khin trng thi 1, tc l ti chn c in p +5V, cn nu trng thi 0, tc l ti chn c in p bng 0 (ni t GND). tng a ra l ta c th dng in p ny chy mt thit b no ni trc tip vi chn ca vi iu khin. Tuy nhin vi in p +5V, ng thi dng in cho php nh (vi chc mA), nn ta ch c th ni trc tip vo vi iu khin nhng thit b c cng sut rt nh, v d nh: n LED.

20

Hnh 15: Ni trc tip vi x l vi thit b c cng sut nh

Thc t, c th iu khin nhng thit b c cng sut ln hn (hoc lm cho Led sng hn), ngi ta khng ni trc tip vi iu khin vi thit b, m qua mt mch cng sut. C th hiu mch cng sut nh mt r-le trong mch in dn dng.

Hnh 16: S dng in th 5V cng sut nh iu khin Mo-t 12V cng sut ln

C nhiu linh kin in t c th thay th cho mt r-le, in hnh l cc transistor. Hnh sau th hin nguyn l hot ng ca mch:

Hnh 17: Vi x l iu khin ng/m transistor iu khin ti

Mt mch tng t nh mch transistor trnh by trn c gi l mch cng sut, cn khi vi x l c gi l mch iu khin. Bnh thng khi chn 6 ca vi iu khin (ni vi chn B ca transistor) trng thi 0 (0V), th transistor ng, tc l E v C khng thng nhau. Khi vi iu khin chuyn trng thi chn 6 sang 1 (+5V), transistor m, tc l dng in t ngun c th chy t E sang C, qua ti ri v m. Nh vy thay i trng thi chn 6 s iu khin bt/tt c Led.

21 4.1.3 M phng trn Proteus M phng trn Proteus tc l xy dng mch nguyn l v chy th nghim trn my tnh bng phn mm Proteus. Trnh t tin hnh m phng mch nguyn l ng/m transistor bng Proteus nh sau:

Hnh 18: M th vin Proteus

M phn mm Proteus, click vo cc biu tng 1 v 2 chn lnh kin. Sau khi click vo 2, mt ca s mi s hin ra, cho php chn linh kin.

Hnh 19: Th vin Proteus

G tn linh kin vo Keywords, v d mega16, cc linh kin tm c s hin bn Result, click chut chn linh kin ATMEGA16 nh trn hnh 2. G tip npn tm linh kin transistor loi PNP, g led tm linh kin LED. Sau sp xp v ni dy cho cc linh kin nh trong hnh 3.

22

Hnh 20: Mch m phng v d iu khin thit b ngoi

4.1.4 Lp trnh cho vi x l Lp trnh chi vi x l AVR, cng nh vi cc vi x l khc, nn tin hnh theo cc bc nh sau, to thun li trong vic xy dng thut ton, kim tra v sa li lp trnh. Xc nh yu cu lm vic ca vi x l. Xy dng thut ton iu khin. Chun b lp trnh v vit chng trnh iu khin. Kim tra v sa li. a) Xc nh yu cu lm vic ca vi x l Trong v d ny, vi x l ch cn iu khin trng thi ca chn s 6 ca vi x l (c k hiu PB5/MOSI trn Proteus) thay i gi mc 0 (0V) v 1 (+5V) theo chu k 0,5 giy. b) Xy dng thut ton iu khin. Thut ton iu khin trong bi v d ny kh n gin, theo s sau:

Hnh 21: S thut ton iu khin vi x l

S c gii thch nh sau: Khi c cp in, vi x l chun b cho bc Bt u, bao gm thit lp chn PB5 (ng vi chn s 6 ca vi x l) l chn iu khin, c trng thi ban u l 0 (Led tt). Sau vi x l lm vic theo chiu cc mi tn. u tin l t trng thi chn PB5 = 1 Led sng. i 0,5 s. t trng thi PB5 = 0 Led tt. i 0,5 s. Quay li bc th 2 (PB5 = 1). . Vic vi x l lp i lp li cc bc nh trn c gi l lp. C nhiu cch to vng lp v iu khin vng lp, s c trnh by trong cc v d.

23 c) Chun b lp trnh bng phn mm CodeVision. M phn mm CodeVision, nhn Ctrl+N to Project (d n) mi, trong hp thoi Create New File chn Project ri nhn OK Yes.

Hnh 22: To project mi

Hnh 23: S dng CodeWizardAVR

Hp thoi CodeWizardAVR hin ra, chn tn chip l ATmega16, v chn tn s hot ng ca chip (v d 4000000 Hz = 4Mhz).

Hnh 24: Chn vi x l v tn s hot ng

Hp thoi CodeWizardAVR cn c nhiu mc khc, ng vi cc chc nng ca vi x l nh USART, ADC, External IRQ (ngt) ni trong phn gii thiu. Nhng nu ch cn iu khin trng thi cc chn ca vi x l, ta ch cn vo mc Ports quy nh chc nng vo/ra ca chn vi x l.

24

Hnh 25: Thit lp cc Port

Trn Proteus chng ta mun dng chn s 6 ca vi x l, c k hiu PB5, tc l chn ng vi Bit 5 ca Port B, v vy chng ta set Bit 5 thnh Out nh trn hnh. Sau khi thit lp ban u cho Atmega16 xong, click File Generate, Save and Exit.

Hnh 26: To v lu project

Sau s c 3 hp thoi hin ra lu cc file cn thit. t tn v lu cc file vo cng mt th mc nh trong hnh.

25

Hnh 27: Chn th mc lu project

Sau khi lu xong ta s thy mt vit cc lnh lp trnh theo ngn ng C. Cc dng lnh chng ta vit s c lu trong file bai1.c.

Hnh 28: Ni vit cc dng lnh

d) Vit chng trnh iu khin. Khi mi to ra file bai1.c c ghi rt nhiu dng lnh, do phn mm t to ra theo cc thit lp phn CodeWizardAVR chng ta va lm. Tuy nhin vi bi ny, chng ta ch cn theo tc mt vi v tr trong file bai1.c. Trnh t tin hnh c trnh by nh sau: Include cc file header: Vit thm dng lnh #include <delay.h> vo v tr nh trong hnh di. File delay.h l mt file c sn ca phn mm Codevision, dng khi mun delay (tr hon, tm dng) qu trnh lm vic ca vi x l trong mt khong thi gian nh trc, trong v d ta dng tm dng 0,5 s.

26

Hnh 29: Include cc file *.h cn thit

CodeVision c nhiu file *.h khc nhau (h l vit tt ca header), mi file *.h c to sn cho cc ng dng ca vi x l. Tn mt s file *.h v chc nng ca cc file c cho nh bng. Tn file Chc nng lin quan delay.h Tm dng vi x l. stdio.h Giao tip vi my tnh. LCD.h Ghi cc k t ra LCD Mt s file *.h v chc nng lin quan. Khi mun s dng tnh nng no c lin quan, th ta thm dng lnh #include <*.h> vo v tr ni trn. Vng lp while chnh: Trong file bai1.c va to ra cng c sn mt vng lp while lin tc (vng lp while chnh), y l ni vit cc dng lnh (code) cho bi tp iu khin thit b ngoi.

Hnh 30: Vng lp while lin tc c to sn

Cc dng ch sau k hiu // ch c ngha ch thch, khng nh hng ti lp trnh. Vng lp while c c php: while (x) { Cc dng lnh } Trong x gi bin logic (ch nhn gi tr ng hoc sai tng ng vi 1 hoc 0), vng lp while c ngha l chng no bin x c gi tr ng, vi x l s thc hin lp i lp li cc dng lnh vit trong vng lp.

27 Nh trn hnh ta thy while (1), c ngha l x lun bng 1, v vng lp ny xy ra mi trong sut qu trnh hot ng c vi x l. Nhc li thut ton iu khin n gin c trnh by trn:

Hnh 31: Thut ton iu khin n gin cho v d

Qu trnh lp i lp li cc bc trn hnh c th c thc hin bng mt vng lp while, y ta dng vng lp while m phn mm Code vision to sn. Nh vy c th hnh dung cc lnh trong vng lp while chnh nh sau: while (1) { a trng thi chn PB5 = 1 (bt Led); i 0,5 s; a trng thi chn PB5 = 0 (tt Led); i 0,5 s; } Cc lnh trong vng lp while: c th ha cc bc trong vng lp while trn, ta phi vit cc bc thnh cc lnh (code) theo ngn nga lp trnh. - a trng thi (set trng thi) chn PB5 v 1 hoc 0: Vi phn mm CodeVision, c th set trng thi cho cc chn bng lnh: PORTx.y = z; Trong : x l tn PORT tng ng, v d chn PB5 th x l B. Y l th t chn (t 0 n 7), v chn PB5 th y l 5. Z l trng thi mun set, v d 0 hoc 1. Nh vy set trng thi chn PB5 ln 1, ta dng lnh: PORTB.5 = 1; Cn mun st trng thi chn PB5 xung 0, ta dng lnh PORTB.5 = 0; - i 0,5 s: i (tm dng chng trnh) trong mt khong thi gian (tnh bng ms hoc s), ta phi include file delay.h v dng lnh sau: Tnh bng ms: delay_ms(x); Tnh bng s: delay_us(x); Trong x l s ms hoc s tng ng ta mun chng trnh i. Trong v d ta mun dng chng trnh trong khong thi gian l 0,5 s = 500 ms = 500 000 s, th dng lnh sau: delay_ms(500); hoc delay_us(500000); Nh vy cu trc v cc lnh trong vng lp while cho v d s l:

28 while (1) { PORTB.5 = 1; delay_ms(500); PORTB.5 = 0; delay_ms(500); }

Hnh 32: on code trong vng lp while

e) Kim tra li c php v complie. Sau khi vit ht cc code, nhn CTRL+F9 tin hnh complie (bin dch t ngn ng C sang ngn ng my), phn mm CodeVision s tin hnh kim tra cc li c php, cng nh cc th tc khc c vit trong file bai1.c. Nu khng c sai st, phn mm s to ra file bai1.hex lu trong th mc /bai1/exe/. File ny s dng chy m phng trn Proteus v np cho vi x l khi lm mch tht. Nu c li c php hoc cc th tc khc trong qu trnh lp trnh, CodeVision s thng bo c li v c ghi ch li ngi lp trnh c th tm ra v sa li.

Hnh 33: V d v li thiu du ; cu lnh

Ch dn bo li tm thy sau khi check n dng 120, v li thc s th nm dng 119 Qu trnh kim tra v sa li c php lp i lp li ti khi CodeVision thng bo khng cn li v to file *.hex thnh cng.

29 4.1.5 Chy th trn mch m phng Sau khi lp trnh v c c file bai1.hex, ta tin hnh chy th trn mch m phng. Tr li mch m phng bng phn mm Proteus:

Hnh 34: Mch nguyn l xy dng trn Proteus ca v d

Click p vo biu tng vi x l ATmega16 trn mch m phng, hp thoi Edit Component ca ATmega 16 s m ra:

Hnh 35: Hp thoi Edit Component

Trong hp thoi Edit Component, Program File, click chn ng dn ti file bai1.hex va to ra bng phn mm CodeVision. CKSEL Fuses, chn tn s cho thch anh l 4Mhz. Sau khi thit lp xong, nhn nt Start gc di bn tri mn hnh chy mch m phng, nu cc bc trn lm chnh xc, th kt qu trn mn hnh s thy n Led sng nhp nhy theo chu k 0,5s. Nu mun dng m phng, nhn nt Stop.

30

Hnh 36: Nt Start v Stop

Quan st trn mn hnh, s thy mu ca chn PB5 nhp nhy xanh theo chu k 0,5s. Mu ng vi mc in p +5V, mu xanh ng vi mc in p 0v. Khi chn PB5 mu th Led sng, khi chn PB5 mu xanh th n tt ng nh nguyn l iu khin trnh by. Nh vy sau bi tp iu khin thit b ngoi, ngi c c th t m rng thm, v d nh nhy nhanh ri nhy chm theo chu k, iu khin 2 hay nhiu n Led cng lc v cho chng phi hp sng/tt vi nhau theo mun, hin th trn led 7 thanh, iu khin bt/tt ng c... Tm tt 4.1 iu khin thit b ngoi qua mch cng sut. Cc theo tc trn cc phn mm Proteus v CodeVision. Khi nim delay, lp Cc file header, set trng thi cc chn ca vi x l. Cu hi m rng: iu khin nhiu led bng nhiu chn ca vi iu khin. Hin th s trn led 7 thanh (cu to v nguyn l hot ng ca led 7 thanh xem phn ph lc).

31 4.2 Lp trnh ngt ngoi (INT) Ngt ngoi l mt tnh nng ca vi x l ATmega16 cho php vi x l giao tip vi ngi dng (qua thao tc bm nt) hoc nhn bit s kin bn ngoi (m s kin). Bi v d lp trnh ngt ngoi s trnh by trong ti liu ny nh sau: iu khin tc nhp nhy ca n led (0,5s hoc 2s) qua thao tc nhn nt iu khin. 4.2.1 Phn tch mch in Ban u khi cp in, vi x l iu khin sng/tt n led theo chu k 0,5s. Khi ngi dng nhn nt iu khin, chu k sng/tt n led c iu chnh thnh 2s. Khi ngi dng nhn nt iu khin ln na, chu k sng/tt n led li c iu chnh v 0,5s. Nh vy ta thy v c bn, phn lp trnh iu khin sng/tt led tng t nh v d iu khin thit b ngoi, ch khc ch chu k sng/tt (trong hm delay_ms()) c thay i theo tc ng bm nt ca ngi dng nh tnh nng ngt ngoi. 4.2.2 Nguyn l iu khin v xy dng mch m phng trn Proteus Nguyn l iu khin ging nh trong bi v d iu khin thit b ngoi. Mch m phng trn Proteus cng tng t v d iu khin thit b ngoi, tr vic c thm mt nt bm a vo chn PD2/INT0 iu khin ngt INT0.

Hnh 37: Mch m phng v d Lp trnh s dng ngt

32 4.2.3 Lp trnh cho vi x l a) Xc nh yu cu lm vic ca vi x l Vi x l iu khin bt/tt n Led theo chu k 0,5s v 2s theo tc ng bm nt ca ngi dng. b) Xy dng thut ton iu khin Thut ton cho v d c th hin trn s sau:

Hnh 38: S thut ton v d Lp trnh s dng ngt ngoi tng ca thut ton ny nh sau Chu k nhy c t bng mt bin x, trong chng trnh, x hoc c gi tr 500 (0,5s) hoc 2000 (2s). Khi ngt ngoi c kch hot, chng trnh ngt gn gi tr x = 2000 (nu gi tr hin thi ca x = 500), hoc gn gi tr x = 500 (nu gi tr hin thi ca x = 2000). Chng trnh chnh s thc hin iu khin nhy led vi chu k x. Nh vy khi ngi dng nhn nt, s kch hot ngt ngoi, i gi tr bin x, n led s c iu khin nhp nhy theo gi tr bin x tng ng. c) Chun b lp trnh bng phn mm CodeVision. Cc bc chn vi x l, tn s thch anh, chc nng I/O cho chn PB5 c thc hin ging nh v d iu khin thit b ngoi. kch hot tnh nng INT0, trong ca s CodeWizardAVR, chn th External IRQ (ngt ngoi) v thit lp nh hnh sau.

Hnh 39: Kch hot INT0

Trong Mode, click chn Falling Edge chn ch kch hot ngt cnh ln. d) Vit chng trnh iu khin. Trong v d ny c s dng bin x c trng cho ch lm vic ca mch. Bin l mt khi nim trong lp trnh, ch cc gi tr s, gi tr logic, chui k t, matrn Bin c th c gi tr khng i hoc thay i trong lp trnh ty thuc vo cch s dng.

33 Mi kiu bin c c trng khc nhau ( ch gi tr s, gi tr logic), mun s dng bin trong lp trnh cn phi c bc khai bo. Bao gm khai bo tn bin (x, y, bien1, bien2,) v kiu d liu(char, str, ). Cc kiu v thuc tnh ca kiu d liu c cho trong bn phn ph lc. Trong v d ny ta khai bo bin x l bin kiu int (gi tr s nguyn t -32768 ~ +32767). Include thm file header sau: delay.h. Khai bo bin bng dng lnh: char x=500; y chng ta gn cho x gi tr x=500 ngay t u, khi cp in, n led nhp nhy ngay vi chu k 0,5s.

Hnh 40: Khai bo bin v ni vit chng trnh ngt

Vit chng trnh phc v ngt ngoi: Trnh phc v ngt ngoi c vit ti v tr nh trong hnh trn. Cu trc chng trnh ngt c th c hnh dung nh sau: interrupt [EXT_INT0] void ext_int0_isr(void) { Nu x=500, gn gi tr x=2000; Nu x khng bng 500, gn gi tr x=500; } Php so snh iu kin nu trn trong lp trnh c gi l php so snh if, cu trc ca lnh if nh sau: if (biu thc so snh) { Cc dng lnh A; } else { Cc dng lnh B; } Trong biu thc so snh l mt biu thc logic, gi tr tr v l 0 hoc 1. V d khi mun so snh gi tr ca x (c gi tr hin thi l 2000) xem c bng 500 hay khng, ta vit: x == 500; K hiu hai du bng == l k hiu ca php so snh, nh dng lnh trn, gi tr tr v s bng 0, v gi tr hin thi ca x l 2000 khc 500 x == 500 = 0; Nu biu thc so snh tr v gi tr 1, cc dng lnh a s c thc hin, nu gi tr biu thc so snh tr v bng khng, cc dng lnh B s c thc hin.

34 Nh vy on code ca chng trnh ngt nh sau: if (x==500) { x=2000; } else { x=500; } Lc ny ton b code c vit nh sau:

Hnh 41: Code chng trnh ngt

Chng trnh trong vng lp while chnh tng t nh trong v d iu khin thit b ngoi, ch khc ch gi tr 500 ms chu k nhy c thay bng bin x.

Hnh 42: on code trong vng lp while chnh

Sau khi vit code, kim tra, sa li v complie thnh cng, dng mch m mng va to trn phn mm Proteus chy m phng. Tm tt Cch hot ng ca ngt ngoi. Bin v kiu d liu ca bin. So snh if. Cu hi m rng iu khin led 7 thanh hin cc s t tng t 0 n 9 theo thao tc nhn nt ca ngi dng.

35 4.3 Lp trnh Timer/Counter Cc b T/C trn ATmega16 c th m nhim cc vai tr khc nhau vi cch thc hot ng v thit lp khc nhau, nn cu trc v cch s dng tng i phc tp. V vy v d cho lp trnh T/C c trnh by sau y l chc nng n gin nht ca b T/C, chc nng nh thi. ng thi, v d cng n gin hn vi ngi c, hot ng ca mch trong v d ny ging nh hot ng ca mch bi v d Lp trnh ngt ngoi INT. bi: Dng b T/C iu khin bt/tt n led theo chu k 0,5s hoc 2s theo tc ng ca ngi dng. 4.3.1 Phn tch, xy dng nguyn l iu khin v mch m phng Do yu cu hot ng ca mch ging vi mch v d Lp trnh ngt ngoi INT, nn cc bc phn tch mch, xy dng nguyn l iu khin v mch m phng trn Proteus c tin hnh ging nh trong v d Lp trnh ngt ngoi. 4.3.2 Lp trnh cho vi x l a) Xc nh yu cu lm vic ca vi x l Vi x l iu khin thay i mc trng thi 0 v 1 ca chn PB5 theo chu k 0,5s hoc 2s theo tc ng ngoi. Chu k thay i c to ra nh b T/C. b) Xy dng thut ton iu khin Ngi c sau khi c phn gii thiu ch nng IN/OUT, ngt ngoi, T/C v lm v d Lp trnh ngt ngoi s thy rng vi bi tp ny ch cn dng hm delay_ms() n gin to chu k thay i trng thi chn iu khin (PB5). Tuy nhin chc nng nh thi ca b T/C khc vi hm delay_ms() ch T/C to khong thi gian theo cc ngt trong, cn hm delay_ms() to cc khong thi gian bng cch dng chng trnh chnh trong vng lp while chnh. Vi cc bi ton s dng nhiu chc nng ca vi x l hn, tnh dng chng trnh ca hm delay_ms() c th nh hng xu v lm sai lch hot ng ca vi x l so vi lp trnh ban u. d hiu, ta ly v d so snh hot ng ca vi x l vi mt trng hp ngoi thc t hay gp trong gia nh nh sau:
C hai m con, m i lm, con nh hc bi. Ti 10h m gi in dn con n 10h30 nu cm (nu cm sau 30). - Vic hc bi ca con ng vi chng trnh c vit trong vng lp while chnh. Vic m gi in dn nu cm ng vi ngt ngoi. - Khong thi gian t 10h ti 10h30 ng vi khong thi gian xc nh nh hm delay hoc T/C.

Hnh 43:V d so snh hot ng ca vi x l

36
a con c 2 cch thc hin vic m dn nh sau: - ng ti ni cm m khng lm bt c hnh ng no khc trong vng 30, sau mi nu cm, ri quay li hc tip. Cch ny ng vi hm delay, v hm delay dng chng trnh trong vng lp while chnh, tc l vic hc ca a con. - Tip tc hc v hn ng h 30, khi ng h bo, a con mi i nu cm, sau khi nu xong th quay li hc tip. Cch ny ng vi phng php dng T/C, vic ng h bo 30 ng vi ngt xy ra trong b T/C.

Hnh 44: Hot ng ca a con ng vi hm delay v T/C

Nh vy c th thy nu dng T/C, th chng trnh trong vng lp while chnh vn c tip tc thc hin khi vi x l ang m khong thi gian. iu ny rt quan trng khi lp trnh s dng cng lc nhiu chc nng khc nhau ca vi x l, v vic xc nh khong thi gian khng lm gin on ti cc tin trnh hot ng khc. Sau khi hiu s khc nhau c bn gia vic nh thi gian bng T/C v hm delay, chng ta i xy dng thut ton iu khin. Nh trong phn gii thiu chc nng T/C ca ATmega16, b T/C1, thay i qung thi gian xy ra ngt ca b T/C1, chng ta cn thay i gi tr ban u ca bin TCNT1 ng vi cc khong thi gian 0,5s v 2s. Kt hp vi cc v d trn, ta c th a ra s lm vic ca b Int0 v T/C1 nh sau:

Hnh 45: S lm vic b INT0 v T/C1

Vic thay i gi tr ca bin TCNT1 ng vi chu k 0,5s v 2s c thc hin trong chng trnh ngt ngoi INT0 tng t nh thay i bin x trong v d Lp trnh ngt ngoi INT. B T/C1 s lin tc nh ra cc khong thi gian da theo bin TCNT1. Khi m c khong thi gian tng ng, chng trnh ngt ca b T/C1 s chuyn trng thi chn PB5 iu khin bt/tt led.

37 Vic xc nh gi tr cn gn cho bin TCNT1 ng vi cc chu k 0,5s v 2s cho vi x l ATmega16, tn s thch anh 4Mhz nh sau: 1 = 0, 25.106 ( s ) Chu k dao ng thch anh: to = 4.106
Nu Prescale =1, xc nh c khong thi gian 2s, cn phi m:

no =

2 = 8.106 > TCNT 1max = 65535 0, 25.106

Gi tr no ln hn gi tr TCNT 1max khong 122 ln, tra datasheet ca vi x l ATmega16 (bng 48 trang 113) ta thy ATmega16 cho php chn Prescale bng 1; 8; 64; 256; 1024. Vy ta chn Prescale = 256. Vi Prescale = 256, chu k m ca bin TCNT1 l: t = 256

1 = 64.106 ( s ) 4.106 2 = 31250 Khi xc nh c chu k 2s th s ln phi lm: n1 = 64.106


Gi tr ban u ca bin TCNT1 ng vi chu k 2s l:

TCNT12s = 65535 31250 = 34285


Nu vit trong h c s 16: TCNT 12s = 85ED Tng t xc nh c chu k 0,5s th s ln phi m l: n2 = V n2 phi l s nguyn dng, nn ta chn n2 = 7813 Sai s y l = 0,5.64.106 = 32.106 (s ) Gi tr ban u ca bin TCNT1 ng vi chu k 0,5s l:

0,5 = 7812,5 64.106

TCNT 10,5s = 65535 7813 = 57772


Nu vit trong h c s 16: TCNT 10,5s = E1AC

Sau khi xc nh c cc gi tr TCNT ban u, ta tin hnh lp trnh cho vi iu khin. c) Chun b lp trnh bng phn mm CodeVisionAVR Cc bc chn vi x l, tn s thch anh, thit lp In/Out chn PB5, thit lp ngt ngoi INT0 ging nh trong v d Lp trnh ngt ngoi. Ngoi ra v v d ny s dng b T/C1 nn chng ta phi thit lp cc thng s ban u cho T/C1.

Hnh 46: Thit lp ban u cho b T/C1

38 kch hot b T/C1, trong ca s CodeWizardAVR, ta vo mc Timers Timer1. Ch mc nh ca T/C1 l chc nng nh thi: Normal top=0xFFFF (ch nh thi bnh thng, gi tr TOP = FFFF theo h c s 16, tc l bng 65535 trong h s s thp phn). chn Prescale, kch hot ngt ca T/C1, gi tr ban u ca bin TCNT1, ta lm qua 3 bc nh trn hnh 46. Bc 1 Chn Prescale: Ta chn tn s thch anh l 4Mhz = 4000 Khz, 4000 Prescale = 256, tc l tn s lm vic ca b T/C1 l = 15.625Khz . Trong 256 mc Clock value, ta click chn tn s lm vic ca b T/C1 l 15,625 Khz. Bc 2 Kch hot ngt T/C1: kch hot ngt T/C1 khi m c khong thi gian mong mun (0,5s hoc 2s ng vi thi im bin TCNT1 m ti 65535), ta click chn Timer1 Overflow trong mc Interrupt on. Bc 3 Chn gi tr ban u cho bin TCNT1 vit theo h s s thp phn trong Value. Ta chn gi tr e1ac ng vi 0,5s. Trong chng trnh, ta c th thay i gi tr ny thnh 85ed tng ng vi chu k 2s. d) Vit chng trnh iu khin Nh phn xy dng thut ton iu khin, ta thy rng qu trnh iu khin trng thi chn PB5 khng nm trong vng lp while chnh. Vic chn gi tr TCNT1 ban u c thc hin trong chng trnh ngt ngoi INT0 v thay i trng thi chn PB5 c thc hin trong chng trnh ngt ca T/C1. Do khng s dng hm delay_ms()cng nh cc tnh nng no khc cn c file header, nn ta khng cn include thm file header no khc. Khai bo bin x kiu unsigned int gn gi tr bin TCNT1 ban u. Nh ni kiu int c gi tr t -32768 ti +32767, cn kiu unsigned int c gi tr t 0 ti +65535, v vy ta chn kiu d liu unsigned int.

Hnh 47: Chng trnh ngt ngoi v ngt ca T/C1

Nh trn hnh 48, chng ta ch thao tc trong chng trnh ngt ngoi v chng trnh ngt ca T/C1.

39 Chng trnh ngt ngoi INT0 Tng t nh trong v d lp trnh ngt ngoi, chng trnh ngt ngoi trong v d ny cng c chc nng thay i gi tr ca bin x. Nh trnh by trn, ng vi chu k 0,5s hoc 2s ta c gi tr ca bin x l x = 0xE1AC v x = 0x85ED. Hai k t 0x trn l hai k t dng thng bo cho vi x l bit rng gi tr vit ng sau theo h c s 16. Nu mun vit theo h c s 2, th hai k t tng ng s l 0b. Cn nu vit theo h s s 10 th khng cn chn 2 k t vo trc gi tr.
V d s 214 trong h thp phn ng vi 11010110 trong h c s 2 v D6 trong h c s 16. Khi vit vo chng trnh, cho vi x l hiu th ta phi vit 214 hoc 0b11010110 hoc 0xD6

Sau khi lm v d Lp trnh ngt ngoi, ta thy chng trnh con trong v d ny cng tng t nh sau: interrupt [EXT_INT0] void ext_int0_isr(void) { if (x == 0xE1AC) { x = 0x85ED; } else { x = 0xE1AC; }; }

Hnh 49: Chng trnh ngt ngoi INT0

Chng trnh ngt ca T/C1 Chng trnh ngt ca T/C1 xy ra khi bin TCNT1 m ti gi tr TOP ( y l 65535). Theo nh thut ton xy dng, ngt ca T/C1 s nghch o trng thi ca chn PB5 v gn li gi tr ca bin TCNT1 bng gi tr ca bin x. Khi to project, cu trc trong chng trnh ngt ca T/C1 c sn nh sau.

40

Hnh 50: Ngt ca T/C1

Nh hnh trn, phn gn li gi tr cho bin TCNT1 c vit sn, v lun lun gn li gi tr E1AC thit lp trong phn chun b T/C1. V vy phi sa li on code ny gn gi tr x cho bin TCNT1 thay v gi tr E1AC. Ngi c c th d dng thy rng ch cn thay gi tr E1AC on code trn bng gi tr x nh sau: TCNT1H=x >> 8; TCNT1L=x & 0xff; hiu r on code trn, ngi c cn phi c kin thc v cu trc cc thanh ghi, cng nh cc php dch bit, cc php ton logic trong lp trnh C. n gin hn, c th dng ch mt lnh duy nht sau y thay cho on code trn. TCNT1=x; Nh vy on code dng gn li gi tr cho bin TCNT1 sau khi sa li nh sau.

Hnh 51: Chng trnh ngt ca T/C1 sau khi sa

Tip theo ta cn vit on code iu khin trng thi ca chn PB5 vo trong chng trnh ngt ca T/C1. Trong cc v d trc, ngi c bit cch gn trng thi cho chn PB5 trc tip bng 0 hoc 1. Tuy nhin c mt cch ngn hn thc hin vic nghch o trng thi chn PB5 bng dng lnh sau: PORTB.5 = ~PORTB.5; K hiu ~ trn l k hiu ca php nghch o, dng trong cc php ton logic. Cu lnh trn c ngha l gi tr trng thi chn PB5 s c gn bng nghch o ca gi tr trng thi chn PB5 hin ti. Nu trng thi chn PB5 ang l 1, th sau khi qua cu lnh ny, trng thi chn PB5 s c gn bng 0 v ngc li. Nh vy chng trnh ngt ca T/C1 s l.

Hnh 52: Chng trnh ngt caT/C1 sau khi hon thin

41 Sau khi vit xong, ton b code vit thm trong v d ny s nh sau.

Hnh 53: Code ca v d Timer/Counter

Sau khi vit code, kim tra v complie thnh cng, chy th trn mch m phng Proteus, ngi c s thy mch hot ng nh trong v d Lp trnh ngt ngoi. Ban u led s nhy theo chu k 0,5s, khi nhn nt, chu k nhy l 2s, nhn nt ln na, chu k nhy s tr v 0,5s Tm tt Hot ng ca T/C1, phi hp hot ng ca T/C1 v INT0. Php ton nghch o. M rng 1. o s ln nhn nt trong vng 1 giy v hin th trn cc led 7 thanh.

42 4.4 iu khin rng xung PWM PWM l mt ch hot ng ca cc b Timer trn vi x l ATmega16. hiu r hn cch to ra xung PWM, hy c k li phn gii thiu chc nng PWM ca vi x l ATmega16. bi v d iu khin rng xung PWM nh sau: dng b T/C1 to xung vung, Time Period 5ms, Duty Cycle c thay i bng 1ms hoc 4 ms theo tc ng nhn nt ca ngi dng. Xung ny dng iu khin ng c DC v hin th trn thit b Oscilloscope. 4.4.1 Phn tch mch in y l mch nguyn l iu khin ng c DC bng PWM. Da theo bi v cc hc nng ca ATmega16 c gii thiu, ta phn tch hot ng ca mch nh sau: Vi x l ATmega16 to xung PWM ti chn OC1A (chn PD5), iu khin ng c DC qua mch cng sut. Mch ngt ngoi c kt ni vi vi x l qua chn INT2 (PB2), ng vi khi ngt ngoi INT2, thay i Duty Cycle. Chn OC1A cng c ni vi thit b Oscilloscope hin th dng xung vung. 4.4.2 Nguyn l iu khin Nguyn l iu khin ca mch cng tng t nh nguyn l iu khin thit b ngoi ni chung. l vi x l iu khin mch cng sut, mch cng sut iu khin thit b ngoi theo tn hiu t vi x l. Tuy nhin trong cc mch cng sut c chu k ng/ngt nhanh (c ms), thay v s dng transistor thng th ngi ta thng s dng cc transistor cng sut (IRF 540, 740). Cc transistor cng sut hot ng cng tng t nh cc transistor thng, ch khc cc thng s nh dng m hoc in p m, cng sut ph ti ti a

Hnh 54: Nguyn l mch cng sut dng IRF540N trn Proteus

Nh phn gii thiu PWM, nu gi nguyn chu k, tng/gim Duty Cycle ca xung PWM th thi gian ng/ngt ca IRF cng thay i, nh vy thi gian ng/ngt mch in qua ng c cng thay i tng ng, lm thay i tc ng c DC.

43 4.4.3 Xy dng mch m phng trn Proteus T mc phn tch mch in, ta thy mch in m phng gm c vi x l ATmega16, mch ca khi ngt ngoi, mch cng sut IRF540, ng c DC v Oscilloscope.

Hnh 55: Mch nguyn l iu khin ng c DC bng PWM

Sau khi chn cc linh kin t th vin v thit b Oscilloscope, chng ta sp xp v ni dy cho cc linh kin nh hnh 55. Ch cc chn u vo ca INT2 v u ra xung PWM OC1A s tng ng vi qu trnh chun b lp trnh sau ny. 4.4.4 Lp trnh cho vi x l a) Xc nh yu cu lm vic ca vi x l Yu cu lm vic ca vi x l trong bi v d ny l: To xung PWM ti chn OC1A, chu k (Time Period) 20ms, Duty Cycle hoc 1 ms hoc 2ms theo s kin ngt ngoi INT2. b) Xy dng thut ton iu khin Trc khi xy dng thut ton iu khin PWM ngi c cn nm r nguyn l hot ng ca b PWM c gii thiu phn u ti liu. Sau khi nm r c bn nguyn l hot ng ch PWM ca T/C1 trong ATmega16, chng ta thy rng Time Period v Duty Cycle ph thuc ln lt vo gi tr hai bin ICR v OCR. Nh vy trong v d ny, vi chu k 20ms khng i, Duty Cycle 1 ms hoc 2ms th ta ch cn thay i gi tr bin OCR trong chng trnh ngt ngoi.

Hnh 56: S lm vic ca ngt ngoi v T/C1 ch to PWM

Thut ton cng tng t nh v d Timer/Counter, ch khc ch chng trnh ngt ngoi dng thay i bin OCR1A thay v gi tr x, v b T/C1 lm vic ch to xung PWM.

44 B T/C1 c nhiu cch to ra xung PWM (xem li phn gii thiu chc nng to PWM phn trc), trong bi v d s trnh by ch Fast PWM.

Hnh 57: Ch Fast PWM

Nhc li ch Fast PWM nh hnh 57, ta thy rng cc gi tr ICR1, OCR1A cn c tnh tng t nh khi tnh gi tr bin TCNT1 ban u v d Timer/Counter. 1 = 0, 25.106 ( s ) Chu k dao ng thch anh: to = 6 4.10
Chn Prescale = 8, suy ra chu k lm vic b T/C1:

t = 0, 25.106.8 = 2.106 (s) = 2.103 (ms)


Gi tr ICR1 ng vi 5ms l: ICR1 =

5 = 2500 2.103 Nu vit trong h c s 16: ICR1 = 9C4 1 = 500 2.103 = 1F 4 4 = 2000 2.103 = 7D0

Gi tr OCR1A ng vi Duty Cycle 1ms l: OCR1A1ms = Nu vit trong h c s 16: OCR1A1ms

Gi tr OCR1A ng vi Duty Cycle 2ms l: OCR1A1,5 ms = Nu vit trong h c s 16: OCR1A1,5 ms

Sau khi xc nh cc gi tr ICR1, OCR1A ta tin hnh lp trnh cho vi x l ATmega16. c) Chun b lp trnh bng phn mm CodeVision Thit lp cc thng s v chc nng ca vi x l ban u nh sau. Vi x l ATmega16, thch anh 4 Mhz. Thit lp In/Out cho chn OC1A. Kch hot ngt ngoi INT2.

45

Hnh 58: Thit lp T/C1 to PWM

Thit lp T/C1 ch Fast PWM nh sau. 1. Prescale = 8. 2. Ch : Fast PWM top = ICR1. 3. Out. A: Non-Inv. 4. Gi tr ICR1 = 9C4. 5. Gi tr OCR1A ban u = 1F4. d) Vit chng trnh iu khin Cng tng t nh v d Timer/Counter, ta thy rng qu trnh ngt ngoi cng nh to PWM khng lin quan ti vng lp while chnh. Ta ch cn thao tc phn khai bo bin v chng trnh ngt ngoi, cn b T/C1 s lun hot ng to PWM theo gi tr OCR1A mong mun. Phn chng trnh ngt ngoi ngi c hy th t vit, tng t nh phn khai bo bin v chng trnh ngt ngoi ca v d Timer/Counter, ri so snh vi mu sau.

Hnh 59: Chng trnh ngt ngoi

Sau khi vit xong, kim tra v complie thnh cng, kim tra trn mch m phng, nhn nt quan st tc ng c thay i xung PWM trn Oscilloscope. Tm tt Ch PWM cuat T/C. Cch iu khin PWM. M rng Tm hiu v iu khin gc quay ng c servo.

46 4.5 Chuyn i ADC V d ny s hng dn ngi c s dng chc nng chuyn i ADC trn vi x l Atmega16. bi: Dng vi x l o in p u ra mch phn p (dng bin tr, t 0~+5V) v hin th trn led 7 thanh ti mc 0,1V. Ngi c cn xem li phn gii thiu chc nng chuyn i ADC hiu cch hot ng ca b chuyn i ADC c th hin th kt qu o trn led 7 thanh th ngi c cn phi bit cch iu khin led 7 thanh. 4.5.1 Phn tch mch in Theo nh bi, ta thy mch in gm c 3 khi: Vi x l, mch phn p v hin th bng led 7 thanh. a) Mch phn p Mch phn p l mch in hot ng theo nguyn l n gin sau.

Hnh 60: Nguyn l phn p

Xt mt mch in nh hnh v, R1 v R2 mc ni tip, c cp in p Vo . Cc in p ri trn tr R1 v R2 l: V1 = Vo R1 R2 v V1 = Vo R1 + R2 R1 + R2

Nu thay i gi tr ca R1 hoc R2 , in p V1 v V2 cng thay i theo. Nh vy t mt in p Vo = 8V , ta c th thu c in p V1 hoc V2 theo yu cu (chng hn nh

V1 = +5V a vo chn vi x l chng hn).


c th thay i R1 v R2 trong qu trnh s dng, ngi ta dng bin tr, nguyn tc hot ng ca bin tr nh sau.

Hnh 61: Nguyn l hot ng bin tr

Bin tr l mt linh kin in, thng c 3 chn (1), (2), (3), vi in tr hai chn 1-2 bng R1 v in tr hai chn 3-2 bng R2 , trong R1 + R2 = Ro khng i. Khi iu chnh ly in p Vout chn (2), ngi ta thay i in p R1 v R2 . Cng thc tnh in p ra l. Vout = Vin R2 Ro

47 b) Hin th led 7 thanh in p a vo vi x l thay i t 0 ti +5V, v yu cu chnh xc ti mc in p 0,1V, nh vy chng ta cn 2 led 7 thanh cho bi v d ny. n gin hn vi ngi c, trong bi v d ny s khng trnh by cch hin th led 7 thanh bng phng php quet led, m 2 led 7 thanh hot ng c lp.

Hnh 62: Led 7 thanh Ant chung

Hnh 62 gii thiu cu trc ca 1 led 7 thanh ant chung. Mun cho on led no sng (v d on b v on c hin th s 1), ta phi cp in p dng vo chn COM v mc trng thi cc u b v c l 0, cc chn cn li c mc trng thi l 1. Nh vy ni ton b 8 chn a, b,, dp ca led 7 thanh vo vi x l, ta c th dng chc nng In/Out hin th s trn led 7 thanh. 4.5.2 Nguyn l iu khin v mch m phng trn Proteus T cc bc phn tch trn, ta a ra nguyn l iu khin nh sau.

Hnh 63: Nguyn l iu khin

in p thay i t 0 ti +5V t mch phn p s c a vo vi iu khin (qua cc chn ADC). Khi chuyn i ADC s chuyn tn hiu in p thnh gi tr s tng ng vi iu khin iu khin cc led 7 thanh hin th gi tr in p o c. T nguyn l iu khin v phn tch mch in, ta tin hnh xy dng mch nguyn l m phng trn Proteus vi cc linh kin. Vi x l Atmega16. Bin tr 10k. 2 led 7 thanh loi Ant chung.

48

Hnh 64: Mch mp hng trn Proteus

Do in p t vo knh ADC c gi tr t 0 ti +5V nn ta s chn in p tham chiu AREF bng in p t vo chn VACC, trn hnh 64, chn AREF c ni vi chn AVCC. in p ra t mch phn p c a vo chn PA0 (ADC0). B chuyn i ADC s o in p ti knh ADC0 ny v vi iu khin s hin th gi tr o c trn 2 led 7 thanh. 2 led 7 thanh s c iu khin bng 2 cng l PORT C v PORT D. Led 7 thanh (I) hin th ch s hng n v, led 7 thanh (II) hin th ch s sau du phy.

49 4.5.3 Lp trnh cho vi x l a) Xc nh yu cu lm vic ca vi x l Theo nh cc bc phn tch yu cu lm vic ca mch, ta thy vi x l trong v d Chuyn i ADC cn phi s dng cc khi l: khi chuyn i 1 knh ADC, chc nng In/Out ca 2 PORT C v PORT D. Do in p t vo knh ADC c gi tr t 0 ti +5V nn ta s chn in p tham chiu AREF bng in p t vo chn VACC, tc bng +5V. gim nh yu cu tnh ton, ng thi cng ph hp vi kh nng quan st ca mt ngi, ta yu cu vi x l tin hnh o in p v hin th ln led 7 thanh theo chu k 0,25s. b) Xy dng thut ton iu khin Thut ton iu khin ca v d Chuyn i ADC c th ly nh trong hnh sau.

Hnh 65: Thut ton iu khin

in p t ti chn PA0 s c b chuyn i ADC o v tr v gi tr s tng ng (t 0 ti 1023 ng vi gi tr in p t 0 n +5V). T gi tr s ny s phi qua bc quy i, tnh ra in p, cng nh ch s hng n v v ch s hng chc ca gi tr in p. Hai ch s ny s c hin th trn led 7 thanh qua cc cng PORT C v PORT D. Cc bc trn s lp li vi chu k 0,5s. Nh vy ngi c c th thy rng cc bc trn s c thc hin trong vng lp while chnh. Trong bi vit ny s gii thiu khi nim v chng trnh con. y l cch thc hay c dng trong lp trnh, nht l lp trnh cc d n phc tp. Tnh gi tr hng n v v 1 ch s sau du phy Nh gii thiu, sau khi o in p, b chuyn i s tr v gi tr s nguyn (t l ADC_val) t 0 ti 1023 ng vi khong in p o c. Cng thc in p t vo knh ADC l: ADC_val Vin = 5. 1023 Gi tr Vin thu c c th l s l, chng hn 2,28V. Nu vy th qu trnh xc nh ch s sau du phy (ch s 2) s phi dng cc thut ton phc tp. n gin ta tm cch a 1 ch s sau du phy sang bn tri du phy. lm iu chng ta nhn gi tr thc ca in p cn o Vin vi 10, c gi tr in p tnh ton Vtt. ADC_val .10 1023 Nu ban u chng ta t kiu bin cho bin Vtt l gi tr nguyn dng (char, int, ), th vi gi tr v d ca Vin=2,28V, ta s thu c gi tr ca Vtt l: 22,8 lm trn Vtt = 5.

50 thnh 23, tc l Vtt=23. xc nh c ch s 2, ta li tin hnh chia Vtt cho 10 v gn cho mt bin nguyn dng, t l dvi (n v). dvi = Vtt /10 = 23/10 = 2,3 lm trn thnh dvi = 2 xc nh c ch s 3, ta vn chia Vtt cho 10, nhng ly phn d v gn cho bin nguyn sdp (sau du phy). sdp = Vtt-10*dvi = 23-10*2 = 3 Hin th ra led 7 thanh Nh trnh by, vic hin th cc ch s ln led 7 thanh c quyt nh bi t hp trng thi cc chn trong PORT iu khin. cc v d trc, ngi c bit cch iu khin trng thi ca mt chn trong PORT bng lnh (PORTx.y = z;). Tuy nhin nu phi iu khin cng lc c 8 chn trong mt cng (trong trng hp ny l iu khin led 7 thanh), ngi ta s dng lnh PORTx = z; Trong : x l tn Port cn gn trng thi (c 8 chn). z l gi tr gn. Gi tr trng thi ca mi chn hoc bng 0 hoc bng 1, dng lnh trn, ngi ta xp trng thi cn gn ca 8 chn trong Port ln lt cnh nhau, lm thnh mt s nh phn.
Chn s Trng thi S z 7 1 1 6 1 1 5 1 1 4 1 1 3 1 1 2 0 0 1 0 0 0 1 1

Bng trng thi cc chn ca PORTC hin th s 1 trn led 7 thanh. Nh trn mch m phng, PORT C iu khin led 7 thanh hin th s 1, th hai on led b v c sng, ng vi hai chn PC1 v PC2 trng thi 0, cn cc chn khc trng thi 1. T bng trn suy ra s z bng 11111001 trong h nh phn. Nu chuyn sang h c s 16 th z bng F9. Nh vy nu mun gn trng thi PORTC hin th s 1 nh trn, th ta vit: PORTD = 0b11111001; hoc PORTD = 0xF9; Vi s ni dy nh mch m phng, ta c m hex (c s 16) ca cc ch s trn led 7 thanh nh sau.

Hnh 66: Bng m hex ca bi v d

51 c) Chun b lp trnh bng phn mm CodeVision Thit lp ban u vi cc thng s: vi x l Atmega16, thch anh 4Mhz, tt c cc chn ca PORT C v PORT D l out, kch hot ADC. Cc bc thit lp chc nng In/Out cho cc PORT C v PORT D lm tng t nh cc v d trc, vic kch hot chc nng ADC theo nh hnh sau.

Hnh 67: Kch hot chc nng ADC

Trong hp thoi CodeWizardAVR chn ADC, nh u vo mc ADC Enabled. Trong Volt. Ref: chn AVCC pin chn in p tham chiu cho khi ADC l in p +5V ti chn AVCC. Trong hp thoi Clock:, click chn tn s lm vic ca b ADC. Tn s lm vic cng cao, tc chuyn i cng nhanh, nhng sai s cng sao. Trong v d chn ny chn gi tr tn s lm vic cu b ADC l 250 kHz. d) Vit chng trnh iu khin Trong v d ny c dng hm delay, nn trc tin hy include file delay.h (nu chng trnh cha include file delay.h sn). Khai bo cc bin sau. Vtt kiu char cha gi tr in p tnh ton. dvi v sdp kiu char cha gi tr ch s hng n v v ch s sau du phy. Chng trnh ADC v tnh cc ch s Trong chng trnh, sau khi kch hot b ADC phn chun b, vic yu cu vi x l tin hnh c gi tr ADC c thc hin bng dng lnh. read_adc(0); Trong read_adc(0) l chng trnh c phn mm to sn cho chc nng ADC, trong du ngoc () l s th t knh ADC cn o. Trong v d ta a in p vo knh ADC0, nn s th t knh ADC cn o l 0. Khi qua lnh ny, vi x l s o in p ti knh ADC0 v tr v gi tr s tng ng. Chng trnh tnh gi tr in p v cc ch s cn tm nh sau. Vtt=5*10*read_adc(0)/1023; dvi=Vtt/10; sdp=Vtt-dvi*10;

52 Ton t V (&) Theo nh yu cu hot ng ca mch, 2 led 7 thanh dng hin th in p o c vi 1 ch s sau du phy, nh vy led 7 thanh (I) phi lun sng du chm (dp) hin th du phy. C hai cch lm cho du chm trn led 7 thanh (I) lun sng l. Vit m hex li cho led 7 thanh (I) vi trng thi chn PC7 lun bng 0 v iu khin trng thi PORT C bng m hex ny. S dng php ton logic a m hex hnh 65 thnh m hex mi vi trng thi chn PC7 lun bng 0. Qu trnh vit li m hex hin th du phy (dp) tng t nh vit m hex trnh by trn, ngi c hy t lm c th t mnh vit c cc m hex cho led 7 thanh. Trong bi v d ny s trnh by cc s dng php ton logic, ngi c c tip cn vi cch vit code khc so vi cc v d t u ti liu. Nh trnh by, hin th ch s sau du phy led (II), ta dng lnh. PORTD = z; Trong z l m hex trong bng 65 ng vi s cn hin th (gi tr ca bin sdp), v d nh hin th s 2, ta vit. PORTD = 0xA4; iu khin led 7 thanh (I) hin th ch s vi du phy (dp) lun sng (v d nh hin th ch s 2., ta dng ton t logic V & nh sau. PORTC = 0xA4 & 0x7F; Trong A4 l m hex ca ch s 2 khng du chm (trong bng 65), cn 7F trong h c s 16 chnh l 01111111 trong h nh phn. gii thch r hn, hy xem bn di.
Th t chn Z = 0xA4 0x7F 0xA4 & 0x7F PORTC 7 1 0 0 0 6 0 1 0 0 5 1 1 1 1 4 0 1 0 0 3 0 1 0 0 2 1 1 1 1 1 0 1 0 0 0 0 1 0 0

Bng trng PORTC sau php ton V (&). Nu coi trng thi 1 ng vi ng (), cn trng thi 0 ng vi sai (S), theo suy lun logic thng thng ta s c. Chn 7: v S s thnh S. Chn 6, 4, 3, 1, 0: S v s thnh S. Chn 5, 2: v s thnh . So snh trng thi PORTD hin th ch s 2 v trng thi PORTC hin th ch s 2. theo bng sau.
PORTD (2) PORTC (2.) 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0

So snh trng thi PORT D v PORTC khi cng hin th s 2. Ta thy sau khi dng php ton V (&), t trng thi nh ca PORTD (0xA4) s chuyn thnh trng thi nh ca PORTC (0xA4 & 0x7F), ch khc nhau bit s 7 (iu khin on led dp). Bit s 7 ca PORTC lun c gi tr 0, v vy on led dp ca led 7 thanh (I) lun sng.

53 Chng trnh hin th led V c bn, sau khi bit v php so snh if cc v d trn, ngi c s nhn ra rng c th dng nhiu php so snh if iu khin trng thi cc PORT iu khin led, v d iu khin led (II). Nu sdp = 0, gn trng thi PORTD = 0xC0; Nu sdp = 1, gn trng thi PORTD = 0xF9; Nh vy iu khin mt led 7 thanh hin th 10 ch s t 0 ti 9, cn phi c 10 php so snh if, 2 led 7 thanh th s phi dng 20 php so snh if. gim bt khi lng dng lnh (nhm tit kim b nh v gim ti cho vi x l), ngi ta gp nhiu lnh if thnh lnh swichcase. Ly v d iu khin hin th led 7 thanh (II) hin th 10 s t 0 n 9, cu trc lnh swichcase nh sau.

Hnh 68: Lnh switch...case iu khin PORTD

ngha ca cu trc swichcase trn nh sau. Vi x l s so snh gi tr ca bin sdp, nu sdp = 0 th thc hin cc lnh 0, nu sdp = 1 th s thc hin cc lnh 1, Cc lnh 0, 1, 2, s gn trng thi cho PORTD bng gi tr m hex tng ng. Cu trc iu khin PORTC cng tng t, ch khc ch gia tr gn cho PORT c thay i hin th du phy (dp).

54

Hnh 69: Cu trc switch...case iu khin PORTC

Chng trnh con Hai on chng trnh iu khin hin th led trn c th t trc tip vo vng lp while, khi vng lp while chnh s c dng.

Hnh 70: Cu trc vng lp while

Ngi c hy vit thm vo trong vng lp while trn v th chy m phng trn Proteus. Tuy nhin qu trnh lp trnh r rng, d theo di, vi cc tp lnh c th c nhm li nh cc lnh swichcase trn, ngi ta thng dng chng trnh con.

55

Hnh 71: Hnh dung v chng trnh con

Nh hnh 70, nhm cc lnh 1,2,,n thay v c vit trong vng lp while chnh, c th c nhm li trong chng trnh con x. Khi mun thc hin cc lnh 1,2,,n ny, ta ch vic a tn chng trnh con x vo vng lp while chnh. Nh vy, vic tch mt hoc nhiu nhm lnh ra thnh chng trnh con s gip ngi lp trnh d nm bt c qu trnh lp trnh, ng thi gim s lng dng code trong vng lp while chnh trong trng hp cn phi dng nhiu ln cc tp lnh ging nhau. Trong chng trnh CodeVision, cc chng trnh con c vit bn ngoi trc chng trnh chnh void main(void), trong trng hp bi v d ny, hai chng trnh con iu khin led (I) v (II) c vit sau khi khai bo bin nh trong hnh.

Hnh 72: Hai chng trnh con

Trn hnh 71 l hai chng trnh con. Chng trnh con led1 iu khin hin th trn led 7 thanh (I), chng trnh con led2 iu khin hin th trn led (II). Sau y s trnh by cch vit chng trnh con led2. Mt chng trnh con c khai bo trong CodeVisionAVR theo c php sau. void tn chng trnh con (khai bo bin) { Tp lnh trong chng trnh con; } Trong tn chng trnh con l tn ty theo ngi lp trnh, vi iu khin khng c du cch, khng c ch s ng u, khng dng k hiu c bit. Trong lp trnh khng uwc t hai chng trnh con c tn ging nhau. Trong v d trn, ta t tn chng trnh con iu khin hin th led 7 thanh (II) l led2. Phn khai bo bin trong du ngoc ()l ni khai bo cc bin ch dng trong chng trnh con, gi l bin cc b (chng trnh con vn c th s dng bin c khai bo u

56 chng trnh, gi l bin ton cc, v d nh bin dvi v sdp). Trong chng trnh con led2 ta thy khng c bin cc b (ch c cu lnh switch...case vi bin dvi hoc sdp), trong trng hp ny trong du ngoc s c vit l (void). Nh vy b cc ca chng trnh con led2 s nh sau. void led1(void) { switch...case iu khin led II; } Sau khi a ton b cu trc switch...case iu khin led (II), ta c ton b chng trnh con led2 nh sau.

Hnh 73: Chng trnh con led2

Tng t, chng trnh con led1 c vit nh sau.

Hnh 74: Chng trnh con led1

Nu hiu s b v chng trnh con, ngi c cng s thy rng hm read_adc(0) trnh by trn cng l mt chng trnh con c phn mm to sn s dng.

57 Vng lp while chnh Sau khi khai bo bin v vit chng trnh con nh cc bc trn, vng lp while chnh iu khin o v hin th in p nh sau.

Hnh 75: Vng lp while chnh

Ngi c hy t vit cc phn trnh by trn vo phn mm CodeVisionAVR, kim tra v chy th trn Proteus.

Hnh 76: Chy m phng trn Proteus

Nu lm ng nh cc bc trn, in p u ra mch phn p s c o v hin th trn led 7 thanh nh hnh trn. Dng chut thay i gi tr bin tr thay i hin th trn led 7 thanh. Tm tt Mch phn p, led 7 thanh Ant chung. S dng chc nng ADC, tnh in p cn o v cc ch s cn thit. iu khin trng thi ca cc PORT. Chng trnh con. M rng Hin th 2 led 7 thanh bi v d bng phng php qut led (chung mt PORT iu khin, mi led 7 thanh sng ri tt lun phin trong 5ms).

58 4.6 Truyn nhn d liu vi my tnh V d trong ti liu ny s hng dn ngi c thit lp v s dng chc nng truyn nhn d liu vi my tnh bng USART mc n gin. bi: Lp trnh s dng chc nng USART ca Atmega16, o in p t mch phn p (0~+5V) v gi v my tnh. 4.6.1 Phn tch mch in T bi, ta thy mch in ca v d c cc khi sau. Vi x l. Mch phn p. Thit b nhn d liu t vi x l. Vi x l trong v d vn dng Atmega16, mch phn p v ngt ngoi ging nh cc v d trnh by. Thit b nhn d liu truyn v t vi x l c th l my vi tnh (qua cng COM) hoc thit b VIRTUAL TERMINAL khi m phng trn Proteus. Mch in hot ng nh sau: vi x l tin hnh o in p t mch phn p t trn knh ADC v gi gi tr o v v hin th trn thit b Terminal. 4.6.2 Nguyn l iu khin v mch m phng Nguyn l iu khin ca bi v d ny c cho nh hnh di.

Hnh 77: Nguyn l iu khin bi v d

in p t u ra mch phn p c a vo knh ADC ca vi x l Atmega16. Khi c tn hiu bn phm t trnh Terminal, vi x l s o in p t vo knh ADC v gi gi tr o c ti trnh Terminal. T nguyn l iu khin, ta xy dng mch m phng nh sau.

Hnh 78: Mch m phng trn Proteus

Ch : chn RXD ca vi x l phi ni vi chn TXD ca trnh Terminal v ngc li.

59 4.6.3 Lp trnh cho vi x l a) Xc nh yu cu lm vic ca vi x l T bi v nguyn l iu khin, cc chc nng ca Atmega16 cn dng trong v d ny l: Chc nng ADC. Chc nng USART. Chc nng ngt ngoi s nhn bit tc ng nhn nt ca ngi dng. Cc bc trong chng trnh iu khin nh sau. B ADC s o v vi x l tnh ton gi tr in p. Vi x l li dng chc nng USART truyn gi tr o c v trnh Terminal. Gi tr in p o c sau khi tnh ton c th l gi tr thp phn vi nhiu ch s sau du phy, trong khi gi tr cn o x l (x l v v th trn my tnh) ch cn khong 2 ch s sau du phy. V vy ch cn gi gi tr in p sau khi c lm trn. ng thi trong lp trnh vi x l, qu trnh x l cc bin c gi tr thp phn (c du phy) tng i phc tp, phi s dng kiu bin tn b nh hn, cng nh nhiu cu lnh cc php ton v chui, v vy trong v d ny s khng hin th du phy (v d gi tr 3,25 s c hin thanh thnh 325). Trong o c thc t, gi tr 325 trn sau khi gi v my tnh, s c phn mm x l trn my tnh quy i v gi tr thc (325 chuyn v 3,25 bng cch chia cho 100 chng hn). Cch lm ny khin cho vic lp trnh trn vi x l n gin hn nhiu. b) Xy dng thut ton iu khin T yu cu lm vic ca vi x l, ta xy dng thut ton iu khin nh sau.

Hnh 79: Thut ton ca bi v d

B ADC tin hnh o gi tr in p, sau gi tr sau khi chuyn v dng k t s c b USART truyn ti trnh Terminal. Qu trnh ny lp i lp li lin tc o v gi gi tr in p, nh vy ton b chng trnh nm trong vng lp while chnh. Vic dng chng trnh trong 0,25s vi mc ch mt ngi c th theo di kt qu m phng trn proteus. Trong thc t o c, chu k o-chuyn-truyn trn ch mt khong 10ms. L do phi chuyn gi tr s sang dng k t l v b USART ch truyn/nhn d liu dng cc k t ring l, v d nh k t a, b, c, k t 1, 2, 3. Chng hn mun truyn gi tr in p 12V v my tnh, trc tin phi chuyn v dng k t 12(gi l mt chui, bao gm k t 1 v k t 2), sau b USART s truyn ln lt k t 1 v k t

60 2 ny v my tnh. Phn mm x l trn my tnh s ghp hai k t trn thnh mt chui, sau chuyn li thnh dng s.

Hnh 80: Qu trnh gi d liu t vi x l v my tnh

c) Chun b lp trnh bng phn mm CodeVision Trong bi v d ny ch s dng chc nng ADC v USART ca Atmega16, v vy trong bc chun b chng ta s kch hot v thit lp ban u cho hai chc nng ny. Vi chc nng ADC, vic kch hot v thit lp ban u c tin hnh ging nh trong v d Chuyn i ADC, ngi c hy xem li v t tin hnh bc ny. kch hot v thit lp chc nng USART, lm nh hnh sau.

Hnh 81: Kch hot USART

Trong hp thoi CodeWizardAVR, chn mc USART v lm cc bc. 1. kch hot chc nng truyn d liu, click chnvo Transmitter. 2. chn tc Baud Rate, click v chn tc Baud Rate trong Baud Rate. 3. chn kiu khung truyn (Frame), chn trong Communication Parameters. Nh trn hnh 80, ta thy trong bi v d kch ch s dng chc nng truyn d liu ca b USART. Ging nh trong phn gii thiu tnh nng USART, tc Baud Rate = 9600 v khung truyn 8 Data, 1 Stop, khng Parity c chn nh trn hnh 80.

61 d) Vit chng trnh iu khin Khai bo bin v include cc file header Trong chng trnh ny dng cc bin sau. Bin V kiu unsigned int, bin ny dng cha gi tr in p khng c du phy ( nhn vi 100). Bin chuoi dng chui 10 k t. Khai bo bin chuoi theo c php sau. char chuoi[10]; Include cc file header sau (nu phn mm CodeVision include sn th khng cn vit thm vo na). delay.h dng cho chc nng ngng chng trnh. stdlib.h dng cho chc nng chuyn gi tr s thnh dng chui k t. stdio.h dng cho chc nng USART. T phn xy dng thut ton iu khin, ta thy rng ton b chng trnh nm trong vng lp while chnh c cu trc nh sau.

Hnh 82: Cu trc vng lp while chnh

o gi tr in p Sau khi xem bi v d Chuyn i ADC, ngi c c th t vit on code o gi tr in p trn hnh 81. Sau khi vit, hy so snh vi mu tham kho sau. V = 5*read_adc(0)/10.23; Chuyn gi tr s thnh chui k t Mc ch ca on code ny l chuyn gi tr s trong bin V thnh chui k t v cha trong bin chuoi. chuyn mt gi tr nguyn (int) ca bin V thnh chui k t ca bin chuoi, s dng dng lnh sau. itoa(V, chuoi); Truyn chui k t qua b USART truyn mt chui nhiu k t (bin chuoi) qua b USART, ta dng hm puts() sau. puts(chuoi); Khi gp lnh puts(chuoi); vi x l s gi ln lt cc k t trong bin chuoi qua b USART nh trnh by. Cn lnh dng chng trnh 0,25s ngi c hy t vit v t kim tra.

62 Sau khi vit xong, ton b code trong vng lp while chnh nh sau.

Hnh 83: Vng lp while chnh

Khi vit xong, kim tra v complie thnh cng, tin hnh chy trn ch m phng. Trn mch m phng. Ngi c hy nh li rng trong truyn/nhn USART, thit b truyn v nhn phi c thit lp ging nhau. T u v d chng ta mi ch thit lp USART trn vi x l, thit lp USART trn trnh Terminal, m hp thoi Edit Component ca trnh Terminal v chn cc thng s ging vi USART trn vi x l.

Hnh 84: Thit lp cc thng s USART ca trnh Terminal ging vi trn vi x l

Sau khi thit lp trong, chy mch m phng, lc ny ngi c s thy trnh Terminal hin th kt qu gi v lin tip nhau nh sau.

Hnh 85: Trnh Terminal hin th kt qu lin tip nhau

Nu nh hnh 84 th chng ta khng th theo di c kt qu, d theo di, hy lp trnh hin th xung dng sau mi ln gi mt chui k t nh sau.

63 Tr li phn mm CodeVision, vit thm mt dng code vo trong vng lp while chnh nh hnh di.

Hnh 86: Vng lp wlhie chnh sau khi sa

ngha c dng code: putchar(13); l gi mt k t th 13 trong bng m ASCII qua b USART. Trong bng m ASCII, k t th 13 l \r. Khi gp k t ny, trnh Terminal s xung dng. Sau khi sa xong, hy chy li mch m phng trn Proteus, thay i gi tr bin tr v quan st d liu gi v trn trnh Terminal, nu lm ng, cc gi tr gi v s c hin th nh hnh sau.

Hnh 87: Trnh Terminal hin th kt qu o theo cc dng

Tm tt Cc kch hot v thit lp USART. Cch gi d liu qua USART. Cc khi nim v chui v hm s dng cho chui. M rng Tm hiu cch nhn d liu qua USART.

64 Ph lc Tn v t kha cc linh kin hay dng trong th vin Proteus Tn T kha Vi x l AVR tiny2313, mega16 n Led led Led 7 thanh 7seg in tr resistor T in capacitor Transistor transistor
IRF540 IRF540

Bin tr i-t Nt bm
Cng tc

pot-hg diode button


switch

n ng c SERVO ng c bc

lamp servo step

Mt s phn t hay dng khc trn thanh cng c ca Proteus

65 Mt s cu trc lp, so snh trong C hay dng Lnh If : - C php : If ( biu thc) < lnh> ; - Din gii : nu biu thc ng ( # 0 ) thc hin <lnh> ngc li nu biu thc sai ( = 0 ) thc hin lnh ng sau cu lnh if. - Hoc : If ( biu thc) <lnhA>; else < lnh B); Biu thc : # 0 ( ng) < lnh A> =0 ( sai ) < lnh B>.

Lnh For : - C php : for ( bt1; bt2 ; bt3) lnh; - Gii thch : + bt1 : l ton t gn to gi tr ban u cho bin iu khin. + bt2 : biu thc iu kin thc hin vng lp. + bt3 : biu thc tng gi tr ca bin iu khin ca vng lp. - V d: For (i=0; i<=100;i=i+2); { Cc dng lnh A; } Khi i = 0, thc hin cc lnh A, sau gi tr i c tng thm 2 thnh i=2. Khi i = 2, thc hin cc lnh A, sau gi tr i c tng thm 2 thnh i=4. Khi i = 100, thc hin cc lnh A, sau gi tr i c tng thm 2 thnh i=102. Khi i khng cn nh hn hoc bng 100 na, b qua khng thc hin cc lnh A. - C ch hot ng : a/Tnh gi tr ca biu thc bt1 . b/Tnh gi tr ca bt2 c/ + Nu gi tr ca bt2(=0) l sai my s ra khi lnh for. + Nu gi tr ca bt2(!=0) l ng th my s thc hin lnh. Lnh while : - C php : while ( biu thc) { Cc lnh A; } - Nguyn tc thc hin : +b1. Tnh gi tr ca biu thc. +b2. Nu gi tr ca biu thc sai ( = 0 ) th chng trnh ra khi vng while +b3. Nu gi tr ca biu thc ng (# 0) th thc hin cc lnh A v quay li bc 1 (b1).

66 Lnh switch - C php : switch (biu thc nguyn). { case N1 : lnh 1; break; case N2 : lnh 2; break; ..... default : lnh; } - Biu thc nguyn l gi tr nguyn : Ni (i=1,2...) l cc s nguyn. - Vi biu thc khc vi mi Ni => thc hin lnh sau default.

You might also like