1. Trang chủ >
  2. Kỹ thuật >
  3. Điện - Điện tử - Viễn thông >

CHƯƠNG 4 THIẾT KẾ PHẦN MỀM

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



Xem Thêm
Tải bản đầy đủ (.pdf) (33 trang)

×