Tải bản đầy đủ (.docx) (11 trang)

THIẾT KẾ ĐIỀU KHIỂN ĐÈN GIAO THÔNG

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 (250.04 KB, 11 trang )

Báo cáo cuối kì
Nhóm 9
MƠN HỌC: VI ĐIỀU KHIỀN
ĐỀ BÀI :THIẾT KẾ ĐIỀU KHIỂN ĐÈN
GIAO THƠNG

NHĨM MƠN HỌC: 07
SVTH:


PHỤ LỤC
CHƯƠNG 1.GIỚI THIỆU ĐỀ TÀI
CHƯƠNG 2.THÀNH PHẦN ,CƠ SỞ LÝ THUYẾT
CHƯƠNG 3.THIẾT KẾ PHẦN CỨNG VÀ CODE
CHƯƠNG 4.KẾT LUẬN


CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
1)

Giới thiệu

Mạch điều khiển đèn giao thông tự động chuyển đèn khi hết thời gian và
diều khiền bằng nút bấm
2)

Phương tiện nghiên cứu

- Tài liệu tổng hợp trên Internet
- Phần mềm : Proteus và Pic c
CHƯƠNG 2: THÀNH PHẦN CẤU TẠO


1)

Thành phần chính
- Pic16f877a
- Resitor,NOT
- Led thanh
- Trafficlight
- Button

Sơ lượt qua phần kết nối của project Traffic light:
CMU: vi điều khiển pic 16f877A, 20 Mhz
 Led 7 đoạn: PORTD và PORTE điều khiển led 2 led 7
đoạn; RD0…RD1 kết nối A, B…DP của led 7 đoạn;
RE0, RE1 điều khiển 2 led 7 đoạn.
 Led trafficlight kết nối đến RC1, RC2, RC3.
Nguyên lý hoạt động
- Có 3 chế độ:normal,peaktime,night,reset
- Chế độ normal: đèn đỏ 40s, đèn xanh 40s , đèn vàng 5
- Chế độ peakitime: đèn đỏ 60s, đèn xanh 60s , đèn vàng 5
- Chế độ night: chỉ sáng dèn vàng
- Nút reset để thay đổi giữa các chế độ


2)


CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG VÀ CODE
1.PHẦN CỨNG
DÙNG PHẦN MỀM HỖ TRỢ PROTEUS ĐỂ VẼ
B1. Lấy linh kiện

B2:
-nối chân RB0-RB8 con pic16f877a vào led ,
-Nối chân led 12 qua 2 diode NOT đã kết nối chân RC0 và RC1
-nối các BUTTON vào chân AN0-AN2
B3: nối chân GROUND và POWER
B4: Nhập code trong phần mềm CCS
Phần cứng sau khi được vẽ trên PROTEUS

2.PHẦN CODE


DÙNG PHẦN MỀM HỖ TRỢ PIC C COMPILER
#include <DEN GIAO THONG.h>
#DEFINE RED PIN_C0
#DEFINE YELLOW PIN_C1
#DEFINE GREEN PIN_C2
#DEFINE NUT1 INPUT(PIN_A0) // CHE DO GIO CAO DIEM
#DEFINE NUT2 INPUT(PIN_A1) // CHE DO BINH THUONG
#DEFINE NUT3 INPUT(PIN_A2) // CHE DO DEM
#DEFINE NUT4 INPUT(PIN_A3) // RESET
unsigned int8 MALED [10] =
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned int16 I,J;
void DENDO()
{
OUTPUT_HIGH(PIN_C0);
OUTPUT_LOW(PIN_C1);
OUTPUT_LOW(PIN_C2);
FOR (I=60;I>0;I--)
{

FOR(J=0;J<=50;J++)
{
IF(NUT4==0) BREAK;
OUTPUT_LOW(PIN_D0);
OUTPUT_HIGH(PIN_D1);
OUTPUT_B(MALED[I/10]);
DELAY_MS(10);
OUTPUT_HIGH(PIN_D0);
OUTPUT_LOW(PIN_D1);
OUTPUT_HIGH(PIN_D0);
OUTPUT_B(MALED[I%10]);
DELAY_MS(10);


OUTPUT_HIGH(PIN_D1);
}
}
}
void DENVANG()
{
OUTPUT_HIGH(PIN_C1);
OUTPUT_LOW(PIN_C2);
OUTPUT_LOW(PIN_C0);
FOR (I=5;I>0;I--)
{
FOR(J=0;J<=50;J++) // Hien thi dem so
{
IF(NUT4==0) BREAK;
OUTPUT_LOW(PIN_D0);
OUTPUT_HIGH(PIN_D1);

OUTPUT_B(MALED[I/10]);
DELAY_MS(10);
OUTPUT_HIGH(PIN_D0);
OUTPUT_LOW(PIN_D1);
OUTPUT_HIGH(PIN_D0);
OUTPUT_B(MALED[I%10]);
DELAY_MS(10);
OUTPUT_HIGH(PIN_D1);
}
}
}
void DENXANH()
{
OUTPUT_HIGH(PIN_C2);
OUTPUT_LOW(PIN_C1);
OUTPUT_LOW(PIN_C0);


FOR (I=60;I>0;I--)
{
FOR(J=0;J<=50;J++)
{
IF(NUT4==0) BREAK;
OUTPUT_LOW(PIN_D0);
OUTPUT_HIGH(PIN_D1);
OUTPUT_B(MALED[I/10]);
DELAY_MS(10);
OUTPUT_HIGH(PIN_D0);
OUTPUT_LOW(PIN_D1);
OUTPUT_HIGH(PIN_D0);

OUTPUT_B(MALED[I%10]);
DELAY_MS(10);
OUTPUT_HIGH(PIN_D1);
}
}
}
void DENDONORMAL()
{
OUTPUT_HIGH(PIN_C0);
OUTPUT_LOW(PIN_C1);
OUTPUT_LOW(PIN_C2);
FOR (I=40;I>0;I--)
{
FOR(J=0;J<=50;J++)
{
IF(NUT4==0) BREAK;
OUTPUT_LOW(PIN_D0);
OUTPUT_HIGH(PIN_D1);
OUTPUT_B(MALED[I/10]);
DELAY_MS(10);
OUTPUT_HIGH(PIN_D0);


OUTPUT_LOW(PIN_D1);
OUTPUT_HIGH(PIN_D0);
OUTPUT_B(MALED[I%10]);
DELAY_MS(10);
OUTPUT_HIGH(PIN_D1);
}
}

}
void DENXANHNORMAL()
{
OUTPUT_HIGH(PIN_C2);
OUTPUT_LOW(PIN_C1);
OUTPUT_LOW(PIN_C0);
FOR (I=40;I>0;I--)
{
FOR(J=0;J<=50;J++)
{
IF(NUT4==0) BREAK;
OUTPUT_LOW(PIN_D0);
OUTPUT_HIGH(PIN_D1);
OUTPUT_B(MALED[I/10]);
DELAY_MS(10);
OUTPUT_HIGH(PIN_D0);
OUTPUT_LOW(PIN_D1);
OUTPUT_HIGH(PIN_D0);
OUTPUT_B(MALED[I%10]);
DELAY_MS(10);
OUTPUT_HIGH(PIN_D1);
}
}
}


void main()
{
while(TRUE)
{

IF(NUT1 == 0) // CHE DO GIO CAO DIEM
{
WHILE(TRUE)
{
DENDO();
DENXANH();
DENVANG();
IF(NUT4==0)
{
OUTPUT_LOW(PIN_C0);
OUTPUT_LOW(PIN_C1);
OUTPUT_LOW(PIN_C2);
BREAK;
}
}
}
IF(NUT2 == 0) // CHE DO BINH THUONG
{
WHILE(TRUE)
{
DENDONORMAL();
DENXANHNORMAL();
DENVANG();
IF(NUT4==0)
{
OUTPUT_LOW(PIN_C0);
OUTPUT_LOW(PIN_C1);
OUTPUT_LOW(PIN_C2);



BREAK;
}
}
}
IF(NUT3 == 0) // CHE DO BAN DEM
{
WHILE(TRUE)
{
OUTPUT_HIGH(PIN_C1);
IF(NUT4 == 0)
{
OUTPUT_LOW(PIN_C0);
OUTPUT_LOW(PIN_C1);
OUTPUT_LOW(PIN_C2);
BREAK;
}
}
}
}
}


CHƯƠNG 4. KẾT QUẢ THỰC HIỆN
1.KẾT QUẢ
- Sau khi hoàn thành code đã chạy được và khộng có lỗi .
- sử dụng nút bấm khơng có lỗi
- Tuy nhiên vẫn cịn hạn chế như thời gian chỉ điều chình trên code
và bố trí linh kiện chưa khoa học
2. KẾT LUẬN
Trong quá trình nhiên cứu và thực hiện đề tài bọn em đã áp dụng

kiến thức chuyên môn đã học và tài liệu bổ xung thêm để hồn thành
u cầu.
Vì vậy, bọn em đã được cũng cố kiến thức đã học trong thời gian qua
và có cơ sở đánh giá lại những gì có được sau khi học.
Chúng em xin chân thành cảm ơn!



×