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 (790.86 KB, 33 trang )
Trường CĐ CNTT Hữu Nghị Việt - Hàn
4.1.2
Hệ Thống Đèn Giao Thông
Chế độ thấp điểm
Hình 4.2 Sơ đồ giải thuật chế độ thấp điểm
Đồ Án Môn Học Vi Xử Lý
20
Trường CĐ CNTT Hữu Nghị Việt - Hàn
4.1.3
Hệ Thống Đèn Giao Thông
Chế độ cao điểm
Hình 4.3 Sơ đồ giải thuật chế độ cao điểm
4.1.4
Chế độ nghỉ
Hình 4.4 Sơ đồ giải thuật chế độ nghỉ
Đồ Án Môn Học Vi Xử Lý
21
Trường CĐ CNTT Hữu Nghị Việt - Hàn
Hệ Thống Đèn Giao Thông
4.2 Chương trình C viết cho mạch điều khiển hệ thống đèn giao thông
#include
#include
#define LED_D_1
P2_0
#define LED_V_1
P3_7
#define LED_X_1
P3_6
#define LED_D_2
P2_3
#define LED_V_2
P2_2
#define LED_X_2
P2_1
#define LED_DBX1
P1_4
#define LED_DBD1
P1_5
#define LED_DBX2
P1_6
#define LED_DBD2
P1_7
#define OFF_LED
((LED_D_1 = 1),(LED_V_1 = 1),(LED_X_1 = 1),
(LED_D_2 = 1),(LED_V_2 = 1),(LED_X_2 = 1),(LED_DBX1 = 1),(LED_DBD1 =
1),(LED_DBX2 = 1),(LED_DBD2 = 1))
void delay (unsigned int number);
// khai bao bien
unsigned char code bang_ma[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82,
0xf8, 0x80, 0x90};
//FLASH ROM
char dem, time, n1, n2, n3, n4;
// RAM
char bt, cd, td;
char tg_d1, tg_v1, tg_x1, tg_d2, tg_v2, tg_x2;
char d1, v1, x1, d2, v2, x2;
//ham Delay
void delay (unsigned int number)
{
unsigned char temp;
while(number)
{
temp = 200;
while (temp--);
number--;
}
Đồ Án Môn Học Vi Xử Lý
22
Trường CĐ CNTT Hữu Nghị Việt - Hàn
Hệ Thống Đèn Giao Thông
}
// ham khai bao dung ngat timer 0& 1
void Setup_Timer0(void)
{
TMOD = 0x11;
// timer0 & 1 : CHE DO 1
TH0 = 0xEC;
TL0 = 0x77;
TH1 = 0x3C;
TL1 = 0xAF;
ET0 = 1;
ET1 = 1;
EA = 1;
TF0 = 0;
TF1 = 0;
TR0 = 1;
TR1 = 1;
}
// ham ngat timer 0
void T0_ISR(void)
== quet led
interrupt1
{ TR0 = 0;
TH0 = 0xEC;
TL0 = 0x76;
if (td == 0)
{// qui doi gia tri
if (d1)
{
n1 = tg_d1 / 10;
n2 = tg_d1 % 10;
};
if (x1)
{
n1 = tg_x1 / 10;
n2 = tg_x1 % 10;
};
Đồ Án Môn Học Vi Xử Lý
23
Trường CĐ CNTT Hữu Nghị Việt - Hàn
Hệ Thống Đèn Giao Thông
if (v1){
n1 = tg_v1 / 10;
n2 = tg_v1 % 10;
};
if (d2)
{
n3 = tg_d2 / 10;
n4 = tg_d2 % 10;
};
if (x2){
n3 = tg_x2 / 10;
n4 = tg_x2 % 10;
};
if (v2){
n3 = tg_v2 / 10;
n4 = tg_v2 % 10;
};
P2_7 = 1; // KHOA TRANZITOR
P2_6 = 1;
P2_5 = 1;
P2_4 = 1;
dem++;
if (dem == 1)
{
P0 = bang_ma[n1];
P2_7 = 0;
};
if (dem == 2)
{
P0 = bang_ma[n2];
P2_6 = 0;
};
if (dem == 3)
Đồ Án Môn Học Vi Xử Lý
24
Trường CĐ CNTT Hữu Nghị Việt - Hàn
Hệ Thống Đèn Giao Thông
{
P0 = bang_ma[n3];
P2_5 = 0;
};
if (dem == 4) {
P0 = bang_ma[n4];
P2_4 = 0;
dem = 0;
};
}
else
{
P2_7 = 1;
P2_6 = 1;
P2_5 = 1;
P2_4 = 1;
}
TF0 = 0;
TR0 = 1;
}
// ham ngat timer 1 = tạo clock
void T1_ISR(void)
interrupt
3
{
TR1 = 0;
TH1 = 0x3C; //TIMER 1 CHAY TU 15.535 DEN 65.535 = 50.000 MICRO
SECOND TUONG UNG 1 LAN TIMER1 1 TRÀN
TL1 = 0xAF;
time++;
if (time == 20)
{
time = 0;
if (td == 0)
{
// nga tu 1
Đồ Án Môn Học Vi Xử Lý
25
Trường CĐ CNTT Hữu Nghị Việt - Hàn
if (d1)
tg_d1--;
if (v1)
tg_v1--;
if (x1)
Hệ Thống Đèn Giao Thông
tg_x1--;
if (tg_d1 < 0)
{
if (bt)
tg_x1 = 20;
if (cd)
tg_x1 = 30;
tg_d1 = 0;
d1 = 0;
x1 = 1;
LED_D_1 = 1; // OFF
LED_X_1 = 0; // ON
LED_DBX1 = 1;
LED_DBD1 = 0;
LED_DBX2 = 0;
LED_DBD2 = 1;
};
if (tg_x1 < 0) {
tg_v1 = 3;
tg_x1 = 0;
x1 = 0;
v1 = 1;
LED_X_1 = 1;
LED_V_1 = 0;
LED_DBX1 = 1;
LED_DBD1 = 0;
LED_DBX2 = 0;
LED_DBD2 = 1;
};
if (tg_v1 < 0) {
if (bt)
tg_d1 = 24;
if (cd)
tg_d1 = 34;
Đồ Án Môn Học Vi Xử Lý
26
Trường CĐ CNTT Hữu Nghị Việt - Hàn
Hệ Thống Đèn Giao Thông
tg_v1 = 0;
v1 = 0;
d1 = 1;
LED_V_1 = 1;
LED_D_1 = 0;
LED_DBX1 = 0;
LED_DBD1 = 1;
LED_DBX2 = 1;
LED_DBD2 = 0;
};
// nga tu 2
if (d2)
tg_d2--;
if (v2)
tg_v2--;
if (x2)
tg_x2--;
if (tg_d2 < 0)
{
if (bt)
tg_x2 = 20;
if (cd)
tg_x2 = 30;
tg_d2 = 0;
d2 = 0;
x2 = 1;
LED_D_2 = 1;
LED_X_2 = 0;
LED_DBX1 = 0;
LED_DBD2 = 0;
LED_DBX2 = 1;
LED_DBD1 = 1;
};
if (tg_x2 < 0) {
tg_v2 = 3;
tg_x2 = 0;
x2 = 0;
Đồ Án Môn Học Vi Xử Lý
27
Trường CĐ CNTT Hữu Nghị Việt - Hàn
Hệ Thống Đèn Giao Thông
v2 = 1;
LED_X_2 = 1;
LED_V_2 = 0;
LED_DBX1 = 0;
LED_DBD2 = 0;
LED_DBX2 = 1;
LED_DBD1 = 1;
};
if (tg_v2 < 0) {
if (bt)
tg_d2 = 24;
if (cd)
tg_d2 = 34;
tg_v2 = 0;
v2 = 0;
d2 = 1;
LED_V_2 = 1;
LED_D_2 = 0;
LED_DBX1 = 1;
LED_DBD1 = 0;
LED_DBX2 = 0;
LED_DBD2 = 1;
};
}
else
{
LED_V_1 = !LED_V_1;
LED_V_2 = !LED_V_2;
}
};
TF1 = 0;
TR1 = 1;
}
// chuong trinh chinh
void main(void)
Đồ Án Môn Học Vi Xử Lý
{
28
Trường CĐ CNTT Hữu Nghị Việt - Hàn
Hệ Thống Đèn Giao Thông
dem = 0;
time = 0;
bt = 1;
cd = td = 0;
tg_d1 = tg_d2 = 24;
tg_x1 = tg_x2 = 20;
d1 = 1;
v1 = x1 = 0;
x2 = 1;
v2 = d2 = 0;
LED_D_1 = 0;
LED_X_2 = 0;
LED_DBX1 = 0;
LED_DBD1 = 1;
LED_DBX2 = 1;
LED_DBD2 = 0;
Setup_Timer0();
while(1)
{
// phim cao diem
if (!P1_0)
{
while(!P1_0);
delay(10);
tg_d1 = tg_d2 = 34;
tg_x1 = tg_x2 = 30;
cd = 1;
td = bt = 0;
d1 = 1;
v1 = x1 = 0;
x2 = 1;
v2 = d2 = 0;
OFF_LED;
LED_D_1 = 0;
Đồ Án Môn Học Vi Xử Lý
29
Trường CĐ CNTT Hữu Nghị Việt - Hàn
Hệ Thống Đèn Giao Thông
LED_X_2 = 0;
LED_DBX1 = 0;
LED_DBD1 = 1;
LED_DBX2 = 1;
LED_DBD2 = 0;
};
// phim binh thuong
if (!P1_1)
{
while(!P1_1);
delay(10);
tg_d1 = tg_d2 = 24;
tg_x1 = tg_x2 = 20;
bt = 1;
cd = td = 0;
d1 = 1;
v1 = x1 = 0;
x2 = 1;
v2 = d2 = 0;
OFF_LED;
LED_D_1 = 0;
LED_X_2 = 0;
LED_DBX1 = 0;
LED_DBD1 = 1;
LED_DBX2 = 1;
LED_DBD2 = 0;
};
// phim thap diem
if (!P1_2)
{
while(!P1_2);
delay(10);
OFF_LED;
td = 1;
Đồ Án Môn Học Vi Xử Lý
30