Nguyên lý hoạt động:Khi IC 16F877A được khởi động chương trình sẽ tự động điều khiển đếm lùi mặc định: - Đèn đỏ sáng trong 30s - Đèn xanh rẽ trái sáng trong 10s - Đèn xanh sáng trong 15s
Trang 1Phần II: THIẾT KẾ PHẦN CỨNG VÀ CHƯƠNG
TRÌNH ĐIỀU KHIỂN
I. Sơ đồ nguyên lý theo từng khối
1 Khối hiển thị
Trang 22 Khối tín hiệu điều khiển
3 Khối điều khiển đèn
Tín hiệu IC 16F877A
Trang 3II. Sơ đồ mạch nguyên lý chung
Trang 4Nguyên lý hoạt động:
Khi IC 16F877A được khởi động chương trình sẽ tự động điều khiển đếm lùi mặc định:
- Đèn đỏ sáng trong 30s
- Đèn xanh rẽ trái sáng trong 10s
- Đèn xanh sáng trong 15s
- Đèn vàng sáng trong 3s
IC16F877A tự động đưa dữ liệu ra để hiển thị LED đồng thời đợi tín hiệu điều khiển từ bên ngoài
Để điều khiển thời gian đếm lùi ta chọn công tắc SW2 sang mức 1 sau đó ấn nút điều khiển thời gian để tăng thời gian đếm lùi lên, rồi chuyển SW2 về lại mức
0 để thực hiện điều khiển
- SW1=1: chế độ Reset
- SW2=0: chế độ bắt đầu
- SW3=1: chế độ tăng thời gian lên 10 đơn vị
- SW4=0: chế độ tăng thời gian lên 1 đơn vị
III. Chương trình điều khiển
#include "D:\PIC-Robocon\PICCCS\DoAn3\Dengt1.h"
int8 count,time,l1,l2,i,t2,t3,t1,d;
Trang 5unsigned char
LED[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //Ma led 7 thanh
unsigned char den[6]={0x81,0x82,0x84,0x18,0x28,0x48};
//Chuong trinh ngat TIMER0 theo chu ki 1s giam thoi gian xuong 1 don vi
#int_timer0
void timer0()
{
set_timer0(0); //Set timer trong khoang tu 0-255
++count;
if(count == 76) // Tan so timer0 = 20MHz/(256*4)=19531 -> So lan tran
=19531/(2^8) = 76
{
count=0;
time ;
if(time==-1)
time=t3;
}
}
//Chuong trinh hien thi thoi gian dem nguoc tren led 7 thanh
void led7()
{
if(time>t1)
{
Trang 6l1=((time-t1-1)/ 1) % 10; // Lay so hang don vi
l2=((time-t1-1)/ 10) % 10; // Lay so hang chuc
}
else{
l1=(time/ 1) % 10; // Lay so hang don vi
l2=(time/ 10) % 10; // Lay so hang chuc
}
output_b(LED[l2]);
output_high(pin_c0);// bat led 1 hien thi hang don vi
delay_us(0.001);
output_low(pin_c0);
output_b(LED[l1]);
output_high(pin_c1);// bat led 2 hien thi hang chuc
delay_us(0.001);
output_low(pin_c1);
}
void hienthi()
{
while(1)
{
output_d(den[d]);
led7();
if(time <= t3&&time >= t3-t2) d=0; //re trai nhanh' 1 do? nhanh' 2
Trang 7if(time < t3-t2&&time > t1+4) d=1; // di thang nhanh' 1 do? nhanh' 2 if(time <= t1+4&&time > t1) d=2; // vang nhanh' 1 do? nhanh' 2 if(time <= t1&&time >= t1-t2) d=3; //re trai nhanh' 2 do? nhanh' 1 if(time < t1-t2&&time > 3) d=4; // di thang nhanh' 2 do? nhanh' 1 if(time <= 3) d=5; // vang nhanh' 2 do nhanh' 1
}
}
// hien thi thoi gian thiet lap
void set(int8 tg)
{
l1=(tg/1) % 10; // Lay so hang don vi
l2=(tg/10) % 10; // Lay so hang chuc
for(i=0;i<10;i++)
{
output_b(LED[l2]);
output_high(pin_c0); //Chan de o muc cao 5V
delay_ms(50);
output_low(pin_c0); //Chan de o muc thap 0V
output_b(LED[l1]);
output_high(pin_c1);
delay_ms(50);
output_low(pin_c1);
}
Trang 8void main()
{
int8 t=0,j=0,kt=0;
set_tris_c(0x00);
set_tris_b(0x00);
set_tris_e(0xff);
output_d(0x00);
output_c(0x00);
while(1) //thiet lap thoi gian cho he thong {
if(input(pin_e0)==0)
{
t++;set(10*t+j);
kt=1;} //nhap so giay hang chuc
if(input(pin_e1)==0)
{
j++;set(10*t+j);
kt=1;
} // nhap so giay hang don vi
if(input(pin_e2)==0)
break;
//chay chuong trinh
Trang 9}
if(kt==1)
{
t1=10*t+j;
t2=t1/3;
t3=2*t1+1; //chu ki den la 2*t1
}
else
{
t1=30;
t2=10;
t3=61;
}
time=t3;
enable_interrupts(int_timer0); // cho phep ngat timer0
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);// cai dat timer voi bo chia tan la 256
enable_interrupts(global); // cho phep ngat toan cuc
hienthi();
}
Trang 10Phần III: PHẦN TỔNG KẾT
ĐÁNH GIÁ VÀ KẾT LUẬN
Sau thời gian thực hiện, đề tài đã có những kết quả nhất định, em đã xây dựng được mô đèn giao thông ( như hình) với những tính năng như sau:
Hiển thị chính xác thời gian trên led 7 đoạn và tín hiệu đèn giao thông trên led đơn
Có khả năng cài đặt lại thời gian hiển thị của đèn đỏ và đèn xanh, và cài đặt thời gian hiện tại thông qua bàn phím ma trận
Ngoài ra đèn còn có chế độ điều khiển bằng tay thông qua nút nhấn Manual mode, sử dụng khi kẹt đường Chế độ hiển thị đèn vàng trong khoảng thời gian từ 23h đến 5h sáng hôm sau
HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI
một mô hình đèn giao thông hoàn chỉnh, nhiều ý tưởng và hướng phát triển của đề tài chưa thể thực hiện được Em nêu dưới đây những khả năng mà em
dự định phát triển đề tài, rất mong nhận được sự góp ý của thầy cô và các bạn
để đề tài thêm hoàn chỉnh
Hiện nay ở nhiều trục đường có tín hiệu đèn giao thông, vẫn xảy ra tình trạng người tham gia giao thông đậu phương tiện trên vạch đường dành cho người đi bộ trong thời gian chờ đèn đỏ Theo em nên đặt hệ thống cảm biến để phát hiện và báo động trong trường hợp phương tiện tham gia giao thông đậu quá vạch đường dành cho người đi bộ Đồng thời tận dụng thời gian đèn đỏ, đèn giao thông sẽ tự động chiếu lên một màn ảnh trong suốt các hình ảnh về
Trang 11trật tự an toàn giao thông để nâng cao ý thức đi đường của người điều khiển phương tiện
Chế độ đèn vàng được đặt từ 23h đêm đến 5h sáng hôm sau Tuy nhiên trong thời gian đó vẫn sẽ có phương tiện tham gia giao thông Vì vậy em nghĩ cần thiết phải đặt hệ thống cảm biến cách xa đèn một đoạn và cho cảm biến hoạt động trong chế độ đèn vàng để phát hiện phương tiện đang đi tới Cảm biến sẽ tác động lên vi xử lí để tắt chế độ đèn vàng và chuyển sang chế độ nhảy tự động
Trong những điều kiện cần thiết các cột đèn giao thông có thể làm việc độc lập với nhau Các cột đèn giao thông trên cùng tuyến đường có thể được nối với nhau để cùng nhận một tín hiệu điều khiển trong những trường hợp cần thiết ( đường một chiều, hay những khi tổ chức các sự kiện quan trọng…)