TRƯỜNG CAO ĐẲNG KỸ THUẬT CAO THẮNGKHOA Đ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Ồ
Trang 1TRƯỜ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
Trang 2KHỐI NGUỒN KHỐI VI ĐIỀU KHIỂN VÀ KHỐI
BÀN PHÍM
Trang 3KHỐI HIỂN THỊ
Trang 4CHƯƠ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
VOID HIENTHI1() // HIEN THI THOI GIAN CHO TUYEN 1
Trang 5
{
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);
}
Trang 6VOID 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();
}
Trang 7// -//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
Trang 8{
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()
{
Trang 9//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;}
Trang 10IF((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();
Trang 11}
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();
}
Trang 12IF(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;
}
Trang 13// -//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();
}
}
Trang 14KHỞ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