You are on page 1of 128

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 1 - S nh 38 ng 36 L Thanh Ngh


www.EmbestDKS.com 048684577





















Nguyn Huy Thanh
C in T 4 K47
i hc BKHN
Leon_heaty@yahoo.com 048392893

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 2 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

Mc Lc:
Bi 1: Gii thiu v vi iu khin.
1.1)Tiu chun trong la chn mt b vi iu khin.
1.2)Vi iu khin v vi x l.
1.3)S chn vi iu khin 8051.
1.4) Mch 8051 ti thiu. (6)
1.5)Cu trc_s khi ca vi iu khin 8051. (8)
1.6)Cc thnh vin khc ca h 8051. (9)
1.7)Ram ni v cc thanh ghi SFR ca 8051. (10)
1.8)Gii thiu s qua cc ngun ngt. (13)
BAI 2 : Ngn ng lp trnh C.
21.)Cu trc mt chng trnh. (14)
2.2)Cc loi bin trong C. (16)
2.3)Hm trong C. (17)
2.4)Cc ton t c bn. (19)
2.5)Cc cu trc lnh r nhnh, kim tra. (19)
















DKS_GROUP Microcontroller Training Center

DKS_GROUP - 3 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 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
Antel
Plips/ Signetis
Siemens
Dallas Semiconductor
www.intel.com/design/mcs51
www.atmel.com
www.semiconductors.philips.com
www.sci.siemens.com
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
RAM
B nh thi
Cc chn vo - ra
Cng ni tip
Ngun ngt
4K byte
128 byte
2
32
1
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.
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 4 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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.
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 : EA = 5V : Chn ROM ni. EA = 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
P3 t chn 10 17 tng ng l cc chn P3_0 P3_7



DKS_GROUP Microcontroller Training Center

DKS_GROUP - 5 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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
S1 S2 S3 S4 S5 S6





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
P0 P1 P2 P3 Port's Bit
P0.0 P1.0 P2.0 P3.0 D0
P0.1 P1.1 P2.1 P3.1 D1
P0.2 P1.2 P2.2 P3.2 D2
P0.3 P1.3 P2.3 P3.3 D3
P0.4 P1.4 P2.4 P3.4 D4
P0.5 P1.5 P2.5 P3.5 D5
P0.6 P1.6 P2.6 P3.6 D6
P0.7 P1.7 P2.7 P3.7 D7
U1
AT89C51
31
19
18
9
12
13
14
15
1
2
3
4
5
6
7
8
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
17
16
29
30 11
10
40
20
EA/VP
X1
X2
RESET
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P TXD
RXD
VCC
VSS
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 6 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
xong,c lnh nhiu hn mt chu k my. C th khi lp trnh s bit lnh
bao nhiu chu k my.
1.4) Mch 8051 ti thiu:


Mch to dao ng:











Chn 9 c mc vi 1 mch ngoi to thnh mch reset. Khi reset VK
hot ng li t u.(Ram b xa, cc thanh ghi b xa)




Mch RESET

















Tan so
12Mhz
33p
Tu gom
Thach anh
33p
Tu gom
U1
8051
19
18
20
X1
X2
VSS
U3
8051
9
40
20
RESET
VCC
VSS
5VDC
+
C4
CAPACITOR POL
R1
R
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 7 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
Mch vi iu khin n gin nht:



Mch ny cha c khi ngun to ngun 5V
cc bn dng con IC sau:
S chn:




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
U1
LM7805/TO
1
2
3
VIN
G
N
D
VOUT
+ C3
10uF/25V
12VDC In
C2
104
5VDC Out
C1
104


Mach vi dieu khien co ban
U3
8051
31
19
18
9
39
38
37
36
35
34
33
32
20
40
EA/VP
X1
X2
RESET
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
GND
VCC
R1
10K
5VDC
C1
33p
+ C3
10uF/25V
C2
33p
R7
R4
10Kx9
R9
12Mhz
U6
LM7805/TO
1 3
2
VIN VOUT
G
N
D
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 8 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
12Mhz
U1
8051
19
18
9
4
0
20
X1
X2
RESET
V
C
C
VSS
+ C3
10uF/25V
5VDC
R1
10K
C2
33p
C1
33p


1.5)Cu trc_s khi ca vi iu khin 8051:























C
O
U
N
T
E
R

I
N
P
U
T
S

OSC
INTERRUPT
CONTROL
4 I/O
PORTS
BUS
CONTROL
SERIAL
PORT
EXTERNAL
INTERRUPTS
CPU
ON - CHIP
RAM
ETC
TIMER 0
TIMER 1
ADDRESS/DATA
TXD RXD
P P P P
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 9 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 8051 8052
ROM trn chp 4K byte 8K byte
RAM 128 byte 256 byte
B nh thi 2 3
Chn vo ra
32 32
Cng ni tip 1 1
Ngun ngt 6 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 .
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:
F0 F7 F6 F5 F4 F3 F2 F1 F0

E0 E7 E6 E5 E4 E3 E2 E1 E0

D0 D7 D6 6D 6C 6B 6A 69 68

B8 - - - BC BB BA B9 B8

B0 B7 B6 B5 B4 B3 B2 B1 B0

A8 AF AE AD AC AB AA A9 A8
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 10 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577


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 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

A0 A7 A6 A5 A4 A3 A2 A1 A0

99 Khng nh a ch tng bt
98 9F 9E 9D 9C 9B 9A 99 98

90 97 96 95 94 93 92 91 90

8D Khng nh a ch tng bt
8C Khng nh a ch tng bt
8B Khng nh a ch tng bt
8A Khng nh a ch tng bt
89 Khng nh a ch tng bt
88 8F 8
E
8D 8C 8B 8A 89 88
87 Khng nh a ch tng bt

83 Khng nh a ch tng bt
82 Khng nh a ch tng bt
81 Khng nh a ch tng bt
80 87 86 8
5
84 83 82 81 80
THANH GHI CHC NNG C BIT
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 11 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
SFR nh a ch tng bit( nhng thanh ghi cn nh i khi lp trnh c bn
C)

Thanh ghi / Bit K hiu Chc nng
TMOD Chn model cho b nh thi 1
7 GATE Bt iu khin cng. Khi c set ln 1, b nh
thi ch hot ng trong khi INT1 mc cao
6 C/T Bt chn chc nng m hoc nh thi:
1= m s kin
0= nh thi trong mt khong thi gian
5 M1 Bit chn ch th nht
4 M0 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
3 GATE Bit iu khin cng cho b nh thi 0
2 C/T Bit chn chc nng m / nh thi cho b nh
thi 0
1 M1 Bit chn ch th nht cho b nh thi 0
0 M0 Bit chn ch th 2 cho b nh thi 0
TF1 TR1 TF1 TR0 IE1 IT1 IE0 IT0
Thanh ghi / Bit K hiu Chc nng
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 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
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 12 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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)
EA ET2 ES ET1 EX1 EX0 ET0
iu khin cc ngun ngt
IE (0: khng cho php; 1: cho php)
IE.7 EA Cho php/ khng cho php ton cc
IE.6 --- Khng s dng
IE.5 ET2 Cho php ngt do b nh thi 2
IE.4 ES Cho php ngt do port ni tip
IE.3 ET1 Cho php ngt cho b nh thi 1
IE.2 EX1 Cho php ngt t bn ngoi (ngt ngoi 1)
IE.1 EX0 Cho php ngt t bn ngoi (ngt ngoi 0)
IE.0 ET0 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 C a ch vector
Reset h thng RST 0000H
Ngt ngoi 0 IE0 0003H
B nh thi 0 TF0 000BH
Ngt ngoi 1 IE1 0013H
B nh thi 1 TF1 001BH
Port ni tip RI hoc TI 0023H
B nh thi 2 TF2 hoc EXF2 002BH

Timer



Main Program
Main
ISR
Main
ISR
Main
ISR
Main
Program excution without interrut
Program excution with interrupt.
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 13 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
* ** * ** * **








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
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 Microcontroller Training Center

DKS_GROUP - 14 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

























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;
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 15 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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: //
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 S SS S Bit Bit Bit Bit
S SS S
Byte Byte Byte Byte
Mi Mi Mi Mi n gi tr n gi tr n gi tr n gi tr
char 8 1 -128 n +127
unsigned char 8 1 0 n 255
short 16 2 -32,768 n +32,767
unsigned short 16 2 0 n 65,535
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 16 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
int 16 2 -32,768 n +32,767
unsigned int 16 2 0 n 65,535
long 32 4
-2,147,483,648
n+2,147,483,647
unsigned long 32 4 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 S SS S Bit Bit Bit Bit S SS S Byte Byte Byte Byte Mi Mi Mi Mi n gi tr n gi tr n gi tr n gi tr
bit 1 0 0 ; 1
sbit 1 0 0 ; 1
sfr 8 1 0 n 255
sf16 16 2 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;
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 17 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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)
{
// 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
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 18 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
}
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
Ngun ngt t 0 ti 5 theo bng vector ngt
Ngt do C a ch vector
Reset h thng RST 0000H
Ngt ngoi 0 IE0 0003H
B nh thi 0 TF0 000BH
Ngt ngoi 1 IE1 0013H
B nh thi 1 TF1 001BH
Port ni tip RI hoc TI 0023H
B nh thi 2 TF2 hoc EXF2 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:
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 19 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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; }
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:
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 20 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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
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 Microcontroller Training Center

DKS_GROUP - 21 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577




to 1 project mi chn Project New project nh sau:
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 22 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

c hnh sau:
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 23 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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 Microcontroller Training Center

DKS_GROUP - 24 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

c hnh sau:

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 25 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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 Microcontroller Training Center

DKS_GROUP - 26 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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 Microcontroller Training Center

DKS_GROUP - 27 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 28 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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


DKS_GROUP Microcontroller Training Center

DKS_GROUP - 29 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 30 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
c ca s nh sau:

Cho ca s Text 1 to ra c nh sau:
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 31 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 32 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
Tip theo bn chn File Save As hoc Ctrl+S. nh file mc d cha c g.
Nh sau:

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 33 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
c ca s sau:

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 34 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 35 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
Trong bn tri mn hnh, ca s project workspace, cc bn m rng ci target 1 ra
c nh sau:


DKS_GROUP Microcontroller Training Center

DKS_GROUP - 36 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 37 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 38 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 39 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 40 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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 Microcontroller Training Center

DKS_GROUP - 41 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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:

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
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 42 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
mu ri nh vo 1 file text u mi ln dng ch vic copy ri paste qua ch
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 Microcontroller Training Center

DKS_GROUP - 43 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

Ri nhn Ctrl+S. Hoc chn File Save nh file va son tho.
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 44 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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.
+ C3
10uF/25V
C2
33p
C1
33p
X1
19
X2
18
RESET
9
P1.0
1
V
C
C
4
0
VSS
20
U1
8051
R1
10K
5VDC
12Mhz
D1
LED
R2
470

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 khng c dng
qua led Led tt.Nhng nu trong hm main cc bn vit ch c nh sau:
While(1)
{
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 45 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 46 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

Cc bn s thy nh sau:

Trong ca s Output Window ngay pha trn dng ch ny c cc dng ch
Compiling
Linking
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 47 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
Program Size: data =17.0 code =96
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 Microcontroller Training Center

DKS_GROUP - 48 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 49 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577



DKS_GROUP Microcontroller Training Center

DKS_GROUP - 50 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 51 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
c bng sau. Nhp tn s thch anh l 12 Mhz ng vi tn s thch anh.


Chn OK.



DKS_GROUP Microcontroller Training Center

DKS_GROUP - 52 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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:

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

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 53 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 54 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 55 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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:
+ C3
10uF/25V
C2
33p
C1
33p
X1
19
X2
18
RESET
9
P1.0
1
V
C
C
4
0
VSS
20
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
EA
31
P0.0
39
P0.1
38
P0.2
37
P0.3
36
P0.4
35
P0.5
34
P0.6
33
P0.7
32
U1
8051
R1
10K
5VDC
12Mhz
D1
D2
D3
D4
D5
D6
D7
D8
1
23456789
1
0
R11
RESISTOR SIP 10

- 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.
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.

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 56 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577












* 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.
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.
U1
AT89C51
31
19
18
9
12
13
14
15
1
2
3
4
5
6
7
8
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
17
16
29
30 11
10
40
20
EA/VP
X1
X2
RESET
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P TXD
RXD
VCC
VSS
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 57 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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
=====================================================*/

/******************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

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 58 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
/************************************************************/

/*******************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
}
}

/***********************************************************/

/*******************Ham chinh**************************/
void main(void)
{
while(1)// Lap vo han
{
Led1= bat;// Bat led 1
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 59 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 60 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 61 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577



DKS_GROUP Microcontroller Training Center

DKS_GROUP - 62 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577



* 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 Microcontroller Training Center

DKS_GROUP - 63 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

c hnh sau:

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 64 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
Kch vo tab Output. c hnh sau:


DKS_GROUP Microcontroller Training Center

DKS_GROUP - 65 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 66 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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
tre(1000);// Tre 1 khoang thoi gian
Led1= tat;// Tat led 1
tre(1000);// Tre 1 khoang thoi gian
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 67 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 68 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577


DKS_GROUP Microcontroller Training Center

DKS_GROUP - 69 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 2
8
= 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.16
0
+ 15.16
1
+ 11.16
2
+ 10.16
3
= 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 1x2
1
= 2
4 s sau c bit 0 =1 nn 1x2
0
=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
P1=0x00;// Tat led 1
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 70 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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****************************/
void main(void)
{
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 71 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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);
}
}

}

/****************************************************************/
Debug thy s thay i cc cng.
3.8) Kinh nghim :
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 72 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
* 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 Microcontroller Training Center

DKS_GROUP - 73 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 74 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 :
a b
dot c V- d e
f g V-
1 2 3 4 5
6 7 8 9 10
A
B
C
DOT D
E
F
G
D10
LED CATOT Chung
a b
dot c V+ d e
f g V+
1 2 3 4 5
6 7 8 9 10
A
B
C
DOT D
E
F
G
D11
LED CATOT Chung


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:

3
7 6 4 2 1 10 9 5
A B C D E F G DP
8
D12A
Catot chung
3
7 6 4 2 1 10 9 5
8
D13A
Anot chung

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

DKS_GROUP - 75 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

+ C3
10uF/25V
C2
33p
C1
33p
R1
10K
5VDC
EA/VP
31
X1
19
X2
18
RESET
9
P2.0
21
P2.1
22
P2.2
23
P2.3
24
P2.4
25
P2.5
26
P2.6
27
V
C
C
4
0
VSS
20
U3
8051
R3
10K
12Mhz
A
B
D
C
G
F
E

- 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
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.
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 76 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 */
void delay(long time)
{
for(n=0; n<time; n++)
{
;
}
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 77 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
}
/* 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;
ThanhG =0;
}

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

void so7(void)
{
tat();
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 78 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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;
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;
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 79 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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;
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;
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 80 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
ThanhC =0;
ThanhD =1;
ThanhE =0;
ThanhF =0;
ThanhG =0;
}

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;
}


/* Ham chinh */
void main(void)
{
while(1)
{
so0();
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();
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 81 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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.
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 :
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 82 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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:
void main (void)
{
while(1)
{
for(n=0; n<20; n++)
{
Hienthiled(n);
delay(20000);
}
}
}








DKS_GROUP Microcontroller Training Center

DKS_GROUP - 83 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577


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:

+ C3
10uF/25V
C2
33p
C1
33p
X1
19
X2
18
RESET
9
P2.0
21
V
C
C
4
0
VSS
20
P2.1
22
P1.0
1
P1.1
2
P2.2
23
P2.3
24
P2.4
25
P2.5
26
P2.6
27
U1
8051
R1
10K
5VDC
12Mhz
1 2
SW1
C4
CAP NP
D12
LED
R29
1K
a b
dot c V+ d e
f g V+
1 2 3 4 5
6 7 8 9 10
A
B
C
DOT D
E
F
G
D11
LED ANOT Chung


- 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.
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 84 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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.
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 Microcontroller Training Center

DKS_GROUP - 85 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 86 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

Hm hin th s tng ng.


DKS_GROUP Microcontroller Training Center

DKS_GROUP - 87 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

Hm main c sa li nh sau:

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 88 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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 Microcontroller Training Center

DKS_GROUP - 89 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 90 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577


DKS_GROUP Microcontroller Training Center

DKS_GROUP - 91 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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 Microcontroller Training Center

DKS_GROUP - 92 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
Phn 1 kt thc.

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.

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 93 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
Gi tr ca I hin th theo s hex.



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
5V
C1
33p
C2
33p
+ C3
10uF/25V
R1
10K
5VDC
5V 5V 5V
EA/VP
31
X1
19
X2
18
RESET
9
P2.0
21
P2.1
22
P2.2
23
P2.3
24
P2.4
25
P2.5
26
P2.6
27
V
C
C
4
0
VSS
20
P3.1
11
P3.2
12
P3.3
13
P3.4
14
P3.5
15
P3.6
16
P3.7
17
P3.0
10
U3
8051
R3
10K
12Mhz
C
B
A
E
D
G
F
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
5V
LED 7 THANH
HANG 2
HANG 1
COT 4
COT 3
COT 2
COT 1
HANG 4
HANG 3 P3.2
R21
R
R22
R
R23
R
R24
R
R25
R
R26
10Kx8
R27
R
R28
R
P3.0
P3.1
1 2
PHIM 1
1 2
PHIM 2
1 2
PHIM 3
1 2
PHIM 4
1 2
PHIM 5
P3.3
1 2
PHIM 6
P3.4
1 2
PHIM 7
1 2
PHIM 8
1 2
PHIM 9
1 2
PHIM 10
1 2
PHIM 11
1 2
PHIM 12
P3.5
1 2
PHIM 13
P3.6
1 2
PHIM 14
1 2
PHIM 15
1 2
PHIM 16
P3.7


DKS_GROUP Microcontroller Training Center

DKS_GROUP - 94 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
- 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.
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)
{
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 95 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
switch(phim)// 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
}
}
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 Microcontroller Training Center

DKS_GROUP - 96 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
while(1)
{
i=quetbanphim();
phim_duoc_an(i);
}
}
Thm cu lnh #define vo u chng trnh:

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 97 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

Vit hm phm c n:


DKS_GROUP Microcontroller Training Center

DKS_GROUP - 98 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

Vit hm qut bn phm v hm main.

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 99 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

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 Microcontroller Training Center

DKS_GROUP - 100 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577


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 hiu I/O M t
1 V
SS
- t
2 V
CC
- Dng ngun 5v
3 V
EE
- 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 Microcontroller Training Center

DKS_GROUP - 101 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
D5
D6
D7
R
S
R
w
E
N
EN
Rw
RS
RST
9
XTAL2
18
XTAL1
19
G
N
D
2
0
PSEN
29
ALE/PROG
30
EA/VPP
31
V
C
C
4
0
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
P2.7/A15
28
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.5/T1
15
P3.6/WR
16
P3.7/RD
17
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
U1
AT89C51
1
2 3 4 5 6 7 8 9
1
0
R1 10K
5V
VCC
1 2 3 4 5 6 7 8 9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
J1
LCD
R2
5K
Y1
12Mhz
C1
33p
C2
33p
R3
10K
5V
LCD16x02
+ C3
CAPACITOR POL
5V 5V
C6
104
D0
D1
D2
D3
D4

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 102 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

- 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 V
CC
, V
SS
v V
EE
: Cc chn V
CC
, V
SS
v V
EE
: Cp dng ngun -
5v v t tng ng th V
EE
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.
- 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:

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 103 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
M (Hex) Lnh n thanh ghi ca LCD
1 Xo mn hnh hin th
2 Tr v u dng
4 Gim con tr (dch con tr sang tri)
6 Tng con tr (dch con tr sang phi)
5 Dch hin th sang phi
7 Dch hin th sang tri
8 Tt con tr, tt hin th
A Tt hin th, bt con tr
C Bt hin th, tt con tr
E Bt hin th, nhp nhy con tr
F Tt con tr, nhp nhy con tr
10 Dch v tr con tr sang tri
14 Dch v tr con tr sang phi
18 Dch ton b hin th sang tri
1C Dch ton b hin th sang phi
80
p con tr v u dng th nht
C0
p con tr v u dng th hai
38
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.
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
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 104 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
=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
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)
{
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 105 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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
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
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 106 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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.
* 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.
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 107 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
delay(5000);// Tre
}
}
}








































DKS_GROUP Microcontroller Training Center

DKS_GROUP - 108 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577



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:
+ C3
10uF/25V
C2
33p
C1
33p
R1
10K
5VDC
1 2
SW1
1 2
SW2
X1
19
X2
18
RESET
9
P2.0
21
V
C
C
4
0
VSS
20
EA
31
P1.0
1
P1.1
2
U1
8051
12Mhz
3 B
2

C
1

E
C828
1
2
A
-
+
DC Motor
12V
R2
10K

- 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.
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 109 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
+ 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:
+ Ngt l g ? tr li cu hi ny ti xin trch an v ngt trong bi
2 v d cho ngt timer:
Timer



* ** * ** * **




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
Main Program
Main
ISR
Main
ISR
Main
ISR
Main
Program excution without interrut
Program excution with interrupt.
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 110 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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
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
}
Ch v hm ngt:
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 111 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
+ 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 C a ch vector
Reset h thng RST 0000H
Ngt ngoi 0 IE0 0003H
B nh thi 0 TF0 000BH
Ngt ngoi 1 IE1 0013H
B nh thi 1 TF1 001BH
Port ni tip RI hoc TI 0023H
B nh thi 2 TF2 hoc EXF2 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):
EA ET2 ES ET1 EX1 EX0 ET0
iu khin cc ngun ngt
IE (0: khng cho php; 1: cho php)
IE.7 EA Cho php/ khng cho php ton cc
IE.6 --- Khng s dng
IE.5 ET2 Cho php ngt do b nh thi 2
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 112 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
IE.4 ES Cho php ngt do port ni tip
IE.3 ET1 Cho php ngt cho b nh thi 1
IE.2 EX1 Cho php ngt t bn ngoi (ngt ngoi 1)
IE.1 EX0 Cho php ngt t bn ngoi (ngt ngoi 0)
IE.0 ET0 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 Chn model cho b nh thi 1
7 GATE Bt iu khin cng. Khi c set ln 1, b nh
thi ch hot ng trong khi INT1 mc cao
6 C/T Bt chn chc nng m hoc nh thi:
1= m s kin
0= nh thi trong mt khong thi gian
5 M1 Bit chn ch th nht
4 M0 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
3 GATE Bit iu khin cng cho b nh thi 0
2 C/T Bit chn chc nng m / nh thi cho b nh
thi 0
1 M1 Bit chn ch th nht cho b nh thi 0
0 M0 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:
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 113 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
-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 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:
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 114 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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
bit th khi TL1 trn n s m sang TH1(TH1 s tng 1). Nh vy ta c th
m: 2
16
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/10
3
= 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.
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 115 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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
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 Microcontroller Training Center

DKS_GROUP - 116 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577


DKS_GROUP Microcontroller Training Center

DKS_GROUP - 117 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
* 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.
* Hm main:
void main(void)
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 118 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
{
khoitaotimer0();
while(1)
{
phantramxung=9;
delaylong(20000);
phantramxung=4;
delaylong(20000);
}
}

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 119 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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,
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 Microcontroller Training Center

DKS_GROUP - 120 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 121 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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 Microcontroller Training Center

DKS_GROUP - 122 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577


DKS_GROUP Microcontroller Training Center

DKS_GROUP - 123 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577

Nhim v:
iu khin Led ma trn 8x8. Hin th dng ch chy MTC
Chun b:
Led ma trn 8x8

1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
LED MATRIX 1
8x8


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






8.1) Lp mch theo s sau:

DKS_GROUP Microcontroller Training Center

DKS_GROUP - 124 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
Hang6
VCC
C
o
t
3
Cot4
H
a
n
g
1
H
a
n
g
3
Hang4
Hang8
Cot7
H
a
n
g
7
Cot3 Hang3
C2
33p
C
o
t
2
Cot2
Hang1
H
a
n
g
6
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
LED MATRIX 1
8x8
C
o
t
1
H
a
n
g
5
C
o
t
5
10K
H
a
n
g
2
Cot1
Hang7
Cot5
C1
33p
C
o
t
6
C
o
t
8
Hang5
R2
10K
Hang2
U1
8051
29
30
40
2
0
31
19
18
9
39
38
37
36
35
34
33
32
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
PSEN
ALE
VCC G
N
D
EA
X1
X2
RST
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
Cot6
H
a
n
g
4
C
o
t
4
+
C3
10uF
R3
1
2 3 4 5 6 7 8 9
Cot8
Y1
12M
C
o
t
7
H
a
n
g
8



DKS_GROUP Microcontroller Training Center

DKS_GROUP - 125 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
8.2) Nguyn l hot ng:
Hang 1
D4
LED
C
o
t
6
D4
LED
D3
LED
C
o
t
3
D6
LED
D8
LED
C
o
t
5
D8
LED
D6
LED
D5
LED
C
o
t
4
Hang 3
D7
LED
D5
LED
D8
LED
D4
LED
D5
LED
D2
LED
D8
LED
D7
LED
D6
LED
D5
LED
Hang 7
D4
LED
D2
LED
D4
LED
D6
LED
D2
LED
D3
LED
D6
LED
D5
LED
D2
LED
D7
LED
D2
LED
D8
LED
Hang 5
D8
LED
D8
LED
D5
LED
D8
LED
D8
LED
C
o
t
8
C
o
t
2
D2
LED
D5
LED
D6
LED
D7
LED
D2
LED
D8
LED
D8
LED
D3
LED
D8
LED
D2
LED
Hang 2
D4
LED
D4
LED
D8
LED
D3
LED
Hang 4
D3
LED
D3
LED
C
o
t
1
D8
LED
D6
LED
D4
LED
D6
LED
D7
LED
D7
LED
Hang 6
D8
LED
D3
LED
D7
LED
D8
LED
Hang 8
D7
LED
C
o
t
7
D3
LED
D5
LED


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].
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).
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 126 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
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;
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)
{
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 127 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
// 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)
{

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
DKS_GROUP Microcontroller Training Center

DKS_GROUP - 128 - S nh 38 ng 36 L Thanh Ngh
www.EmbestDKS.com 048684577
}
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
}
}
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