You are on page 1of 6

/

*************************************************************************
****/
/***********************DEN GIAO THONG 1 NGA
TU*****************************/
/************************ NHOM 4 DTVT 15A
********************************/
/*==============================================================
=======*/
#include<AT89X51.h>
(S dng th vin AT 89x51h, Phi s dng th vin ny v trong file header cha cc
nh ngha trong 89c51 s nh ngha hm, cc thanh ghi ca 89c51)
unsigned char thoi_gian0,thoi_gian1,thoi_gian2,thoi_gian3;
(cc bin thi gian 0,1,2,3 l thi gian ca 4 n trn bn hng)
unsigned int over=0;
(bin over dng m)
unsigned char ma[10]={192,249,164,176,153,146,130,248,128,144};
(Khai bo m cc n led
M 192 l m sng n 0, ng vi m hin th s 0
M 192 l m sng n 1, ng vi m hin th s 1
M 192 l m sng n 2, ng vi m hin th s 2
M 192 l m sng n 3, ng vi m hin th s 3
M 192 l m sng n 4, ng vi m hin th s 4
M 192 l m sng n 5, ng vi m hin th s 5
M 192 l m sng n 6, ng vi m hin th s 6
M 192 l m sng n 7, ng vi m hin th s 7
M 192 l m sng n 8, ng vi m hin th s 8
M 192 l m sng n 9, ng vi m hin th s 9
//khai bao mang hien thi tu o den 9 cho led 7 doan
void delay(unsigned char time)/**************************/
(hm delay to tr)
{
//ham tao tre 1 ms
unsigned char x,y;
// chu ki cua vng for mat 8us
for(x=0;x<time;x++)
//125*8us= 1ms
{
//
for(y=0;y<125;y++); /*************************/
}
( y dng 2 vng for ch c tc dng to tr)
}
void time0() interrupt 1
(khai bo chng trnh hm or chng trnh con

Void time 0 chng trnh con phc v ngt ca timer 0. Khi ngt xy ra chng trnh
chnh nhy n chng trnh con ang ngt ny . Mi ln nh vy over tng ln 1
n v cho n khi over bng 4950 th c ngha 1giy tri qua.
{
//cu 202 us thi tran 1 lan
over++;
if(over==4950)
//4950*202= 999900 xap si 1s
(ti sao li l 4950 v:4950 nhn vi 202 bng 999900 micro giy. Xp x 1giy. C
202micro giy th trn 1 ln => chu ky trn l 202.
1 giy tri qua over = 4950.
{
over=0;
(gn over = 0 khi to bin over
thoi_gian0--; /**********************************/
thoi_gian1--; // sau 1s giam thoi gian den hien thi di
thoi_gian2--; // mot don vi
(cc bin thi gian gim i 1 n v trn 4 n)
thoi_gian3--; /**********************************/
}
}
(mun hin th thi gian phi dng 2 n led 7 on. dng 2 v thi gian chy t 00
n 99)
void h_thi0()
// ham hien thi led 7 doan cot1
{
unsigned char k,chuc,donvi;
for(k=0;k<2;k++) dng ny k cn thit
(hm hin th phi tch ra ch s hng chc v hng n v nh th no?)
{
donvi=thoi_gian0 % 10;
chuc=thoi_gian0 / 10;
}
(ly gi tr thi gian y chia 10 s ra s d hng chc v s d hng n v)
P2=ma[donvi]; cng P2 a m n led ra ngoi. a xong dng cng P0
P0=0xfe;
cho n sng
delay(1);
P0=0xff;
delay(1);
P0=0xfb;
delay(1);
P0=0xff;
delay(1);
P2=ma[chuc];
P0=0xfd;
delay(1);
P0=0xff;
delay(1);

P0=0xf7;
delay(1);
P0=0xff;
delay(1);
}
void h_thi1()
// ham hien thi led 7 doan cot2
{
unsigned char k,chuc,donvi;
for(k=0;k<2;k++)
{
donvi=thoi_gian1%10;
chuc=thoi_gian1/10;
}
P2=ma[donvi];
P0_4=0;
delay(1);
P0_4=1;
delay(1);
P0_6=0;
delay(1);
P0_6=1;
delay(1);
P2=ma[chuc];
P0_5=0;
delay(1);
P0_5=1;
delay(1);
P0_7=0;
delay(1);
P0_7=1;
delay(1);
}
void h_thi2()
// ham hien thi led 7 doan
{
unsigned char k,chuc,donvi;
for(k=0;k<2;k++)
{
donvi=thoi_gian2%10;
chuc=thoi_gian2/10;
}
P2=ma[donvi];
P0_4=0;
delay(1);

P0_4=1;
delay(1);
P0_6=0;
delay(1);
P0_6=1;
delay(1);
P2=ma[chuc];
P0_5=0;
delay(1);
P0_5=1;
delay(1);
P0_7=0;
delay(1);
P0_7=1;
delay(1);
}
void h_thi3()
// ham hien thi led 7 doan
{
unsigned char k,chuc,donvi;
for(k=0;k<2;k++)
{
donvi=thoi_gian3%10;
chuc=thoi_gian3/10;
}
P2=ma[donvi];
P0_0=0;
delay(1);
P0_0=1;
delay(1);
P0_2=0;
delay(1);
P0_2=1;
delay(1);
P2=ma[chuc];
P0_1=0;
delay(1);
P0_1=1;
delay(1);
P0_3=0;
delay(1);
P0_3=1;
delay(1);
}
void main()

{
P0=255; cu lnh gn P0 v P2 =255 lm cho cc bit ca cng ny tt =1
P2=255;
TMOD=2;
//timer0 o che do 2 tu nap lai
(gn Tmod =2 ( thanh ghi chn ch cho timer)
Chn ch cho timer 0 chy ch 2
*bnh thng c 4 ch
TH0=54;
//gia tri nap lai
(l gi tr chn np cho thanh ghi tch ly TL0)
TR0=1;
//cho phep timer0 chay
TR0=1 cho php timer 0 chy
ET0=1;
//cho phep ngat timer0
Cho php cc ngt ca timer 0 c php kch hat
EA=1; //cam cac ngat con lai cua vdk
Cho php tt c cc ngt
Mun c hat ng 1 ngt EA =1l k cn ETO=1 l k . Nu 1 trong 2 thiu s
khng hot ng.
while(1)
// vong lap vo han
while 1 c quy nh l vng lp v hn.
while =0 dng li that
while=1 chy

Vng lp v hn

{
thoi_gian0=20; // thoi gian hien thi led xanh cot 1
thoi_gian1=24; // thoi gian hien thi led do cot 2
gi tr ban u gn cho thoi_gian 20 v 24
sau hin th, u tin cao hn 24s khang thi gian mu , cn thp hn =20 n
xanh
{
P1=0x21;
// led xanh cot 1 sang ,led do cot 2 sang
(Trong vng lp P1=0x21 th led xanh ct 1 sng v led ct 2 sng
Sau gi chung trnh con hin th o v hin th 1 n sng.)
h_thi0(); // hien thi thoi gian led xanh
h_thi1(); // hien thi thoi gain led do
}
while(thoi_gian0!=0); // cho khi thoi gian0 =o thi led xanh tat thoat khoi vong lap
while kim tra biu thc trc,thc thi sau
Do_while thc thi trc, kim tra sau
(vng While kim tra bin thoi gian =0 cha. Nu =0 th thot.
thoi_gian0=5; // thoi gian hien thi led vang o cot 1
thoi_gian1=5; // thoi gian con lai cua led do cot 2
gn thi gian 0 vad thi gian 1 =5 led vng ct 1 sng.
do
{
P1=0x11;
//led van cot1 sang,led do cot 2 sang
h_thi0();
// hien thi thoi gain led vang

h_thi1();
// hien thi thoi gian led do
}
while(thoi_gian0!=0); // thoi gian 0= 0 thi led o cot 2 va led vang cot 1 tat thoat
vong lap chuyen sang che do 2
thoi_gian2=20; //hoi gian hien thi led xanh cot 2
thoi_gian3=24; //hoi gian hien thi do xanh cot 1
do
{
P1=0x0c;

//led xanh cot 2 sang ,led do cot 1 sang

h_thi2(); //hien thi thoi gian led xanh


h_thi3(); //hien thi thoi gain led do
}
while(thoi_gian2!=0); //thoi gian 2= 0 thi led xanh cot 2 tat
thoi_gian2=5;//thoi gian hien thi led vang cot 2
thoi_gian3=5;//thoi gian con lai cua led do cot 1
do
{
P1=0x0a;//led vang cot 2 sang va led do cot 1 sang
h_thi2();//hien thi thoi gian led vang cot 2
h_thi3();// hien thi thoi gian led do cot 1
}
while(thoi_gian2!=0);// cho thoi gian2=0 led do va vang deu tat quay lai che do ban
dau
}
}

You might also like