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
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA ĐIỆN - ĐIỆN TỬ
Đề 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 TẬP LỚN
VI XỬ LÝ
Trang 2Đề 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
Trang 3MỤ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
Trang 4LỜ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
Trang 5PHẦ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
Trang 6- 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
Trang 71.3 Sơ đồ nguyên lý
Trang 8PHẦ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
Trang 92.2 Sơ đồ khối
Chương trình chính
Ktra nút
Y
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
begin
Khởi tạo hệ thống:
- Khai báo biến
- Ngăn xếp
- Timer
- Bảng mã Led
Kiểm tra nút bấm
Hiển thị Led
end
Trang 10sbit 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
Trang 11P1=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 ;
}
Trang 12while(sogiaylan2!=0);
sogiaylan2=5;
do
{
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;
Trang 13dk_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);
Trang 14dk_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 */
Trang 15{
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;
dk_led2=1;
time10ms();
dk_led2=0;
P0=maled[chuc2];
dk_led3=1;
time10ms();
Trang 16dk_led3=0;
P0=maled[donvi2];
dk_led4=1;
time10ms();
dk_led4=0;
}
}
// ket thuc chuong
trinh //
Trang 17
PHẦN 3: KẾT QUẢ 3.1 Mạch mô phỏng
Trang 183.2 Mạch in