Tải bản đầy đủ (.pdf) (19 trang)

Thiết kế mạch điều khiển đèn giao thông tại ngã tư

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 (959.38 KB, 19 trang )

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA ĐIỆN - ĐIỆN TỬ

BÀI TẬP LỚN
VI XỬ LÝ

Đề tài: Thiết kế mạch điều khiển đèn giao thông tại ngã tư

HÀ NỘI
Tháng 07 năm 2016


Đề bài:
Thiết kế hệ thống đèn giao thông tại ngã tư dùng vi xử lí với yêu cầu sau:
-

Mỗi hướng có hai cột, gồm các đèn: xanh, vàng, đỏ, đèn cho phép và
cấm rẽ phải.

-

Hiển thị thời gian và đếm lùi bằng Led 7 thanh, thời gian cho đèn xanh:
25s, đỏ: 30s, vàng: 5s.

-

Các đèn xanh, đỏ, vàng dùng Led đơn

Page 2



MỤC LỤC
PHẦN 1: YÊU CẦU THIẾT KẾ ......................................................................... 5
1.1: Mục đích thiết kế. ........................................................................................ 5
1.2: Giới thiệu linh kiện và chức năng. ............................................................. 5
1.3: Sơ đồ nguyên lý............................................................................................ 7
PHẦN 2:LẬP TRÌNH CHO MẠCH ................................................................... 8
2.1: Yêu cầu ......................................................................................................... 8
2.2: Sơ đồ khối. ................................................................................................... 8
2.3: Code chương trình. ...................................................................................... 9
PHẦN 3: KẾT QUẢ............................................................................................ 17
3.1: Mạch mô phỏng. ........................................................................................ 17
3.2: Mạch in. ..................................................................................................... 18

Page 3


LỜI NÓI ĐẦU
Cùng với sự phát triển của khoa học và công nghệ, các thiết bị điện tử đã đang
và sẽ tiếp tục được ứng dụng ngày càng rộng rãi và mang lại hiệu quả trong
hầu hết các lĩnh vực khoa học kỹ thuật cũng như trong đời sống, xã hội và
không thể thiếu trong lĩnh vực giao thông đô thị hiện nay.
Sự cần thiết cũng như tính khả thi và lợi ích của mạch số cũng chính là lý do
thực hiện đề tài “Thiết kế hệ thống đèn giao thông tại ngã tư sử dụng vi xử lý
AT89C51 và Led”.
Chúng em xin chân thành cảm ơn thầy, trong suốt quá trình làm đề tài do kiến
thức còn hạn chế do vậy đề tài không thể tránh được những thiếu sót.
Rất mong nhận được ý kiến đóng góp của quý thầy cô để đề tài được tốt hơn
Chúng em xin chân thành cảm ơn.

Page 4



PHẦN 1: YÊU CẦU THIẾT KẾ
1.1 Mục đích thiết kế.
 Bài toán:
Thiết kế hệ thống đèn giao thông tại ngã tư dùng vi xử lí với yêu cầu sau:
-

Mỗi hướng có hai cột, gồm các đèn: xanh, vàng, đỏ, đèn cho phép và
cấm rẽ phải.

-

Hiển thị thời gian và đếm lùi bằng Led 7 thanh, thời gian cho đèn xanh:
25s, đỏ: 30s, vàng: 5s.

-

Các đèn xanh, đỏ, vàng dùng Led đơn

 Mục đích:
-

Hiểu rõ về VĐK của họ MCS51 mà cụ thể là AT89C51.

-

Nắm vững nguyên lý hoạt động của hệ thống đèn giao thông.

-


Biết sử dụng phần mềm mô phỏng chương trình.

-

Thiết lập mạch in và mạch thật.

 Yêu cầu:
-

Thiết kế sơ đồ nguyên lý.

-

Lập trình bằng ngôn ngữ C.

-

Chạy mô phỏng trên Protus.

-

Chạy mạch thực tế.

1.2 Giới thiệu linh kiện và chức năng.
Các linh kiện sử dụng:
Do mạch làm nhiệm vụ điều khiển hệ thống đèn giao thông ở ngã tư nên ta
chọn các linh kiện sau:
- Vi xử lí AT89C51.
- 4 Led 7SEG-MPX2-CA Anot chung.

- 2 nút bấm.
Page 5


- 1 tụ phân cực 10uF.
- 2 tụ 33pF.
- 1 tụ thạch anh 12V.
- 8 Led xanh.
- 4 Led đỏ.
- 4 Led vàng.
- 38 điện trở 220k
- 2 điện trở 10k.
- 12 transitor loại PNP.

AT89C51: Hình dạng thực tế và datasheet

Led 7 thanh

Page 6


1.3 Sơ đồ nguyên lý.

Page 7


PHẦN 2:LẬP TRÌNH CHO MẠCH
2.1 Yêu cầu
- Vi điều khiển AT89C51 có 4 cổng vào/ra( I/O) như sau: Port 0, Port 1,
Port 2, Port 3.

- Chức năng của các cổng đối với mạch:
- Port 1: Quét Led đơn.
- Port 0: Quét Led 7 vạch.
- Port 2: Nối với mạch hiển thị đếm ngược.
- Port 3: Nối với nút bấm thực hiện chương trình điều khiển đèn giao
thông ở ngã tư, chọn Led hay đếm lùi.
Vòng lặp Do-while: Vòng lặp while sẽ kiểm tra điều kiện trước rồi thực hiện
câu lệnh bên trong vòng lặp, còn vòng lặp do while thì ngược lại sẽ thực hiện
câu lệnh bên trong vòng lặp trước rồi mới kiểm tra điều kiện, nếu điều kiện
đúng thì sẽ thực hiện tiếp vòng lặp kế tiếp, nếu điều kiện sau thì sẽ dừng vòng
lặp.

Page 8


2.2 Sơ đồ khối.

Chương trình chính
begin

Khởi tạo hệ thống:
-

Khai báo biến.
Ngăn xếp.
Timer.
Bảng mã Led.

N
Kiểm tra


Ktra
nút
nút bấm
Y

Hiển thị Led

end

2.3 Code chương trình.
#include <REGX51.H>
#define bat 1
#define tat 0
sbit dk_x_1 = P1^0; //den xanh lan duong 1
sbit dk_v_1 = P1^1; //den vang lan duong 1
sbit dk_d_1 = P1^2;

// den do lan duong 1
Page 9


sbit dk_x_2 = P1^3;

//den xanh lan duong 2

sbit dk_v_2 = P1^4;

//den vang lan duong 2


sbit dk_d_2 = P1^5;

//dendo lan duong 2

sbit dk_r_1 = P3^0;//cho phep re trai lan 1
sbit dk_r_2 = P3^2;

//cho phep re phai lan 2

sbit dk_cr_1 = P3^1;//cam re trai lan 1
sbit dk_cr_2 = P3^3;//cam re trai lan 2
sbit dk_led1 = P2^0; //led 7 thanh hang chuc lan duong 1
sbit dk_led2 = P2^1; //led 7 thanh hang don vi lan duong 1
sbit dk_led3 = P2^2; //led 7 thanh hang chuc lan duong 2
sbit dk_led4 = P2^3; //led 7 thanh hang don vi lan duong 2
sbit start = P3^7; // nut khoi dong
unsigned char sogiaylan1,sogiaylan2;
void hienthi(unsigned char sogiaylan1,sogiaylan2); //khai bao mau cho ham
hien thi
void time10ms (); //khai bao mau cho ham tao tre

/*......chuong trinh chinh........*/
void main ()
{
TMOD = 0x01; //khai bao su dung time0 che do 1, 16 bit.
Page 10


P1=0x00; //tat tat ca cac den bao
P3=0x80;

while(1) // vong lap vo tan
{
unsigned char khoidong;
if(start==0) // bat dau chuong trinh
khoidong=1;
while(khoidong==1) {
sogiaylan1=30; // gia tri cua sogiaylan1
sogiaylan2=25; // gia tri cua sogiaylan2
do
{
dk_d_1=bat;
dk_x_2=bat;
dk_cr_1=bat;
dk_r_2=bat;

hienthi(sogiaylan1,sogiaylan2);
sogiaylan1--;
sogiaylan2--;
}
Page 11


while(sogiaylan2!=0);
sogiaylan2=5;
do
{
dk_cr_1=bat;
dk_r_2=bat;
dk_x_2=tat;
dk_v_2=bat;

hienthi(sogiaylan1,sogiaylan2);
sogiaylan1--;
sogiaylan2--;
}
while(sogiaylan2!=0);
sogiaylan2=30;
sogiaylan1=25;
do
{
dk_v_2=tat;
dk_x_1=bat;
dk_d_2=bat;
dk_d_1=tat;
Page 12


dk_r_1=bat;
dk_cr_1=tat;
dk_r_2=tat;
dk_cr_2=bat;
hienthi(sogiaylan1,sogiaylan2);
sogiaylan1--;
sogiaylan2--;
}
while(sogiaylan1!=0);
sogiaylan1=5;
do
{
dk_cr_2=bat;
dk_r_1=bat;

dk_x_1=tat;
dk_v_1=bat;
hienthi(sogiaylan1,sogiaylan2);
sogiaylan1--;
sogiaylan2--;
}
while(sogiaylan1!=0);
Page 13


dk_v_1=tat;
dk_d_2=tat;
dk_cr_2=tat;
dk_r_1=tat;
}
}
}

/*...........ham tao tre 10ms............*/
void time10ms ()
{
TH0 = 0xd8;
TL0 = 0xf0;
TR0 = 1;
while(!TF0);
TR0=0;
TF0=0;
}

/*.....ham hien thi.........*/

void hienthi(unsigned char sogiaylan1,sogiaylan2)
Page 14


{
unsigned char chuc1,donvi1,chuc2,donvi2,a;
unsigned char maled[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,
0x80, 0x90};

//Ma led bay thanh

chuc1=sogiaylan1/10;
donvi1=sogiaylan1%10;
chuc2=sogiaylan2/10;
donvi2=sogiaylan2%10;
for(a=0;a<25;a++)
{
P0=maled[chuc1];
dk_led1=1;
time10ms();
dk_led1=0;
P0=maled[donvi1];
dk_led2=1;
time10ms();
dk_led2=0;
P0=maled[chuc2];
dk_led3=1;
time10ms();
Page 15



dk_led3=0;
P0=maled[donvi2];
dk_led4=1;
time10ms();
dk_led4=0;
}
}
//.........................................ket thuc chuong
trinh.............................................................//

Page 16


PHẦN 3: KẾT QUẢ
3.1 Mạch mô phỏng.

Page 17


3.2 Mạch in.

Page 18


Page 19




×