You are on page 1of 160

DKS_GROUP Center

Microcontroller Tranning

Nguyn Hun i hc BKHN Mail : Nguyenduchuan1984@yahoo.com

DKS_GROUP Center

Microcontroller Tranning

Tel

: 0983044936

y l bi son n gin v ht sc ngn gn ca ti cho vic ging dy v h vi iu khin 8051 vi ngn ng C. Phn chi tit hn l trong tng bi ni ca ti trn lp v ai c tham kho c thc mc g th lin h vi ti theo a ch di. Phn quan trng ca lp trnh vk l cc bn phi hiu v phi thc hnh tht nhiu trn mch tht. Cc bn t duy rng v a ra nhiu cch gii quyt, gii php vi cc i tng trn mch thc hnh ca cc bn c nh vy cc bn mi hon thnh nhanh v xut sc c qtrnh hc ca cc bn. Hin ti ti ph trch vn ny ca trung tm. V lnh vc ging dy v cc h vk 8051, Avr, vi hai ngn ng chnh l C v assembly. a CD m ti cung cp cho cc bn c y cc cng c cho vic hc v thit k s dng mch in t c vi khin.

M u

DKS_GROUP Center

Microcontroller Tranning

V do nhn thy tc dng ca vic thc hnh kt hp song song trong qu trnh hc c rt nhiu hc vin yu cu c cng c hc tp v, chng ti cng a ra cc cng c thc hnh chnh l cc Kit cho cc h vidk. Kit ny tch hp rt nhiu cc Module nh : led n, led 7thanh, LCD, R le, cm bin, truyn thng, v c bit cn tch hp lun c mch np cho vik rt a nng tin dng, ngi hc lp trnh ch cn thao tc vi phn mm lp trnh trn PC, n lnh np v quan st kt qu. Nh vy ch cn mt khong thi gian rt ngn l cc bn c th lm ch c loi vik m cc bn mong mun. Gi bn kit ca chng ti l rt ph hp vi sinh vin v nhiu i tng khc.
Rt cm n cc bn quan tm chc cc bn thnh cng!

DKS_GROUP Center

Microcontroller Tranning

Bi 1: Gii thiu v vi iu khin.


Ch : y hon ton l phn l thuyt, mnh rt gn ti a, do cc bn nn c ht. Cha nn thc hnh vi v ti s hng dn sau.
1.1)Tiu chun trong la chn mt b vi iu khin: l kh nng sn sng p ng v s lng trong hin ti v tng lai. i vi mt s nh thit k iu ny l quan trong hn c . Hin nay, cc b vi iu khin 8 bit ng u l h 8051 c s lng ln nht cc nh cung cp a dng (nhiu ngun). Nh cung cp c ngha l nh sn xut bn cnh nh sng ch ca b vi iu khin. Trong trng hp 8051

DKS_GROUP Center

Microcontroller Tranning

th nh sng ch ca n l Intel, nhng hin nay c rt nhiu hng sn xut n (cng nh trc kia sn xut). Cc hng ny bao gm: Intel, Atmel, Philips/signe-tics, AMD, Siemens, Matra v Dallas, Semicndictior. Bng a ch ca mt s hng sn xut cc thnh vin ca h 8051. Hng a ch Website Intel www.intel.com/design/mcs51 Antel www.atmel.com www.semiconductors.philips. Plips/ Signetis com Siemens www.sci.siemens.com Dallas Semiconductor www.dalsemi.com 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. 8051 c tt c 4 cng vo - ra I/O mi cng rng 8 bit. Cc nh sn xut cho xut xng ch vi 4K byte ROM trn chp.
Bng cc c tnh ca 8051 u tin.

c tnh S lng ROM trn chp 4K byte RAM 128 byte B nh thi 2 Cc chn vo - ra 32 Cng ni tip 1 Ngun ngt 6 1.2)Vi iu khin v vi x l: Xin nhc n ci my tnh ca bn, con chp Intel hay ADM ca bn l 1 b vi x l, n khng c RAM, ROM,cng IO v cc thit b ngoi vi on Chip. Cn vi iu khin cha 1 b vi x l v RAM,ROM, cng IO, v c th c cc thit b ngoi vi. 1.3)S chn vi iu khin 8051: L IC ng v dng DIP c 40 chn, mi chn c mt k hiu tn v c cc chc nng nh sau: Chn 40: ni vi ngun nuI +5V.

DKS_GROUP Center

Microcontroller Tranning

Chn 20: ni vi t(Mass, GND). Chn 29 (PSEN)(program store enable) l tn hiu iu khin xut ra ca 8051, n cho php chn b nh ngoi v c ni chung vi chn ca OE (Outout Enable) ca EPROM ngoi cho php c cc byte ca chng trnh. Cc xung tn hiu PSEN h thp trong sut thi gian thi hnh lnh. Nhng m nh phn ca chng trnh c c t EPROM i qua bus d liu v c cht vo thanh ghi lnh ca 8051 bi m lnh.(ch vic c y l c cc lnh (khc vi c d liu), khi VXL ch c cc bit opcode ca lnh v a chng vo hng i lnh thng qua cc Bus a ch v d liu) Chn 30 (ALE : Adress Latch Enable) l tn hiu iu khin xut ra ca 8051, n cho php phn knh bus a ch v bus d liu ca Port 0. Chn 31 (EA : Eternal Acess) c a xung thp cho php chn b nh m ngoI i vi 8051. i vi 8051 th : 0V : Chn ROM ngoi. 32 chn cn li chia lm 4 cng vo ra: Vo ra tc l c th dng chn c mc logic (0;1 tng ng vi 0V ; 5V)vo hay xut mc logic ra(0;1) P0 t chn 39 32 tng ng l cc chn P0_0 P0_7 P1 t chn 1 8 tng ng l cc chn P1_0 P1_7 P2 t chn 21 28 tng ng l cc chn P2_0 P2_7 EA = 5V : Chn ROM ni. EA =

DKS_GROUP Center

Microcontroller Tranning

P3 t chn 10 17 tng ng l cc chn P3_0 P3_7

1 1 1 1 1 1 1 1 1 1 2

1 2 3 4 5 6 7 8 9

U P P P P P P P P R R T I I T T W R X X V

1 1 1 1 1 1 1 1 1 E X X 0 1 2 1 D S . . . . . . . . 0 1 2 3 4 5 6 7 S D V P P P P P P P P

P0
4 0 C C3 9 0 . 30 8 0 . 31 7 0 . 32 6 0 . 33 5 0 . 34 4 0 . 35 3 0 . 36 2 0 . 37 1 A / V 3 P0 L5 E1 2/ P 9 S E 2N 8 2 . 27 7 2 . 26 6 2 . 25 5 2 . 24 4 2 . 23 3 2 . 22 2 2 . 21 1 2 . 0

P1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

P2 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P3 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

0 1 2 3 4 5 6 7 8 9 0

T T 8 9

N N

D A T 0 T 1 R

E CA P

P P P P P P P P

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

Port's Bit D0 D1 D2 D3 D4 D5 D6 D7

Ring cng 3 c 2 chc nng mi chn

nh trn hnh v: P3.0 RxD : chn nhn d liu ni tip khi giao tip RS232(Cng COM ). P3.1 _ TxD : phn truyn d liu ni tip khi giao tip RS232. P3.2 _ INTO : interrupt 0 , ngt ngoi 0. P3.3 _ INT1: interrupt 1, ngt ngoi 1. P3.4 _T0 : Timer0 , u vo timer0. P3.5_T1 : Timer1, u vo timer 1. P3.6_ WR: Write, iu khin ghi d liu. P3.7 _RD: Read , iu khin c d liu. Chn 18, 19 ni vi thch anh to thnh mch to dao ng cho VK Tn s thch anh thng dng trong cc ng dng l : 11.0592Mhz(giao tip vi cng com my tnh) v 12Mhz Tn s ti a 24Mhz. Tn s cng ln VK x l cng nhanh. Dao dong cua thach anh

DKS_GROUP Center

Microcontroller Tranning

S1 S5

S2 S6

S3

S4

P1

P2

1 chu ki may 1 chu k my = 12 dao ng ca thch anh tn s thch anh l 12 Mhz c ngha l tn s lm vic ca chip l 1Mhz <-> chu k l 1uS.Lnh lp trnh cho vi iu khin c lnh vi iu khin mt 1 chu k my mi thc hin xong,c lnh nhiu hn mt chu k my. C th khi lp trnh s bit lnh bao nhiu chu k my. U 1 1.4) Mch 8051 ti thiu: Mch to dao ng:

T h a c h

a n h

3 3 T u

5 g o m1 9 1 8 X 1 X 2

T aU n 3 s o 1 2 M h z
+ C C 4 A P A C I T O R P O

3 3 T u V L

p C

o4 m0 C 2 0

V 8 0

S 5 1

Chn 9 c mc vi 1 mch ngoi to thnh

R R

2 0

V 8

0 5 1

DKS_GROUP Center

Microcontroller Tranning

mch reset. Khi reset VK hot ng li t u.(Ram b xa, cc thanh ghi b xa)

Mch RESET

Mch vi iu khin n gin nht:

DKS_GROUP Center

Microcontroller Tranning

5VDC

40

VCC

U3

10Kx9 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA/VP RESET 39 38 37 36 35 34 33 32 31 9 R4 R7 R9 + C3 10uF/25V

R1 10K C2 33p 12Mhz

19 18 20

X1 X2 GND 8051

C1 33p

Mch ny cha c ngun 5V cc bn S chn:

U 6 L M 7 8 V I N

0 5 V G N D

/ T O O U

khi ngun to dng con IC sau:


T

Gii thiu IC n p 7805 : u vo > 7V u ra 5V 500mA. Mch n p: cn cho VK v nu ngun cho VK khng n nh th s treo, khng chy ng, hoc reset lin tc, thm ch l to chp.
Mch ngun
1 2 V D C I n 1 U 1 L M 7 8 0 5 / T O V I N G N D V O U 3 T C 1 1 0 4 + 5 V D C O u t

C 2 1 0 4

C 3 1 0 u F

/ 2 5 V

DKS_GROUP Center

Microcontroller Tranning

Mach vi dieu khien co ban


5 V D C

VC C

40

+ R E S 9 E T

3 1 0 u F / 2 5 V

R 1 1 0 K

C 2 3 3 p 1 2 M h z

1 8

X 2

C 1 3 3 p

1 9 2 0 X 1 V S 8 0

S 5 1

1.5)Cu trc_s khi ca vi iu khin 8051:


EXTERNAL INTERRUPTS INTERRUP T CONTROL ON CHIP RAM

ETC TIMER 0 TIMER 1

COUNTER INPUTS

CPU

OS C

BUS CONTRO L

4 I/O PORTS

SERIAL PORT RX D

ADDRESS/DA TA

P P P P 0 1 2 3

TXD

DKS_GROUP Center

Microcontroller Tranning

Ch :S khi bn trong con 8051 c nhng ti nguyn . Interrupt, Ram, Timer, Serial prort. 1.6)Cc thnh vin khc ca h 8051: C hai b vi iu khin thnh vin khc ca h 8051 l 8052 v 8031. B vi iu khin 8052: 8052 c tt c cc c tnh chun ca 8051 ngoi ra n c thm 128 byte RAM v mt b nh thi na. Hay ni cch khc l 8052 c 256 byte RAM v 3 b nh thi. N cng c 8K byte ROM. Trn chp thay v 4K byte nh 8051. Bng : So snh cc c tnh ca cc thnh vin h 8051.
c tnh ROM trn chp RAM B nh thi Chn vo ra Cng ni tip Ngun ngt 8051 4K byte 128 byte 2 32 1 6 8052 8K byte 256 byte 3 32 1 8

Do vy tt c mi chng trnh vit cho 8051 u chy trn 8052 nhng iu ngc li l khng ng.c bit : Mt nh sn xut chnh ca h 8051 khc na l Philips Corporation. Hang ny c mt di la chn dng ln cho cc b vi iu khin h 8051. Nhiu sn phm ca hng c km theo cc c tnh nh cc b chuyn i ADC, DAC, chn PWM, cng I/0 m rng .

DKS_GROUP Center

Microcontroller Tranning

Update sn phm 8051 mi ti cc trang web ca cc nh sn xut a ch c phn gii thiu. Ch yu: www.atmel.com 1.7)Ram ni v cc thanh ghi SFR ca 8051:

F 0

F7 E7 D7 B7 AF A7

F6 E6 D6 B6

F5 E5 6D B5

F4 E4 6C

F3

F2

F1

F0

DKS_GROUP E Center 0
D 0 B 8

E3 Microcontroller Tranning E2 E1 E0 6B 6A 69 68 B8 B0 A8 A0

BC BB B4 B3

BA B9 B2 B1

Cc thanh ghi SFR c a ch nm gia 80H v FFH cc a ch ny trn 80H, v cc a ch t 00 n 7FH l a ch ca b nh RAM

B 0 A 8 A 0 9 9 9 8 9 0 8 D 8 C 8 B 8 A 8 9 8 8 8 7 8 3 8 2 8 1 8 0

AE AD AC AB AA A9 A6 A5 A4 A3 A2 A1

Khng nh a ch tng bt 9F 97 9E 96 9D 95 9C 94 9B 93 9A 92 99 91 98 90

Khng nh a ch tng bt Khng nh a ch tng bt Khng nh a ch tng bt Khng nh a ch tng bt Khng nh a ch tng bt 8 8D 8C 8B 8 89 88 E A Khng nh a ch tng bt 8F Khng nh a ch tng bt Khng nh a ch tng bt Khng nh a ch tng bt 87 86 8 5 84 83 82 81 80

THANH GHI CHC NNG C BIT

DKS_GROUP Center

Microcontroller Tranning

bn trong 8051. Khng phi tt c mi a ch t 80H n FFH u do SFR s dng, nhng v tr ngn nh t 80H n FFH cha dngl d tr v lp trnh vin 8051 cng khng c s dng. Bng : chc nng ca thanh ghi chc nng c bit SFR SFR nh a ch tng bit( nhng thanh ghi cn nh i khi lp trnh c bn C)

Thanh ghi / Bit TMOD 7 6

K hiu GATE C/T

Chc nng Chn model cho b nh thi 1 Bt iu khin cng. Khi c set ln 1, b nh thi ch hot ng trong khi INT1 mc cao Bt chn chc nng m hoc nh thi: 1= m s kin 0= nh thi trong mt khong thi gian Bit chn ch th nht Bit chn ch th 2 M1 M0 Ch Chc nng 0 0 0 Ch nh thi 13 bit 0 1 1 Ch nh thi 16 bit 1 0 2 Ch t ng np li 8 bit 1 1 3 Ch nh thi chia x

5 4

M1 M0

DKS_GROUP Center

Microcontroller Tranning

3 2 1 0 TF1 TR1 Thanh ghi / Bit TCON TCON.7

GATE C/T M1 M0 TF1 K hiu TF1

Bit iu khin cng cho b nh thi 0 Bit chn chc nng m / nh thi cho b nh thi 0 Bit chn ch th nht cho b nh thi 0 Bit chn ch th 2 cho b nh thi 0 TR0 IE1 IT1 IE0 IT0 Chc nng iu khin b inh thi C trn ca b nh thi 1. C ny c set bi phn cng khi c trn, c xo bi phn mm, hoc bi phn cng khi b vi x l tr n trnh phc v ngt Bit iu khin hot ng ca b nh thi 1. Bit ny c set hoc xo bi phn mm iu khin b nh thi hot ng hay ngng C trn ca b nh thi 0 Bit iu khin hot ng ca b nh thi 0 C ngt bn ngoi 1 (kch khi cnh). C ny c set bi phn cng khi c cnh m (cung) xut hin trn chn INT1, c xo bi phn mm, hoc phn cng khi CPU tr n trnh phc v ngt C ngt bn ngoi 1 (kch khi cnh hoc mc). C ny c set hoc xo bi phn mm khi xy ra cnh m hoc mc thp ti chn ngt ngoi C ngt bn ngoi 0 (kch khi cnh) C ngt bn ngoi 0 ( kch khi cnh hoc mc) ES ET1 EX1 EX0 ET0 iu khin cc ngun ngt

TCON.6

TR1

TCON.5 TCON.4 TCON.3

TF0 TR0 IE1

TCON.2

IT1

TCON.1 TCON.0 EA

IE0 IT0 ET2

DKS_GROUP Center

Microcontroller Tranning

IE IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0

EA --ET2 ES ET1 EX1 EX0 ET0

(0: khng cho php; 1: cho php) Cho php/ khng cho php ton cc Khng s dng Cho php ngt do b nh thi 2 Cho php ngt do port ni tip Cho php ngt cho b nh thi 1 Cho php ngt t bn ngoi (ngt ngoi 1) Cho php ngt t bn ngoi (ngt ngoi 0) Cho php ngt do b nh thi 0

Ch : 3 thanh ghi ny cng rt c bn, nh tn thanh ghi, tn cc bt trong thanh ghi, chc nng tng thanh ghi v tng bt trong thanh ghi. 1.8)Gii thiu s qua cc ngun ngt:
Ngt do Reset h thng Ngt ngoi 0 B nh thi 0 Ngt ngoi 1 B nh thi 1 Port ni tip B nh thi 2 Timer Program excution without interrut Main Program C RST IE0 TF0 IE1 TF1 RI hoc TI TF2 hoc EXF2 a ch vector 0000H 0003H 000BH 0013H 001BH 0023H 002BH

ISR

ISR

ISR

*
Main

**

*
Main

**
Main

**
Main

Program excution with interrupt.

DKS_GROUP Center

Microcontroller Tranning

Mt chng trnh chnh khng c ngt th chy lin tc, cn chng trnh c ngt th c khi no iu kin ngt c m bo th con tr s nhy sang hm ngt thc hin xong hm ngt li quay v ng ch c thc hin tip chng trnh chnh. Ti c 1 v d nh sau: Bn ang n cm , c ting in thoi , bn t bt cm ra nghe in thoi , nghe xong li quay v bng bt cm ln n tip. Th qu trnh n cm ca bn l chng trnh chnh,c in thoi gi n l iu kin ngt, bn ra nghe in thoi l thc hin chng trnh ngt(Interrupt Service Rountine),quay v n cm tip l tip tc thc hin chng trnh chnh. Ngt i vi ngi mi hc vi iu khin l rt kh hiu, v a s cc ti liu u khng gii thch ngt lm g. C nhiu loi ngt khc nhau nhng tt c u c chung 1 c im, ngt dng cho mc ch a nhim. a tc l nhiu, nhim tc l nhim v. Thc hin nhiu nhim v . Cc bn nhn vo tin trnh ca hm main vi chng trnh c ngt : Chng trnh chnh ang chy, ngt xy ra, thc hin hm ngt ri quay li chng trnh chnh. Chng trnh trong vi iu khin khc vi v d n cm nghe in thoi ca ti ch , thi gian thc hin hm chnh l rt ln,thi gian thc hin hm ngt l rt nh, cho nn thi gian thc thi hm ngt khng nh hng nhiu lm n chc nng hm chnh. Nh vy trong hm ngt cc bn lm 1 vic, trong hm chnh cc bn lm 1 vic

DKS_GROUP Center

Microcontroller Tranning

nh vy coi nh cc bn lm c 2 vic(a nhim) trong 1 quang thi gian tng i ngn c mS, ch thc ra ti 1 thi im vi iu khin ch thc thi 1 lnh. V d : Bn th ngh xem lm th no va iu ch xung PWM iu chnh tc ng c , va c cc cm bin u vo m tc ng c ph thuc u vo cm bin.

DKS_GROUP Center

Microcontroller Tranning

BAI 2: NGN NG Lp trnh C


21.)Cu trc mt chng trnh: //nh km cc file #include <file.h> #include <file.c> //Khai bo bin ton cc unsigned char x,y; int z; long n=0; //Khai bo v nh ngha cc hm void Hm1(void) { //Cc cu lnh } void Hm2(unsigned char x) { //Cc cu lnh } //Hm chnh bt buc chng trnh no cng phI c void main(void) { //Cc cu lnh } Cc cu lnh trong hm chnh c th c li gi cc hm khai bo trn hoc k Khi c li gi hm no th chng trnh nhy n hm thc hin hm xong con tr li quay v chng trnh chnh(hm main) thc hin tip cc hm hoc cu lnh. Cc cu lnh trong C kt thc bng du ; Cc li giI thch c t trong du: M u bng /* kt thc bng */ Nu li giI thch trn 1 dng th c th dng du: //

DKS_GROUP Center

Microcontroller Tranning

Khi lp trnh nn giI thch cc cu lnh khi lnh lm g v sau khi chng trnh ln d sa li. 2.2)Cc loi bin trong C:
Dng bin char unsigned char short unsigned short int unsigned int long unsigned long S Bit 8 8 16 16 16 16 32 32 S Byte 1 1 2 2 2 2 4 4 Min gi tr -128 n +127 0 n 255 -32,768 n +32,767 0 n 65,535 -32,768 n +32,767 0 n 65,535 -2,147,483,648 n+2,147,483,647 0 n 4,294,697,295

Khai bo bin: Cu trc: Kiubin Tnbin; VD: unsigned char x; Khi khai bo bin c th gn lun cho bin gi tr ban u. VD : Thay v: unsigned char x; x=0; Ta ch cn : unsigned char x=0; C th khai bo nhiu bin cng mt kiu mt lc VD: unsigned int x,y,z; Ngoi ra dng cho vi iu khin trnh dch chuyn dng cn h tr cc loi bin sau:
Dng bin bit S Bit 1 S Byte 0 Min gi tr 0;1

DKS_GROUP Center

Microcontroller Tranning

sbit sfr sf16

1 8 16

0 1 2

0;1 0 n 255 0 n 65,535

Trong bit c th dng nh cc bin ca C++ nhng cc loi bin cn li th lin quan n cc thanh ghi hoc a ch cng ca 8051. C ngha l khi khai bo bin kiu bit th khng cn nh a ch trong RAM cho cc bin , cn khi khai bo bin kiu sbit, sfr, sf16 th phi nh r a ch trong RAM v n l cc dng bin c bit gi l special function registers (= cc thanh ghi co chc nng c bit vit tt l SFR) VD: Bit Kiemtra; Sfr P10=0x90; Cc SFR khng cn phi hc thuc ch cn bit, v chng c khai bo trong th vin AT89X51.H v AT89X52.H

2.3)Hm trong C:
Hm trong C c cu trc nh sau: C hai loi hm: Hm tr li gi tr: Cu trc: Kiugiatrhamtrli Tnhm (Bintruynvohm) { // Cc cu lnh x l y } V d : unsigned char Cong(unsigned char x, unsigned char y) { // Cc cu lnh x l y } Hm khng tr li gi tr: Cu trc: void Tnhm (Bintruynvohm) { // Cc cu lnh x l y } V d : void Cong(unsigned char x, unsigned char y)

DKS_GROUP Center

Microcontroller Tranning

{ // Cc cu lnh x l y } Hm c th c bin truyn vo hoc khng. V d: Hm khng c bin truyn vo: unsigned char Tnhm(void) { // Cc cu lnh x l y } Hm c bin truyn vo: void Tnhm(unsigned char x) { // Cc cu lnh x l y } S bin truyn vo ty (min b nh), ngn cch bi du , V d: Void TnHm(unsigned char x, unsigned char y, unsigned char z) { // Cc cu lnh x l y } NgoI ra ring cho vi iu khin phn phm Keil C cn c mt loi hm l hm ngt: Cu trc: Void Tnhm(void) interrupt ngunngt using bngthanhghi { } Hm ngt khng c php tr li gi tr hay truyn tham bin vo hm. Tn hm bt k Interrupt l t kha ch hm ngt

DKS_GROUP Center

Microcontroller Tranning

Ngun ngt t 0 ti 5 theo bng vector ngt


Ngt do Reset h thng Ngt ngoi 0 B nh thi 0 Ngt ngoi 1 B nh thi 1 Port ni tip B nh thi 2 C RST IE0 TF0 IE1 TF1 RI hoc TI TF2 hoc EXF2 a ch vector 0000H 0003H 000BH 0013H 001BH 0023H 002BH

Khong tinh ngat reset he thong bat dau dem tu ngat ngoai 0 nguon ngat la 0. Bng thanh ghi trn ram chn t 0 n 3 2.4)Cc ton t c bn: Php gn: = VD: x=y; // x phI l bin y c th l bin hoc gi tr nhng phI ph hp kiu Php cng: + Php tr: Php nhn: * Php chia: / Cc ton t logic: Bng : == And: && Or: || Not: ! Dch tri: << Dch phi: >> 2.5)Cc cu trc lnh r nhnh, kim tra thng dng: Cu lnh r nhnh if: Cu trc: if (iukin) { // Cc cu lnh x l } Gii thch: Nu iukin ng th x l cc cu lnh bn trong cn sai th nhy qua Cu lnh la chn switch: Cu trc: switch(Bin) { case giatr1: { // Cc cu lnh break; }

DKS_GROUP Center

Microcontroller Tranning

case giatr2: { // Cc cu lnh break; } case giatr3: { // Cc cu lnh break; } case giatrn: { // Cc cu lnh break; } } GiI thch : Ty vo Bin c giatr1 th thc hin cc cu lnh sau tng ng ri thot khi cu trc nh cu lnh break; Bin c giatr2 th thc hin cc cu lnh sau tng ng ri thot . Bin c giatrn th thc hin cc cu lnh sau tng ng ri thot Cu lnh vng lp xc nh for: Cu trc: for( n=m; n<l; n++) {// Cc cu lnh x l } GiI thch: Trong m,l l gi tr (m>l), cn n l bin Thc hin lp cc cu lnh (l-m) ln Cu lnh vng lp khng xc nh while: Cu trc: While( iu kin) { //Cc cu lnh } GiI thch: Thc hin lp cc cu lnh khi iu kin ng, nu cu lnh sai thi thot khi vng lp

2.6) B tin x l: #define : Dng nh ngha. V d:


#define dung 1 #define sai 0 c ngha l dung c gi tr bng 1. Trong chng trnh c th c on code nh sau: bit kiemtra

DKS_GROUP Center

Microcontroller Tranning

if (bit==dung) { // Cc cu lnh} if (bit==sai) { // Cc cu lnh} Vic ny gip lp trnh d sa li hn. Mt s web hay : www.dientuvietnam.net www.atmel.com www.svbkol.org www.keil.com www.diendandientu.com www.iguanalabs.com www.microchip.com www.elechtro-tech-online.com www.diendansv.hutech.edu.vn www.ttvnol.com www.8052.com www.kmitl.ac.th www.ftdichip.com

Bi 2(Tip) Phn 2: S dng Keil C.


Sau khi ci t m ra cc bn c hnh sau: 1> Khi to cho Project:

DKS_GROUP Center

Microcontroller Tranning

to 1 project mi chn Project New project nh sau:

DKS_GROUP Center

Microcontroller Tranning

c hnh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

nh tn v chuyn n th mc bn lu project. Bn nn to mi mt th mc cho 1 project. Ri chn Save.

DKS_GROUP Center

Microcontroller Tranning

c hnh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Trong ny c 1 lot cc hng in t sn xut 8051. Bn lp trnh cho con no th chn con y ,kch chut vo cc du + m rng cc con IC ca cc hng. y ta lp trnh cho AT89C51 ca hng Atmel nn ta chn nh sau:

DKS_GROUP Center

Microcontroller Tranning

Khi chn chip th ngay lp tc ci bng hin ra 1 s tnh nng ca chp cc bn c th nhn thy. 8051 based Fully Static 24Mhz . Nhap OK c ca s nh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Chn No. Chn Yes ch lm cho file lp trnh ca bn thm nng . c ca s sau:

DKS_GROUP Center

Microcontroller Tranning

to 1 file code cc bn chn File New hoc n Ctrl+N. Nh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

c ca s nh sau:

DKS_GROUP Center

Microcontroller Tranning

Cho ca s Text 1 to ra c nh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Tip theo bn chn File Save As hoc Ctrl+S. nh file mc d cha c g. Nh sau:

DKS_GROUP Center

Microcontroller Tranning

c ca s sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Cc bn nhp tn vo text box file name. Ch tn g cng c nhng khng c thiu ui m rng .C . Nhn Save. c ca s sau:

DKS_GROUP Center

Microcontroller Tranning

Trong bn tri mn hnh, ca s project workspace, cc bn m rng ci target 1 ra c nh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Nhp chut phi vo th mc Suorce Group1 c hnh nh trn. Chn Add files to Group Source Group1 add file vo project. c nh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Chn file .C m cc bn va nh. Ca ti l Dieukhienled_IO . Nhn Add 1 ln ri n Close. Nu bn n Add 2 ln n s thng bo l file add bn ch vic OK ri nhn Close. c nh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

By gi nhn trong Source Group 1 thy file Dieukhienled_IO.C . Cc bn nhp chut phi vo vng son tho file Dieukhienled_IO.C nh sau, thm file th vin.Chn Insert #include <AT89X51.H>

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Cc bn bit file l g nu cc bn hc bi trc k theo yu cu ca ti. c nh sau:

DKS_GROUP Center

Microcontroller Tranning

Phn cui cng ca cng vic khi to l cc bn vit li gii thch cho d n ca mnh .Phn ny rt cn thit v n ngi khc hiu mnh lm g tron project ny v khi mnh cn s dng li code c li mnh cn bit n l ci g. Cc bn to li gii thch theo mu sau:

DKS_GROUP Center

Microcontroller Tranning

2> Son tho chng trnh: Cc bn vit chng trnh ca bi 3 vo y lm v d. Khi vit xong 1 dng lnh nn gii thch dng lnh lm g. Nh sau:

DKS_GROUP Center

Microcontroller Tranning

Cc bn nn chia chng trnh nh ti lm. Vi 1 file nh th n hi rm r. Nhng vi 1 file ln khong 1000 dng code th n li rt sng sa. Cc bn nn to 1 file mu ri nh vo 1 file text u mi ln dng ch vic copy ri paste qua ch

DKS_GROUP Center

Microcontroller Tranning

khng nn mi ln to mt ci nh vy li phn tc dng. Pha trn l phn b tin x l v khai bo bin. Tip theo l vit hm tr.

Tip theo l vit hm main. Nh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Ri nhn Ctrl+S. Hoc chn File Save nh file va son tho. Cc bn nhn vo code c th cc bn hiu con AT89C51 n lm g nu cc bn nm vng cc bi trc. Cn nu khng hiu th ti s gii thch li cho cc bn. y l s nguyn l ca 1 led. Project l 8 led(v phc v cho bi 3) nhng ti ch gii thch 1 led l cc bn hiu. Mc ch l lm con led nhp nhy.
R 2 5 V D C 4 7 0 U 1

1 1 P 1 . 0 + R E S 9 E T R 1 1 0 K C 3 1 0 u F / 2 5 V

C 2 3 3 p 1 2 M h z

1 8

X 2

C 1 3 3 p

1 9 2 0 X 1 V S 8 0

S 5 1

Bin Led1 c khai bo (gn cho) chn P0_1 ca vi iu khin bng cu lnh sbit Led1=P1^0; . Gi tr bt bat c nh ngha l 0. Khi cc bn gn : Led1=bat; trong hm main th chn P1_0 ca AT89C51 c mc logic l 0V. Theo s nguyn l: 5V Tr 470 Led1 P1_0 (0 V). C chnh lch p c dng in qua led Led sng. Cc bn c th tnh tan ch ny d dng l ti sao li l tr 470 m. in p mt led l Uak (0,6 n 0,7V) ly =0,6V.in p chn P1_0 l 0V. in p hai u tr : 5V -0,6V = 4,4V. Dng qua tr = dng qua led = 4,4V/470 m xp x 10 mA. Vi dng 10mA n 15mA l led dng sng v sng rt p. Nu dng yu th led m, cn dng ln th cc bn bit sao ri y. Khi cc bn gn: Led1= tat; tc l chn P1_0 c gi tr 1 tng ng in p ca n l 5V . Hiu in th gia hai u +5V v P1_0 l 0V . Nn

VC C

40

DKS_GROUP Center

Microcontroller Tranning

khng c dng qua led Led tt.Nhng nu trong hm main cc bn vit ch c nh sau: While(1) { Led1=bat; Led1=tat; } Khi chy debug th vn thy led nhp nhy. Nhng khi np chng trnh vo chp lp vo mch th led khng nhy hoc ch sng m hoc tt ngm. V lnh Led1=bat; l lnh 1 chu k my , tn s thch anh l 12 Mhz, 1 chu k my c thi gian l 1uS. Va bt ln 1 uS ri li tt ngay. Led khng p ng c tn s cao vy nn khng nhp nhy. Do cn ti hm tr . Bt led ln tr 1 thi gian kh lu(0,5 giy), ri tt led i kh lu(0,5s) ri li bt li to thnh vng lp s c led nhp nhy. Tc dng ca cu lnh while(1) . iu kin bn trong vng while l 1 lun lun ng nn n l vng lp v hn ln. Nu khng c vng while(1) th led ca cc bn ch sng ln 1 ln ri tt v ht chng trnh ri cn u. Phn ny nu bn no mi hc in t th no cng c cu hi thc mc c nhn tin hoc gi mail. 3> Dch chng trnh: Son tho song nhn Ctrl +S nh . Nh xong cc bn bin dch chng trnh bng cch n phm F7 hoc chn Build target l biu tng ngay trn ca s workspace nh trn hnh:

DKS_GROUP Center

Microcontroller Tranning

Cc bn s thy nh sau:

DKS_GROUP Center

Microcontroller Tranning

Trong ca s Output Window ngay pha trn dng ch ny c cc dng ch Compiling Linking Program Size: data =17.0 code =96

DKS_GROUP Center

Microcontroller Tranning

0 error , 0 Warning . Nh vy l OK. Nu khng c nh vy n s bo li v cc bn kim tra xem son tho ng cha. Ti v d xa 1 du ; trong hm main dng : Led1=bat; , gi b i thnh Led1= bat .Ri dch li (n F7) trnh bin dch s bo nh sau:

Syntax error near tre. Sai c php gn tr. Cc bn nhp p tri chut vo dng thng bo ny con tr s ngay dng di dng c li thm du nhn du mi tn

DKS_GROUP Center

Microcontroller Tranning

mu xanh hnh di y, g vo du ; v dch li l OK. Trong chng trnh ln i khi con tr ch n gn ch c li thi v bn phi t tm ra li.

Sau khi dch li c hnh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

4> Chy m phng v sa li. Trc khi debug chng ta khi to nh sau. Cc ban vo Option for target 1.

DKS_GROUP Center

Microcontroller Tranning

c bng sau. Nhp tn s thch anh l 12 Mhz ng vi tn s thch anh.

DKS_GROUP Center

Microcontroller Tranning

Chn OK.

DKS_GROUP Center

Microcontroller Tranning

debug cc bn nhn t hp phm Ctrl + F5. Hoc nhn vo icon c ch D mu trong ci knh lp trn thanh cng c. c ca s sau:

DKS_GROUP Center

Microcontroller Tranning

Trong menu Peripherals(cc thit b ngoi vi) chn IO port , Port 1. c nh sau:

DKS_GROUP Center

Microcontroller Tranning

Cc bn thy 1 ca s nh Parallel Port 1 xut hin l ci m phng cho cng 1 ca AT89C51. Du tch tng ng chn mc cao(5V) , khng tch chn mc thp (0V). Trong menu peripherals cn cc ngoi vi khc nh timer , interrupt, serial. Cc bi sau dng n cc bn nh ly trong ny. chy chng trnh cc bn nhp chut phi vo mn hnh son tho. Ri n F11. Mi ln n s chy 1 lnh. Khi debug nu cc bn ch hm delay lu qu 1000 ln lp . Cc bn nhn Ctrl + F11 b qua hm. Hoc n F10 chy tng dng lnh. Cc bn s thy chn P1_0 thay i gi tr. Bng bn tri , Project workspace by gi c cc thanh ghi. Cc bn c th thy chng thay i. Nhng cc bn khng cn quan tm n cc thanh ghi ny. V mnh hc ngn ng C m. Nu hc asembly th mi phi s dng chng. Cng mt y. Ci bn quan tm nht l ci sec. N cng thay i. V thch anh l 12Mhz, nn mi chu k my l 10-6 giy. Cc bn cn c vo y bit lnh no mt bao nhiu chu k my, lm thi gian thc th cn lm y. Thot khi debug li n Ctrl+F5 hoc n vo icon debug.

DKS_GROUP Center

Microcontroller Tranning

Bi 3: iu khin IO.
3.1)Lp mch :
- Khi ngun 5V cc bn nh lp mch n nhy. - Cc bn lp mch theo s sau:
5 V D C R 1 T O 1 R E S I S 1 R S

I P

D D D D D D

3 4 5 6 7 8 1 2 3 4 5 6 7 8 P P P P P P P P 1 1 1 1 1 1 1 1 . . . . . . . . 0 1 2 3 4 5 6 7 R

VC C

P P P P P P P P E

0 0 0 0 0 0 0 0 A

. . . . . . . .

3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3

9 8 7 6 5 4 3 2 1

2 3 4 5 6 7 8 9 10

40

C 3 1 0 u

/ 2 5 V

9 E

T R 1 1 0 K

C 2 3 3 p 1 2 M h z

1 8

X 2

C 1 3 3 p

1 9 2 0 X 1 V S 8 0 5

S 1

- Hng dn lp mch: * Qui nh : nu linh kin no ti khng nhc n chiu th cc bn lp linh kin chiu no cng c. Hng dc ngoi l ngun 5 V. Hng dc trong l GND. Th t chn cc bn phi nh khng ging th t sp xp tronh hnh v mch. Cch m chn cc bn con chip xui m cc bn nhn dng ch AT89C51/52 xui, chn 1 l chn gn du trn v hnh tam gic nh mu trng. m t trn xung di tri qua phi. S chn con IC tht s m ng th ny. Khi lp mch phi m chn.

DKS_GROUP Center

Microcontroller Tranning

Khng nn lp ngun 12V vo vi ch khi np chp xong lp vo mch mi lp ngun. Khi mun g chp ra phi rt ngun ra ri mi g chp.
1 2 3 4 5 6 7 8 9 U P P P P P P P P R R T I I T T W R X X V 1 1 1 1 1 1 1 1 1 E X X 0 1 2 1 D . . . . . . . . 0 1 2 3 4 5 6 7 S D V P P P P P P P P 4 0 C3 9 . 30 8 . 31 7 . 32 6 . 33 5 . 34 4 . 35 3 . 36 2 . 37 1 / V 3 P0 E1 2/ P 9 E 2N 8 2 . 27 7 2 . 26 6 2 . 25 5 2 . 24 4 2 . 23 3 2 . 22 2 2 . 21 1 2 . 0

S S * Chun b board nh sau: Lp 4 dy ni ngn ni cc sng. Lp 1 dy ni ni hng trn cng vi hng di cng lm ngun +5V. Lp 1 dy ni ni hng gn trn cng vi hng gn di cng lm GND. Lp chp nh hnh. * Bc 1 lp mch dao ng: Lp 1 con t 33pF t chn 19 xung chn 20.(ng hi ti sao). Lp 1 con t 33pF t chn 18 xung chn 20. Ly dy cu t chn 20 xung GND. Lp 1 con thch anh 12M vo chn 18 v 19. * Bc 2 lp mch reset. Lp 1 con tr 10K(nu en cam) t chn 9 xung GND. Lp 1 con t 10uF/50V cc dng ln +5V, cc m vo chn 9. * Bc 3 lp tr bng. chp chy vi ROM trong chn EA phi ln +5V qua 1 in tr. Cng 0 l cng c cc mng h mun thc hin c IO th phi c in tr treo.(Thy ci ny l xem li bi 2). Nn lp 1 con tr bng 10 chn vo cng 0 v chn EA. Chn 1 ca tr bng ( Chn u tin c nt trn mu trng) vo chn 40. Chn 10 ca tr bng vo chn 31.

1 1 1 1 1 1 1 1 1 1 2

0 1 2 3 4 5 6 7 8 9 0

T T 8 9

N N

D A T 0 T 1 R

E A CA L5 P S P P P P P P P P

C 0 0 0 0 0 0 0 0

DKS_GROUP Center

Microcontroller Tranning

Nu khng c tr bng cc bn c th thay tr bng 10 chn bng 9 con tr thng v tr bng 10 chn chnh l 9 con tr u chung 1 u nh trong s mch pha trn. * Bc 4 lp led: d dng khi lp mch nn chng ta lp led theo s nh trn. Lp chn di ca 1 led vo chn 1 vi iu khin chn ngn vo GND. Tng t lp 7 led cn li vo chn 2 n chn 8. * Bc 5 cu 1 dy nh t chn 40 ln ngun 5V.

3.2) Nguyn l hot ng:


Led ni t chn vk xung t vy nu chn vi iu khin 5V th led s sng, nu chn vi iu khin 0V th led s ti. in p 5V v sao led khng chy m li cn sng yu? V vi iu khin 8051 ch c th cung cp dng nh khng 10mA 1 chn nn led sng yu. Cn nu mun led sng p th lp nh sau t dng 5V Chn di ca led Chn ngn ca led Chn vi iu khin. Ci ny s ni sau. * Bc 5 lp ngun: Lp 1 dy t chn 40 ln hng ngun 5V.

3.3) Lp trnh :
Trc ht iu khin 1 led. iu khin 1 led th cc bn ch vic gn chn ni vi led bng 0 hoc 1, th in p chn s l 0V hoc 5V, ty vo in p n s sng hoc ti. Code nh sau: /* ==================================================== Mo ta: Dieu khien den led. Phan cung: 8 led noi tu +5V qua dien tro han dong vao 8 chan cong 1. Thach anh: 12 Mhz Tac gia: Nguyen Huy Thanh. Thoi gian: Bat dau: 1h03 16/7/2005 Hoan thanh: 1h07 16/7/2005 =====================================================*/

DKS_GROUP Center

Microcontroller Tranning

/******************Bo tien xu li*******************************/ #include <AT89X51.H>// Dinh kem file thu vien #define bat 1 // Dinh nghia gia tri bat den led #define tat 0// Dinh nghia gia tri tat den led /************************************************************/ /*******************Khai bao bien toan cuc**********************/ sbit Led1=P1^0; //Khai bao bien Led1 kieu bit chan P1_0 sbit Led2=P1^1; // ... sbit Led3=P1^2; sbit Led4=P1^3; sbit Led5=P1^4; sbit Led6=P1^5; sbit Led7=P1^6; sbit Led8=P1^7;//Khai bao bien Led8 kieu bit chan P1_7 /***********************************************************/ /********************Khai bao ham****************************/ /*----------------Ham tre------------------------------Ham tao thoi gian tre. Dau vao: 1 bien thoi gian. Dau ra: khong ------------------------------------------------------*/ void tre(long time) { long n;// Khai bao bien cuc bo for(n=0; n<time; n++)//Lap time lan { ; // Khong lam gi nop } } /***********************************************************/

DKS_GROUP Center

Microcontroller Tranning

/*******************Ham chinh**************************/ void main(void) { while(1)// Lap vo han { Led1= bat;// Bat led 1 tre(1000);// Tre 1 khoang thoi gian Led1= tat;// Tat led 1 tre(1000);// Tre 1 khoang thoi gian } } /************************************************************/ Nn t g ch khng nn copy paste. * CH : Code ny khc code trong bi 3 s dng Keil C y nh. Ch #define bat 1 v #define tat 0. V led lp kiu khc m.

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

* c th np chng trnh vo chp th fi to ra file .hex. to ra file .hex lm nh sau . Vo Option for target ch chnh tn s thch anh.

DKS_GROUP Center

Microcontroller Tranning

c hnh sau:

DKS_GROUP Center

Microcontroller Tranning

Kch vo tab Output. c hnh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Tch vo check : Create Hex File. Nhp OK. Nhn fm F7 bin dch li . Khi di ca s output window c ch Creating hex file

Creating hex file from Dieukhienled_IO nh ngay trn hnh.

DKS_GROUP Center

Microcontroller Tranning

3.4) Np chp: Cm u cng COM vo cng COM my tnh. Cm ngun vo mch np. Cho chp vo socket 40 chn mu xanh. Rt ch phi cho ng chiu chp khng l hng. Chiu chp ging chiu con chp c sn trong mch(Chp MASTER). M phn mm EZDL4 ln. Thy c ch identifing target chip . Nhy. Gt cn nh socket 40 chn kp chp cho tip xc. Trn EZDL4 s thy ch AT89C51 hoc AT89C52 ty cc bn dng loi chp no. Kch vo Send. Chn ng dn n th mc lu project ca bn chn file : Dieukhienled_IO.hex . Nhn OK. Ch mch bo ch Complete th gt ny trn socket ly chp ra cm vo mch. 3.5) Kt qu: Cm ngun vo mch . Ch khng cm ngc m dng. Nu mch khng chy rt ngun ra kim tra cc ch sau: 1) Kim tra mch dao ng xem t ng gi tr khng, lp ng s khng, lp c lng khng. 2) Kim tra xem t mch reset chn 9 lp ng cc khng, c lng khng. Dng ng h o chn 9 nu 0V hoc xp x 0V l OK. 3) Tr bng lp ng chiu cha, chn 1 vo chn 40. Dng ng h o chn 31(EA) xem c bng 5V khng , nu 5V th OK. 4) Kim tra chn 20 ni GND cha, chn 40 ni +5V cha dng ng h o in p. 5) Kim tra xem lp ng chiu led cha. 6) Cc bn c th lp lng chp hoc do cht lng board ly tay t mnh con chp xung board . Nu vn khng chy th lin lc vi ti. 3.6) iu khin 8 led tng chic 1: Cc bn c th sa li hm main nh sau: void main(void) { while(1)// Lap vo han { Led1= bat;// Bat led 1

DKS_GROUP Center

Microcontroller Tranning

tre(1000);// Tre 1 khoang thoi gian Led1= tat;// Tat led 1 tre(1000);// Tre 1 khoang thoi gian Led2= bat;// Bat led 2 tre(1000);// Tre 1 khoang thoi gian Led2= tat;// Tat led 2 tre(1000);// Tre 1 khoang thoi gian Led3= bat;// Bat led 3 tre(1000);// Tre 1 khoang thoi gian Led3= tat;// Tat led 3 tre(1000);// Tre 1 khoang thoi gian Led4= bat;// Bat led 4 tre(1000);// Tre 1 khoang thoi gian Led4= tat;// Tat led 4 tre(1000);// Tre 1 khoang thoi gian Led5= bat;// Bat led 5 tre(1000);// Tre 1 khoang thoi gian Led5= tat;// Tat led 5 tre(1000);// Tre 1 khoang thoi gian Led6= bat;// Bat led 6 tre(1000);// Tre 1 khoang thoi gian Led6= tat;// Tat led 6 tre(1000);// Tre 1 khoang thoi gian Led7= bat;// Bat led 7 tre(1000);// Tre 1 khoang thoi gian Led7= tat;// Tat led 7 tre(1000);// Tre 1 khoang thoi gian Led8= bat;// Bat led 8 tre(1000);// Tre 1 khoang thoi gian Led8= tat;// Tat led 8 tre(1000);// Tre 1 khoang thoi gian } } iu khin 8 led.

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Ngoi chng trnh ny cc bn c th cho th t cc led tt bt khc nhau c cc kiu nhy khc nhau. 3.7) iu khin out c cng: Nu cc bn nhm chn vi vic iu khin tng chn 1 vit code rt tn cng cc bn c th xut gi tr ra c cng. Trc ht cc bn cn nm cc iu nh sau: - 1 cng c 8 bit t hp 8bit c 28 = 256 trng thi. Khi cc bn a ra cng 1 gi tr a(thp phn) t 0 n 255 th s a s c i ra h nh phn ri a ra cc bit( chn) ca cng. V d: Nu c lnh: P1=1; v 1(10) = 0000 0001(2) nn chn P1_0(bit 0) s bng 1(5V) cn li cc t P1_1(bit 1) n P1_7(bit 7) s bng 0(0V). P1=10; v 10(10) = 0000 1001(2) th s c P1_0 v P1_3 bng 1(5V) cn li cc chn khc s l 0(0V). - Cc bn c th a ra cng 1 gi tr s hex t 0 n ff tng ng t 0 n 255. Cc s c s trong h hex. (HEX)0 1 2 3 4 5 6 7 8 9 A B C D E F (10) 10 11 12 13 14 15 Cch s hex ra s thp phn: c s hex : N(16)=abf1 i ra h s 10 N(10)=1.160 + 15.161+ 11.162+ 10.163= Bm my tnh h nh. i s nh phn sang hex: Gp 4 s nh phn thnh 1 s hex V d: 0010 0001(2) = 21(16) 4 s u c bit 1 = 1 nn 1x21= 2 4 s sau c bit 0 =1 nn 1x20=1. Cc bn thy vt v vi phn ny d bn c hiu hay khng hiu 1 lt na s bit cch lm lin. Cch a ra nh sau: V d lnh P1=1; tng ng vi P1=0x01; P1=10; tng ng vi P1=0x0A; Chng trnh xut ra c cng tng ng vi chng trnh iu khin 8 led tng ci 1 nh sau: void main(void) { while(1)// Lap vo han { P1=0x01;// Bat led 1 tre(1000);// Tre 1 khoang thoi gian

DKS_GROUP Center

Microcontroller Tranning

P1=0x00;// Tat led 1 tre(1000);// Tre 1 khoang thoi gian P1=0x02;// Bat led 2 tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 2 tre(1000);// Tre 1 khoang thoi gian P1=0x04;// Bat led 3 tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 3 tre(1000);// Tre 1 khoang thoi gian P1=0x08;// Bat led 4 tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 4 tre(1000);// Tre 1 khoang thoi gian P1=0x10;// Bat led 5 tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 5 tre(1000);// Tre 1 khoang thoi gian P1=0x20;// Bat led 6 tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 6 tre(1000);// Tre 1 khoang thoi gian P1=0x40;// Bat led 7 tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 7 tre(1000);// Tre 1 khoang thoi gian P1=0x80;// Bat led 8 tre(1000);// Tre 1 khoang thoi gian P1=0x00;// Tat led 8 tre(1000);// Tre 1 khoang thoi gian } } Nh vy g code vn mi tay lm t c mc ch 8 n nhy lin tip cc bn c th lm nh sau: /******************Ham chinh****************************/

DKS_GROUP Center

Microcontroller Tranning

void main(void) { unsigned char n; // Khai bao them bien n cho vong for while(1)// Lap vo han { P1=0x01;// Bat led 1 for(n=0 ; n<8;n++)// Lap 8 lan { P1=P1<<1; // Dich bit xang trai tre(1000); } } } /***********************************************************/ Debug quan st s thay i ca cng 1 thy c li hi ca php dch bit xang tri. hiu thao tc xut ra cng , chn, cc cc bn lm cho mnh 1 v d na nh sau: /***********************Ham chinh*******************************/ void main(void) { unsigned char n; // Khai bao them bien n cho vong for while(1)// Lap vo han { P1=0x01;// Bat led 1 for(n=0 ; n<256;n++)// Lap 8 lan { P1=n; // Dich bit xang trai tre(5000); } } }

DKS_GROUP Center

Microcontroller Tranning

/****************************************************************/ Debug thy s thay i cc cng. 3.8) Kinh nghim : * chuyn i gia cc h s nhanh cc bn dng ci calculator c ngay trong window. Chn Start All programs Accessories Calculator. Trong Calculator cc bn chn menu View Chn scienctific. Cch chuyn i t khm ph nh. * tnh ra s hex nhanh nht . Ti v d mun a chn P3.5 v chn P3.2 xung 0(0V) cn cc chn cn li ta lm nh sau: C cho P3= 100 ; hay 1 gi tr bt k .V code dch khng li c php mi debug c nn phi cho gi tr bt k vo. Dch chng trnh ri nhn Debug. Ra c nh sau:

DKS_GROUP Center

Microcontroller Tranning

Cc bn thy trong ca s m phng cng 3 c ghi gi tr ca cng 3 l : 0xFF tng ng tt c 8 bit l 1111 1111. Gi cc bn b du tch trn chn 3.5 v 3.2 i . m t tri qua phi nh.

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Thy cng 3 c gi tr l 0xDB. Nh vy cc bn mt cng nhm i s nh phn ra s hex. Nu khng dng cch ny l nh trn cc bn phi ngh trong u ra c dy s 1101 1011 ri i qua s HEX kt qu s l 0xDB nhng mt lm.

Bi 4: iu khin Led 7 thanh Anot chung.


4.1) Lp mch :
D 1 9 8 7 6 0 f 1g V a+ b 1 A F G E L E D C D A C D O T T O T C L h E u Dn e d V c+ d o t 1 2 3 4 5 E g C D A B F G C D O T T O T C e d V c- d o t 1 2 3 4 5 h u n g D 1 9 8 7 6 0 f 0g V a- b 1 A B

C hai loi led 7 thanh: Ant chung v Catt chung. Hnh trn l s chn ca hai loi led. N c cu to nh sau:
7 6 4 2 1 1 09 5 D A 1 n o 3 t A 7 A c h u n g D C 1 a 2 A t o t c h u n g B 6 C 4 D 2 E 1 F 1 G D P 09 5

8 3

8 3

Ch l 8 con led u chung 1 u: Ant hoc Catt. Mch lp s dng led Ant chung nh sau:

DKS_GROUP Center

Microcontroller Tranning

A B C D E F G
2 2 2 2 2 2 2 1 2 3 4 5 6 7

U P P P P P P P

3 2 2 2 2 2 2 2 . . . . . . . 0 1 2 3 4 5 6 R

VC C

40

R 3 1 0 K / V S 3 1 P 9 E T R 1 1 0 K + C 3 1 0 u F / 2 5 V

A E

C 2 3 3 p 1 8 1 2 M h z C 1 3 3 p X 2

1 9 2 0 X 1 V S 8 0

S 5 1

- Lp mch: Mch bi trc(iu khin led n) nguyn,ch lp thm vo. + Bc1: Lp 7 in vo 7 chn cng P2 t P2.0 n P2.7( T chn 21 Chn 27) ca vi iu khin. Ch m bit ca cng 2 t di ln trn. + Bc2: Lp led 7 thanh 5 chn pha trn sng, 5 chn pha di sng(Ging lp AT89C51). + Bc 3: Dng dy in cu t cc chn theo s . Chn iu khin thanh A vo in tr ni vo P2.0 v c th n chn iu khin thanh G vo in tr ni vo P2.7. B qua chn iu khin du chm(Dot chn 5 ca led 7 thanh). + Bc 4: Dng dy cu chn 3(hoc chn 8, hoc c hai chn 3 v 8) ln +5V. Lp mch nn dy cu khc mu v r rng trnh nhm ln. - Test led: Cho ngun vo( D nhin led n bi trc vn nhp nhy). Rt 1 u in tr ni vi chn P2.0 ca VK cm xung t thy led 7 thanh sng n A,cm li in tr v v tr c. Tng t test 6

DKS_GROUP Center

Microcontroller Tranning

thanh cn li. Thanh no khng sng th kim tra li xem cm dy tip xc cha. Vn khng sng th led hng thay led khc vo.

4.2) Nguyn l hot ng:


Khi cm ngun vo mch tt c cc chn ca cc cng IO ca VK l 5V( Nu cng 0 khng lp in tr treo th s l 0V). Nhn s mch khng c chnh lch in p nn khng c n no sng. Chng ta mun sng thanh no ch vic a ra in p 0V chn vi iu khin ni vi thanh . Thanh hin Thanh tt Gi tr(P2) hin th s 1: B,C cc thanh cn li 1111 1001 hin th s 2: A,B,D,E,G cc thanh cn li 1010 0100 . hin th s 8: Tt c cc thanh khng thanh no 1000 0000 gfe dcba Bt th 8 P2.7 khng dng. Ngoi ra led 7 thanh cn c th hin th 1 s ch hin th ch B: Ging s 8 Hin th ch A: A,B,C,E,F,G D 1000 1000

4.3) Lp trnh :
Cch 1: Lp trnh d hiu khng cn phi tnh ton nhng phi vit v copy, past v sa nhu. Code nh sau:
#include <AT89X52.H> /* Khai bao cac bien bit gan voi chan vi dieu khien*/ sbit ThanhA = P2^0; sbit ThanhB = P2^1; sbit ThanhC = P3^5; sbit ThanhD = P3^4; sbit ThanhE = P3^3; sbit ThanhF = P2^2; sbit ThanhG = P2^3; /* Khai bao bien */ long n;// Cho vong for /* Khai bao ham */ /* Ham tre */

DKS_GROUP Center

Microcontroller Tranning

void delay(long time) { for(n=0; n<time; n++) { ; } } /* Ham tat tat ca cac thanh */ void tat(void) { ThanhA =1; ThanhB =1; ThanhC =1; ThanhD =1; ThanhE =1; ThanhF =1; ThanhG =1; } /* Cac ham hien thi chu va so */ void so1(void) { tat(); ThanhA =1; ThanhB =0; ThanhC =0; ThanhD =1; ThanhE =1; ThanhF =1; ThanhG =1; } void so2(void) { tat(); ThanhA =0; ThanhB =0; ThanhC =1; ThanhD =0; ThanhE =0; ThanhF =1;

ThanhG =0; } void so3(void) { tat(); ThanhA =0; ThanhB =0; ThanhC =0; ThanhD =0; ThanhE =1; ThanhF =1; ThanhG =0; } void so4(void) { tat(); ThanhA =1; ThanhB =0; ThanhC =0; ThanhD =1; ThanhE =1; ThanhF =0; ThanhG =0; } void so5(void) { tat(); ThanhA =0; ThanhB =1; ThanhC =0; ThanhD =0; ThanhE =1; ThanhF =0;

DKS_GROUP Center

Microcontroller Tranning

ThanhG =0; } void so6(void) { tat(); ThanhA =0; ThanhB =1; ThanhC =0; ThanhD =0; ThanhE =0; ThanhF =0; ThanhG =0; } void so7(void) { tat(); ThanhA =0; ThanhB =0; ThanhC =0; ThanhD =1; ThanhE =1; ThanhF =1; ThanhG =1; } void so8(void) { tat(); ThanhA =0; ThanhB =0; ThanhC =0; ThanhD =0; ThanhE =0; ThanhF =0; ThanhG =0; } void so9(void) {

tat(); ThanhA =0; ThanhB =0; ThanhC =0; ThanhD =0; ThanhE =1; ThanhF =0; ThanhG =0; } void chuA(void) { tat(); ThanhA =0; ThanhB =0; ThanhC =0; ThanhD =1; ThanhE =0; ThanhF =0; ThanhG =0; } void chuB(void) { tat(); ThanhA =0; ThanhB =0; ThanhC =0; ThanhD =0; ThanhE =0; ThanhF =0; ThanhG =0; } void chuC(void) { tat(); ThanhA =0; ThanhB =1; ThanhC =1; ThanhD =0; ThanhE =0;

DKS_GROUP Center

Microcontroller Tranning

ThanhF =0; ThanhG =1; } void chuD(void) { tat(); ThanhA =0; ThanhB =0; ThanhC =0; ThanhD =0; ThanhE =0; ThanhF =0; ThanhG =1; } void chuE(void) { tat(); ThanhA =0; ThanhB =1; ThanhC =1; ThanhD =0; ThanhE =0; ThanhF =0; ThanhG =0; } void chuF(void) { tat(); ThanhA =0; ThanhB =1; ThanhC =1; ThanhD =1; ThanhE =0; ThanhF =0; ThanhG =0; } void chuG(void) { tat();

ThanhA =0; ThanhB =1; ThanhC =0; ThanhD =0; ThanhE =0; ThanhF =0; ThanhG =1; } void chuH(void) { tat(); ThanhA =1; ThanhB =0; ThanhC =0; ThanhD =1; ThanhE =0; ThanhF =0; ThanhG =0; } void chuI(void) { tat(); ThanhA =1; ThanhB =1; ThanhC =1; ThanhD =1; ThanhE =0; ThanhF =0; ThanhG =1; } void chuL(void) { tat(); ThanhA =1; ThanhB =1; ThanhC =1; ThanhD =0; ThanhE =0; ThanhF =0;

DKS_GROUP Center

Microcontroller Tranning

ThanhG =1; } void chuO(void) { tat(); ThanhA =0; ThanhB =0; ThanhC =0; ThanhD =0; ThanhE =0; ThanhF =0; ThanhG =1; } void chuP(void) { tat(); ThanhA =0; ThanhB =0; ThanhC =1; ThanhD =1; ThanhE =0; ThanhF =0; ThanhG =0; } void chuR(void) { tat(); ThanhA =0; ThanhB =0; ThanhC =0; ThanhD =1; ThanhE =0; ThanhF =0; ThanhG =0; /* Ham chinh */ void main(void) {

} void chuS(void) { tat(); ThanhA =0; ThanhB =1; ThanhC =0; ThanhD =0; ThanhE =1; ThanhF =0; ThanhG =0; } void chuU(void) { tat(); ThanhA =1; ThanhB =0; ThanhC =0; ThanhD =0; ThanhE =0; ThanhF =0; ThanhG =1; } void chuY(void) { tat(); ThanhA =1; ThanhB =0; ThanhC =0; ThanhD =0; ThanhE =1; ThanhF =0; ThanhG =0; } while(1) { so0();

DKS_GROUP Center

Microcontroller Tranning

delay(20000); so1(); delay(20000); so2(); delay(20000); so3(); delay(20000); so4(); delay(20000); so5(); delay(20000); so6(); delay(20000); so7(); delay(20000); so8(); delay(20000); so9(); delay(20000); chuA(); delay(20000); chuB(); delay(20000); chuC(); delay(20000); chuD(); delay(20000);

chuE(); delay(20000); chuF(); delay(20000); chuG(); delay(20000); chuH(); delay(20000); chuI(); delay(20000); chuL(); delay(20000); chuO(); delay(20000); chuP(); delay(20000); chuR(); delay(20000); chuS(); delay(20000); chuU(); delay(20000); chuY(); delay(20000); } }

Cch 2: Cc bn vit 1 chng trnh n gin ri dng cng c Debug xem s hex ri vit vo rt ngn gn. V d: Hm hin th s 1:
void so1(void) { tat(); P2=0xF5; }

Cc bn debug cho hin th cng P2 ln. du tch cc n tt(1) , b du tch cc n cn bt(0). Ri c gi tr hex nh ti hng dn bi trc.

DKS_GROUP Center

Microcontroller Tranning

4.4) Np chp:
hng dn. Nu cc bn gp phi vn ca mch np. Thng l: + Treo chip Master: Rt ngun mch np ra, i cht ri cm li. + Khng nhn cng COM. Cc bn nhp chut phi vo Mycomputer, chn Properties Device manage. Nhn vo Scan for hardware change my tnh nhn li cng COM. Ri khi ng li my. + L do khc cc bn th kim tra phn cng mch np. + Vn khng c ti chu. T bi sau s khng c phn ny.

4.5) Kt qu:
Nhn vo hm main cc bn thy chng trnh s hin th s 1 led 7 thanh, tr 1 khong thi gian, ri nhy sang s 2 n s 9 , ri n ch. Nu cc bn khng c hm tr th led s hin th ra sao? Led s hin s 8. V tt c 8 led c bt tt qu nhanh (ch cn >24 Hz) do hin tng lu nh mt cc bn s nhn thy tt c cc led sng ch khng hin s.

4.6) Kinh nghim :


Sau khi thc hin theo cc rt gn nh vit hm s 1 trn cc bn p dng cu trc lnh switch case vit li chng trnh th chng trnh s rt gn.
void Hienthiled(unsigned char x) // Co 1 bien dau vao de xac dinh xem la hien thi so nao { switch(x) { case 1: { tat(); P2=0xF5; break;} // So 1 case 2: { tat(); P2=0xFF; break;}// So 2 case 9: { tat(); P2=0xFF; break;}// So 9 case 10: { tat(); P2=0xFF; break;}// Chu A . case 20: { tat(); P2=0xFF; break; }// Chu Y } }

Cc gi tr trn ch l v d cc bn rt gn v t copy vo. Vi hm hin th led cc bn vit hin cc s v cc ch gi hm main ch cn nh sau:

DKS_GROUP Center

Microcontroller Tranning

void main (void) { while(1) { for(n=0; n<20; n++) { Hienthiled(n); delay(20000); } } }

Phn 1: c 1 phm.
Nhim v:
m s ln phm bm gii hn t 0 n 9 hin th ra led 7 thanh.

5.1) Lp mch nh sau:

DKS_GROUP Center

Microcontroller Tranning

F G E L E D A D

VC C

C D O T N O T C h u n g e d V + d o t c 1 2 3 4 5

2 2 2 2 2 2 2

1 2 3 4 5 6 7

U P P P P P P P 2 2 2 2 2 2 2

1 . . . . . . . 0 1 2 3 4 5 6

40

1 0 8 7 6 9 a 1 f1 g V + b

D 1 2 L E D

R 2 9 1 K + R E S 9 E T C 1 3 0 u F / 2 5 V

R 1 1 0 K

S C 2 3 3 p 1 2 M h z 1 8 P P C 1 3 3 p 1 9 2 0 X 1 V S 8 0 5 1 1 1 . 0 2 . 1 1 C

W 2 4

X 2

S 1

- Mch bi 5 led 7 thanh gi nguyn. Lp mch: qu n gin. Bc 1: Lp 1 nt bm u trn mch. Bc 2: Dng dy cu 1 chn nt bm vi P1.0( Thay th led bi 4). Bc 3: Dng dy cu 1 chn nt bm xung t. Bc 4: Lp 1 t 104 gia 2 chn nt bm. Bc 5: Lp tr vo chn P1.0 v led t +5V vo u tr cn li(Ch ng chiu led. - Test nt bm: Cm ngun vo, nhn nt n sng. Nh nt n tt.

5.2) Nguyn l hot ng:


- Phn nt bm: (khi khng c t 104) ban u chn P1.0 mc cao +5V, nu bm nt 2 u nt bm thng vi nhau. Chn P1.0 thng vi GND. Led sng do c chnh p. Chn P1.0 thng t.

DKS_GROUP Center

Microcontroller Tranning

Nu c t 104 t in c np in, khi bm nt t in s phng in t cc dng sang cc m lm chn P1.0 thng vi GND nhng lu v 0 V hn 1 cht( tr cng). - Khi bm nt theo nguyn l thi bm 1 ci l xung 0 lin, nhng do tip im c kh ca nt bm nn khi bm nt n s c 1 s xung in ch khng phi l bm ci l n xung 0 lun. T 104 gim nhiu . T 104 cng c th b i khng lp v ta c th kh nhiu bng phn mm.

5.3) Lp trnh:
Code bi 5 gi nguyn: son thm mt s hm nh sau hm c phm bm. Hm c s ln n phm.

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Hm hin th s tng ng.

DKS_GROUP Center

Microcontroller Tranning

Hm main c sa li nh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

y l code cc hm b sung:
unsigned char i=0;// Khai bao them bien toan cuc de dem so lan an nut unsigned char Doccongtac(void)// Ham tra lai gia tri unsigned char { if( P1_0 ==0)// Neu nut duoc bam { delay(300);// Tre 1 khoang thoi gian qua xung nhieu while(P1_0 ==0) // Cho toi khi nha tay khoi nut bam { ;//Khong lam gi } i++;// Nha ty thi tang i if( i ==10) i=0;// Quay vong gia tri cua i } return i; } void hienthisolannhanphim(unsigned char solan) { switch(solan)// Tuy vao so lan { case 0: { so0(); break; }// Neu so lan =0 hien so 0 thoat khoi switch case 1: { so1(); break; }// Neu so lan =1 hien so 1 thoat khoi switch case 2: { so2(); break; }// .... case 3: { so3(); break; } case 4: { so4(); break; } case 5: { so5(); break; } case 6: { so6(); break; } case 7: { so7(); break; } case 8: { so8(); break; } case 9: { so9(); break; }// Neu so lan =9 hien so 9 thoat khoi switch } } void main(void) { while(1) { Doccongtac(); // Goi ham doc so lan nhan phim hienthisolannhanphim(i);// Hien thi so lan nhan phim, bien i la bien toan cuc } }

DKS_GROUP Center

Microcontroller Tranning

5.4) Kinh nghim:


- Xem cc gi tr ca bin trong Debug. Sau khi vit xong chng trnh v bin dch chng trnh cc bn vo cng c Debug ca Keil C. c mn hnh sau: Chn View Watch& Call Stack Window.

c nh sau:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Trong khung pha di chnh l Watch& Call Stack Window. Chuyn sang tab watch#1, nhp chut vo ch F2 to edit,nhn F2 v g vo tn bin cn quan st.

DKS_GROUP Center

Microcontroller Tranning

Phn 1 kt thc.

DKS_GROUP Center

Microcontroller Tranning

Chng ta quan st bin I, nn g I vo v c hnh nh trn. Cc bn nhn F11 chy m phng. Mi ln n phm, cho chn P1.0 xung 0 ri ln 1, tng ng vi n phm v nh phm I s tng 1 nh sau: (Khi n phm phi ch hm delay(300) v hm while(P1_0 ==0) xong I mi tng v mnh lp trnh th m.

Gi tr ca I hin th theo s hex.

DKS_GROUP Center

Microcontroller Tranning

Phn 2: c ma trn phm.


Nhim v: Qut bn phm 16 phm bm(4x4), xem phm no c bm, cc phm c nh s t 0 n 15 ri hin th gi tr ra led 7 thanh.

5.1) Lp mch theo s sau:

5V

D 5

C V P 1 R 1 0 3 K + C 1 0 3 u F / 2 5 V P T R 1 0 1 K 1 3 3 3 3 3 3 3 3 . . . . . . . . 0 1 2 3 4 5 6 7 1 H 2 I M H 2 I M

R 1

2 0 K

6 x 8

R R

R R

R R

A B C D E F G
2 2 2 2 2 2 2

40

U 1 2P 3P 4P 5P 6P 7P P

3 2 2 2 2 2 2 2 . . . . . . . 0 1 2 3 4 5 6

1 1

H 2

I M

2 1

H 2

I M 1

3P

H 2

I M

VCC

E R

A E

3 9

1 / V S E

HANG 1
5 1 P H 2 I M 6 1 P H 2 I M 1 7P H 2 I M 8 R R 2 2

LED 7 THANH
C 3 1 2 M h z 3 2 p 1 C 3 8 X 2 1 0

P P P P P P P P S 5 S 1

1 31 31 31 31 31 31 31 3

. . . . . . . .

0 10 21 32 43 54 65 76 7

P P P P P P P P

3 3 3 3 3 3 3 3

. . . . . . . .

0 1 2 3 4 5 6 7

H 2

I M

9 1

H 2

I M

1 1

P0

H 2

I M 1

1P 1 H 2

I M

H1 A2 N G 2
R

11 9 3 2 p 0X V 8

5 P P P P P P P P

P 1

H 2

I M

1 1

3P

H 2

I M

1 1

P4

H 2

I M 1

1P 5 H 2

I M

H1 A6 N G 3
R

HANG 4 COT 1 COT 2 COT 3 COT 4


R

- Lp mch:mch bi led 7 thanh gi nguyn v vi bn phm cc bn hn c ch cn cu vo cng 3 ng th t chn v cu chn 5V ln +5V.

DKS_GROUP Center

Microcontroller Tranning

5.2) Nguyn l qut phm:


- V sao mch phm u theo ma trn. Nu c t 16 nt bm bnh thng phi dng 16 chn vi iu khin. Nu u theo dng ma trn th ch mt 8 chn ta cng c th c c 16 phm bm. - C 2 cch qut phm theo ct v theo hng, ti chn cch qut theo hng, qut theo ct cc bn c th lm tng t. - Bc 1 : Ta a chn P3.0 ni vi Hng 1 xung 0V.Ri ta kim tra gi tr logic ca cc chn P3.4,P3.5,P3.6,P3.7.Nu phm 1 c bm th Ct 1_ P3.4 s c gi tr bng 0. Nu phm 2 c bm th Ct 2_ P3.5 s c gi tr bng 0. Nu phm 3 c bm th Ct 3_ P3.6 s c gi tr bng 0. Nu phm 4 c bm th Ct 4_ P3.7 s c gi tr bng 0. Ta cn c vo xc nh xem phm no c bm. - Bc 2 : Ta a chn P3.1 ni vi Hng 2 xung 0V.Ri ta kim tra gi tr logic ca cc chn P3.4,P3.5,P3.6,P3.7.Nu phm 5 c bm th Ct 1_ P3.4 s c gi tr bng 0. Nu phm 6 c bm th Ct 2_ P3.5 s c gi tr bng 0. Nu phm 7 c bm th Ct 3_ P3.6 s c gi tr bng 0. Nu phm 8 c bm th Ct 4_ P3.7 s c gi tr bng 0. Ta cn c vo xc nh xem phm no c bm. - Bc 3 : Ta a chn P3.2 ni vi Hng 3 xung 0V.Ri ta kim tra gi tr logic ca cc chn P3.4,P3.5,P3.6,P3.7.Nu phm 9 c bm th Ct 1_ P3.4 s c gi tr bng 0. Nu phm 10 c bm th Ct 2_ P3.5 s c gi tr bng 0. Nu phm 11 c bm th Ct 3_ P3.6 s c gi tr bng 0. Nu phm 12 c bm th Ct 4_ P3.7 s c gi tr bng 0. Ta cn c vo xc nh xem phm no c bm. - Bc 4 : Ta a chn P3.3 ni vi Hng 1 xung 0V.Ri ta kim tra gi tr logic ca cc chn P3.4,P3.5,P3.6,P3.7.Nu phm 13 c bm th Ct 1_ P3.4 s c gi tr bng 0. Nu phm 14 c bm th Ct 2_ P3.5 s c gi tr bng 0. Nu phm 15 c bm th Ct 3_ P3.6 s c gi tr bng 0. Nu phm 16 c bm th Ct 4_ P3.7 s c gi tr bng 0. Ta cn c vo xc nh xem phm no c bm. Ta s dng cu lnh if kim tra.

5.3) Lp trnh:
- To 1 project mi, copy phn hin th cc s 09 cc ch AY ca bi trc. Ri b sung cc hm sau. Hm hin th phm n.
void phim_duoc_an(unsigned char phim) { switch(phim)// Tuy vao so lan

DKS_GROUP Center

Microcontroller Tranning

{ case 0: { so0(); break; }// Neu so lan =0 hien so 0 thoat khoi switch case 1: { so1(); break; }// Neu so lan =1 hien so 1 thoat khoi switch case 2: { so2(); break; }// .... case 3: { so3(); break; } case 4: { so4(); break; } case 5: { so5(); break; } case 6: { so6(); break; } case 7: { so7(); break; } case 8: { so8(); break; } case 9: { so9(); break; }// Neu so lan =9 hien so 9 thoat khoi switch } }

Hm qut phm: /*Khai bao 1 mang 4 phan tu nhu sau: quetphim[4]={P0=0xFE,0xFD,0xFB,0xF7}


De dua 0 ra lan luot cac hang phim, khi do neu nut nao duoc an thi chan vi dieu khien se xuong 0.Chu y fai kiem tra phim khoang 100 lan.*/ unsigned char quetphim[4]={0xFE,0xFD,0xFB,0xF7}; // Dinh nghia so lan quet phim #define solanquetphim 100 // Cac ban co the thay doi gia tri nay cho phu hop unsigned char quetbanphim(void) { unsigned char giatribanphim;// Bien de luu gia tri phim an tu 0 den 15 ma hoa 16 phim unsigned char x,y; //Quet 4 hang phim for(x=0; x<4;x++) { P3=quetphim[x];// Dua lan luot cac hang xuong 0 for(y=0;y<solanquetphim;y++)// Kiem tra solanquetphim lan { if(P3_4==0) giatribanphim=0+4*x;// Gia tri phim tuong ung if(P3_5==0) giatribanphim=1+4*x;// Tuy thuoc vao hang x if(P3_6==0) giatribanphim=2+4*x;// La may ma gia tri cua if(P3_7==0) giatribanphim=3+4*x;// gia tri ban phim tuong ung. } } return(giatribanphim); }

Hm Main.
void main(void) { unsigned char i;

DKS_GROUP Center

Microcontroller Tranning

while(1) { i=quetbanphim(); phim_duoc_an(i); } }

Thm cu lnh #define vo u chng trnh:

DKS_GROUP Center

Microcontroller Tranning

Vit hm phm c n:

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Vit hm qut bn phm v hm main.

DKS_GROUP Center

Microcontroller Tranning

5.4) Kinh nghim:


- Cc bn chy Debug xem s thay i gi tr ca bin gi tr bn phm. - Cc bn mi dng 10 phm t 09 . Bi tp cho cc bn l dng phm 16 chn mode: nhn phm 16 th thay i ch hin s thnh hin ch v phm 1 tng ng ch A,phm 2 tng ng ch B v c nh vy. - Cc bn th thay i gi tr #define solanquetphim 100 xem sao. - ng lo lng v cc warning. Cc warning n cnh bo l bn c khai bo 1 s hm m bn khng dng n. Nh hm delay(); hm ch A, vv.

DKS_GROUP Center

Microcontroller Tranning

Nhim v: iu khin hin th LCD 16x2 dng ch www.EmbestDKS.com chy trn mn hnh LCD. C 16 chn nh sau: Chn K I/O M t hiu 1 VSS t 2 VCC Dng ngun 5v 3 VEE Cp ngun iu khin phn 4 RS I RS = 0 chn thanh ghi lnh. RS = 1 chn thanh d liu 5 R/W I R/W = 1 c d liu. R/W = 0 ghi 6 E I/O Cho php 7 DB0 I/O Cc bt d liu 8 DB1 I/O Cc bt d liu 9 DB2 I/O Cc bt d liu 10 DB3 I/O Cc bt d liu 11 DB4 I/O Cc bt d liu 12 DB5 I/O Cc bt d liu 13 DB6 I/O Cc bt d liu 14 DB7 I/O Cc bt d liu Chn 15 v chn 16: ghi l A v K. N l ant v katt ca 1 con led dng sng LCD trong bng ti. Chng ta khng s dng. Nu cc bn mun dng th ni chn A qua 1 in tr t 1K n 5K ln dng 5V, chn K xung t n s sng.

6.1) Lp mch theo s sau:

DKS_GROUP Center

Microcontroller Tranning

C V 1 1 0 K

R C 5 V 1 U 1 2 3 4 5 6 7 C8 9 1 1 1 1 1 1 1 1 1 1 P P P P P P PI P 0R 1P 2P 3P 4P 5P 6P 7P 8P 9X X 1 0 4 6

LCD16x02
J 1 L C D 9 8 7 6 5 4 3 2 1

10

9 8 7 6 5 4 3 2 40

16 15 14 13 12 11 10 0 1 2 3 4 5 6 7 O 5 4 3 2 1 0 G D D D 7 6 5 EN Rw RS

+ C C

3 A

R 1

Y 1 C 3 2

h C 3

Az 1

GND

3 9 1 .P 0 0 . 30 8/ A 1 .P 1 0 . 31 7/ A 1 .P 2 0 . 32 6/ A 1 .P 3 0 . 33 5/ A 1 .P 4 0 . 34 4/ A 1 .P 5 0 . 35 3/ A T 1 O . P 6 R 0 . 3 6P 2 / O A 1 .P 7 0 . 37 1/ A S T E A 3 / V0 P 3 A. 0 L / ER 2 / X9 P D R 3 . 1 P / ST 2 XE 8 D N 3 . P 2 2/ I . 2N 7 7 / T A 0 3 . P 3 2/ I . 2N 6 6 / T A 1 3 . P 4 2/ T . 2 50 5 / A 3 . P 5 2/ T . 2 41 4 / A 3 . P 6 2/ W . 2 3 3 R/ A 3 . P 7 2/ R . 2 2 D2 / A T A P L 2 2 2. 1 1 / A T A P L 21 . 0 / A VCC

D D D D D D LD D

R 5

2 K

1 1 1 1 1 1

9 8

D D D D D

4 3 2 1 0

20

EN

Rw

RS

DKS_GROUP Center

Microcontroller Tranning

- Hng dn: Cm lun 8 bit d liu ca LCD t D0 n D7 vo cng 2 ca 8051 m khng cn cu dy. tha 6 chn ra ngoi l: EN,RW,RS,Ve, Vcc, GND ra ngoi. Ri dng dy cu chn 1 xung GND, chn 2 ln +5V, chn 3 vo chn gia ca bin tr tinh 5K, 2 chn cn li ca bin tr tinh 1 chn cu ln +5V,1 chn cu xung 0V. 6.2) Nguyn l hot ng ca LCD:

- Chn VCC, VSS v VEE: Cc chn VCC, VSS v VEE: Cp dng ngun - 5v v t tng ng th VEE c dng iu khin tng phn ca LCD. - Chn chn thanh ghi RS (Register Select): C hai thanh ghi trong LCD, chn RS(Register Select) c dng chn thanh ghi, nh sau: Nu RS = 0 th thanh ghi m lnh c chn cho php ngi dng gi mt lnh chng hn nh xo mn hnh, a con tr v u dng v.v Nu RS = 1 th thanh ghi d liu c chn cho php ngi dng gi d liu cn hin th trn LCD. - Chn c/ ghi (R/W): u vo c/ ghi cho php ngi dng ghi thng tin ln LCD khi R/W = 0 hoc c thng tin t n khi R/W = 1. - Chn cho php E (Enable): Chn cho php E c s dng bi LCD cht d liu ca n. Khi d liu c cp n chn d liu th mt xung mc cao xung thp phi c p n chn ny LCD cht d liu trn cc chn d liu. Xung ny phi rng ti thiu l 450ns. - Chn D0 - D7: y l 8 chn d liu 8 bt, c dng gi thng tin ln LCD hoc c ni dung ca cc thanh ghi trong LCD. hin th cc ch ci v cc con s, chng ta gi cc m ASCII ca cc ch ci t A n Z, a n f v cc con s t 0 - 9 n cc chn ny khi bt RS = 1. Cng c cc m lnh m c th c gi n LCD xo mn hnh hoc a con tr v u dng hoc nhp nhy con tr.

DKS_GROUP Center

Microcontroller Tranning

- Ch :Chng ta cng s dng RS = 0 kim tra bt c bn xem LCD c sn sng nhn thng tin. C bn l bt D7 v c th c c khi R/W = 1 v RS = 0 nh sau: Nu R/W = 1, RS = 0 khi D7 = 1 (c bn 1) th LCD bn bi cc cng vic bn trong v s khng nhn bt k thng tin mi no. Khi D7 = 0 th LCD sn sng nhn thng tin mi. Lu chng ta nn kim tra c bn trc khi ghi bt k d liu no ln LCD. - Sau y l bng m lnh ca LCD:
M (Hex) 1 2 4 6 5 7 8 A C E F 10 14 18 1C 80 C0 38 Lnh n thanh ghi ca LCD Xo mn hnh hin th Tr v u dng Gim con tr (dch con tr sang tri) Tng con tr (dch con tr sang phi) Dch hin th sang phi Dch hin th sang tri Tt con tr, tt hin th Tt hin th, bt con tr Bt hin th, tt con tr Bt hin th, nhp nhy con tr Tt con tr, nhp nhy con tr Dch v tr con tr sang tri Dch v tr con tr sang phi Dch ton b hin th sang tri Dch ton b hin th sang phi p con tr v u dng th nht p con tr v u dng th hai Hai dng v ma trn 5 7

- iu khin LCD qua cc bc sau: Bc 0 : Chun b phn cng. Dng tuc vt hay ci g bn c xoay bin tr 5 K iu chnh tng phn ca LCD. Xoay cho n khi cc vung(cc im nh) ca LCD hin ln th xoay ngc bin tr li 1 cht. Bc 1 : Khi to cho LCD.

DKS_GROUP Center

Microcontroller Tranning

Bc 2 : Gn cc gi tr cho cc bit iu khin cc chn RS,RW,EN cho ph hp vi cc ch : Hin th k t ln LCD hay Thc hin 1 lnh ca LCD. Bc 3: Xut byte d liu ra cng iu khin 8 bit d liu ca LCD. Bc 4: Kim tra c bn xem LCD sn sng nhn d liu mi cha. Bc 5: Quay vng li bc 1.

6.3) Lp trnh:
- c th lp trnh cho LCD ta thm vo th vin string.h ca trnh bin dch bng cu lnh:
#include <string.h> - Khai bo cc chn ca LCD gn vi cc cng: /* RS chon thanh ghi =0 ghi lenh =1 ghi du lieu RW doc ghi =0 ghi =1 doc E cho fep chot du lieu xung cao xuong thap toi thieu 450 ns. Bit co ban D7 khi RS=0 RW=1 neu D7=1 LCD ban D7=0 LCD san sang. */ sfr LCDdata = 0xA0;// Cong 2 , 8 bit du lieu P0 co dia chi 0x80, P1 0x90 , P2 0xA0 sbit BF = 0xA7; // Co ban bit 7 sbit RS = P3^5; sbit RW = P3^4; sbit EN = P3^3; - Vit 1 s hm iu khin LCD nh sau: * Hm kim tra LCD c bn hay khng: void wait(void) { long n = 0; EN=1;// Dua chan cho fep len cao RS=0;// Chon thanh ghi lenh RW=1;// Doc tu LCD LCDdata=0xFF;// Gia tri 0xFF while(BF){n++; if(n>100) break;}// Kiem tra co ban // Neu ban dem n den 100 roi thoat khoi while

DKS_GROUP Center

Microcontroller Tranning

EN=0;// Dua xung cao xuong thap de chot RW=0;// Doc tu LCD } * Hm iu khin LCD thc hin 1 lnh: void LCDcontrol(unsigned char x) { EN=1;// Dua chan cho fep len cao RS=0;// Chon thanh ghi lenh RW=0;// Ghi len LCD LCDdata=x;// Gia tri x EN=0;// Xung cao xuong thap wait();// Doi LCD san sang } Hm c 1 bin u vo l cc gi tr trong bng m lnh ca LCD. * Hm khi to LCD: void LCDinit(void) { LCDcontrol(0x30);//Che do 8 bit. LCDcontrol(0x30); LCDcontrol(0x30); LCDcontrol(0x38);// 2 dong va ma tran 5x7 LCDcontrol(0x0C);// Bat con tro LCDcontrol(0x06);// Tang con tro xang fai LCDcontrol(0x01);// Xoa man hinh } * Hm lnh cho LCD hin th 1 k t : void LCDwrite(unsigned char c) { EN=1;// Cho fep muc cao RS=1;// Ghi du lieu RW=0;// Ghi len LCD LCDdata=c;// Gia tri C EN=0;// Xung cao xuong thap wait();// Cho } Hm c 1 bin u vo l m ca k t trong bng ASCII. * Hm lnh cho LCD hin th 1 xu k t ( dng ch): void LCDputs(unsigned char *s,unsigned char row) { unsigned char len; if(row==1) LCDcontrol(0x80);// Ep con tro ve dau dong 1 else LCDcontrol(0xC0);// Ep con tro ve dau dong 2 len=strlen(s);// Lay do dai bien duoc tro boi con tro

DKS_GROUP Center

Microcontroller Tranning

while(len!=0)// Khi do dai van con { LCDwrite(*s);// Ghi ra LCD gia tri duoc tro boi con tro s++;// Tang con tro len--;// Tru do dai } }

Hm c hai bin u vo l : xu k t cn hin th v dng cn hin th xu (1 hoc 2). *s l con tr, tr ti bin s 6.3.1) Con tr l g? B nh ca VK cc bn tng tng nh 1 ci t nhiu ngn. Khi khai bo 1 bin, v d bin kiu unsigned char i; th vk lu bin I vo 1 ngn trong t_ 1 nh trong b nh, d nhin xc nh cc ngn t ngi ta nh s cho tng ngn, cn vk cp cho cc nh trong b nh 1 a ch xc nh nh .V d tip: I c gi tr l 100, th ni dung ca nh lu bin I l 100,i=100, cn con tr tr n I c gi tr l a ch ca nh cha bin I . 6.3.2) Cch s dng con tr: khai bo con tr c thm du * trc tn bin. *I l bin kiu con tr, tr ti bin i(unsigned char). I mang gi tr t 0 n 255, *I mang i ch ca nh cha i.
* Hm hin th 1 s integer: void LCDwritei(int d) { unsigned char i,j,k,l; i=d%10;// Chia lay phan du, duoc chu so hang don vi d=d/10;// Chia lay phan nguyen, duoc nhung chu so da bo hang don vi j=d%10;// Duoc chu so hang chuc d=d/10;// Nhung chu so da bo hang don vi va hang chuc k=d%10;// Duoc hang tram l=d/10;// Duoc hang nghin LCDwrite(48+l);// Hien thi ki tu trong bang ascii LCDwrite(48+k);// Trong bang ascii so 0 co co so thu tu la 48 LCDwrite(48+j); LCDwrite(48+i); }

Hm c 1 bin u vo l s int ln n hng nghn cn hin th.

DKS_GROUP Center

Microcontroller Tranning

* Hm tr: void delay(long time) { long n; for(n=0;n<time;n++) ; } * Hm main: void main(void) { char x; LCDinit(); LCDputs("8052 MCU",1); delay(30000); while(1) { for(x=0;x<16;x++)// Dich 16 lan. { LCDputs("8052 MCU",1); LCDcontrol(0x18);// Dich hien thi sang trai. delay(5000);// Tre } } }

DKS_GROUP Center

Microcontroller Tranning

Nhim v:
To ra xung c rng thay i, 10 cp, tn s 1Khz, iu khin tc ng c (10 cp tc ).

7.1) Lp mch theo s sau:

DKS_GROUP Center

Microcontroller Tranning

1 2 V

5 V

U 2 C

V C C

40

8 2 8

2 1

2 . 0 E A S E 3 1 9 T

R 2 1 0 K + C 3 1 0 u F R 1 1 0 K / 2 5 V

1 E

R o t o r

A
2 C 2 3 3 p 1 2 M h z 1 1 . 0 2 1 . 1 S X 1 V S S 1 1 P X 2 P

S 1 8

W 2

C 1 3 3 p

1 9 2 0

W 2

8 0 5 1

- Hng dn: Chn ca C828 l ECB, nu cm xui transitor nhn vo mt c ch, tnh t bn tri sang. 7.2) Lp trnh: - Cch to xung c rng thay i bng VK. + Cch 1: Nh cc bn iu khin nhp nhy 1 con led, l to ra 1 xung 1 chn ca vi iu khin, nhng xung c rng c nh, tn s ln, cch bn c th iu chnh li hm delay tn s ca n ng 1 Khz. Tuy nhin v l dng hm delay nn trong thi gian c xung ln 1(5V) v thi gian khng c xung(0V) vi iu khin khng lm g c, hn na to xung bng vic delay m cc bn c nhu cu cn 2 b pht xung 2 knh, c cng tn s m khc rng xung th tr nn rt kh khn. Cho nn chng ta dng b nh thi Timer ca vi iu khin trong trng hp ny rt tin. + Cch 2: Dng ngt Timer ca b vi iu khin. Trc ht nhc li v ngt ca vi iu khin:

DKS_GROUP Center

Microcontroller Tranning

+ Ngt l g ? tr li cu hi ny ti xin trch an v ngt trong bi 2 v d cho ngt timer:

Timer

Program excution without interrut Main Program

ISR

ISR

ISR

Main

**

Main

**

Main

**

Main

Program excution with interrupt.

Mt chng trnh chnh khng c ngt th chy lin tc, cn chng trnh c ngt th c khi no iu kin ngt c m bo th con tr s nhy sang hm ngt thc hin xong hm ngt li quay v ng ch c thc hin tip chng trnh chnh. Ti c 1 v d nh sau: Bn ang n cm , c ting in thoi , bn t bt cm ra nghe in thoi , nghe xong li quay v bng bt cm ln n tip. Th qu trnh n cm ca bn l chng trnh chnh,c in thoi gi n l iu kin ngt, bn ra nghe in thoi l thc hin chng trnh ngt(Interrupt Service Rountine),quay v n cm tip l tip tc thc hin chng trnh chnh. Ngt i vi ngi mi hc vi iu khin l rt kh hiu, v a s cc ti liu u khng gii thch ngt lm g. C nhiu loi ngt khc nhau nhng tt c u c chung 1 c im, ngt dng cho mc ch a nhim. a tc l nhiu, nhim tc l nhim v. Thc hin nhiu nhim v .

DKS_GROUP Center

Microcontroller Tranning

Cc bn nhn vo tin trnh ca hm main vi chng trnh c ngt : Chng trnh chnh ang chy, ngt xy ra, thc hin hm ngt ri quay li chng trnh chnh. Chng trnh trong vi iu khin khc vi v d n cm nghe in thoi ca ti ch, thi gian thc hin hm chnh l rt ln,thi gian thc hin hm ngt l rt nh, cho nn thi gian thc thi hm ngt khng nh hng nhiu lm n chc nng hm chnh. Nh vy trong hm ngt cc bn lm 1 vic, trong hm chnh cc bn lm 1 vic nh vy coi nh cc bn lm c 2 vic(a nhim) trong 1 quang thi gian tng i ngn c mS, ch thc ra ti 1 thi im vi iu khin ch thc thi 1 lnh. V d : Bn th ngh xem lm th no va iu ch xung PWM iu chnh tc ng c , va c cc cm bin u vo m tc ng c ph thuc u vo cm bin. Vy ngt l 1 iu kin no xy ra ngu nhin m vi iu khin c th bit do phn cng ca vi iu khin, ri ta cn c vo lp trnh. * V d: Vi ngt b nh thi timer, hay b m counter l khi trn b m th phn cng ca vi iu khin s bo c ngt xy ra v nhy n chng trnh phc v ngt( ISR_ Interrupt Sevice Rountine) 1 cch t ng. Vi ngt ngoi, chn P3.2 chng hn, nu ta khai bo trc chn s dng chn P3.2 s dng cho ngt ngoi ch khng phi s dng cho mc ch IO th c khi c 1 xung xut hin t mch ngoi vi truyn vo chn P3.2 th phn cng ca vi iu khin nhn ra v chuyn ti chng trnh phc v ngt. Vi ngt cng ni tip th c kh thu song 1 k t hay truyn song 1 k t cng ni tip, nu ta c s dng ngt truyn d liu ni tip th vi iu khin s nhy ti chng trnh phc v ngt. - Hm ngt: Cu trc: Void Tnhm(void) interrupt ngunngt using bngthanhghi { // Chuong trinh phuc vu ngat o day

DKS_GROUP Center

Microcontroller Tranning

} Ch v hm ngt: + Hm ngt khng c php tr li gi tr hay truyn bin vo hm. + Tn hm bt k. + interrupt l t kha phn bit hm ngt vi hm thng. + Ngun ngt t 0 ti 5 theo bng vector ngt. + Bng thanh ghi trn ram chn t 0 n 3. Ty theo bn vit hm ngt cho ngun no bn chn ngun ngt t bng sau:
Ngt do Reset h thng Ngt ngoi 0 B nh thi 0 Ngt ngoi 1 B nh thi 1 Port ni tip B nh thi 2 C RST IE0 TF0 IE1 TF1 RI hoc TI TF2 hoc EXF2 a ch vector 0000H 0003H 000BH 0013H 001BH 0023H 002BH

Ring ngt Reset khng tnh, bt u m t 0 v t ngt ngoi 0. V d: ti cn vit hm ngt cho b nh thi timer 1 hm ngt s l.
void timer1_isr(void) interrupt 3 using 0 { // Lenh can thuc hien. }

- V using 0: C 4 bng thanh ghi bn c th chn cho chng trnh phc v ngt, ci ny cng khng quan trng. Trong hm ngt cc bn c th b i t using 0, khi vi iu khin s t sp xp l dng bng thanh ghi no. - Hm ngt khc hm bnh thng ch no. Hm bnh thng v d hm delay, c khi bn gi n th n s c thc hin, c ngha l n c v tr c nh trong tin trnh hm main, c ngha l bn bit n xy ra khi no. Cn hm ngt th khng c tin trnh c nh, iu kin ngt c th xy ra bt k lc no trong tin trnh hm main v c khi no c iu kin ngt th hm ngt s c gi t ng. - s dng ngt ta phi lm cc cng vic sau: 1) Khi to ngt: dng ngt no th cho php ngt hot ng bng cch gn gi tr tng ng cho thanh ghi cho php ngt IE( Interrupt Enable):

DKS_GROUP Center

Microcontroller Tranning

EA IE IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0

ET2 EA --ET2 ES ET1 EX1 EX0 ET0

ES

ET1 EX1 EX0 ET0 iu khin cc ngun ngt (0: khng cho php; 1: cho php) Cho php/ khng cho php ton cc Khng s dng Cho php ngt do b nh thi 2 Cho php ngt do port ni tip Cho php ngt cho b nh thi 1 Cho php ngt t bn ngoi (ngt ngoi 1) Cho php ngt t bn ngoi (ngt ngoi 0) Cho php ngt do b nh thi 0

IE l thanh ghi c th x l tng bt. V d : bn mun cho php ngt timer 1 bn dng lnh: ET1=1; Khng cho php na bn dng lnh : ET1=0; Hoc bn c th dng lnh IE= 0x08; th bit 3 ca thanh ghi IE tc(IE) s ln 1. Nhng cch th nht tin hn. 2) Cu hnh cho ngt: Trong 1 ngt n li c nhiu ch v d: vi ngt timer. Bn phi cu hnh cho n chy ch no, ch timer hay counter, ch 16 bit, hay 8 bit, bng cch gn cc gi tr tng ng cho thanh ghi TMOD( Timer MODe).
TMOD 7 6 GATE C/T Chn model cho b nh thi 1 Bt iu khin cng. Khi c set ln 1, b nh thi ch hot ng trong khi INT1 mc cao Bt chn chc nng m hoc nh thi: 1= m s kin 0= nh thi trong mt khong thi gian Bit chn ch th nht Bit chn ch th 2 M1 M0 Ch Chc nng 0 0 0 Ch nh thi 13 bit 0 1 1 Ch nh thi 16 bit 1 0 2 Ch t ng np li 8 bit

5 4

M1 M0

DKS_GROUP Center

Microcontroller Tranning

3 2 1 0

GATE C/T M1 M0

Ch nh thi chia x Bit iu khin cng cho b nh thi 0 Bit chn chc nng m / nh thi cho b nh thi 0 Bit chn ch th nht cho b nh thi 0 Bit chn ch th 2 cho b nh thi 0

V d ti cu hnh cho b nh thi 1 ch timer,vi b m 8 bit t ng np li(auto reload) dng lnh sau: TMOD=0x20. Cc bn ng lo v vic phi nh bng thanh ghi ny, cc bn khng phi nh ni trng ra nh vy, chuyn sang phn lp trnh cc bn s c hng dn lm th no khng phi nh, nhng ch lp trnh vi C mi lm c cn lp trnh Asem th bt buc phi nh . 3)Bt u chng trnh c ngt: -Trc khi bt u cho chy chng trnh ta phi cho php ngt ton cc c xy ra bng cch gn EA(Enable All interrupt) bng 1, th ngt mi xy ra. -Thng th ngay vo u chng trnh(hm main) trc vng while(1) chng ta t cng vic khi to, cu hnh v cho php kim tra ngt. V d vi b nh thi timer ta gn cc gi tr ph hp cho thanh ghi TCON( Timer CONtrol). TCON iu khin b inh thi TCON.7 TF1 C trn ca b nh thi 1. C ny c set bi phn cng khi c trn, c xo bi phn mm, hoc bi phn cng khi b vi x l tr n trnh phc v ngt TCON.6 TR1 Bit iu khin hot ng ca b nh thi 1. Bit ny c set hoc xo bi phn mm iu khin b nh thi hot ng hay ngng TCON.5 TF0 C trn ca b nh thi 0 TCON.4 TR0 Bit iu khin hot ng ca b

DKS_GROUP Center

Microcontroller Tranning

nh thi 0 TCON.3 IE1 C ngt bn ngoi 1 (kch khi cnh). C ny c set bi phn cng khi c cnh m (cung) xut hin trn chn INT1, c xo bi phn mm, hoc phn cng khi CPU tr n trnh phc v ngt TCON.2 IT1 C ngt bn ngoi 1 (kch khi cnh hoc mc). C ny c set hoc xo bi phn mm khi xy ra cnh m hoc mc thp ti chn ngt ngoi TCON.1 IE0 C ngt bn ngoi 0 (kch khi cnh) TCON.0 IT0 C ngt bn ngoi 0 ( kch khi cnh hoc mc) V d chy b nh thi timer 1 ta dng cu lnh: TR1=0; TR1(Timer Run 1). Cn bn no thch kh th:TCON=0xxx; Cn cc loi ngt khc qu trnh tng t, y l kha hc c bn ch lm vic vi ngt timer, trong kha nng cao s c cc ngt cn li, tuy nhin lm vic c vi ngt timer th cc ngt khc cc bn cng c th lm tng t, cc bn lm n ngt no th dng ti liu tra bng thanh ghi ca ngt . Ti liu ti s gi cng bi ny. - Quay tr li bi hc: Sau khi khi to song v cho ngt timer 1 chy th iu g xy ra? Khi bt u cho timer 1 chy th b m ca timer s m dao ng ca thch anh, c 12 dao ng ca thch anh(1 chu k my), b m ca timer 1 TL1(Timer Low1) s tng 1,c thn ni timer 1 m s chu k my. i vi ch 8 bt. TL1 l 1 thanh ghi 8 bt, l b m ca b nh thi r ri. N m c t 0, n 255. Nu n m n 256 th b m trn, TL1 quay vng li bng 0, v c ngt TF1(Timer Flag 1) t ng c gn ln 1(bng phn cng ca vi iu khin) nh 1 cng tc t ng bt, v ngt xy ra. Cn vi ch 16 bt, b m ca b nh thi cn 1 thanh ghi 8 bt na l TH1(Timer high 1), nu cu hnh cho timer 1 hot ng ch 16

DKS_GROUP Center

Microcontroller Tranning

bit th khi TL1 trn n s m sang TH1(TH1 s tng 1). Nh vy ta c th m: 216 chu k my( 2 thanh ghi 8+8=16 bt). Ch l khi b m trn ngt s xy ra. Nu ta cn m 256 chu k my th khi khi to ta cho TL1=0; , cn nu khng mun m 256 chu k my m ta ch cn m 100 thi ngt xy ra ri th ta fi lm nh sau: 256-100 = 156; v khi khi to ta gn : TL1=155; v m t 155 n 255 l 100 ln th ngt xy ra. Vi yu cu ca bi. To xung tn s 1Khz Chu k = 1/103 = 0,001 giy= 1 mili giy=1000 uS= 1000 chu k my. Vi 10 cp tc , tc l bn phi to ra c xung 10%, 20%, 30%, 40%, , 90%, 100%. 1 xung nh sau:

5V 0V T : Chu k 1000 miro giy.


Khong thi gian xung ko di 5V l T1. Xung 10% tc l T1/ T= 10%=1/10. Xung 20% T2/T=2/10PWM(Thay i rng xung) By gi ti mi xin ni v phn 2. 7.3) Nguyn l hot ng: - Xung PWM: a ra m transitor, xung vi rng ln hn transitor s m lu hn ng c s quay nhanh hn,d nhin khng tuyn tnh. Khng c xung ng c s khng quay, c xung 100% ng c s quay max.Tuy nhin xung phi ln hn 1 mc no th mi khi ng cho ng c. Cc c tnh ny cc bn tham kho trong gio trnh v my in, kh c in, nu cc bn cn thng s chnh xc. c th thay i 10 cp tc vi chu k 1000uS, ta khi to cho ngt timer: 100 uS ngt 1 ln. Trong hm ngt kim tra xem ta cn cp xung bao nhiu % th ta s gn gi tr cho n. C th nh sau: * Hm khi to ngt. Dng ngt timer 0, 100 uS ngt 1 ln, dng ch 2 8 bit t ng np li ca timer (v mnh ch cn m n 100).TL0 np bng 156. i vi ch 2 khi trn b m TL0 s quay vng gi tr bng 0, nhng sau n li

DKS_GROUP Center

Microcontroller Tranning

c np gi tr lu trong TH0(gi tr np li), do ta ch cn gn gi tr choTL0 v TH0 trong hm khi to, cn cc ch khc 16 bit, 2 timer counter 8 bit, khi trn b m TL0 khng c np li m ta phi t gn li gi tr cho n trong hm ngt.
void khoitaotimer0(void)// Ham khoi tao { EA=0;// Cam ngat toan cuc TMOD=0x02;// Timer 0 che do 2 8 bit auto reload TH0=0x9B;// Gia tri nap lai 155 doi ra so hex TL0=0x9B;// Gia tri khoi tao 155 doi ra so hex ET0=1;// Cho phep ngat timer 0 EA=1;// Cho phep ngat toan cuc TR0=1;// Chay timer 0 bat dau dem so chu ki may }

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

* Hm ngt:
unsigned char dem=0;// Khai bao bien dem de dem tu 1 den 10 unsigned char phantramxung;// Bien chua phan tram xung(0...10) void timer0(void) interrupt 1 //Ngat timer 0 { TR0=0;// Dung chay timer 0 TF0=0;// Xoa co, o che do co tu duoc xoa,che do khac can toi cu viet vao day dem++; if(dem<phantramxung) P2_0=1;// Neu bien dem < phan tram xung thi dua gia tri 1 ra chan, xung 5V else P2_0=0;// Neu dem = phan tram xung if(dem==10) dem=0;// Neu dem du 10 thi gan lai bang 0 de bat dau chu ki moi TR0=1;// Cho chay timer }

c th thay i rng xung th ta lu rng xung vo 1 bin, v hm ngt khng cho truyn bin vo ta khai bo bin l bin ton cc c th gn gi tr mi hm. 100 uS ngt 1 ln xc nh chu k 1000 uS ta cn m t 1 n 10 ta khai bo bin m.
void timer0(void) interrupt 1 //Ngat timer 0 { TR0=0;// Dung chay timer 0 TF0=0;// Xoa co, o che do co tu duoc xoa,che do khac can toi cu viet vao day TH0=0xAB; TL0=0xAB; . TR0=1;// Cho chay timer }

Cu trc hm ngt timer no cng phi theo, do ch 2 t ng np li nn k cn gn gi tr cho TH0 v TL0. V bin dem s m t 1 n 10 nu bng 10 kt thc 1 chu k 10*100 =1000 uS, ta gn li n bng 0 sang chu k mi.
if(dem<phantramxung) P2_0=1;// Neu bien dem < phan tram xung thi dua gia tri 1 ra chan, xung 5V else P2_0=0;// Neu dem = phan tram xung

Cu lnh ny kim tra nu m nh hn phantramxung th s a ra cng gi tr 1, bng hoc ln hn s a ra gi tr 0. Khi vo chng trnh chnh ta ch vic thay i gi tr bin phantramxung th rng xung s thay i.

DKS_GROUP Center

Microcontroller Tranning

* Hm main:
void main(void) { khoitaotimer0(); while(1) { phantramxung=9; delaylong(20000); phantramxung=4; delaylong(20000); } }

DKS_GROUP Center

Microcontroller Tranning

Gi s khi cc bn gn phantramxung=4; Th c mi 100uS ngt xy ra 1 ln, v kim tra bin m. Ln u dem=1 <4 nn gi tr P2_0 = 1 mc cao, ln th 2 , 200 uS, dem =2<4 P2_0 = 1 mc cao, ln th 3, 300uS, dem=3<4, P2_0=1 mc cao, ln th 4, 400uS, dem =4 <4 sai, P2_0=0, bt u xung mc thp, c xung t cao xung thp, dem = 5<4 sai , P2_0=0 mc thp, , dem =10 <4 sai P2_0 mc thp 1000 uS , 400uS cao,

DKS_GROUP Center

Microcontroller Tranning

600uS thp quay vng dem=0, ngt ln th 11, dem=1 < 4 , P2_0=1 mc cao, c xung thp ln cao. PWM 2 chn P2_0 v P3_5, cc bn khai bo thm 1 bin phantramxung2 v a thm dng lnh sau vo hm ngt.
if(dem<phantramxung) P3_5=1;// Neu bien dem < phan tram xung thi dua gia tri 1 ra chan, xung 5V else P3_5=0;// Neu dem = phan tram xung

Ch : Thc ra 1 chu k nh ta va lm khng chnh xc 100% l 1Khz, v ta cha tnh n di ca hm ngt,mi ln ngt 100uS, 10 ln l 1000uS , cn thi gian thc hin hm ngt na, nh vy l chu k ca ta ln hn 1000uS, tn s s <1Khz, nhng thc s sai s khng ng k. Nu cc bn mun chnh xc ti cng chiu lng cc bn. Cc bn chy debug, thch anh ng 12Mhz, quan sat dng sec xem hm ngt din ra trong bao nhiu chu k my, khi np gi tr cho TL0 v TH0 cc bn ly 155 tr i gi tr c ga tr a gn vo, nh vy a+thi gian thc hin hm ngt ng 100uS.

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Ch vo list mode: Chn ch , ri quan st gi tr TMOD ri quay li in vo chng trnh. Ch : V cng quan trng cc bn ch c chy vi ng c loi nh, nu ng c loi to phi c mch iu khin ring khng l s chy chip. Nu khng c mch iu khin cc bn c th lm, c th mn ca ti, khng th chu kh chy m phng.

DKS_GROUP Center

Microcontroller Tranning

DKS_GROUP Center

Microcontroller Tranning

Nhim v: iu khin Led ma trn 8x8. Hin th dng ch chy MTC Chun b: Led ma trn 8x8
8 7 6 5 4 3 2 1

L E

T R

I X

8 x 8

1 0

1 1

1 2

1 3

1 4

1 5

1 6

S chn led ma trn 8x8: Chn Ct Hng Ct Hng 1 9 8 2 2 10 3 7 11 4 6 12 5 1 13 6 4 14 7 3 15 8 6 16

Chn 4 5 3 5 8 7 2 6

DKS_GROUP Center

Microcontroller Tranning

8.1) Lp mch theo s sau:

DKS_GROUP Center

Microcontroller Tranning

1 R

3 1 0 K H ang6 H ang3 C o t4 H ang1 C o t6 C o t7 H ang2 H ang4 U C C C C C C C C o o o o o o o o t3 t3 t3 t3 t3 t3 t3 t3 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9 8P 7P 6P 5P 4P 3P 2P P P P P P P P P P 9 8X X 1 9 E R 0 V 8 0 1 2 A C S GND T C 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 . . . . . . . . 0P 1P P2 P3 P4 P5 P6 P7 /2 /2 /2 /2 /2 /2 /2 /2 A A A A A A A A 2 1 H .2 D0 2 / 0 HA .2 D1 3 / 1 HA . 2 2 D 4 / A2 H . 2 3 D 5 / A3 H . 2 4 D 6 / A4 H . 2 5 D 7 / A5 H . 2 6 D 8 / A6 H . 7 D / A7 X a 8a 9a 1a 1a 1a 1a 1a 1 X n n n n n n n n g g g g g g g g 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1

9 8 7 6 5 4 3 2

0 1 2 3 4 5

.P 0 . P1 .P 2 .P 3 . 4P . 5P . P6 . P7 P

1 0 3 . 1 0 1/ R 3 . 11 2/ T 3 . 12 3/ I N 3 . 13 4/ I N 3 1. 4 5 / T 3 1. 5 6 / T 3 .16 7/ W 3 . 7 / R A 3 0 L2 E9 S E N

0 1 D

D D T 0 T 1 R

E 8 x

D 8

1 1 3

1 01 11 21 31 41 51 6

C 3

p1

C 3

C 1 0

3R 1

2 u 0 F K

20

H ang8 C o t5 C o t3 H ang5 C o t8 H ang7 C o t2 C o t1

DKS_GROUP Center

Microcontroller Tranning

8.2) Nguyn l hot ng:


D 2 D 3 D 4 D 5 D 6 D 7 D 8 D 8 H a n g 1 L D E 2 D L E D 3 D L D E 4 D L E D 5 D L E D 6 D L D E 7 D L E D 8 D L D E 8 D

n g

L D

E 2

L E D 3

L D

E 4

L E D 5

L E D 6

L D

E 7

L E D 8

L D

E 8

n g

L D

E 2

L E D 3

L D

E 4

L E D 5

L E D 6

L D

E 7

L E D 8

L D

E 8

n g

L D

L E D D 3

L D

L E D D 5

L E D D 6

L D

L E D D 8

L D

n g

L D

L E D D 3

L D

L E D D 5

L E D D 6

L D

L E D D 8

L D

n g

L D

E 2

L E D 3

L D

E 4

L E D 5

L E D 6

L D

E 7

L E D 8

L D

E 8

n g

L D

L E D D 3

L D

L E D D 5

L E D D 6

L D

L E D D 8

L D

D C o t1

L E

D C o t2

D C o t3

L E

D C o t4

L E

D C o t5

D C o t6

L E

D C o t7

D C o t8

n g

Mun cho led sng, cp in dng 5V vo hng, 0V vo ct, dng 10mA n 15 mA. V d: mun n led v tr 5x4 sng, ta a in p ct 4(P0_3) xung 0V, in p hng 5(P2_5) ln 5V. Hin th ch: thng k cc im sng thnh ch ri cho cc hng ct in p tng ng. C th dng cng c debug ly gi tr cng tng ng vi cc led sng. Ging nh qut bn phm, a in p 0V ra tng ct ni vi cng 0. Nh vy s c 8 gi tr: 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F phI a vo 1 mng 8 phn t, ri sau a vo 1 vng for tng dn 1 bin tng phn t mng cot[8].

DKS_GROUP Center

Microcontroller Tranning

Vi mi ln 1 chn cng 0 xung 0V ta dng cng 2 a ra 1 gi tr 8 bt iu khin trong 1 ct nhng n no sng. V d mun hng 1 v hng 3 sng th hng 1 v 3 c gi tr 5V cn cc hng khc 0V, ta c gi tr 8 bt sau: 0x05 ( 1010 000). Ti mi thi im ch c mt s n trn 1 ct sng, nhng do ta qut 8 ct vi tn s nhanh, v mt c hin tng lu nh nn ta thy trong 1 thi im ta thy ton b k t. Vi 8 ct ln lt bng 0V ta phI a ra tng ng 8 gi tr 8 bit ra cng 2, do ta fI lu 8 gi tr vo 1 mng 8 k t_ kytu1[8], ta s vit cc k t trn 7 ct. mi k t s cch nhau 1 ct khng sng. Ta khai bo mng kytu1[9] c 9 phn t v phn t u tin c gi tr y ra cng 2 l 0x00 tt ton b ct . Qu trnh iu khin hin th nh sau: Ct 1, hng 1, ct 2 hng 2, , ct 8 , hng 8. lm ch chy: Thm 1 bin vo iu khin th t hin th hng. Hin 1 ch trn led nh trn a ra: Ct 1, hng 1, ct 2 hng 2, , ct 8 , hng 8. Mun ch dch chuyn sang trI ta hin th nh sau: Ct 1, hng 2, ct 2 hng 3, , ct 7, hng 8,ct 8 , hng 1 k t sau. Ct 1, hng 3, ct 2 hng 4, , ct 7 hng 1 k t sau,ct 8 , hng 2 k t sau.

8.3) Code:
#include <REGX51.H> /* Cot tu P0.0 den P0.7 Hang tu P2.0 den P2.7 De quet dua muc logic 0 lan luot ra cong 0 */ /* Ham tre */ void delay(long time) { long n;

DKS_GROUP Center

Microcontroller Tranning

for(n=0; n<time; n++) { ; } } unsigned char kytu1[9];// Mang 9 phan tu chua gia tri cac hang day ra cong 2 unsigned char k=0;// Bien xac dinh cac ky tu /* Ham nap gia tri hien thi cac ky tu vao mang kytu1 co 8 gia tri dua ra va 1 gia tri khong bat den nao de cac ky tu cach nhau 1 cot */ void mahoa(unsigned char x) { switch(x) { // Dau trang case 0: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00; kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00; break; } // Chu M case 1: { kytu1[0]=0x00; kytu1[1]=0xFF; kytu1[2]=0x02; kytu1[3]=0x04; kytu1[4]=0x08; kytu1[5]=0x04; kytu1[6]=0x02; kytu1[7]=0xFF; kytu1[8]=0x00; break; } // Chu T case 2: { kytu1[0]=0x00; kytu1[1]=0x01; kytu1[2]=0x01; kytu1[3]=0x01; kytu1[4]=0xFF; kytu1[5]=0x01; kytu1[6]=0x01; kytu1[7]=0x01; kytu1[8]=0x00; break; } // Chu C case 3: { kytu1[0]=0x00; kytu1[1]=0x7E; kytu1[2]=0x81; kytu1[3]=0x81; kytu1[4]=0x81; kytu1[5]=0x81; kytu1[6]=0x42; kytu1[7]=0x00; kytu1[8]=0x00; break; } // Dau trang case 4: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00; kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00; break; } } } /* Ham quet led ma tran_ vua hien thi vua dich ky tu dan sang trai*/ void hienthi(void) {

DKS_GROUP Center

Microcontroller Tranning

unsigned char n,m,lap; unsigned char cot[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; // Cac phan tu quet cot for(m=0; m<8 ; m++)// Dich hien thi { for(lap=0; lap<10; lap ++) // Lap hien thi { for(n=0; n<8 ; n++)// Quet cot { if((n+m)<9 )// Neu n+m < 9 hien thi ky tu 1 { mahoa(k); // Nap cac gia tri ma hoa ky tu dua ra cac hang (Cong 2) P0=cot[n]; // Day gia tri 0V ra cong 0 (cac cot) P2=kytu1[n+m];// Day cac gia tri cac hang (ma hoa ky tu) ra cong 2(cac hang) delay(45);// Tre du de led sang } if((n+m) > 7)// Neu n+m >7 hien thi ky tu 2 { mahoa(k+1);// Nap gia tri ma hoa ky tu tiep de dua ra cac hang(Cong 2) P0=cot[n];// Day gia tri logic 0V ra cong 0(cac cot) P2=kytu1[n+m-8];// Day cac gia tri cac hang (ma hoa ky tu) ra cong 2(cac hang) delay(45);// Tre du de led sang } P0=0xFF;// Day cac cot len cao P2=0x00;// Dua cac hang xuong thap de tat toan bo cac led. } } } } void main(void) { while(1)// Vong lap vo han. { hienthi(); // Hien thi 2 ky tu dau tien dau trang va chu M k=k+1; // Tang k de hien thi chu M va chu T lan tiep if(k==4) k=0;// Quay vong hien thi

DKS_GROUP Center

Microcontroller Tranning

} }

Ch : Mch led sng u tuy nhin sng yu, do lp trn board chng ta khng lp cc linh kin khuych i dng v n dng led sng p, u. Khi lm mch cc bn thm cc linh kin khuych i hoc n dng n sng u nh ULN2003 hoc ULN 2803 a gi tr logic ra hng, dng transitor hoc dng lun ULN qut ct.

You might also like