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

Phần II THIẾT kế PHẦN CỨNG và CHƯƠNG TRÌNH điều KHIỂN

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

Phầ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ị

IC 16F877A

Led 7 thanh


2. Khối tín hiệu điều khiển

Tín hiệu

IC 16F877A

3. Khối điều khiển đèn

IC 16F877A

Led đơn


II.

Sơ đồ mạch nguyên lý chung


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
- Đè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;


unsigned 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)
{


l1=((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



if(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)
if(time <= 3)

d=4; // di thang nhanh' 2 do? nhanh' 1
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);
output_b(LED[l1]);
output_high(pin_c1);
delay_ms(50);
output_low(pin_c1);
}

//Chan de o muc thap 0V


}
void 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


}
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);
hienthi();
}

// cho phep ngat toan cuc


Phầ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

Do thời gian thực hiện đề tài có giới hạn để, vì vậy em không thể đưa ra
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ề


trậ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…).



×