You are on page 1of 66

i Hc in Lc

Khoa DTVT

BO CO THC TP XNG V3
Cc Thnh vin
Nguyn Sn Lm
Nghim xun Hng
Phan Hong Linh
Bi Trung Hiu

1. Gii thiu chung


1.1.
Gii thiu chung v vi iu khin
-

B Vi x l c kh nng vt bc so vi cc h thng khc v kh nng tnh ton, x l,


v thay i chng trnh linh hot theo mc ch ngi dng, c bit hiu qu i vi cc
bi ton v h thng ln.Tuy nhin i vi cc ng dng nh, tm tnh ton khng i hi
kh nng tnh ton ln th vic ng dng vi x l cn cn nhc. Bi v h thng d ln hay
nh, nu dng vi x l th cng i hi cc khi mch in giao tip phc tp nh nhau.
Cc khi ny bao gm b nh cha d liu v chng trnh thc hin, cc mch in
giao tip ngoi vi xut nhp v iu khin tr li, cc khi ny cng lin kt vi vi x
l th mi thc hin c cng vic. kt ni cc khi ny i hi ngi thit k phi
hiu bit tinh tng v cc thnh phn vi x l, b nh, cc thit b ngoi vi. H thng
c to ra kh phc tp, chim nhiu khng gian, mch in phc tp v vn chnh l
trnh ngi thit k. Kt qu l gi thnh sn phm cui cng rt cao, khng ph hp
p dng cho cc h thng nh.
V mt s nhc im trn nn cc nh ch to tch hp mt t b nh v mt s mch
giao tip ngoi vi cng vi vi x l vo mt IC duy nht c gi l Microcontroller-Vi
iu khin.

Mt s c im Vi iu Khin:
-

V phn cng: VXL cn c ghp thm cc thit b ngoi vi bn ngoi nh b nh, v


cc thit b ngoi vi khc, c th to thnh mt bn mch hon chnh. i vi VK
th bn thn n l mt h my tnh hon chnh vi CPU, b nh, cc mch giao tip,
cc b nh thi v mch iu khin ngt c tch hp bn trong mch.

V cc c trng ca tp lnh: Do ng dng khc nhau nn cc b VXL v VK cng c


nhng yu cu khc nhau i vi tp lnh ca chng. Tp lnh ca cc VXL thng mnh
v cc kiu nh a ch vi cc lnh cung cp cc hot ng trn cc lng d liu ln
nh 1byte, byte, word, double word,... cc b VK, cc tp lnh rt mnh trong vic
x l cc kiu d liu nh nh bit hoc mt vi bit.

Do VK cu to v phn cng v kh nng x l thp hn nhiu soi vi VXL nn gi


thnh ca VXL cng r hn nhiu. Tuy nhin n vn kh nng p ng c tt c cc
yu cu ca ngi dng.

Vi iu khin c ng dng trong cc dy chuyn t ng loi nh, cc robot c chc


nng n gin, trong my git, t v.v...

1.1.1. Cc dng vi iu khin hin nay


a. H Vi iu khin PIC
-

PIC l mt h vi iu khin RISC c sn xut bi cng ty Microchip technology .


Dng Pic u tin l PIC 1650.

Pic bt ngun l ch vit tt ca "Programmable Intelligent Computer" (My tnh kh


trnh thng minh) l mt sn phm ca hng General Instrument t cho dng sn phm
u tin ca h l PIC1650. Lc ny, PIC1650 c dng giao tip vi cc thit b

ngoi vi cho my ch 16bit CP1600, v vy, ngi ta cng gi PIC vi ci tn "Peripheral


Interface Controller" (B iu khin giao tip ngoi vi). CP1600 l mt CPU tt, nhng li
km v cc hot ng xut nhp, v v vy PIC 8-bit c pht trin vo khong nm
1975 h tr hot ng xut nhp cho CP1600. PIC s dng microcode n gin t
trong ROM, v mc d, cm t RISC cha c s dng thi by gi, nhng PIC thc s
l mt vi iu khin vi kin trc RISC, chy mt lnh mt chu k my (4 chu k ca b
dao ng).
-

Nm 1985 General Instrument bn b phn vi in t ca h, v ch s hu mi hy b


hu ht cc d n - lc qu li thi. Tuy nhin PIC c b sung EEPROM to
thnh 1 b iu khin vo ra kh trnh. Ngy nay rt nhiu dng PIC c xut xng vi
hng lot cc module ngoi vi tch hp sn (nh USART, PWM, ADC...), vi b nh
chng trnh t 512 Word n 32K Word.
PIC 8-bit (x l d liu 8-bit, 8-bit data bus)
o T lnh di 12-bit (Base-line): PIC10F, PIC12F v mt vi PIC16F
o T lnh di 14-bit (Mid-Range v Enhance Mid-Range): PIC16Fxxx,
PIC16F1xxx
o T lnh di 16-bit (High Performance): PIC18F
PIC 16-bit (x l d liu 16-bit)
o PIC iu khin ng c: dsPIC30F
o PIC c DSC: dsPIC33F
o Ph thng: PIC24F, PIC24E, PIC24H
PIC 32-bit (x l d liu 32-bit): PIC32MX

b. H Vi iu khin Atmel
-

Vi iu khin AVR do hng Atmel sn xut c gi thiu ln u nm 1996. AVR c


rt nhiu dng khc nhau bao gm dng Tiny AVR ( nh AT tiny 13, AT tiny 22) c
kch thc b nh nh, t b phn ngoi vi, ri n dng AVR ( chn hn AT90S8535,
AT90S8515,) c kch thc b nh vo loi trung bnh v mnh hn l dng Mega
( nh ATmega32, ATmega128,) vi b nh c kch thc vi Kbyte n vi trm Kb
cng vi cc b ngoi vi a dng c tch hp trn chip, cng c dng tch hp c b
LCD trn chip ( dng LCD AVR ). [1] Tc ca dng Mega cng cao hn so vi cc
dng khc. S khc nhau c bn gia cc dng chnh l cu trc ngoi vi, cn nhn th vn
nh nhau.

Nm 2008, Atmel li tip tc cho ra i dng AVR mi l megaAVR, vi nhng tnh


nng mnh m cha tng c cc dng AVR trc . C th ni XXmegaAVR l dng
MCU 8 bit mnh m nht hin nay.
Dng Atmel AT91 (Kin trc ARM THUMB)
Dng AT90, Tiny & Mega AVR (Atmel Norway design)
Dng Atmel AT89 (Kin trc Intel 8051/MCS51)
Dng MARC4

c.H vi iu khin Intel


Dng 8-bit
o 8XC42
o MCS48
o MCS51
o 8061
o 8xC251
Dng 16-bit
o 80186/88
o MCS96
o MXS296
Dng 32-bit
o 386EX
o i960
d.H vi iu khin Freescale Semiconductor
Dng 8-bit
o 68HC05 (CPU05)
o 68HC08 (CPU08)
o 68HC11 (CPU11)
Dng 16-bit
o 68HC12 (CPU12)
o 68HC16 (CPU16)
o Freescale DSP56800 (DSPcontroller)
Dng 32-bit
o Freescale 683XX (CPU32)
o MPC500
o MPC 860 (PowerQUICC)
o MPC 8240/8250 (PowerQUICC II)
o MPC 8540/8555/8560 (PowerQUICC III)
1.2.Gii thiu bo mch Easy 8051

2.Cc bi tp thc hnh

Bi 1- LP TRNH CHC NNG I/O VI LED N


1.1. Mc ch
-

Thc hnh vi cc cng c phn mm: phn mm lp trnh KeilC, phn mm m phng
Proteus, phn mm np chng trnh cho vi iu khin ISP_Prog.

Lp trnh chc nng vo/ra ca 8051

iu khin LED n

Vit cc chng trnh con to thi gian tr

1.2 Yu cu
-

Tnh ton, la chn c cc thng s ca linh kin, gi tr in tr, dng, p cp cho


led.

Lp trnh iu khin c led sng, tt theo yu cu.

Nm bt c chc nng cc phn t trong s mch.

Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng


trnh cho vi iu khin.

Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.

1.3 S nguyn l

Hnh 1 S nguyn l mch iu khin LED n


-

Nguyn l hot ng: Theo nh s nguyn l trn, led sng ta cn cp mc 1,


led tt ta cp mc 0. mt led sng nhp nhy ta c th thc hin nh sau:
V d led D1: Lu thut ton

Begin

P1_0 = 0

Khi to gi tr ban
u cho P1_0 , led tt

Bt led
Vng lp v hn

P1_0 = 1;
Delay(30);
P1_0 = 0;
Delay(30);

Gi tr, mt cm
nhn thi gian sng
Tt led

Gi tr, mt cm
nhn thi gian ti

Hnh 2 Lu thut ton iu khin led 1 sng nhp nhy

1.4 La chn thit b


-

My vi tnh ci cc phn mm KeilC, Proteus

Kit thc hnh 8051:


o Module LED : Gm 8 led n:
8 led n c ni trc tip vi vi iu khin

8 led n c kt ni vi Header 5x2, k hiu CN7 (LED)

Hnh 3 V tr khi 8 Led n trn board mch


o Cng iu khin : PORT-1
Port1 c kt ni vi Header CN2 (PORT-1)

Hnh 4 V tr Port 1 trn board mch

1. 5. Trnh t thc hin


-

Bc 1: Dng jump cm 2 hng 5x2 kt ni PORT-1 vo LED

Bc 2: V mch m phng trn Proteus

Hnh 5 S m phng proteus mch iu khin 8 led n


Bc 3:Chng trnh :

#include <REGX52.H>
void delay(int time)
{
int i,j;
for(i=0;i<time;i++)
for(j=0;j<100;j++) {};
}
///////////////////////////////
void nhayled(void)
{

int i;
P1= 0x00; delay(300);
P1= 0xff;

delay(300);

/////
P1 = 0x00; delay(300);
P1 = 0xff; delay(300);
////
P1 =0x00; delay(300);
P1 = 0xff; delay(300);
////////
P1 = 0x01;
for(i=0;i<8;i++)
{ P1=P1<<1; delay(300);
}
P1 =0xf0;
for(i=0;i<8;i++)
{ P1 = P1>>1; delay(300);
}
///nhay tu 2 ben vao giua
P1 = 0x7e;delay(300);
P1 = 0xbd;delay(300);
P1 = 0xdb;delay(300);
P1 = 0xe7;delay(300);
///////////
P1 = 0x00;
//nhay tu giua ra 2 ben
for(i=0;i<3;i++)
{P1= 0xe7; delay(300);

P1= 0xdb;delay(300);
P1 = 0xbd; delay(300);
P1 = 0x7e; delay(300);
}
}
///////////////
void main(void)
{ while (1)
{ nhayled();
}
}

Bc 4: Bin dch chng trnh mu, m phng trn Proteus v np chng trnh vo
kit thc hnh Easy8051 chc chn cc khi mch cn dng hot ng tt.

Bc 5: Vit chng trnh, chy m phng v chy trn kit thc hnh 8051 theo yu cu
sau :
o 8 LED chy sng dn t tri sang phi
o 8 LED chy sng dn t phi sang tri
o 8 LED chy sng t gia ra hai bn
o 8 LED chy sng hai bn vo gia

1.6 . Lu :
Cch mc LED
- LED (Light-emitting diodes) cn gi l Diode pht quang, c kh nng chuyn in
thnh nh sng. Khi pht sng s gy ra st p trn n vo khong 1.7 2.5V (tu mu
LED), v dng nh mc ln nht qua n khong 20mA (i vi led indoor thng
thng). iu khin Led ta c mt s cch mc sau

Hnh 6 Cc cch mc iu khin led vi vi iu khin 8051


-

Mch mc theo cch th 2 (Fair) c st p trn LED ln khong 2V, 3V cn li s st


p trn mch TTL, gy tn tht nng lng ln, hoc LED s chy nu dng qua n
ln(khong vi chc mA).
- Mch mc theo cch 3 (Poor), do mt u ra TTL khng th phun dng ln hn 1mA do
vy LED sng rt m.
- Mch mc theo cch th nht l tt nht, c tr hn dng. Ty tng loi LED m in
p ri trn n khc nhau. Thng in p ri trn LED trong khong 1,7V 3V . St p
trn chn TTL l 0.9V. Do in p ri trn trn tr l (5V- 0,9V 3V = 1,1V) cho ti
(5V 0,9V 1,7V = 2,4V). Dng in qua LED khong 10mA l va sng (Dng qua
led thng nh hn khong 20mA i vi loi LED thng, nh hn khong 40mA vi
LED siu sng). Dng qua tr cng bng dng qua LED do mc ni tip. Do R =
Ur/Ir = 1,1V/10mA 2,4V/10mA = 110 240.
Tm li, tr hn dng khng nn di 100Ohm nu khng LED s chng hng. V khng
nn qu 240 led s ti.

Bi 2 - LED 7 THANH
2.1 Mc ch
Thc hnh vi cc cng c phn mm: phn mm lp trnh KeilC, phn mm m phng
Proteus, phn mm np chng trnh cho vi iu khin ISP_Prog.
Lp trnh chc nng vo/ra ca 8051.
Tm hiu giao tip ca 89S52 vi led 7 thanh.
Vit cc chng trnh con to thi gian tr.
2.2 Yu cu
Tnh ton, la chn c cc thng s ca linh kin, gi tr in tr, dng, p cp cho led
7 thanh.
Lp trnh iu khin c led 7 thanh hin th theo yu cu .
Nm bt c chc nng cc phn t trong s mch.
Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng
trnh cho vi iu khin.

Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.
2.3. S nguyn l

Hnh 1 S nguyn l LED 7 thanh


Nguyn l hot ng: Theo nh s nguyn l trn
- Ta dng Port P0 ca MCU lm port hin th gi tr ca led 7 thanh.
- Mch dao ng ngoi dng thch anh tn s dao ng 12MHz ni vo chn 18 v 19 cua
89s52.
C bn v led 7 thanh.
- Led 7 on bao gm 7 led n phn thnh 7 on v bn phi di cng ca thanh c
mt led th hin du chm.

Led 7 thanh c chia lm 2 loi, cc m chung (catot chung),cc dng chung(anot


chung).

nguyn

mch

0999999

hin

th

trn

LED

7thanh.

Nguyn l hot ng ca LED 7 thanh:


- Khi cm ngun vo mch tt c cc chn ca cc cng IO ca vi iu khin 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 .

2.4. La chn thit b

My vi tnh ci cc phn mm KeilC, Proteus


Kit thc hnh 8051:
o Module LED 7 thanh : Gm 6 led 7thanh
y l module s dng Multi-digital Display
6 led 7 thanh
ULN2803 cho bit iu khin v DIPSW SW2 iu khin segment.
Mch li dng.

Cng iu khin : PORT-1


Port1 c kt ni vi Header CN2 (PORT-1)

Hnh 4 V tr Port 1 trn board mch

M t module:

Vic kim sot segment ca LED s c kt ni vi PORT P1(t p1.0p1.5) ca MCU


thong qua chuyn i DIPSW SW2.
Vic kim sot bit ca led s c kt ni vi P0(t p0.0p0.7) ca MCU thong qua
ULN2803(U10).
Khi module ny c s dng ,chng ta phi m bo rng DIPSW SW2 trong trng
thi kt ni khng lm nh hng n hot ng bnh thng ca cc module khc.
6 led s 7 thanh s dng Anode chung.

2.5. Trnh t thc hin

Bc 1: Dng jump cm 2 hng 5x2 kt ni PORT-0 vo LED


Bc 2: V mch m phng trn Proteus

Hnh 5 S m phng proteus mch m

Bc 3:Chng trnh:

#include <REGX52.H>

///////////////
long k;
int sl,chon=0,gi=0,p=0;
int a=0,b=0,c=0,d=0,e=0,f=0,a1,b1,c1,d1,e1,f1;
unsigned char display[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
////////////////
void delay(int time)
{ int i;
for(i=0;i<time;i++)
{};
}
///////////////////////////////
void hienthi(unsigned int k)
{
a=k/100000; a1=k%100000;

//chuc nghin

b=a1/10000; b1=a1%10000; //tram


c =b1/1000; c1 =b1%1000;

//don vi

d = c1/100; d1 = c1%100;
e = d1/10; f = d1%10;
for(sl=0;sl<10;sl++)
{

P0=display[a]; //display tram nghin


P1_0=0;delay(50);P1_0=1;

//////////////////////////////
P0=display[b]; //display chuc nghin
P1_1=0;delay(50);P1_1=1;

////////////////////////
P0=display[c]; //display nghin
P1_2=0;delay(50);P1_2=1;
/////////////////////
P0=display[d];//display tram
P1_3=0;delay(50); P1_3=1;
//////////////////////////////
P0=display[e]; //display chuc
P1_4=0;delay(50);P1_4=1;
////////////////////////////////////
P0=display[f]; //display don vi
P1_5=0;delay(50);P1_5=1;
}
}
void main(void)
{
k=0;
while (1)
{
k=k+1;hienthi(k);
} }

Bc 4: Bin dch chng trnh mu, m phng trn Proteus v np chng trnh vo kit
thc hnh Easy8051 chc chn cc khi mch cn dng hot ng tt.

Bc 5: Vit chng trnh, chy m phng v chy trn kit thc hnh 8051 theo yu cu
sau :
o Cho 6 led 7 thanh hin th s
o Led 1m n 9 thi tr v 0 led 2 m ln 1,tip tc tng t cho cc led tip
theo. Khi 6 led hin th 999999 th reset v 0.

2.6. Lu :
-Khi thc hin lp mch cn ch cc kt ni Jumper chnh xc vi Port
-Tnh cc m hin th cc ch s cho ng
-Port P0 lun dng in tr bang ko ln

Bi 3 - LP TRNH CHC NNG NGT TIMER - NG H S


3.1. Mc ch
Thc hnh vi cc cng c phn mm: phn mm lp trnh KeilC, phn mm m phng
Proteus, phn mm np chng trnh cho vi iu khin ISP_Prog.
Lp trnh chc nng vo/ra ca 8051.
S dng chc nng ngt TIMER iu khin qu trnh hin th ca ng h s.
Tm hiu giao tip ca 89S52 vi led 7 thanh.
Vit cc chng trnh con to thi gian tr.
3.2. Yu cu
Tnh ton, la chn c cc thng s ca linh kin, gi tr in tr, dng, p cp cho led
7 thanh.
Lp trnh iu khin c led 7 thanh hin th theo yu cu .
Bit cch s dng chc nng Timer to cho qu trnh qut led 7 thanh c n nh
,to ra cc xung vo n nh.
Nm bt c chc nng cc phn t trong s mch.
Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng
trnh cho vi iu khin.
Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.

3.3. S nguyn l

Hnh 1 S nguyn l ng h s
Nguyn l hot ng: Theo nh s nguyn l trn
- Ta dng Port P0 ca MCU lm port hin th gi tr ca led 7 thanh.
- Dng Port P1 lm cng qut cc led 7 thanh.
- Cc nt bm iu chnh c kt ni vi P3_0P3_2 ca Port P3 MCU.
- Mch dao ng ngoi dng thch anh tn s dao ng 12MHz ni vo chn 18 v 19 cua
89s52.
- Phm RESET ni vo chn reset (chn 9) ca 89s52.
C bn v led 7 thanh.
- Led 7 on bao gm 7 led n phn thnh 7 on v bn phi di cng ca thanh c
mt led th hin du chm.

Led 7 thanh c chia lm 2 loi, cc m chung (catot chung),cc dng chung(anot


chung).

Nguyn l hot ng ca LED 7 thanh:


- Khi cm ngun vo mch tt c cc chn ca cc cng IO ca vi iu khin 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 .

3.4. La chn thit b

My vi tnh ci cc phn mm KeilC, Proteus


Kit thc hnh 8051:
o Module LED 7 thanh : Gm 6 led 7thanh
y l module s dng Multi-digital Display
6 led 7 thanh
ULN2803 cho bit iu khin v DIPSW SW2 iu khin segment.
Mch li dng.

Cng iu khin : PORT-1


Port1 c kt ni vi Header CN2 (PORT-1)

Hnh 4 V tr Port 1 trn board mch

M t module:

Vic kim sot segment ca LED s c kt ni vi PORT P1(t p1.0p1.5) ca MCU


thong qua chuyn i DIPSW SW2.
Vic kim sot bit ca led s c kt ni vi P0(t p0.0p0.7) ca MCU thong qua
ULN2803(U10).
Khi module ny c s dng ,chng ta phi m bo rng DIPSW SW2 trong trng
thi kt ni khng lm nh hng n hot ng bnh thng ca cc module khc.
6 led s 7 thanh s dng Anode chung.

Thut ton :Hin th cc s t s 0 5 trn 6 led 7 thanh t phi qua tri.

Module Phm c lp ,ngt ngoi:


Thnh phn:

8 nt c lp.
Header 5x2(CN8).

M t module:
Tt c cc phm c t mc in p thp hoc cao bng cch la chn Jumper
J8 khi chng c nhn xung v tr khng cao khi chng c nh ra.
Module ny khng c kt ni n MCU , s dng module ny c th dng
cp 5x2 kt ni n cc port ca MCU.

M t chng trnh th nghim


Trong mch ng h s ny chng ta s dng 4 phm bm iu khin cc led 7
thanh theo mun ca mnh. Cc phm bm ny c kt ni vi Port3
(p0.0p0.3).
Phm ni vi P3.0 dng set cc led 7 thanh( thc hin chc nng vo ch
chnh gi).
Phm ni vi P3.1dng tng gi tr hin th ca led 7 thanh ang set.
Phm ni vi P3.2 dng gim gi tr hin thi ca led 7 thanh ang set.
V d xc nh cc phm ring l .Khi mt phm T1-T8 c nhn ,cc led tng ng
ca Port 0 s sng
Gii thut: Nh s bn di

5. Trnh t thc hin

Bc 1: Dng jump cm 2 hng 5x2 kt ni PORT-0 vo LED

Bc 2: V mch m phng trn Proteus

Hnh 5 S m phng proteus mch ng h s

Bc 3:Chng trnh

#include <REGX52.H>
/////
#define SW1 P2_0
#define SW2 P2_1
#define SW3 P2_2
///////////////
khai bao bien
int k,m;
int sl,chon=0,gi=0,p=0;
int a,b,c,d,e,f;
unsigned char display[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
////delay
void delay(int time)
{
int i;
for(i=0;i<time;i++) {};
}

///////////////////////////////khoi tao ngat


void khoitaongat(void)
{
EA = 0; //cam ngat toan cuc
TMOD = 0x10;//Timer che do 1 , 16 bit
TH1 = 0xfc;
TL1 = 0x66;
ET1 =1;
EA =1; //cho phep ngat toan cuc
TR1 =1;
}
///////////////////////////////
hien thi
void hienthi(unsigned int k, unsigned int p, unsigned int gi)
{
a=gi/10;
//tram nghin
b=gi%10;
//chuc nghin
/////
c=p/10;
// nghin
d=p%10; //tram
///////
e =k/10; //chuc
f=k%10;
//don vi
/////////////////////
for(sl=0;sl<10;sl++)
{ P0=display[a]; //display tram nghin
P1_0=0;delay(50);P1_0=1;
//////////////////////////////
P0=display[b]; //display chuc nghin
P1_1=0;delay(50);P1_1=1;
////////////////////////
P0=display[c]; //display nghin
P1_2=0;delay(50);P1_2=1;
/////////////////////
P0=display[d];//display tram
P1_3=0;delay(50); P1_3=1;
//////////////////////////////
P0=display[e]; //display chuc
P1_4=0;delay(50);P1_4=1;
////////////////////////////////////
P0=display[f]; //display don vi
P1_5=0;delay(50);P1_5=1;
}
}
////////////////////////////
void timer1ms (void) interrupt 3 //ngat timer 1
{
TR1 =0;
if(chon==0)
{
m=m+1;
if(m==1000){ k=k+1; m=0;
}
}
TH1 = 0xfc;
TL1 = 0x66;

TF1 =0;
TR1=1;
}
///////////////
chuong trinh chinh
void main(void)
{
khoitaongat();
k=0;
m=0;
while(1)
{
if(SW1==0)
{
do
{
delay(100);
if(SW1==1)
{
chon=chon +1;
}
}while(SW1==0);
}
if(chon==7)chon=0;
//////////////////////////////////////////
switch(chon)
{
case 0://chay binh thuong (khong cai dat)
{
if(k==60)
{
k=0; p=p+1;
}
if(p==60)
{
p=0;gi=gi+1;
}hienthi(k,p,gi);
break;
}
///////////////////////////////////
case 1:
//cai dat don vi cua giay
{
if(SW2==0)
//tang
{
do
{ delay(100);
if(SW2==1)
{
k=k+1;
if(k==10)k=0;
}
} while(SW2==0);
}
///////////////////////////////

if(SW3==0)//giam
{
do
{ delay(100);
if(SW3==1)
{
k=k-1;
if(k<0)k=0;
}
} while(SW3==0);
}hienthi(k,p,gi);
break;
}
//////////////////////////////////////////////////////////////////
case 2: //cai dat chuc cua giay
{
////////////////////////
if(SW2==0)
//tang
{
do
{ delay(100);
if(SW2==1)
{
k=k+10;
if(k>60)k=k%10;
}
} while(SW2==0);
}
///////////////////////////////
if(SW3==0)//giam
{
do
{
delay(100);
if(SW3==1)
{
if(k>10)
{
k=k-10;
}
else
if(k==10)k=k%10;
}
} while(SW3==0);
}hienthi(k,p,gi);
break;
}
///////////////////////////////////////////////////////////////////////
case 3: //cai dat don vi cua phut
{
////////////////////////
if(SW2==0)
//tang
{
do
{
delay(100);

if(SW2==1)
{
p=p+1;
if(p==10)p=0;
}
} while(SW2==0);
}
///////////////////////////////
if(SW3==0)//giam
{
do
{
delay(100);
if(SW3==1)
{ p=p-1;
if(p<0)p=0;
}
} while(SW3==0);
} hienthi(k,p,gi);
break;
}
//////////////////////////////////////////////////////////////////
case 4: //cai dat chuc cua phut
{
////////////////////////
if(SW2==0)
//tang
{
do
{
delay(100);
if(SW2==1)
{ p=p+10;
if(p>=60)p=p%10;
}
} while(SW2==0);
}
///////////////////////////////
if(SW3==0)//giam
{
do
{
delay(100);
if(SW3==1)
{
if(p>10){ p=p-10;
}
else if(p==10)p=p%10;
}
} while(SW3==0);
} hienthi(k,p,gi);
break;
}
///////////////////////////////////////////////////////////////////////
case 5:
//cai dat don vi cua gio
{
////////////////////////

if(SW2==0)
{
do
{

//tang

delay(100);
if(SW2==1){
gi=gi+1;
if(gi==24)gi=0;
}
} while(SW2==0);
}
///////////////////////////////
if(SW3==0)//giam
{
do
{
delay(100);
if(SW3==1)
{gi=gi-1;
if(gi<0)gi=0;
}
} while(SW3==0);
} hienthi(k,p,gi);
break;
}
//////////////////////////////////////////////////////////////////
case 6: //cai dat chuc cua gio
{
////////////////////////
if(SW2==0)
//tang
{
do
{ delay(100);
if(SW2==1)
{gi=gi+10;
if(gi>24)gi=gi%10;
}
} while(SW2==0);
}
///////////////////////////////
if(SW3==0)//giam
{do
{delay(100);
if(SW3==1)
{
if(gi>10){gi=gi-10;}
else if(gi==10)gi=gi%10;
}
} while(SW3==0);
}hienthi(k,p,gi);break;
}
}
}
}

Bc 4: Bin dch chng trnh mu, m phng trn Proteus v np chng trnh
vo kit thc hnh Easy8051 chc chn cc khi mch cn dng hot ng tt.
Bc 5: Vit chng trnh, chy m phng v chy trn kit thc hnh 8051 theo yu cu
sau :
o Cho 6 led 7 thanh hin th s
o Led 7thanh 1 m n 9 th quay v 0 m li ,cn led 7 thanh th 2 lc tng
ln 1 (khi hai led ny hin th s 59 th sau quay v 0 m li ,led 7 th 3 tng
ln 1).
o Tng t nh vy vi led 7 th 3 v 4
o Hai con led 5 v 6 khi chng hin th s 24 th tt c cc led 7 tr v 0 m li.
o Cc phm bm th c chc nng nh trnh by trn: c ngha l phi vo c
ch chnh led tng ln hoc gim xung .

3.6. Lu :
-

Khi thc hin lp mch cn ch cc kt ni Jumper chnh xc vi Port.


Tnh cc m hin th cc ch s cho ng.
Port P0 lun dng in tr bang ko ln.

Bi 4 - LP TRNH CHC NNG NGT NGOI-B O TN


S
4.1 Mc ch :

Thc hnh vi cc cng c phn mm : phn mm lp trnh Keil C, phn mm m


phng Proteus , phn mm np chng trnh cho vi iu khin ISP_Prog.
Lp trnh chc nng ngt ngoi v giao tip vo ra ca 8051 vi chn ngt ngoi v cc
led hin th gi tr o c.

4.2 Yu cu:
Tnh ton, la chn c cc thng s ca linh kin, gi tr in tr, dng, p cp cho
Led 7 on v chun xung o tn s.
Lp trnh hin th c tn s trn Led 7 on.
Nm bt c chc nng cc phn t trong s mch.
Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng
trnh cho vi iu khin.
Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.
4.3 S nguyn l :

Nguyn l hot ng:


- Khi ta cho xung vo chn ngt ngoi ( y s dng ngt ngoi 0) v c ni vi chn
P3.2 /INT0 khi c mt xung vo th mt bin m trong vi iu khin 8051 s t tng
ln 1
V c nh th m s xung vo chn ngt ngoi trong mt giy.
- Sau bin m s c vi iu khin a ra d liu tng ng hin th ln Led 7 on.
4.4 La chn thit b:
- Cn chun b my tnh c ci KeilC v Proteus.
- Kt thc hnh 8051: cn b hin th trn kit l 6 led 7 on v b cho xung vo chn ngt
ngoi m tn s.
4. 5.Cc bc thc hin.
B1: V mch m phng bng Proteus.
B2: Cho xung vo chn P3.2

B3: Vit code chng trnh theo yu cu:


#include <REGX52.H>

///////////khai bao bien


unsigned char display[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int k,w=0,dem=0;
int thu=0;
int sl =0,xung=0;
int a,a1,b,b1,c,c1,d,d1,e,f;
//////////////delay
void delay(int d)
{
int i;
for(i=0;i<d;i++)
{;}

}
////////khoi tao ngat
void khoitaongat (void)
{
EA =0; //cam ngat toan cuc
TMOD = 0x10; //Timer 1 che do1 , 16 bit
TH0 = 0xfc; //nap gia tri 252 vao TH0
TL0 = 0x66; //gia tri khoi tao 102 vao TL0
ET1 = 1; //cho phep ngat timer 0
IT0 = 1; //1 ngat theo suon xuong

; 0 ngat theo muc

EX0 = 1; //Cho phep ngat ngoai 0


EA = 1; //cho phep ngat toan cuc
TR1 = 1; //chay timer 0 bat dau dem so chu ky may
}
//////////////////////
void hienthi(long k)
{
a=k/100000;

//tram nghin

a1=k%100000;
b=a1/10000;

//chuc nghin

b1=a1%10000;
c=b1/1000;

// nghin

c1=b1%1000;
d=c1/100;

//tram

d1=c1%100;
e =d1/10; //chuc
f=d1%10;

//don vi

for(sl=0;sl<10;sl++)
{
P0=display[a]; //display tram nghin

P1_0=0;
delay(50);
P1_0=1;
//////////////////////////////////////////////
P0=display[b]; //display chuc nghin
P1_1=0;
delay(50);
P1_1=1;
//////////////////////////////////////////////
P0=display[c]; //display nghin
P1_2=0;
delay(50);
P1_2=1;

//////////////////////////
P0=display[d];//display tram
P1_3=0;
delay(50);
P1_3=1;
/////////////////////////////
P0=display[e]; //display chuc
P1_4=0;
delay(50);
P1_4=1;
///////////////
P0=display[f]; //display don vi
P1_5=0;
delay(50);
P1_5=1;
}

}
////////////// ngat timer 0
void timer1_1ms(void) interrupt 3
{
TR1 =0; //dung chay timer 1

//0xffff-1000 =0xfc66

dem=dem+1;
if(thu==1)
{
w=0; dem=0; thu=0;
}
TH1 = 0xfc;
TL1 = 0x66;
TR1 = 1; //cho chay timer 1
}
//////////////////////////
void main(void)
{
khoitaongat();
while(1)
{
hienthi(w) ;
}
}
////////////ngat ngoai 0
void count0(void) interrupt 0
{
if(dem<1020)//neu thoi gian dem van nho hon 1 giay
{
w=w+1;
}

//tang so xung vao

else
if(dem==1021) //neu bien dem lon hon 1 giay
{
w=w;

//hien thi so xung dem duoc


thu=thu+1;

}
}

Bc 4 : bin dch chng trnh v np vo kit kim tra kt qu.

Bi 5 - LP TRNH CHC NNG NGT TRUYN THNG NI


TIP
5.1 Mc ch:

Thc hnh vi cc cng c phn mm: phn mm lp trnh KeilC, phn mm m phng
Proteus, phn mm np chng trnh cho vi iu khin ISP_Prog.
Lp trnh giao tip vi cc thit b ngoi vi (nh l my tnh) thng qua giao thc truyn
thng ni tip.
Giao tip cc d liu t cc thit b ngoi vi.
5.2 Yu cu:

Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng


trnh cho vi iu khin.
u ni cc chn dng giao tip truyn thng phi r rng.
Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.

5.3 s nguyn l:

Nguyn l hot ng:


- Cc module ni tip kt ni thng qua DIPSW SW1(Chn 1, 2 ) vo module USART
ca MCU bng cch giao tip vi P3.0 v P3.1.
- Chn 1, 2 ca DIPSW SW1 kim sot cc kt ni ca module ni tip v MCU. Khi
module ny c s dng, chng ta phi m bo rng chn 1, 2 ca DIPSW SW1 trong
trng thi kt ni, khi khng s dng, m bo rng cc chn 1, 2 ca DIPSW SW1 l
trong tnh trng ngt kt ni.
5.4 La chn cc thit b:
-

S dng vi iu khin 8051 v phn mm m phng proteus.


thc hin bi thc hnh ny.
RS232 chip chuyn i cp in p
cng giao tip RS232 (port ni tip 9-pin)
DIPSW SW1

5.5 Cc bc thc hin :

Bc 1: u ni cng truyn thng ni tip ,tng ng vi cng truyn thng ca


thit b ngoi vi.
Bc 2: M phng bng Proteus.
Bc 3 : Chng trnh.
#include <reg52.h>
#include <intrins.h>
unsigned char code str1[] = " welcome to www.tme.com.vn \n ";

unsigned char code str2[] = " Easy8051 Development KIT \n ";


unsigned char code reserve[3]_at_ 0x3b; //Keep the first three bytes 0x3b
/**********************************************************
Delay subroutine
**********************************************************/
void delayms(unsigned int ms)
{
unsigned char k;
while (ms--)
{
for (k = 0; k < 114; k++)
;
}
}
/*********************************************************
Subroutine to send data
*********************************************************/
void txdata(unsigned char dat)
{
SBUF = dat; //Send data
while (!TI)
;
//Waiting for the interrupt data transmission
TI = 0; //Clear interrupt flag
}
/*********************************************************
Receive Data Functions
*********************************************************/
unsigned char rxdata()
{
unsigned char dat;
while (!RI)
;
dat = SBUF; //Receive data
RI = 0; //Clear interrupt flag
return (dat);
}

/********************************************************
Send string functions
/********************************************************/
void send_str(unsigned char str[])
{
unsigned char i = 0;
while (str[i] != '\0')
{
SBUF = str[i++];
while (!TI)
;
//Wait for data transfer is completed
TI = 0; //Clear interrupt flag
}
}
/*********************************************************
Main function
*********************************************************/
void main(void)
{
unsigned char buff;
P0 = 0xff;
P2 = 0xff;
SCON = 0x50; //Set serial port mode 1, the receive enable
PCON = 0x00; //Baud rate is doubled
TMOD = 0x20; //Timer 1 in 8-bit auto-reload mode, used as a baud
EA = 1;
TL1 = 0xfd;
TH1 = 0xfd; //Baud 9600
TR1 = 1;
delayms(100);
send_str(str1); //Send string str1
delayms(1000);
send_str(str2); //Send string str2
delayms(1000);
txdata('O');
txdata('K');

txdata('\n'); //Line
delayms(1000);
while (1)
{
buff = rxdata(); //Receive data
txdata(buff); //Send data
}
}

/*********************************************************/
Bc 5: Bin dch chng trnh v chy trn kit . Truyn thng thit b ngoi vi
y l my tnh.

Bi 6 - LED MA TRN
6.1 :Mc ch:

Thc hnh vi cc cng c phn mm: phn mm lp trnh KeilC, phn mm m phng
Proteus, phn mm np chng trnh cho vi iu khin ISP_Prog.
Lp trnh cc cch qut cc hng hay ct v a ra d liu hin th cc k t m mnh
mong mun trn led ma trn.
To ra cc hiu ng m ta mong mun nh: dch phi , dch tri, nhy ,
6.2 : Yu cu:

u ni cc chn mt cch r rng (khng chng ln nhau) ni chn sao cho d cho
ngi lp trnh nht.
Nm bt c chc nng cc phn t trong s mch.
Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng
trnh cho vi iu khin.
Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.
6.3 S nguyn l:

Nguyn l hot ng:


- Mun cho led sng , cp in dng 5v vo hng , 0v vo ct , dng 10mA n 15mA.
- Hin th ch : thng k cc im sng thnh ch ri cho cc hng ,cc 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 bit iu khin
trong1 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 bit sau : 0x05 (0000 0101).
- 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
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 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 1 , 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.
6.4 La chn thit b:
- S dng vi iu khin 8051 v phn mm m phng proteus.
- thc hin bi thc hnh ny.
6.5 Trnh t lm vic:
Bc 1: u cc chn ca vi iu khin 8051 tng ng vi cc chn ca con led ma
trn.
Bc 2 : M phng bng proteus:

Bc 3: chng trnh m phng:


#include <REGX52.H>
//////////ham delay
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 ma hoa
void mahoa(unsigned char x)
{
switch(x)
{
// Dau trang
case 0: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00;
kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00;
break; }
// Chu C 7EH,0FFH,0C3H,0C3H,0E7H,66H,0H,0H
case 1: { kytu1[0]=0x00; kytu1[1]=0x7E; kytu1[2]=0xff; kytu1[3]=0xc3;
kytu1[4]=0xc3; kytu1[5]=0xe7; kytu1[6]=0x66; kytu1[7]=0x00; kytu1[8]=0x00;
break; }
// Chu H 0FFH,0FFH,0CH,0CH,0CH,0FFH,0FFH,0H
case 2: { kytu1[0]=0x00; kytu1[1]=0xff; kytu1[2]=0xff; kytu1[3]=0x0c;
kytu1[4]=0x0c; kytu1[5]=0x0c; kytu1[6]=0xff; kytu1[7]=0xff; kytu1[8]=0x00;
break;
}
// Chu I 0 H,4H,2H,0FDH,0FCH,0H,0H,0H
case 3: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x04; kytu1[3]=0x02;
kytu1[4]=0xfd; kytu1[5]=0xfc; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00;
break;
}
//chu N 0FFH,0FEH,0CH,18H,30H,60H,0FFH,0FFH
case 4: { kytu1[0]=0x00; kytu1[1]=0xff; kytu1[2]=0xfe; kytu1[3]=0x0c;
kytu1[4]=0x18; kytu1[5]=0x30; kytu1[6]=0x60; kytu1[7]=0xff; kytu1[8]=0xff;
break;
}
// Chu H 0FFH,0FFH,0CH,0CH,0CH,0FFH,0FFH,0H
case 5: { kytu1[0]=0x00; kytu1[1]=0xff; kytu1[2]=0xff; kytu1[3]=0x0c;
kytu1[4]=0x0c; kytu1[5]=0x0c; kytu1[6]=0xff; kytu1[7]=0xff; kytu1[8]=0x00;
break;
}

// Dau trang
case 6: { 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 hien thi
void hienthi(void)
{
unsigned char n,m,lap;
unsigned char cot[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; // Cac
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)
P2=cot[n]; // Day gia tri 0V ra cong 0 (cac cot)
P1=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)
P2=cot[n];// Day gia tri logic 0V ra cong 0(cac cot)
P1=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
}
P2=0xFF;// Day cac cot len cao
P1=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==7) k=0;// Quay vong hien thi
}
}

Bc 4: chy m phng v kim tra xem c li khng. Nu khng c li th tip


tc pht trin da trn bi mu.

Bi 7 - O NHIT HIN TH LCD


7.1. Mc ch
Thc hnh vi cc cng c phn mm: phn mm lp trnh KeilC, phn mm m phng
Proteus, phn mm np chng trnh cho vi iu khin ISP_Prog.
Lp trnh chc nng s dng Timer v cc giao tip I/O ca 8051 vi DS18B20 ,cc giao
tip LCD.
Dng cm bin s DS18B20 o nhit .
Dng LCD hin th nhit mi trng.
Vit cc chng trnh con to thi gian tr
7.2. Yu cu
Tnh ton, la chn c cc thng s ca linh kin, gi tr in tr, dng, p cp cho
LCD , DS18B20.
Lp trnh giao tip c LCD hin th c nhit mi trng do DS18B20 chuyn ti.
Lp trnh giao tip DS18B20 c ghi d liu vi 89S52.
Nm bt c chc nng cc phn t trong s mch.
Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng
trnh cho vi iu khin.
Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.

7.3. S nguyn l

Hnh 1 S nguyn l mch o nhit hin th LCD


Nguyn l hot ng: Theo s nguyn l trn ta thy
- Khi hin th LCD c ni vo Port P0 : chc nng hin th nhit o c.
- Khi cm bin DS18B20 c ni vo chn P3_7 ca Port P3 :chc nng tip nhn tn
hiu tng t (nhit ) v chuyn i thnh tn hiu s v c AT89c52 c sau
hin th ln LCD.
- Khi iu chnh :l cc nt bm Button c ni vo cc chn P1_0P1_3 ca P1 dng
thay i cc thng s khi cn thit .
- Khi dao ng ngoi dng thch anh tn s dao ng 12MHz.
- Chc nng RESET c ni vo chn reset (chn s 9 ca vi iu khin).
Nguyn l hot ng ca LCD.
- Chn Vcc ,Vss,Vee : tng ng l cc chn cp ngun +5V v t , chn dng iu
khin tng phn ca LCD.
- Chn chn thanh ghi RS (Register Select) :Nu RS=0 th thanh ghi m lnh c chn
cho php ngi dng gi mt lnh chng hn nh xa mn hnh , a con tr v u
dng .. .Nu RS=1 th thanh ghi d liu c chn cho php ngi dng gi d liu
cn thit hin th ln LCD.
- Chn c/ghi RW : u vo c ghi cho php ngi dng ghi thong tin ln LCD khi
RW=0 hoc c thong tin khi RW=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
450ns.
Chn D0-D7 :y l 8 chn d liu 8 bit ,c dng gi thong 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 m ASCII ca cc ch ci t AZ v 09 n cc chn ny khi bt RS=1.

7.4. La chn thit b


- My tnh ci cc phn mm KEIL C v PROTEUS.
- Kit thc hnh 8051 :

LCD 1602 4Bit Modules:

M t Module :
LCD1602 ang s dng Port2 l bit iu khin v d liu bit.
Tt c cc chn ca Module c kt ni trc tip vi MCU.
Khi mn hnh LCD l khng s dng ,n c cho rng mn hnh LCD c ly ra
khi socket. Trong khi nu n c s dng ,chng ta nn tt tt c cc Module khc,
hoc ngc li mn hnh LCD s khng hin th.
Board pht trin c th chnh sng Becklight ca mn hnh LCD bng bin tr LCD
ADJ.
V d chng trnh hin th chui d liu trn LCD 1602 4Bit c tham kho ti
: www.tme.com.vn

Thut ton:

Cng iu kkin : PORT-1


Port1 c kt ni vi Header CN2 (PORT-1)

Hnh 4 V tr Port 1 trn board mch

DS18B20 Module cm bin nhit :

Module ny ch yu cho thy cch giao tip cm bin nhit DS18B20 vi MCU.

M t Module :
Ng ra ca DS18B20 i vo jumper JP8 kt ni ti chn P3_3 hoc P1_2ca MCU.
Khi module ny c s dng ,chng ta phi m bo jumper JP8 l trong trng thi kt
ni , khi khng s dng ,chng ta phi m bo rng JP8 l trong trng thi kt ni.
Chng trnh c trong CD-Rom.
7.5. Trnh t thc hin

Bc 1: Cm LCD vo LCD socket ,kim tra cc kt ni bng jumper ti DS18b20 v


phm bm iu khin.
Bc 2: V mch m phng trn Proteus

Hnh 5 S m phng proteus mch o nhit hin th LCD

Bc 3: M chng trnh mu
Chng trnh chnh:
#include <at89X52.h>
#include <string.h>
#include <lcd.h>
#include <adc.h>
unsigned char so[]= {'0','1','2','3','4','5','6','7','8','9'};
int dem=0,nhietdo,chuc,dvi;
////////////////
void hienthi( int nhietdo)
{
if(nhietdo<10)
{
LCD_print("Nhiet do:");
LCD_Wr(so[nhietdo]); // Write to LCD

LCD_print(" Do C");
LCD_Cmd(0x02);
}else
if(nhietdo>=10)
{
chuc=nhietdo/10;
dvi = nhietdo%10;
LCD_print("Nhiet do:");
LCD_Wr(so[chuc]);
LCD_Wr(so[dvi]);
LCD_print(" Do C");
LCD_Cmd(0x02);
}
}
////////////////////////
void main()
{
LCD_Init();
InitSerial();
while(1)
{

// Initialize LCD
// Initialize serial port //khoi tao port noi tiep

P0 = ReadADC(0);
dem =P0;
nhietdo=dem/2;
hienthi(nhietdo);
DelayMs(100);
}

// Stay here

}
-

Chng trnh lcd.h


const LCDEM8=0x30; //dinh nghia su dung che do 8 bit
const LCDDZ=0x80;
const LCDEM4=0x20;
//su dung che do 4 bit
const LCD2L=0x28;
const LCDCONT=0x0C;
//
const LCDSH=0x28; ///
// Values of LCD commands
const LCDCLR=0x01;
const LCDCH=0x02;
const LCDCR=0x06;
const LCDCL=0x04;
const LCDSL=0x18;
sang trai)
const LCDSR=0x1C;
sang phai)
const LCDL1=0x10;
trai)
const LCDL2=0xC0;
2)

// Clear LCD (xa LCD)


// Set cursor at home (tro ve dau dong)
// Move cursor one place to the right
(dich con tro sang phai)
// Move cursor one place to the left
(dich con tro sang trai)
// Move text on LCD one place to the left (dich toan bo hien thi
// Move text on LCD one place to the right (dich toan bo hien thi
// Set cursor at beginig of the first line (dich vi tri con tro sang
// Set cursor at beginig of the second line (ep con tro ve dong thu

void LCD_Init(void); //khoi tao LCD


void LCD_clk(void);
//
void delay(unsigned long a); //ham tre
void LCD_Cmd (unsigned char Cmd); //ham gui lenh dieu khien

void LCD_Wr (unsigned char dataw); //ham ghi 1 ky tu len LCD


void LCD_print(char *string);
//ham ghi 1 chuoi ky tu tren LCD

void delay(unsigned long a)


{
unsigned long i;
for (i=0;i<a;i++);
}
void LCD_clk(void)
{
delay(100);
/* set and reset P2.3 */
P2 = P2 | 0x08 ; //set P2.3 cho phep ghi len LCD
P2 = P2 & 0xF7 ; //reset P2.3 =0 khong cho phep ghi len LCD
delay(100);
}
////////////ham gui 1 lenh dieu khien.
void LCD_Cmd(unsigned char Cmd)
{
unsigned char temp;
temp=Cmd & 0xF0;
P2=temp;

//lay 4 bit cao cua lenh dieu khien


//gui 4 bit cao

LCD_clk();
P2=0;

//
//xoa P2

temp=Cmd;
temp=temp<<4;
temp=temp & 0xF0;
P2=temp;

//

LCD_clk();
P2=0;
}
//////ham khoi tao LCD
void LCD_Init(void)
{
P2=0x00;
delay(2000);
P2=LCDEM8;
LCD_clk();

P2 = 0;
delay(2000);
P2=LCDDZ;

//gui tiep 4 bit thap cua lenh dieu khien

LCD_clk();
P2=0;
P2=LCDEM4;
LCD_clk();
P2=0;

LCD_Cmd(LCD2L);
LCD_Cmd(LCDCONT);
LCD_Cmd(LCDSH);
LCD_Cmd(LCDCLR);
}
///////////ham ghi hien thi 1 ky tu
void LCD_Wr(char dataw)
{
unsigned char temp;
temp=dataw & 0xF0;//temp = dataw v voi 4 bit cao (lay 4 bit cao cua ky tu muon hien thi)
temp=dataw | 0x04; //P2.2 =1 cho phep ghi du lieu
P2=temp;
//
gui 4 bit cao cua ky tu
LCD_clk();
P2=0;
temp=dataw; //temp = du lieu ky tu hien thi
temp=temp<<4; //dich trai 4 bit
temp=temp & 0xF0; //va voi 4 bit cao
temp=temp | 0x04; //P2.2 =1 cho phep ghi du lieu . neu P2.2 =0 ghi lenh
P2=temp; //gui 4 bit thap cua ky tu
LCD_clk();
P2=0;
}
//////////ham hien thi chuoi ky tu
void LCD_print(char *string)
{
size_t length;
size_t temp;
length=strlen(string);
for (temp=0;temp<length;temp++){
LCD_Wr(string[temp]);
};
}
- Chng trnh adc.h
#include<stdio.h>
sbit ADC_CS
sbit ADC_CLK
sbit ADC_DO
sbit ADC_DI

=
=
=
=

P3^5; //
P1^7; //
P1^6; //dua du lieu vao
P1^5;
//dua du lieu ra

void InitSerial(void);
void write_adc_byte(char data_byte);
unsigned int ReadADC(unsigned char channel);
void DelayMs(unsigned int count);
// Initialize serial port
//--------------------------------------void InitSerial(void)
{
SCON = 0x52; // setup serial port control '0101 0010'
TMOD = 0x20; // hardware (9600 BAUD @11.05592MHZ)
TH1 = 0xFD; // TH1
TR1
= 1;
// Timer 1 on
}

//--------------------------------------// read analog from ADC


// Single end mode(2 channel)
//--------------------------------------unsigned int ReadADC(unsigned char channel)
{
unsigned char i,k;
unsigned int AdcResult; // 12 bit //bien chua ket qua ADC
ADC_CS=0;
// Active chip select
//lua chon chip hoat dong
k++;
// Delay about 1 uS
ADC_CLK=0; // make clock low first
k++;k++;
channel = channel? 0xF0 : 0xE0; //
gan channel = channel neu channel bang 0 thi channel =
0xE0'1110 0000';
//neu channel khac 0 channel = 0xF0'1111 0000'
k++;k++;
// delay about 2 uS
//--- write command 4 bit ---------for(i=0; i< 4;i++) {
ADC_DI = (channel & 0x80) != 0;//
channel<<=1; //dich trai 1 bit
ADC_CLK=1;
k++;k++;
// delay about 2 uS
ADC_CLK=0;
}
k++;k++;
ADC_CLK=1;
k++;k++;
ADC_CLK=0;
k++;k++;

// delay about 2 uS
// delay about 2 uS
// delay about 2 uS

//--- read ADC result 12 bit -------AdcResult=0;


for(i=0;i<12;i++) {
ADC_CLK=1;
k++;k++;
// delay about 2 uS
AdcResult<<=1;
//dich trai AdcResult di 1 bit

AdcResult=AdcResult | (ADC_DO & 0x01);


ADC_CLK=0;
k++;k++;
// delay about 2 uS

//ADC_DO&0x01 lay 1 bit dau cua ADC_DO

}
ADC_CS=1;
return(AdcResult);
}
//--------------------------------------// Delay mS function
//--------------------------------------void DelayMs(unsigned int count) { // mSec Delay 11.0592 Mhz
unsigned int i;
// Keil v7.5a
while(count) {
i = 115;
while(i>0) i--;
count--;
}
}

Bc 4: Bin dch chng trnh mu, m phng trn Proteus v np chng trnh vo kit
thc hnh Easy8051 chc chn cc khi mch cn dng hot ng tt.
Bc 5: Vit chng trnh, chy m phng v chy trn kit thc hnh 8051 theo yu cu
sau :
o Hin th c nhit c trn LCD
o Thay i tang ,gim thong s bng phm bm

Bc 6 : lu :
- Chng ta cng s dng RS =0 kim tra bit c bn xem LCD c sn sang nhn
thong tin .C bn l bit D7 v c th c c khi RW=1 v RS=0 nh sau :
Nu nh RW=1,RS=0 khi D7 =1 th LCD bn bi cc cng vic bn trong v s khng
nhn bt k thng tin no .Khi D7 =0 th LCD sn sang nhn thong tin mi.Lu chng
ta nn kim tra c bn trc khi ghi bt k d liu no ln LCD.
- Bng m lnh ca LCD :

iu khin LCD qua cc bc sau :

Bc 0: Chun b phn cng ,dng tuc vt xoay bin tr 5K 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 ln LCD hay thc hin lnh ln LCD.
Xut byte d liu ra cng iu khin iu khin 8 bit d liu ca LCD.
Kim tra c bn xem LCD sn sang nhn d liu mi cha. Quay vng li bc 1

Bi 8 - IU KHIN TC NG C MT CHIU
8.1 Mc ch:
-

S dng vi iu khin iu khin tc ng c 1 chiu.


S dng thnh tho cc cng c lp trnh , nh keilC . phn mm m phng : proteus,
a v d vo ng dng thc t c th, iu khin ng c mt chiu ngoi thc
t,
Nm bt c cc quy tc iu khin ng c mt chiu.

8.2 Yu cu
Tnh ton, la chn c cc thng s ca linh kin, gi tr in tr, dng, p cp cho cc
chn iu khin.
Nm bt c chc nng cc phn t trong s mch.
Bit cch s dng cc phn mm lp trnh, phn mm m phng, phn mm np chng
trnh cho vi iu khin.
Lp trnh c cc bi ton yu cu, hiu r tng cu lnh, tng hm, chng trnh con
v quy tc, cu trc cu lnh cng nh chc nng tc dng ca n.
8.3 S nguyn l :

Nguyn l hot ng :
- Vi iu khin s s dng cc ngt v giao tip vi phm bm iu khin ng c. Ty
vo mc ch iu khin m ta c th nhn nt ty . Dng thay i rng xung ,
a vo ng c mt chiu thay i tc quay ca ng c mt chiu.
- C th : xung PWM : a ra m transistor, xung vi rng ln hn transistor s m
lu hn ng c quay nhanh hn , v 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 mi khi ng cho ng c. thay i 10 cp tc vi chu k 1000us , ta
khi to ngt timer :100us 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 timer 0 , 100us ngt 1 ln , dng ch 2, 8 bit t ng np li
ca timer (v 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 c np gi tr lu trong TH0 (gi tr
np li) , do ta ch cn gn gi tr cho TL0 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.
8.4 Thc hin chng trnh :

Bc 1: u ni cc chn tng ng vi s nguyn l .

Bc 2 : Mch m phng:

Bc 3 : Chng trnh

#include <REGX52.H>

///////////ham delay
void delaylong(long n)
{
long i;
for(i=0;i<n;i++)
{;}
}
void khoitaongat(void)
{
EA = 0; //cam ngat toan cuc
TMOD = 0X02;
TH0 = 0X9B;
TL0 = 0X9B;
ET0 = 1; //cho phep ngat timer 0
EA = 1;//cho phep ngat toan cuc
TR0 = 1; //chay timer 0
}
//////////////
unsigned char dem =0; //khai bao bien dem tu 1->10
unsigned char phantramxung; //bien dem chua phan tram xung (0 ... 10)

////////////ham ngat
void timer0(void) interrupt 1 //ngat timer 0
{
TR0 =0; //dung chay timer 0
TF0 =0;//xoa co tran
dem++;
if(dem<phantramxung)P2_0=1; //neu bien dem < phan tram xung thi dua gia tri 1 ra cha
xung 5v
else P2_0=0; //neu dem=phantramxung
if(dem==10)dem=0;
TR0 =1;//cho chay timer 0
}
/////////////ham chinh
void main(void)
{
khoitaongat();
while(1)
{
phantramxung =9;
delaylong(20000);
phantramxung = 4;
delaylong(20000);
}
}

Bc 4: Bin dch chng trnh , ri np vo mch chy .


Bi 9 - IU KHIN T XA CC THIT B IN

You might also like