Tải bản đầy đủ (.ppt) (14 trang)

PHAN THUYET TRINH đề tài MẠCH đèn GIAO THÔNG THỜI GIAN THỰC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (284.59 KB, 14 trang )

TRƯỜNG CAO ĐẲNG KỸ THUẬT CAO THẮNG
KHOA ĐIỆN TỬ - TIN HOC

BÁO CÁO ĐỒ ÁN TỐT NGHIỆP

GVHD: Nguyễn Thanh Nghĩa
SVTH: Lâm Lương Sĩ
Huỳnh Hữu Thịnh
Lê Quốc Thắng
Nguyễn Hải Bằng


KHỐI NGUỒN KHỐI VI ĐIỀU KHIỂN VÀ KHỐI
BÀN PHÍM


KHỐI HIỂN THỊ


CHƯƠNG TRÌNH ĐÈN GIAO THÔNG

CHƯƠNG TRÌNH CHÍNH
// CHUONG TRINH DIEU KHIEN DEN GIAO THONG CHAY 2 CHE DO
// CHE DO CHAY BANG TAY
// CHE DO CHAY TU DONG, CO DIEU CHINH THOI GIAN
//.................................................................
#INCLUDE<16F877A.H>
#include <KhaiBaoTGhi_16F877A.h>
#FUSES NOWDT,PUT,HS,NOPROTECT,NOLVP
#USE DELAY (CLOCK =20000000)
INT8 GIAY1,TT1,GIAY2,TT2,CHUC1,DVI1,CHUC2,


DVI2,D01,XANH1,VANG1,D02,XANH2,VANG2,BDN,MODE;
CONST UNSIGNED CHAR MA[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92
0x82,0xF8,0x80,0x90};
//----------------------------------------------------------------//chuong trinh HIEN THI GIAY TREN LED 7 DOAN


{
CHUC1 =GIAY1 /10;
DVI1 =GIAY1 %10;
OUTPUT_D(MA[CHUC1]);
OUTPUT_C(0XfD);
DELAY_MS(1);
OUTPUT_C(0Xff);
OUTPUT_D(MA[DVI1]);
OUTPUT_C(0XfE);
DELAY_MS(1);
OUTPUT_C(0Xff);
}
VOID HIENTHI2() //HIEN THI THOI GIAN CHO TUYEN 2
{
CHUC2 =GIAY2 /10;
DVI2 =GIAY2 %10;
OUTPUT_D(MA[CHUC2]);
OUTPUT_C(0Xf7);
DELAY_MS(1);
OUTPUT_C(0Xff);
OUTPUT_D(MA[DVI2]);
OUTPUT_C(0XfB);
DELAY_MS(1);
OUTPUT_C(0Xff);

}


VOID HIENTHI3()
//HIEN THI THOI GIAN CAI DAT
{
CHUC2 =GIAY1 /10;
DVI2 =GIAY1 %10;
OUTPUT_D(MA[CHUC2]);
OUTPUT_C(0XDf);
DELAY_MS(1);
OUTPUT_C(0Xff);
OUTPUT_D(MA[DVI2]);
OUTPUT_C(0XEF);
DELAY_MS(1);
OUTPUT_C(0Xff);
}
VOID HIENTHI4()
//HIEN THI THOI GIAN CAI DAT
{
CHUC2 =GIAY2 /10;
DVI2 =GIAY2 %10;
OUTPUT_D(MA[CHUC2]);
OUTPUT_C(0XDf);
DELAY_MS(1);
OUTPUT_C(0Xff);
OUTPUT_D(MA[DVI2]);
OUTPUT_C(0XEF);
DELAY_MS(1);
OUTPUT_C(0Xff);

}
VOID GIAIMA_HIENTHI_LED7DOAN()
{
HIENTHI1();
HIENTHI2();
}


//----------------------------------------------------------------//chuong trinh con hien thi den giao thong
VOID HIENTHI_DEN()
{
IF((TT1==0)&(TT2==1))
{
OUTPUT_A(0XEE); //D1 X2
}
IF((TT1==0)&(TT2==2))
{
OUTPUT_A(0XDE); //D1 V2
}
IF((TT1==1)&(TT2==0))
{
OUTPUT_A(0XF5); //X1 D2
}
IF((TT1==2)&(TT2==0))
{
OUTPUT_A(0XF3); //V1 D2
}
}
//---------------------------------------------------------------#PRIORITY RB, TIMER1
//chuong trinh khi xay ra ngat timer1

#INT_TIMER1
VOID NGAT_TIMER1()
{
SET_TIMER1(15536);
NGAT(tngat):0.2us*50000=10000us=10ms
BDN++;
IF(BDN==100) // t dinh thoi: t=tngat*BDN=10ms*100=1s


{
GIAY1--;
GIAY2--;
BDN=0;
}
IF(GIAY1==0)
{ TT1++;
SWITCH (TT1)
{
CASE 1: GIAY1=XANH1;
BREAK;
CASE 2: GIAY1=VANG1;
BREAK;
CASE 3: GIAY1=D01; TT1=0; BREAK;
}
}
IF(GIAY2==0)
{
TT2++;
SWITCH (TT2)
{

CASE 1: GIAY2=XANH2;
BREAK;
CASE 2: GIAY2=VANG2;
BREAK;
CASE 3: GIAY2=D02; TT2=0; BREAK;
}
}
}
//---------------------------------------------------------------//chuong trinh khi xay ra ngat RB
#INT_RB
VOID NGAT_PORTB()
{


//XU LI CHO DO DIEU KHIEN DEN BANG TAY
IF(RB4==0) //kiem tra co nhan che do bang tay?
{
WHILE(TRUE)
{
HIENTHI_DEN();
IF ( RB1==0)
{TT1=1;
TT2=0;}
IF ( RB2==0 )
{TT1=0;
TT2=1;}
IF (RB3==0) {TT1=1;TT2=0; GIAY1=XANH1; GIAY2=D02;BREAK;}
}
}
//XU LI DIEU CHINH THOI GIAN

IF(RB5==0) //kiem tra co nhan nut set_time?
{
OUTPUT_A(0XEE); // D01, D02
WHILE (TRUE)
{
IF(RB4==0)
{
WHILE (RB4==0){DELAY_MS(10);}
MODE++;
}
IF(MODE==1) {GIAY1=XANH1; RE0=1; RE1=0; HIENTHI3();}
IF(MODE==2) {GIAY1=VANG1; RE0=0; RE1=1; HIENTHI3();}
IF(MODE==3) {GIAY2=XANH2; RE1=0; RB6=1; RB7=0;
HIENTHI4();}
IF(MODE==4) {GIAY2=VANG2; RB6=0; RB7=1; HIENTHI4();}
IF(MODE==5) {MODE=1; RB7=0;}


IF((RB1==0)&(MODE==1))
{
WHILE (RB1==0){DELAY_MS(10);}
XANH1++;
IF(XANH1==100){XANH1=0;}
GIAY1=XANH1;
HIENTHI1();
}
IF((RB1==0)&(MODE==2))
{
WHILE (RB1==0){DELAY_MS(10);}
VANG1++;

IF(VANG1==100){VANG1=0;}
GIAY1=VANG1;
HIENTHI1();
}
IF((RB1==0)&(MODE==3))
{
WHILE (RB1==0){DELAY_MS(10);}
XANH2++;
IF(XANH2==100){XANH2=0;}
GIAY2=XANH2;
HIENTHI2();
}
IF((RB1==0)&(MODE==4))
{
WHILE (RB1==0){DELAY_MS(10);}
VANG2++;
IF(VANG2==100){VANG2=0;}
GIAY2=VANG2;
HIENTHI2();


}
IF((RB2==0)&(MODE==1))
{
WHILE (RB2==0){DELAY_MS(10);}
XANH1--;
IF(XANH1==0){XANH1=99;}
GIAY1=XANH1;
HIENTHI1();
}

IF((RB2==0)&(MODE==2))
{
WHILE (RB2==0){DELAY_MS(10);}
VANG1--;
IF(VANG1==0){VANG1=99;}
GIAY1=VANG1;
HIENTHI1();
}
IF((RB2==0)&(MODE==3))
{
WHILE (RB2==0){DELAY_MS(10);}
XANH2--;IF(XANH2==0){XANH2=99;}
GIAY2=XANH2;
HIENTHI2();}
IF((RB2==0)&(MODE==4))
{
WHILE (RB2==0){DELAY_MS(10);}
VANG2--;
IF(VANG2==0){VANG2=99;}
GIAY2=VANG2;
HIENTHI2();
}


IF(RB3==0)
{
D01=XANH2+VANG2; D02=XANH1+VANG1;
GIAY1=XANH1; GIAY2=D02; TT1=1; TT2=0;
RB7=0; RB6=0; RE0=0; RE1=0;
BREAK;

}
}
}
}
//----------------------------------------------------------------//chuong trinh con khoi tao port xuat nhap
VOID KHOI_TAO_PORT()
{
SET_TRIS_A(0X00);
SET_TRIS_C(0X00);
SET_TRIS_D(0X00);
SET_TRIS_B(0X3F);
SET_TRIS_E(0X00);
PORT_B_PULLUPS(0XFF);
}
//----------------------------------------------------------------//chuong trinh con khoi tao timer_ ngat
VOID KHOI_TAO_NGAT()
{
ENABLE_INTERRUPTS(INT_RB);
ENABLE_INTERRUPTS(INT_TIMER1);
ENABLE_INTERRUPTS(GLOBAL);
SETUP_TIMER_1( T1_INTERNAL | T1_DIV_BY_1);
SET_TIMER1(15536);
BDN=0;
}


//----------------------------------------------------------------//chuong trinh con khoi tao thoi gian va trang thai ban dau
VOID KHOI_TAO_TRANG_THAI_BAN_DAU()
{
XANH1=30;

VANG1=5;
XANH2=20;
VANG2=5;
D01=XANH2+VANG2;
D02=XANH1+VANG1;
GIAY1=XANH1;
TT1=1;
GIAY2=D02;
TT2=0;
RE0=0;
RE1=0;
RB7=0;
RB6=0;
}
//----------------------------------------------------------------//chuong trinh chinh
void main ( )
{
KHOI_TAO_PORT();
KHOI_TAO_NGAT();
KHOI_TAO_TRANG_THAI_BAN_DAU();
WHILE(1)
{
GIAIMA_HIENTHI_LED7DOAN();
HIENTHI_DEN();
}
}


BEGIN


KHỞI TẠO PORT A,B,C,D
KHỞI TẠO NGẮT RB,TIMER1

KHỞI TẠO GIÁ TRỊ THỜI
GIAN CHO CÁC ĐÈN
X1=30s, V1=5s, D1=X2+V2
X2=20s,V2=5s, D2=X1+V1

HIỂN THỊ ĐÈN
HIỂN THỊ THỜI GIAN

END



×