You are on page 1of 75

Nhm 1 3dtvt

TRNG I HC IN LC
KHOA IN T - VIN THNG

BO CO
THC TP MN VI X L

ti : Led Cube 8x8x8


Gio vin hng dn: Hong Vn ng
Sinh vin : NHM 1
inh Vit An
Phm Vn ng
V Chung Kin
Lp

: D3_DTVT

Nhm 1 3dtvt

Gii Thiu Chung


1. S khc nhau gia vi x l v vi iu khin
Vi x l, v d nh con chip intel hay ADM trong cc my tnh thng thng,n
khng c RAM,ROM,cng IO v cc thit b ngoi vi on chip. Cn vi iu khin cha
mt b vi x l,RAM,ROM,cng IO v c th cha cc thit b ngoi vi. Trong bi thc
hnh ny chng ta ch nghin cu v vi iu khin.
2. Gii thiu v dng AT89C51
AT89C51 l mt b vi x l 8 bit,loi CMOS,c tc cao v cng sut thp vi
b nh Flash c th lp trnh c.N c sn xut vi cng ngh b nh khng bay hi
mt cao ca hng Atmel, v tng thch vi h MCS-51TM v chn ra v tp lnh.

Nhm 1 3dtvt

S khi ca AT89C51
AT89C51 c cc c trng c bn sau : 4Kbyte Flash,128 byte RAM, 32 ng xut
nhp,hai b nh thi/m 16 bit,mt cu trc ngt hai u tin v 5nguyn nhn ngt,mt post
ni tip song cng,mch dao ng v to xung clock trn chip. AT89C51 c thit k vi logic
tnh cho hot ng c tn s gim xung 0 v h tr hai ch tit kim nng lng c la
chn bng phn mm.Ch ngh dng CPU trong khi vn cho php RAM,cc b dnh
thi/m,port ni tip v h thng ngt tip tc hot ng. Ch ngun gim duy tr ni dung
ca RAM nhng khng cho mch dao ng cung cp xung clock nhm v hiu ha cc hot
ng khc ca chip cho n khi c reset cng tip theo.
Trong h AT89C51 ta i nghin cu vi iu khin 8051
3. Gii thiu chung v 8051
a. S chn:

Nhm 1 3dtvt

L IC ng v dng DIP c 40 chn,mi chn c mt k hiu tn v chc nng nh sau: chn


40 : ni vi ngun VCC (+5v); chn 20: ni vi 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 OE(OutOut Enable) ca EPROM ngoi cho php c cc byte ca chng
trnh; chn 30(ALE: Adress Latch Enable): l tn hiu iu khin xut ra ca 8051 n cho php
phn knh ca bus a ch v bus d liu ca port 0;chn 31(EA:Eteranl Acess): c a xung
thp cho php chn b nh ngoi.i vi 8051 thi EA=5V chn ROM ni, EA=0V chn ROM
ngoi. 32 chn cn li chia lm 4 cng vo ra:
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

Ring cng 3 c 2 chc nng mi chn nh 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 dao ng cho vi iu khin.

Nhm 1 3dtvt

BI 1 : IU KHIN IO VI LED N
1. Lp mch

2. Nguyn l hot ng
Led ni t chn vi iu khin xung t vy nu chn vi iu khin l 5V n s
sng,0V n tt.
3. Lp trnh
Trc ht iu khin 1 LED, iu khin 1 LED ta ch vic gn chn ni t ca
LED vi 0 hoc 1 th in p chn s l 0V hoc 5V tng ng vi in p n
s sang hoc tt.Lm tng t vi cc chn cn li ca vi iu khin ta s c mt dy cc
n LED sang theo mun. y ta s iu khin 8 LED.
CODE:
#include <REGX51.H>

//khai bao thu vien//

#define bat 0 // dinh nghia bat den led//


#define tat 1 //dinh nghia tat den led//
//khai bao bien toan cuc
sbit led1= P2^0;
sbit led2= P2^1;

//khai bao led1 kieu bit chan P2_0//

Nhm 1 3dtvt

sbit led3= P2^2;


sbit led4= P2^3;
sbit led5= P2^4;
sbit led6= P2^5;
sbit led7= P2^6;
sbit led8= P2^7;
//*khai bao ham tre//
void tre (long time)
{
long n;
for (n=0;n<time;n++);
}
//ham chinh//
void main (void)
{
while (1)

//lap vo han//

{
led1=bat;

//bat led 1 //

tre(1000);

//tre mot khoang thoi gian//

led1=tat;

//tat led 1//

tre(1000);

//tre mot khoang thoi gian//

led2=bat;
tre(1000);
led2=tat;

Nhm 1 3dtvt

tre(1000);

led3=bat;
tre(1000);
led3=tat;
tre(1000);

led4=bat;
tre(1000);
led4=tat;
tre(1000);

led5=bat;
tre(1000);
led5=tat;
tre(1000);

led6=bat;
tre(1000);
led6=tat;
tre(1000);

led7=bat;
tre(1000);
led7=tat;

Nhm 1 3dtvt

tre(1000);

led8=bat;
tre(1000);
led8=tat;
tre(1000);

led1=bat;
tre(1000);
led2=bat;
tre(1000);
led3=bat;
tre(1000);
led4=bat;
tre(1000);
led5=bat;
tre(1000);
led6=bat;
tre(1000);
led7=bat;
tre(1000);
led8=bat;
tre(1000);

led8=bat;

Nhm 1 3dtvt

tre(1000);
led8=tat;
tre(1000);

led7=bat;
tre(1000);
led7=tat;
tre(1000);

led6=bat;
tre(1000);
led6=tat;
tre(1000);

led5=bat;
tre(1000);
led5=tat;
tre(1000);

led4=bat;
tre(1000);
led4=tat;
tre(1000);

led3=bat;

Nhm 1 3dtvt

tre(1000);
led3=tat;
tre(1000);

led2=bat;
tre(1000);
led2=tat;
tre(1000);

led1=bat;
tre(1000);
led1=tat;
tre(1000);

}
}
Sau khi chy chng trnh,kim tra li va m phng trn protus ta s c mch sau:

Nhm 1 3dtvt

Tuy nhin,vi cch iu khin tng chn ca vi iu khin nh trn th rt tn


cng,thay cch iu khin tng chn nh thng thng ta c th xut gi tr ra c cng.
Nguyn tc thc hin ca cch ny nh sau: 1 cng c 8 bit t hp ca 8 bit c
28=256 trng thi.Khi a ra cng 1 gi tr a thp phn (0-255) th s a s c i sang
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) cc chn cn li u bng 0V. Chng ta c th
a ra cng 1 gi tr hexa t 0 ti ff tng ng vi 0 ti 255. V d P1=1 tng ng
vi P1=0x01; P1=10 tng ng vi P1=0x0A.Nh vy chng trnh xut ra c cng
tng ng vi chng trnh iu khin 8 LED tng chn nh sau:
#include <AT89X51.H>

/************************************/
void tre(int time)
{
int n;// khai bao bien cuc bo
for(n=0;n<time;n++);

//lap time lan

Nhm 1 3dtvt

}
/*******************************************/
void main()
{

while(1)
{
P2=0xFF;tre(5000);
P2=0xFE;tre(5000);
P2=0xFD;tre(5000);
P2=0xFB;tre(5000);
P2=0xF7;tre(5000);
P2=0xEF;tre(5000);
P2=0xDF;tre(5000);
P2=0xBF;tre(5000);
P2=0x7F;tre(5000);

P2=0x7f;tre(10000);
P2=0xBF;tre(10000);
P2=0xDF;tre(10000);
P2=0xEF;tre(10000);
P2=0xF7;tre(10000);
P2=0xFB;tre(10000);
P2=0xFD;tre(10000);
P2=0xFE;tre(10000);

Nhm 1 3dtvt

P2=0x7e;tre(5000);
P2=0xBD;tre(5000);
P2=0xDB;tre(5000);
P2=0xE7;tre(5000);

P2=0xE7;tre(5000);
P2=0xDB;tre(5000);
P2=0xBD;tre(5000);
P2=0x7e;tre(5000);
}

Nhm 1 3dtvt

BI 2 : IU KHIN LED 7 THANH DNG ANOT CHUNG


1. Led 7 on
Led 7 on c 2 loi la anot chung v katot chung,n c cu to ch l 8 con led u
chung 1 u anot hoc katot.Led 7 on c tt c 10 chn c k hiu nh hnh v

Mch led s dng led anot chung nh sau:

Nhm 1 3dtvt

2. Nguyn l hot ng
Khi cm ngun vo mch tt c cc chn ca cc cng IO ca vi iu khin 5V(nu
cng 0 khng lp in tr treo th s l 0V). Nhn s mch khng c s chnh lch in
p nn khng c n no sng. Ta mun led no sng ta 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
Ngoi led 7 thanh cn c th hin th 1 ch s.v d :
Hin th ch A: thanh hin A,B,C,E,F,G;thanh tt D;gi tr ca P2 :1000 1000
3. Lp trnh
- Cch 1 : ging nh bi th nht, lp trnh d hiu khng cn tnh ton nhng phi
vit copy,past v chnh sa nhiu
- Cch 2 : cng ging nh bi trn chng ta iu khin tng cng khng theo tng
chn nh cch 1,tuy nhin phi tnh ton nhiu.
y chng ta s lm theo cch 2,ta c code sau:
#include <REG2051.H>// dinh nghia
//khai bao bien toan cuc
unsigned char i;
unsigned char so_dem[] =
{0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
//so
0,
1,
2,
3,
4,
5,
6,
7,
8,
9

Nhm 1 3dtvt

unsigned char so_dem2[] =


0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90};
//so
0,
1,
2,
3,
4,
5,
6,
7,
//chuong trinh con
void taotre(long time )
{
int n;
for(n=0;n<time;n++);
}
//chuong trinh chinh
void main(void)
{
unsigned char j=0;
//khai bao bien
P1 = 0x00;
while(1)
//tao vong lap 99
{
for(i=0;i<10;i++)
//chay dem

{0x00 ,
8,

{
P1 = (so_dem2[i]|so_dem[j]); //khai bao hang don vi
taotre(7000);
//tao tre
if(i==9)
{
j++;
P1=(so_dem[j]|so_dem2[i]); //khai bao hang chuc
if(j==10)
//cho hang
chuc den 9 roi ve 0
j=0;
}
}
}
}
Sau khi chy chng trnh v kim tra li th kt qu hin th trn protus nh sau :

Nhm 1 3dtvt

Nhm 1 3dtvt

BI 3 : C BN PHM
(c ma trn phm)
1. Nhim v : quyt bn phm 16 phm (4x4),xem phm no c bm,cc phm c nh

s t 0 n 15 ri hin th ra led 7 thanh.


2. S bn phm :

3. Nguyn l qut :
- V sao mch phm u theo ma trn? v nu c 16 nt bm thng thng th cn
phi u vi 16 chn vi iu khin. Cn nu u theo ma trn th ta ch cn 8 chn vi
iu khin cng c th iu khin c 16 phm bm
- C hai cch qut phm theo ct v theo hng. y, chng ta chn cch qut phm
theo hng.
- Bc 1: Ta a chn P3.0 ni 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
0V.Nu phm 2 c bm th ct 2_P3.5 s c gi tr bng 0V.Nu phm 3 c
bm th ct 3_P3.6 s c gi tr bng 0V. Nu phm 4 c bm th ct 4_P3.7 s c
gi tr bng 0V. Ta cn c vo xc nh xem phm no c bm.
- Bc 2: Ta a chn P3.1 ni 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
0V.Nu phm 6 c bm th ct 2_P3.5 s c gi tr bng 0V.Nu phm 7 c
bm th ct 3_P3.6 s c gi tr bng 0V. Nu phm 8 c bm th ct 4_P3.7 s c
gi tr bng 0V. Ta cn c vo xc nh xem phm no c bm.

Nhm 1 3dtvt

Bc 3: Ta a chn P3.2 ni hng 3 xung 0V. Ri ta kim tra gi tr logic ca cc


chn P3.4,P3.5,P3.6.P3.7. Nu phm 8 c bm th ct 1_P3.4 s c gi tr bng
0V.Nu phm 9 c bm th ct 2_P3.5 s c gi tr bng 0V.Nu phm 10 c
bm th ct 3_P3.6 s c gi tr bng 0V. Nu phm 11 c bm th ct 4_P3.7 s
c gi tr bng 0V. Ta cn c vo xc nh xem phm no c bm.
- Bc 4: Ta a chn P3.3 ni hng 4 xung 0V. Ri ta kim tra gi tr logic ca cc
chn P3.4,P3.5,P3.6.P3.7. Nu phm 12 c bm th ct 1_P3.4 s c gi tr bng
0V.Nu phm 13 c bm th ct 2_P3.5 s c gi tr bng 0V.Nu phm 14 c
bm th ct 3_P3.6 s c gi tr bng 0V. Nu phm 15 c bm th ct 4_P3.7 s
c gi tr bng 0V. Ta cn c vo xc nh xem phm no c bm.
- Ta s dung cu lnh IF kim tra.
4. Lp trnh
CODE :
#include <regx51.h>
unsigned char Ma[] =
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x8
2};
unsigned char stt=0,a;
sbit H_1 =P3^4;
sbit H_2 =P3^5;
sbit H_3 =P3^6;
sbit H_4 =P3^7;
sbit C_1 =P3^3;
sbit C_2 =P3^2;
sbit C_3 =P3^1;
sbit C_4 =P3^0;
void scan(void);
void delay( unsigned long time )
{
long i;
for(i=0;i<time;i++)
{;}
}
void scan()
{
H_1=1;
H_2=1;
H_3=1;
H_4=1;
C_1=0;
C_2=0;
C_3=0;
C_4=0;
if((!H_1)|(!H_2)|(!H_3)| (!H_4))
{
delay(100);

Nhm 1 3dtvt

if (!H_1)
{
C_1 = 1;
C_2 = 1;
C_3 = 1;
C_4 = 1;
H_1 = 0;
if(!C_1) stt = 1;
else if (!C_2) stt = 2;
else if (!C_3) stt = 3;
else if (!C_4) stt = 4;
}
if (!H_2)
{
C_1 = 1;
C_2 = 1;
C_3 = 1;
C_4 = 1;
H_2 = 0;
if(!C_1)
stt = 5;
else if (!C_2) stt = 6;
else if (!C_3) stt = 7;
else if (!C_4) stt = 8;
}
if(!H_3)
{
C_1 = 1;
C_2 = 1;
C_3 = 1;
C_4 = 1;
H_3 = 0;
if(!C_1)
stt = 9;
else if (!C_2) stt = 10;
else if (!C_3) stt = 11;
else if (!C_4) stt = 12;
}
if(!H_4)
{
C_1 = 1;
C_2 = 1;
C_3 = 1;
C_4 = 1;
H_4 = 0;
if(!C_1)
stt = 13;
else if (!C_2) stt = 14;

Nhm 1 3dtvt

else if (!C_3) stt = 15;


else if (!C_4) stt = 16;
}
}
}
void main()
{
while(1)
{
scan();
P2=Ma[stt];
a=stt/10;
P0=Ma[a];
}
}
Sau khi chy v kim tra li ta c mch chy m phng sau :

Nhm 1 3dtvt

BI 4 : IU KHIN LCD 16X2


1. Nhim v : iu khin hin th LCD 16x2 dng ch : Nhom 18-d3dtvt v hin th thi

gian
2. Gii thiu v LCD:
LCD 16x2 hin th c hai hng mi hng hin th c 16 k t.(LCD c 14 chn
c hin th nh hnh v :

Thng s ca LCD :
+Kch thc hin th : 16 k t x 2 dng
+Mu hin th: en/trng
+Ch giao tip : 8 bt v 4 bt
+C ch hin th : 5x7 hoc 5x10
Cu trc ca LCD :
LCD c tng s 14 chn chia lm 3 nhm:
Nhm 1: (3 chn) Cp ngun VDD, VSS : cp 5V, 0V
VEE: thay i in p thay i tng phn
Nhm 2: (8 chn) Vo ra thng tin vi VK : T chn D0-D7
Nhm 3 : (3 chn) iu khin vic vo ra thng tin : E,RS,R/W
E :(bt /tt ) (cho php/ khng cho php trao i thng tin vi VK )
RS :(loi thng tin trao i)Thng tin trao i l lnh iu khin hay l
d liu hin th

Nhm 1 3dtvt

R/W : (hng truyn ca thng tin) c trng thi t LCD hay thng tin cho VK
LCD hin th.

C th tn gi v bng chc nng ca cc chn c vit trong bng sau :


Interface Pin Connections
Chn K
s
hiu
1
VSS
2
VDD

Tn

M t chc nng

Cp ngun
Cp ngun

0V (GND)
Ni vi dng ngun (+4.5V~+5.5V)
iu chnh in p chn ny s tng gim tng
phn ca LCD. cho nn n thng c ni vi bin
tr.
Nu RS=0 : LCD nhn lnh t VK
Nu RS=1: LCD nhn d liu t VK hin th
Chn chc nng ghi/ c
RS=1 : chn chc nng c d liu t LCD vo VK
RS=0 : chn chc nng ghi d liu t VKvo LCD
hin th
Cho php/ ko cho php LCD trao i thng tin vi
VK.
Ch khi E chuyn t 10 th tn hiu cc chn D0D7 mi c a vo LCD.

VEE

Contrast

RS

Chn thanh ghi

RW

Read/Write

Read Write enable

D0

D1

Data bus 0-7


8 chn ny c ni vi
VK vo/ra thng tin

9
10
11

D2
D3
D4

12

D5

Nhm 1 3dtvt

13
14

D6
D7
T nhng c im v chc nng c cp trn ta c s VDK sau :

3. Nguyn tc hot ng
Cc chn Vcc Vee Vss : cp dng ngun -5V v t tng ng th VEE dng iu
khin ch tng phn ca LCD.
Chn chn thanh ghi RS(regiter select):C hai thanh ghi trong LCD,chn RS c
dng chn thanh ghi,nh sau : nu RS=0 thi thanh ghi m lnh c chn cho php
ngi dng gi 1 lnh chng hn nh xa mn hnh,a con tr v u dngnu 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 trn LCD
khi RW=0 hoc c thng tin t n khi RW=1.

Nhm 1 3dtvt

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
450ns.
Chn D0-D7: y l 8 chn d liu 8bit c dng gi ni dung ln LCD hoc
c ni dung ca cc thanh ghi trong LCD. hin th cc ch ci v cc con s chng ta
s dng m ASCII ca cc ch ci t A-Z,a-f v cc con s t 0-9 n cc chn ny khi
RS=1.
Cng c cc m lnh c gi n LCD xa mn hnh hoc a con tr v u
dng hoc nhp nhy con tr.
*Ch : Chng ta c th s dng RS=0 kim tra bit bn xem LCD c sn sng
nhn thng tin.C bn l bt D7 v c th c c thi R/W=1 v RS=0 nh sau:
Nu R/W=1, RS=0, D7=1(c bn) th LCD bn 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)
Lnh n thanh ghi ca LCD
1
Xa mn hnh hin th
2
Tr v u dng
3
Gim con tr (dch con tr sang bn tri)
4
Tng con tr (dch con tr sang bn phi)
5
Dch hin th sang phi
6
Dch hin th sang tri
7
Tt con tr,tt hin th
8
Tt hin th,bt con tr
A
Bt hin th,tt con tr
C
Bt hin th,nhp nhy con tr
E
Tt con tr,nhp nhy con tr
F
Dch v tr con tr sang tri
10
Dch vi tr con tr sang phi
14
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 2
38
Hai dng v ma trn 5x7
iu khin LCD qua cc bc sau:
- Bc 0: chn b phn cng.dng tuc vt xoay bin tr 5k iu chnh tng phn ca

Nhm 1 3dtvt

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 gi tr cho cc bit iu khin cc chn RS,R/W,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.
4. Lp trnh
Code :
#include <REGX52.H>
#include <string.H>
//------------Khoi tao bien va cac gia tri gan-------------//
sbit RS_LCD = P2^5;
sbit RW_LCD = P2^6;
sbit E_LCD = P2^7;
//---------------Sau day la cac chuong trinh con------------//
unsigned char min,sec,hour,x0,x1;
//ngat do bo dinh thoi 0
void timer0_isr() interrupt 1
{
x0++;
if (x0==100)
{
x0 = 0;
x1++ ;
if (x1 == 100)
{
x1 = 0;
sec ++;
if (sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}

Nhm 1 3dtvt

}
}
}
//--------------Ham tre khoang thoi gian rat ngan phuc vu viec kiem tr co ban---------------//
void delay()
{
unsigned int i;
for(i=0;i<125;i++);
}
//--------------Ham kiem tra co ban (busy_flag)--------------??
void kt_ban()
{
unsigned char x;
P0 = 0xff;
RS_LCD = 0;
RW_LCD = 1;
do
{
E_LCD = 1;
delay();
E_LCD = 0;
x=P0;
x=x&0x80;
}
while(x!=0x80);
}
//---------------Ham ghi lenh giao tiep voi LCD---------------//
void ghi_lenh(unsigned char lenh)
{
kt_ban();
P0 = lenh;
RS_LCD = 0;
// Chon thanh ghi lenh
RW_LCD = 0;
// Chon che do ghi du lieu tu 8051 vao LCD
E_LCD = 1;
delay();
E_LCD = 0;
}//------------*******-----------------//
//-----------Ham ghi ky tu ra LCD------------//
void ghi_kytu(unsigned char kytu)
{
kt_ban();
P0 = kytu;
RS_LCD = 1;
RW_LCD = 0;

// Chon thanh ghi du lieu


//che do ghi

Nhm 1 3dtvt

E_LCD =1;
delay();
E_LCD = 0;

//xung cho phep chot du lieu >450ns

}
//-----------Ham ghi chuoi ky tu ra LCD------------//
void ghi_chuoi(char *str)
{
while(*str)
{
//
delay(50);
ghi_kytu(*str);
str++;
}
}
//-----------Ham khoi tao LCD------------//
void setting_LCD()
{
ghi_lenh(0x38);
ghi_lenh(0x01);
// Xoa man hinh
ghi_lenh(0x0f);
// Co dich hien thi
}
/*CHUONG TRINH CHINH */
void main()
{
TMOD = 0x02; //Bit chon che do thu nhat cho timer0
TH0 = 155;
//155-255 100 lan dem thi ngat
IE = 0x82;
//cho phep ngat tu ben ngoai (ngat ngoai 0)
TR0 = 1;
//Cho phep timer0 chay
setting_LCD();
while(1)
{
ghi_lenh(0x80);
ghi_lenh(0x0c);
ghi_chuoi ("Nhom 18-d3dtvt");
ghi_lenh(0xc0);
ghi_lenh(0x0c);
ghi_kytu(hour/10+0x30); // chuyen sag bang ASCII
ghi_kytu(hour%10+0x30);
ghi_kytu(':') ;
ghi_kytu(min/10+0x30);
ghi_kytu(min%10+0x30);
ghi_kytu(':') ;
ghi_kytu(sec/10+0x30);
ghi_kytu(sec%10+0x30);

Nhm 1 3dtvt

}
}
Hin th m phng :

Nhm 1 3dtvt

BI 5 : LED MA TRN
1. Nhim v : iu khin LED ma trn 8x8 dng ch chy NHOM-18
LED ma trn:

2. C s l thuyt
Da trn nguyn tc nh qut mng hnh,ta c th thc hin vic hin th ma trn n bng
cch qut theo hng v qut theo ct.Mi led trn ma trn c th coi l mt im nh.a ch ca
mi im nh c xc nh ng thi vi b gii m hng v gii m ct.im nh ny dc
xc nh trng thi nh vi iu khin 8051.
Nh vy ti mi thi im ch c trng thi ca mt im nh c xc nh.Tuy nhin
khi xc nh a ch v trng thi ca im nh tip theo th cc im nh cn li s chuyn v
trng thi tt(nu LED ang sng th s tt dn).V th hin th c ton b hnh nh ca ma
trn n.Ta c th qut ma trn nhiu ln vi tc qut rt ln,ln hn nhiu ln thi gian tt
ca n.Mt ngi ch nhn bit c ti a 24hnh/s do nu tc quet rt ln th s khng
nhn ra c s thay i nh ca n m s thy c ton b hnh nh cn hin th.

Nhm 1 3dtvt

3. Nguyn l hot ng

Mun cho led sng ta cp dng 5V vo hng,0V vo ct dng 10mA n 15mA.


V d : mun led v tr 5x4 sng, ta a in p ct 4(P0_3) xung 0V n 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.Ging nh quyt 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 dn 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 1v hng 3 sng th hng 1v 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 1ct 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 phi 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
1ct 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.

Nhm 1 3dtvt

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.
4. Lp trnh :
Code :
#include<REG51.H>
unsigned int m,n,k,p,x,y;
unsigned char hang[8]={0X80,0X40,0X20,0X10,0X08,0X04,0X02,0X01};
unsigned char cot[75]={0XFF,0XFF,0XFF,0XFF,
0X00,0X00,0X9F,0XCF,0XE7,0xF3,0X00,0X00,

//chu N

0XFF,0X00,0X00,0XE7,0XE7,0X00,0X00,//chu H
0XFF,0XFF,0X81,0X00,0X3C,0X00,0X81, // chu o
0XFF,0X00,0X00,0X9F,0XCF,0XCF,0X9F,0X00,0X00, //chu M
0XFF,0XFF,0XF7,0XF7,0XF7,0XF7,

// dau -

0XFF,0XFF,0XFF,0XFF,0XCC,0X00,0X00,0XFC,// so 1
0XFF,0XFF,0X00,0X00,0X24,0X24,0X00,0X00, // so 8
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF};
void delay(unsigned int t)
{
unsigned int i;
for(i=0;i<=t;i++);

Nhm 1 3dtvt

}
void scan(void)
{
P3=hang[n];
if(p<=75) P2=cot[p];
if(p>8) P1=cot[p-8];
if(p>16) P0=cot[p-16];
}

void main(void)
{
m=0;
while(1)
{

for(n=0;n<=7;n++)
{
p=n+m;
scan();
delay(100);
}
delay(3000);
m++;

Nhm 1 3dtvt

if(m==75) m=0;
}
}
Hin th trn protus :

Nhm 1 3dtvt

BI 6 : NGT NGOI M XUNG


1. Ngt ngoi
a. X l ngt
C 5 nguyn nhn to ra ngt (gi tt l nguyn nhn ngt) i vi 8051: hai ngt do bn
ngoi, hai ngt do b nh thi v mt ngt do port ni tip. Song cng c nhiu ti liu k thut
ni rng c 6 ngt, nguyn nhn l do h tnh c lnh RESET, khi ta thit lp trng thi ban u
cho h thng (gi tt l reset h thng), tt c cc ngt u b v hiu ha (cm) v sau chng
c cho php ring r bng phn mm.
Khi xy ra hai hay nhiu ngt ng thi hoc xy ra mt ngt trong khi mt ngt khc ang
c phc v, ta c 2 s x l cc ngt: s chi vng v s hai mc u tin. S
chui vng l s c nh, cn s u tin ngt c lp trnh bi ngi s dng.
Khi Reset th tt c mi ngt u b cm (b che), c ngha l khng c ngt no c b vi
iu khin p ng nu chng c kch hot. Cc ngt phi c cho php bng phn mm
b vi iu khin c th p ng c. C mt thanh ghi c gi l cho php ngt (Interrupt
Enable) chu trch nhim v vic cho php (khng che) v cm (che) cc ngt.

IE Register (Interrupt Enable)


EA bit enable hoc disable tt c cc interrupt.
EA=0 th khng ngt no c nhn.
EA=1 th tng ngun ngt s c m hoc cm bng cch bt hoc xa bit cho php
tng ng.
ES bit enable hoc disable ngt cng ni tip.
ES=0 th khng cho php ngt ni tip.
ES=1 cho php ngt ni tip.
ET1 bit enable hoc disable ngt trn ca ca Timer1.

Nhm 1 3dtvt

ET1=0 Timer1 khng nh hng n ngt.


ET1=1 Timer1 kch hot ngt.
EXT1 cho php hoc cm ngt ngoi ca Timer1.
EXT1=0 th s thay i trng thi ca cng INT0 khng nh hng n vic ngt.
EXT1=1 enable ngt ngoi ngay ti thi im INT0 thay i trng thi.
ET0 bit enable hoc disable ngt trn ca Timer0.
ET0=0 Timer0 khng nh hng n ngt.
ET0=1 Timer0 kch hot ngt.
EX0 bit enable hoc disable ngt ngai ca Timer0.
EX0=0 th s thay i trng thi ca INT1 khng nh hng n vic ngt.
EX0=1 enable ngt ngoi ngay ti thi im INT1 thay i trng thi.
b. Ngt ngoi
Ngt ngoi x ra khi c mc thp hoc c cnh m trn chn INT0 hoc INT1 ca 8051.
y l cc chn a hp vi 2 chn P3.2 v P3.3 ca port .
Thc t nh cc c to ra cc ngt ny l cc bit IE0 v IE1 ca thanh ghi TCON. Khi mt
ngt ngoi c to ra, c to ra ngt c xa bi phn cng khi CPU tr n trnh phc v
ngt ch nu ngt thuc loi tc ng cnh. Nu ngt thuc loi tc ng mc, nguyn nhn ngt
ngoi s iu khin mc ca c thay v l phn cng trn chip.
Vic chn cc ngt loi tc ng cnh hay cc ngt loi tc ng mc c lp trnh thng
qua cc bit IT0 v IT1 ca thanh ghi TCON. Ly v d nu IT1=0, ngt ngoi 1 c kch khi
cnh, ch ny nu cc mu lin tip chn INT1 cho thy chn ny mc cao trong mt
chu k v mc thp trong chu k k, c ngt IE1 trong thanh ghi TCON c set bng 1; k
n IE1 yu cu mt ngt.
V cc chn ngt ngoi c ly mu mt ln mi mt chu k my, cc ng vo ny phi
c duy tr ti thiu 12 chu k dao ng bo m vic ly mu l ng. Nu ngt ngoi
thuc loi tc ng cnh, nguyn nhn ngt ngoi phi c duy tr ti chn yu cu mc cao
ti thiu mt chu k v sau mc thp ti thit mt chu k na m bo rng s chuyn
trng thi c pht hin. IE0 v IE1 t ng c xa khi CPU tr ti trnh phc v ngt tng
ng.

Nhm 1 3dtvt

Nu ngt ngoi thuc loi tc ng mc, nguyn nhn ngt ngoi phi c duy tr trng thi
tch cc cho n khi ngt theo yu cu thc s c to ra. Sau nguyn nhn ngt phi trng
thi th ng trc khi trnh phc v ngt c thc thi xong hoc trc khi c mt ngt khc
c to ra.
Thng thng, mt cng vic c thc thi bn trong trnh phc v ngt lm cho nguyn nhn
ngt tr tn hiu yu cu ngt tr v trng thi khng tch cc.
2. Lp trnh
Code :
#include <REGX51.H>
#include <string.h>
//khai bao va dinh nghia
unsigned const t = 100;
unsigned char giay = 0,gio=3,phut=45;
unsigned char date=29,month=9;
//unsigned char count=0;
//dinh nghia LCD
sbit BF = P2^7;
sfr databus=0xA0;
///
sbit rs = P3^0;
sbit rw = P3^1;
sbit e = P3^3;

//chuong trinh tao tre

Nhm 1 3dtvt

void taotre(long time )


{
long i;
for(i=0;i<time;i++);
}
////
//

CAC CHUONG TRINH CUA LCD

//chuong trinh kiem tra co bao ban cua LCD


void ready(void)
{
BF = 1; // de ban dau la 1
rs = 0; //chon thanh ghi lenh
rw = 1; //chon che do doc
while(1)
{
e = 0;// dua noi dung tu thanh ghi lenh ra bus du lieu de xac dinh trang thai co bao
ban
e = 1;
if(BF == 0)
break;
}
}
// chuong trinh ghi lenh dieu khien
void control(unsigned char c) // c phai o dang hexa

Nhm 1 3dtvt

{
ready();
databus = c;
rs = 0;//chon thanh ghi lenh
rw = 0;//chon che do ghi
e = 1;//dua chan chot tu 1 xuong 0 de day du lieu tren bus vao LCD
e = 0;
}
//khoi tao LCD
void lcd_init(void)
{
control(0x01);// xoa man hinh hien thi truoc do
control(0x38);//0x38:giao tiep 8 bit,hien thi 2 dong va che do 5x8 diem anh
//0x37:giao tiep 8 bit,hien thi 1 dong,kieu ky tu 5x10 diem anh
control(0x0c);//0x0f: bat hien thi,nhap nhay con tro
//0x0c:tat con tro
control(0x06);//dich con tro sang phai 1 vi tri khi co thao tac doc/ghi du lieu tren
DDRAM,nhung
// khong dich toan bo noi dung hien thi.neu muon dich toan
bo thi nap vao 0x05
}
//chuong trinh ghi du lieu
void putchar(unsigned char c)
{

Nhm 1 3dtvt

ready();
databus = c;
rs = 1;// chon thanh ghi du lieu
rw = 0; // chon che do ghi
e = 1;
e = 0;
}

// chuong trin in sau ki tu


void lcd_putsf(unsigned char *s)//,unsigned char row)
{
unsigned char do_dai;
/*if(row == 1)
control(0x80); //ep con tro ve dau dong thu nhat
else if(row == 2)
control(0xc0);//ep con tro ve dau dong thu hai
*/
do_dai = strlen(s); //lay do dai bien duoc tro boi con tro,strlen(s) la ham lay do dai bien
duoc tro
// boi con tro s
while(do_dai != 0)
{
putchar(*s); //ghi ra LCD du lieu duoc tro boi bien con tro s
s++; //tang gia tri cua bien con tro

Nhm 1 3dtvt

do_dai--;//tru do_dai di mot don vi,co den khi bang 0 di thoat khoi while
}
}
//hien thi so nguyen
void integer(unsigned int d )
{
unsigned char nghin,tram,chuc,don_vi;
if(d>999)
{
don_vi = d%10; //duoc chuc so hang don vi
d = d/10; //duoc so da bo di hang don vi ->lam viec voi so d moi
//sau moi lan chia cho 10 va lay phan nguyen thi lai duoc 1 so moi
mat di mot hang ben phai
chuc = d%10; //duoc chu so hang chuc
d=

d/10;

tram = d%10; // duoc chu so hang tram


nghin =

d/10;//duoc hang nghin

putchar(48+nghin);//hien thi hang nghin


putchar(48+tram); //hien thi hang tram
putchar(48+chuc); //hien thi hang chuc
putchar(48+don_vi); //hien thi hang don vi
}
else if((d<1000)&&(d>99))

Nhm 1 3dtvt

{
don_vi = d%10; //duoc chuc so hang don vi
d = d/10; //duoc so da bo di hang don vi ->lam viec voi so d moi
//sau moi lan chia cho 10 va lay phan nguyen thi lai duoc 1 so moi
mat di mot hang ben phai
chuc = d%10; //duoc chu so hang chuc
d=

d/10;

tram = d%10; // duoc chu so hang tram


putchar(48+tram); //hien thi hang tram
putchar(48+chuc); //hien thi hang chuc
putchar(48+don_vi); //hien thi hang don vi
}
else
{
don_vi = d%10; //duoc chuc so hang don vi
chuc = d%10; //duoc chu so hang chuc
putchar(48+chuc); //hien thi hang chuc
putchar(48+don_vi); //hien thi hang don vi
}
/*hien thi so trong bang ma ASSCII thi so 0 co ma la 48,so 1 la 49,cu tiep tuc nhu vay */
putchar(48+nghin);//hien thi hang nghin
putchar(48+tram); //hien thi hang tram
putchar(48+chuc); //hien thi hang chuc
putchar(48+don_vi); //hien thi hang don vi

Nhm 1 3dtvt

}
//dua con tro toi vi tri bat ky
void lcd_gotoxy(unsigned char x,y) //y la cot y = 0->15, x la hang x = 1,2
{
unsigned char i;
if(x == 1 )
control(0x80); //ep con tro ve dau dong thu nhat
else
control(0xc0); //ep com tro ve dau dong thu 2
if(y<16)
{
for(i=0;i<y;i++)
control(0x14);
}
}
///NGAT NGOAI///////////////////////////////
//khoi tao ngat ngoai 0
void ex_init(void)
{
//EA = 0;//cam cac ngat toan cuc
IT0 = 1;//kich boi suon xuong
EX0 = 1; // cho phep ngat ngoai 0
EA = 1; // cho phep ngat toan cuc

Nhm 1 3dtvt

}
// ISR cho ngat ngoai 0
void ngatngoai_isr(void) interrupt 0
{
//count++;
//TH0 = 0xf7;
//EX0 = 0;
giay++;
if(giay == 60)
{
giay = 0;
phut++;
if(phut == 60)
{
phut = 0;
gio++;
if(gio == 24)
{
gio = 0;
date++;
if(date == 30)
{
date = 1;

Nhm 1 3dtvt

month++;
if(month == 12 )
month = 1;
}
}
}
}
// EX0 = 1;

}
/////////////////////////////////
//chuong trinh hien thiso
void hienthi_so(unsigned char q)
{
unsigned char dv,ch;
ch = q/10;
dv = q%10;
putchar(48+ch); //hien thi hang chuc
putchar(48+dv);

//hien thi hang don vi

}
//chuong trinh hien thi thoi gian
void hienthi_time(unsigned char h,m,s)
{

Nhm 1 3dtvt

//hien thi gio


if(h>=13)
{
h = h-12;
lcd_gotoxy(1,4);
hienthi_so(h);

lcd_gotoxy(1,1);
lcd_putsf("pm");
//hien thi dau ':'
lcd_gotoxy(1,6);
lcd_putsf(":");
//hien thi phut
lcd_gotoxy(1,7);
hienthi_so(m);
//hien thi dau ':'
lcd_gotoxy(1,9);
lcd_putsf(":");
//hien thi giay
lcd_gotoxy(1,10);
hienthi_so(s);
}
else if(h == 12)

Nhm 1 3dtvt

{
lcd_gotoxy(1,4);
hienthi_so(h);
lcd_gotoxy(1,1);
lcd_putsf("pm");
//hien thi dau ':'
lcd_gotoxy(1,6);
lcd_putsf(":");
//hien thi phut
lcd_gotoxy(1,7);
hienthi_so(m);
//hien thi dau ':'
lcd_gotoxy(1,9);
lcd_putsf(":");
//hien thi giay
lcd_gotoxy(1,10);
hienthi_so(s);
}
else
{
lcd_gotoxy(1,4);
hienthi_so(h);

Nhm 1 3dtvt

lcd_gotoxy(1,1);
lcd_putsf("am");
//hien thi dau ':'
lcd_gotoxy(1,6);
lcd_putsf(":");
//hien thi phut
lcd_gotoxy(1,7);
hienthi_so(m);
//hien thi dau ':'
lcd_gotoxy(1,9);
lcd_putsf(":");
//hien thi giay
lcd_gotoxy(1,10);
hienthi_so(s);
}
}
//hien thi lich
void hienthi_lich(unsigned char dt,mt)
{
//hien thi ngay
lcd_gotoxy(2,6);
hienthi_so(dt);
//hien thi dau '/'

Nhm 1 3dtvt

lcd_gotoxy(2,8);
lcd_putsf("/");
//hien thi thang
lcd_gotoxy(2,9);
hienthi_so(mt);
//hien thi dau '/'
lcd_gotoxy(2,11);
lcd_putsf("/");
//hien thi nam
lcd_gotoxy(2,12);
integer(2011);

//chuong trinh chinh


void main(void)
{
//unsigned char a;
lcd_init();
ex_init();
while(1)
{
//control(0x01);

Nhm 1 3dtvt

//for(a=0;a<24;a++)
//{
hienthi_time(gio,phut,giay);
hienthi_lich(date,month);
taotre(5000);
//
//
}
}
M phng :

control(0x18);

Nhm 1 3dtvt

BI 7 : MCH O TN S
Code :
#include <AT89X51.H>
#include <stdio.h>
#include<string.h>

#define RS P3_5
#define RW P3_6//RW=0 => ghi
#define EN P3_7//RW=1 => doc
//RS=0 => code
//RS=1 => data
#define lcd_PORT P1

#define INTR P3_0


#define RD P3_1
#define WR P3_2

Nhm 1 3dtvt

//===========================
void delay_ms(int n)
{
int k,j;
for(k=0;k<n;k++)
{
for(j=0;j<500;j++);
}

}
//==========================
void delay_5ms(){
int i,j;
for(i=0;i<250;i++)
for(j=0;j<4;j++){}
}
//===========================
void delay_15ms(){
int i,j;
for(i=0;i<250;i++)
for(j=0;j<100;j++){}
}

Nhm 1 3dtvt

//============================
void lcd_command(unsigned char c) //CT con ghi du lieu len LCD
{
RS=0;
RW=0;
lcd_PORT=c;
EN=1;
EN=0;
delay_5ms();
}
//==============================
void lcd_data(unsigned char c) //CT con doc du lieu tu LCD
{
RS=1;
RW=0;
lcd_PORT=c;
EN=1;
EN=0;
delay_5ms();
}
//=============================
void lcd_gotoxy(int x, int y)
{

Nhm 1 3dtvt

if((x<1||x>2)&&(y<1||y>16))
{
x=1;
y=1;
}
if(x == 1)
lcd_command(0x7F+y);
else
lcd_command(0xBF+y);
}
//===============================
void lcd_init() // Khoi tao LCD
{
delay_15ms();

lcd_command(0x38);
lcd_command(0x0C);
// lcd_command(0x06);
lcd_command(0x01); // Xoa man hinh LCD
}
//================================
void lcd_clear()

Nhm 1 3dtvt

{
lcd_command(0x01);
}
//===============================
void lcd_home()
{
lcd_command(0x80);
}
//=============================
void lcd_putsf(unsigned char *s)
{
while (*s)
{
lcd_data(*s);
s++;
}
}
//============================
void HienThi_ADC(unsigned char t)
{
unsigned char v;
if(t<10)
lcd_data(t+48);

Nhm 1 3dtvt

else if(t<100)
{
lcd_data(t/10+48);
lcd_data(t%10+48);
}
else
{
v=t/10;
lcd_data(v/10+48);
lcd_data(v%10+48);
lcd_data(t%10+48);
}
}

void main (void)


{
unsigned char gt=0;
lcd_init();
lcd_command(0x83);
lcd_putsf("8051 & ADC");
while(1)
{

//gt la bie^n' cho gia tri 8bit ADC

Nhm 1 3dtvt

WR=0;
delay_ms(5);

//

Bat dau chuyen doi gia tri tu ADC

// Tao tre de cap nhat du lieu tu ADC

WR=1;

//

while(!INTR);
RD=0;
gt=P2;
lcd_command(0x01);
lcd_command(0x83);
lcd_putsf("8051 & ADC");
lcd_command(0xC0);
lcd_putsf("Nhiet do:");
HienThi_ADC(gt);
delay_ms(150);
}
}
M phng :

// Nhan du lieu da duoc chuyen doi

Nhm 1 3dtvt

Nhm 1 3dtvt

BO CO THC TP VI X L
ti : LED CUBE 8X8X8
1. Tm hiu chung
1.1

Atmega32

Atmega16 c cu trc RISC vi:


+131 lnh,hu ht c thc thi trong 1 chu k xung nhp.
+32x8 thanh ghi a dng
+Full static operation
+Tc lm vic 16MPIS,vi thch anh 16MHz
- B nh:
+32KB ISP Flash vi kh nng 10.000ln ghi/xa
+1024 Byte EEROM
+2KB SRAM ngai
* Giao tip JTAG
+Kh nng qut ton din theo chun JTAG
+H tr kh nng go roi
+H tr lp trnh Flash,EEROM,fuse
+Lock bit qua giao tip JTAG
*

Ngai vi:
+2 timer/counter 8 bit vi cc mode :so snh v chia tn s
+1 timer/counter 16 bit vi cc mode:so snh,chia tn s,capture,PWM
+1 timer thi gian thc(Real time clock) vi b dao ng ring bit

Nhm 1 3dtvt

+4 knh PWM(hc nhiu hn trong cc VK khc thuc h ny)


+8 knh bin i ADC 10bit
+H tr giao tip I2C
+B giao giao tip ni tip lp trnh c USART
+Giao tip SPI
+Watch_dog timer vi b dao ng on-chip ring bit
* Nhng thuc tnh c bit:
+Power On reset v Brown-out detection
+ch hiu chnh b sai s cho b dao ng RC On-chip
+Cc ch ngt ngai v trong a dng
+6 mode sleep:Idle,ADC noise reduction,tit kim nng lng,power-down,
standby,extended standby
*

I/O port:
+32 chn I/O(Atmega16) v 21 chn I/O (Atmega8) lp trnh c
+v 40 chan (Atmega16) ,28 chn(Atmega8),64

chn(AT90can128);

Ngun cp:
2,7->5.5 V vi ATmega32L
4.5->5.5V vi ATmega32H

Tiu hao nng lng:


+Khi hat ng tiu th dng 1,1mA
+ mode Idle tiu th dng 0.35mA
+ ch Power_down tiu th dng nh hn 1uA

* y l nhng chc nng c bn thng thy trong cc Vi iu khin


AVR,ngai ra trong cc vi iu khin khc thuc dng vi iu khin ny th
thng c h tr thm nhng chc nng c bit.V d AT90can128 h tr

Nhm 1 3dtvt

thm b giao tip mng Can bus on-chip


* Cc phn mm lp trnh cho AVR:
+ AVRStuido (free), Code Vision. Cc phn mm ny c h tr phn np v
debug on chip

1.2

ULN2803

Nguyn l hot ng ca ULN2803:


ULN2803 dng m dng (khuch i dng). N bin i chn u vo 1 thnh
0, nu u vo l 0 u ra khng xc nh.

Nhm 1 3dtvt

1.3 IC 74HC595

Chn 11 l chn xung clock. Khi c 1xung t thp ln cao th nhn 1 bit d liu
vo chn Data.
Chn 14 l chn data cho tng bit d liu khi c xung vo chn 11. Cc bit d liu
ny dch t chn QA ti chn QH, nu cc bit y QA n QH th d liu trn
xung chn 9 l chn SDO (chn trn)
Chn 12 l chn cht d liu (STR). d liu sau khi c a vo chn data, khi
c xung t 0 ln 1 vo chn STR th d liu s c xut ra khi IC74hc595.

Nhm 1 3dtvt

2.Mach nguyn l iu khin led cube 8x8x8

Ta s dng chn PC0 lm chn xut data t vi iu khin vo chn data ca


IC74hc5995. Chn PC1 chn cht d liu cho 74hc595. Chn PC2 lm chn xut
xung clock cho chn CLK ca 74hc595.

Nhm 1 3dtvt

Ta dng PORTA xut d liu cho ULN2803 iu khin cc tng ca led cube.
Mi tng tng ng vi 1bit ca PORTA.

ta s dng cc chn CLK, STR, DATA a d liu t vi iu khin ti 64 ct


thng qua 8 con 74hc595

Nhm 1 3dtvt

4.Lp trnh hin th led cube 8x8x8


Mch led cube gm 8 tng mc cathode chung, mi tng c iu khin 1bit ca
PORTA thng qua con ULN2803. V c im ca ULN2803 bin 1 thnh 0, nn
ta s xut cc tn hiu 1 t bit ca PORTA ca vi iu khin iu khin cho led
sng khi chn anode ca led c tn hiu 1.
64 ct ca led cube tng ng vi 8temp mi temp 8bit iu khin led sng
tng ng.
Code lp trnh mt s hiu ng n gin
#include <mega16.h>
#include <delay.h>
#define DATA PORTC.0
#define chot PORTC.1
#define xung PORTC.2
#define mat PORTA
#define L1 PORTA.0
#define L2 PORTA.1
#define L3 PORTA.2
#define L4 PORTA.3
#define L5 PORTA.4
#define L6 PORTA.5
#define L7 PORTA.6
#define L8 PORTA.7
unsigned char temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,;
unsigned char i,j;//k,c;

Nhm 1 3dtvt

void hienthi(unsigned char x)


{
unsigned char i,temp;
for(i=0;i<8;i++)
{
temp=x;
temp=temp&0x80;
if(temp==0x80)
DATA=1;
else
DATA=0;
x*=2;
xung=0;
xung=1;
}
}
void xuat()
{
hienthi(temp1);
hienthi(temp2);
hienthi(temp3);
hienthi(temp4);

Nhm 1 3dtvt

hienthi(temp5);
hienthi(temp6);
hienthi(temp7);
hienthi(temp8);
chot=0;
chot=1;
}
void tat()
{
hienthi(0x00);
hienthi(0x00);
hienthi(0x00);
hienthi(0x00);
hienthi(0x00);
hienthi(0x00);
hienthi(0x00);
hienthi(0x00);
chot=0;
chot=1;
}

void dtvt(unsigned char m)


{
for(i=0;i<=m;i++)
{

Nhm 1 3dtvt

temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x07;temp6=0x07;temp7=0x00;te
mp8=0x00;xuat();L8=1;delay_ms(1);L8=0;
temp1=0x00;temp2=0x00;temp3=0x07;temp4=0x00;temp5=0x00;temp6=0x07;temp7=0x00;te
mp8=0x00;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x00;temp2=0x07;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x07;temp7=0x00;te
mp8=0x00;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x00;temp2=0x07;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x07;temp7=0x00;te
mp8=0x00;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x07;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x07;temp7=0x00;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x07;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x07;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x07;temp4=0x00;temp5=0x00;temp6=0x07;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x07;temp6=0x07;temp7=0x00;te
mp8=0x00;xuat();L1=1;delay_ms(1);L1=0;
}
for(i=0;i<=m;i++)
{
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x1c;temp6=0x1c;temp7=0x00;tem
p8=0x00;xuat();L8=1;delay_ms(1);L8=0;
temp1=0x00;temp2=0x00;temp3=0x1c;temp4=0x00;temp5=0x00;temp6=0x1c;temp7=0x00;te
mp8=0x00;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x00;temp2=0x1c;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x1c;temp7=0x00;te
mp8=0x00;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x00;temp2=0x1c;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x1c;temp7=0x00;te
mp8=0x00;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x1c;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x1c;temp7=0x00;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x1c;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x1c;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x1c;temp4=0x00;temp5=0x00;temp6=0x1c;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x1c;temp6=0x1c;temp7=0x00;tem
p8=0x00;xuat();L1=1;delay_ms(1);L1=0;
}
for(i=0;i<=m;i++) //d
{

Nhm 1 3dtvt

temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x70;temp6=0x70;temp7=0x00;te
mp8=0x00;xuat();L8=1;delay_ms(1);L8=0;
temp1=0x00;temp2=0x00;temp3=0x70;temp4=0x00;temp5=0x00;temp6=0x70;temp7=0x00;te
mp8=0x00;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x00;temp2=0x70;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x70;temp7=0x00;te
mp8=0x00;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x00;temp2=0x70;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x70;temp7=0x00;te
mp8=0x00;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x70;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x70;temp7=0x00;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x70;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x70;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x70;temp4=0x00;temp5=0x00;temp6=0x70;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x70;temp6=0x70;temp7=0x00;te
mp8=0x00;xuat();L1=1;delay_ms(1);L1=0;
}
for(i=0;i<=m;i++) //t
{
temp1=0x00;temp2=0x07;temp3=0x07;temp4=0x07;temp5=0x07;temp6=0x07;temp7=0x00;te
mp8=0x00;xuat();L8=1;delay_ms(1);L8=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;
}
for(i=0;i<=m;i++) //t
{
temp1=0x00;temp2=0x1c;temp3=0x1c;temp4=0x1c;temp5=0x1c;temp6=0x07;temp7=0x00;tem
p8=0x00;xuat();L8=1;delay_ms(1);L8=0;

Nhm 1 3dtvt

temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;
}
for(i=0;i<=m;i++) //t
{
temp1=0x00;temp2=0x70;temp3=0x70;temp4=0x70;temp5=0x70;temp6=0x70;temp7=0x00;te
mp8=0x00;xuat();L8=1;delay_ms(1);L8=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;
}
for(i=0;i<=m;i++) //v
{
//temp1=0x00;temp2=0x80;temp3=0x80;temp4=0x80;temp5=0x80;temp6=0x80;temp7=0x00;te
mp8=0x00;xuat();L8=1;delay_ms(1);L8=0;
temp1=0x;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;temp
8=0x07;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x07;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x07;xuat();L6=1;delay_ms(1);L6=0;

Nhm 1 3dtvt

temp1=0x07;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x07;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x07;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x07;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x00;temp3=0x07;temp4=0x00;temp5=0x00;temp6=0x07;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x07;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;
}
for(i=0;i<=m;i++) //v
{
//temp1=0x00;temp2=0x80;temp3=0x80;temp4=0x80;temp5=0x80;temp6=0x80;temp7=0x00;te
mp8=0x00;xuat();L8=1;delay_ms(1);L8=0;
temp1=0x1c;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x1c;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x1c;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x1c;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x1c;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x1c;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x1c;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x1c;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x00;temp3=0x1c;temp4=0x00;temp5=0x00;temp6=0x1c;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x1c;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;
}
for(i=0;i<=m;i++) //v
{
//temp1=0x00;temp2=0x80;temp3=0x80;temp4=0x80;temp5=0x80;temp6=0x80;temp7=0x00;te
mp8=0x00;xuat();L8=1;delay_ms(1);L8=0;
temp1=0x70;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x70;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x70;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x70;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x70;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x70;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x70;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x70;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;

Nhm 1 3dtvt

temp1=0x00;temp2=0x00;temp3=0x70;temp4=0x00;temp5=0x00;temp6=0x70;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x70;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;
}
for(i=0;i<=m;i++) //t
{
temp1=0x00;temp2=0x07;temp3=0x07;temp4=0x07;temp5=0x07;temp6=0x07;temp7=0x00;te
mp8=0x00;xuat();L8=1;delay_ms(1);L8=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x07;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;
}
for(i=0;i<=m;i++) //t
{
temp1=0x00;temp2=0x1c;temp3=0x1c;temp4=0x1c;temp5=0x1c;temp6=0x07;temp7=0x00;tem
p8=0x00;xuat();L8=1;delay_ms(1);L8=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x1c;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;

Nhm 1 3dtvt

}
for(i=0;i<=m;i++) //t
{
temp1=0x00;temp2=0x70;temp3=0x70;temp4=0x70;temp5=0x70;temp6=0x70;temp7=0x00;te
mp8=0x00;xuat();L8=1;delay_ms(1);L8=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x70;temp5=0x00;temp6=0x00;temp7=0x00;te
mp8=0x00;xuat();L2=1;delay_ms(1);L2=0;
}
}

void main(void)
{
PORTA=0x00; DDRA=0xFF;
PORTB=0x00; DDRB=0x00;
PORTC=0x00; DDRC=0x07;
PORTD=0x00; DDRD=0x00;
TCCR0=0x00; TCNT0=0x00; OCR0=0x00
TCCR1A=0x00; TCCR1B=0x00;
TCNT1H=0x00; TCNT1L=0x00;
ICR1H=0x00; ICR1L=0x00;
OCR1AH=0x00; OCR1AL=0x00;
OCR1BH=0x00; OCR1BL=0x00;

Nhm 1 3dtvt

ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00; MCUCSR=0x00
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
while (1)
{ tat();
phaohoa(25);
hinhhopgoc1(30);
hinhhopgoc3(30);
hinhhopgoc2(30);
hinhhopgoc4(30);
//khung1(100,1);
danglen(100,1);
quet1(100,1);
quet2(100,1);
cheo2(20);
// khung1(100,1);
quacau(20);
hinhhoptrungtam(10);
traitim2(10,1);

Nhm 1 3dtvt

traitimdac(30);
dtvt(25);
};
}

You might also like