Thiết kế hệ thống điều khiển đèn tín hiệu tại ngã tư nguyễn phong sắc – hoàng quốc việt, với bộ vi xử lý sử dụng onchip 89c51
Trang 1TRƯỜNG HỌC VIỆN KĨ THUẬT QUÂN SỰ
KHOA VÔ TUYẾN- ĐIỆN TỬ
ĐỀ TÀI:
Thiết kế hệ thống điều khiển đèn tín hiệu tại ngã tư Nguyễn Phong Sắc – Hoàng Quốc Việt, với bộ vi xử lý sử dụng onchip 89c51.
Giáo viên hướng dẫn: Trần Thị hồng Thắm Sinh viên thực hiện: Nhóm 4
Lớp : DTVT 15A
LỜI NÓI ĐẦU
Trang 2Nghành kỹ thuật Điện tử hiện nay đang phát triển mạnh mẽ , kỹ thuật Vi Điều Khiển đã trở lên quen thuộc trong các nghành kỹ thuật và trong dân dụng Trong thực tế các bộ Vi Điều Khiển các bộ Vi Điều Khiển được ứng dụng vào mọi lĩnh vực của đời sống từ các thiết bị nhỏ như điện thoại di động , máy nhắn tin, trò chơi điện tử , các thiết bị gia dụng như ( máy giặt, điều hoà , tủ lạnh…) đến những thiết bị có quy mô lớn như các bộ điều khiển tự động trong các nhà máy , xi nghiệp, hệ thống thông tin liên lạc… Vi điều khiển đã góp phần đưa con người đến đỉnh cao của nhân loại Trong phạm vi bài tập lớn lần này, chúng em dùng vi điều
khiển để thiết kế HỆ THỐNG ĐÈN TÍN HIỆU TẠI 1 NGÃ TƯ Đây chỉ là một
trong những ứng dụng rất nhỏ của vi điều khiển nhưng qua quá trình thiết kế đề tài chúng em đã rút ra được rất nhiều kinh nghiêm thực tiễn quý báu Mục đích của đề tài hướng đến: tạo ra bước đầu cho sinh viên thử nghiệm những ứng dụng của vi điều khiển trong thực tiễn để rồi từ đó tìm tòi, phát triển nhiều ứng dụng khác trong đời sống hằng ngày cần đến
Mặc dù đã cố gắng hết sức mình để hoàn thành xong đồ án môn học nhưng cũng không tránh khỏi những thiếu sót Do vậy, chúng em rất mong được sự góp ý quý báu của thầy cô và các bạn để đề tài có thể hoàn thiện hơn
Chúng em xin chân thành cảm ơn
PHẦN A: Sơ Lược 8051
Trang 38051 ra đời năm 1981 do hãng Intel sản xuất Họ điều khiển này có 128 byte RAM,4kbyte ROM,hai bộ đnh thời ,một cổng nối tiếp và 4 cổng ra\vào song song và là 1 bộ vi xử lý 8 bit.Sau khi Intel cho các nhà sản xuất khác sản xuất và bán các dạng biến thể của 8051 thì họ 8051càng ngày càng phổ biến và ngày càng
có nhiều phiên bản khác nhau của 8051 nhưng tất cả đều tương thích với 8051 ban đầu
Sau đây là bảng so sánh các họ khác nhau:
I Chức năng các chân của họ 8051
1 Port 0 (P0.0 _ P0.7)
Port 0 gồm 8 chân Với chức năng xuất nhập dữ liệu ,ngoài ra Port 0 còn là bus đa hợp dữ liện và địa chỉ(AD0_AD7).Port 0 cũng nhận các byte mã khi lập trình Flas
và xuất các byte mã khi kiểm tra chương trình Chú y trong trường hợp này cần có thêm điện trở trước khi nối vào chân Port 0
2 Port 1 (P1.0_P1.7)
Cũng như Port 0 ,Port 1 cũng có 8 chân Chức năng của Port 1 chỉ là xuất nhập
dữ liệu Port 1 cũng có thể xuất nhập theo bit và theo byte
Số hiệu sản
xuất
Bộ nhớ chương trình
(bộ đếm)
8031
8051
8571
8951
8032
8052
8752
8952
0K 4K ROM 4K EPROM 4K FLASH 0K
8K ROM 8K EPROM 8K FLASH
128 BYTE
128 BYTE
128 BYTE
128 BYTE
256 BYTE
256 BYTE
256 BYTE
256 BYTE
2 2 2 2 3 3 3 3
Trang 43 Port 2
Port 2 là port 8 bit ,cũng có chức năng xuất nhập dữ liệu như 2 port trên.Khi làm nhiệm vụ là port nhập, các chân của port 2 đang được kéo xuống mức thấp do tác động của bên ngoài sẽ cấp dòng do các điện trở kéo lên từ bên trong Port 2 tạo
ra byte cao của bus điạ chỉ trong thời gian tìm nạp lệnh từ bộ nhớ chương trình ngoài và trong thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 16 bit.Port 2 cũng nhận các bit địa chỉ cao và tín hiệu điều khiển trông thời gian lập trình Flash và kiểm tra chương trình
4 Port 3
Cũng là port xuất nhập dữ liệu 8 bit ,ngoài ra port 3 còn có các chức năng khác
cụ thể như sau:
5 RST
Khi tín hiệu vào chân này được đưa lên mức cao ( trong ít 2 chu kỳ),các thanh ghi trong bộ vi điều khiển được tải lên nhưng giá trị thích hợp để khởi động hệ thống
6 Chân /PSEN
PSEN(program store enable) là chân đọc chương trình ở bộ nhớ ngoài /PSEN
sẽ ở mức thấp trong thời gian đọc mã lệnh.Khi thực hiện chương trình trong ROM nội thì /PSEN ở mức cao Chân này được kích hoạt 2 lần mỗi chu kỳ máy và hai hoạt đông này sẽ được bỏ qua khi truy cập bộ nhớ ngoài
7 Chân ALE
Trang 5ALE(address latch enable) là một xung ngõ ra để chốt byte thấp của địa chỉ trong khi truy cập bộ nhớ ngoài Đây cũng là chân truy cập xung lập trình khyi lập trình Flash.Bình thường khi hoạt động chân ALE sẽ được phát với một tỷ lệ không đổi 1/6 tần số dao đông của vi điều khiển Tuy nhiên chân này cũng sẽ bỏ qua mỗi khi truy cập bộ nhớ ngoài
8 Chân EA
EA(external access) là chân cho phép chọn bộ nhớ trong hay bộ nhớ ngoài của
vi điều khiển Khi EA ở mức tích cực cao(nối với VCC) thì vi điều khiển thi hành chương trình ROM nội,ngược lại(nối với GND) thì vi điều khiển thi hành bộ nhớ ngoài
9 XTAL1 và XTAL2
Đây là 2 ngỏ vào và ra của 1 bộ khuyếch đại dao động nghịch được cấu hình để dùng như một bộ dao động trên chip.Nó thường được nối với bộ dao đông thạch anh có dải tần thường là 12MHz-33MHz
10 Vcc và GND
Đây là 2 chân dùng để cấp nguồn cho IC, dải điện áp thích hợp là 4-5V.Với Vcc nối với dương nguồn ,GND nối với âm nguồn
Trang 6Hình 1 Sơ đồ chân của 8051
Hình 2 Sơ đồ khối điều khiển của 8051
Trang 7PHẦN B: Phân Tích Bài Toán Thiết Kế
và Thiết Kế Sơ Đồ Phần Cứng
1 Phân tích bài toán
Điều khiển 2 cột đèn ở một ngã tư
Mục đích để phân luồng giao thông, điều khiển đèn đỏ sáng 24 s, đèn xanh 20s, đèn vàng 4s
Các đèn vàng, xanh, đỏ trên 2 cột đèn sáng xen kẽ nhau Đảm bảo sao cho thời gian đèn đỏ cột này bằng thời gian đèn vàng cộng đèn xanh và ngược lại
Điều đó thể hiện qua giản đồ sau:
Cột 1
Dx1 20s 20s
Dv1 4s 4s
Dd2 24s 24s
Cột 2
Dd1 24s 24s
Dx2 20s 20s
Dv2 4s 4s
Hình 3: Giản đồ thời gian các chế độ hoạt đông
2 Thiết kế phần cứng
- Thành phần linh kiện bao gồm: 4 cột đèn giao thông gồm 3 đèn xanh, đỏ, vàng.
4 cặp led đôi 7 thanh loại cathode, 1 con chip 89c51, 8 cổng logic not, 1 switch, và các trở va tụ
Trang 8- Khối hiện thị
- Khối điều khiển đèn
- Sơ đồ nguyên lí
Trang 9Phần C: Lưu Đồ Thuật Toàn Và Mã Phần Mềm
1 Lưu đồ thuật toán
Hình 4: sơ đồ giải thuật
Begin
Thời gian D1=24s Thời gian X2= 20s
Thời gian D2=24s Thời gian X1= 20s
Chạy chương trình led
7 đoạn, đếm lùi thời
gian
Chạy chương trình led 7 đoạn, đếm lùi thời gian
Bật đèn đỏ 1 và đèn xanh 2
Thời gian V2= 4s
Bật đèn đỏ 1 và đèn vàng 2
Chạy chương trình led
7 đoạn, đếm lùi thời gian
Bật đèn đỏ 2 và đèn vàng 1 Thời gian V1= 4s
Chạy chương trình led
7 đoạn, đếm lùi thời Bật đèn đỏ 2 và đèn xanh 1
Trang 102 Chương trình
/****************DEN GIAO THONG 1 NGA TU**********************/ /******************** NHOM 4 DTVT 15A*************************/ /*========================================================*/
#include<AT89X51.h>
unsigned char thoi_gian0,thoi_gian1,thoi_gian2,thoi_gian3;
unsigned int over=0;
unsigned char ma[10]={192,249,164,176,153,146,130,248,128,144};
void delay(unsigned char time)
{
unsigned char x,y;
for(x=0;x<time;x++)
{
for(y=0;y<125;y++);
}
void time0() interrupt 1
{
over++;
if(over==4950)
{
over=0;
thoi_gian0 ; thoi_gian1 ;
thoi_gian2 ; thoi_gian3 ;
}
Trang 11void h_thi0()
{
unsigned char k,chuc,donvi;
for(k=0;k<2;k++)
{
donvi=thoi_gian0%10;
chuc=thoi_gian0/10;
}
P2=ma[donvi];
P0=0xfe; delay(1);
P0=0xff; delay(1);
P0=0xfb; delay(1);
P0=0xff; delay(1);
P2=ma[chuc];
P0=0xfd; delay(1);
P0=0xff; delay(1);
P0=0xf7; delay(1);
P0=0xff; delay(1);
}
void h_thi1()
{
unsigned char k,chuc,donvi;
for(k=0;k<2;k++)
{
donvi=thoi_gian1%10;
Trang 12}
P2=ma[donvi];
P0_4=0; delay(1);
P0_4=1; delay(1);
P0_6=0; delay(1);
P0_6=1; delay(1);
P2=ma[chuc];
P0_5=0; delay(1);
P0_5=1; delay(1);
P0_7=0; delay(1);
P0_7=1; delay(1);
}
void h_thi2()
{
unsigned char k,chuc,donvi;
for(k=0;k<2;k++)
{
donvi=thoi_gian2%10;
chuc=thoi_gian2/10;
}
P2=ma[donvi];
P0_4=0; delay(1);
P0_4=1; delay(1);
Trang 13P0_6=1; delay(1);
P2=ma[chuc];
P0_5=0; delay(1);
P0_5=1; delay(1);
P0_7=0; delay(1);
P0_7=1; delay(1);
}
void h_thi3()
{
unsigned char k,chuc,donvi;
for(k=0;k<2;k++)
{
donvi=thoi_gian3%10;
chuc=thoi_gian3/10;
}
P2=ma[donvi];
P0_0=0; delay(1);
P0_0=1; delay(1);
P0_2=0; delay(1);
P0_2=1; delay(1);
P2=ma[chuc];
P0_1=0; delay(1);
P0_1=1; delay(1);
P0_3=0; delay(1);
P0_3=1; delay(1);
Trang 14void main()
{
P0=255;
P2=255;
TMOD=2;
TH0=54;
TR0=1;
ET0=1;
EA=1;
while(1)
{
thoi_gian0=20; thoi_gian1=24;
do
{
P1=0x21;
h_thi0();
h_thi1();
}
while(thoi_gian0!=0);
thoi_gian0=5; thoi_gian1=5;
do
P1=0x11;
h_thi0();
Trang 15while(thoi_gian0!=0);
thoi_gian2=20; thoi_gian3=24;
do
{
P1=0x0c;
h_thi2();
h_thi3();
}
while(thoi_gian2!=0);
thoi_gian2=5; thoi_gian3=5;
do
{
P1=0x0a;
h_thi2();
h_thi3();
}
while(thoi_gian2!=0);
}
}
PHẦN D: HƯỚNG MỞ RỘNG ĐỀ TÀI
Trên cơ sở xây dựng đèn giao thông 1 ngã tư, chúng ta có thể mở rộng mô hình điều khiển sang nhiều hướng khác Đó cũng chỉ là việc liên kết các cột đèn tín hiệu tín hiệu cho phép đi của làn đường này (đèn xanh) cùng lúc đó co tín hiệu dừng lại (đèn đỏ) của các làn đường khác không cùng chiều cùng hướng
Ngoải ra chúng ta có thể thiết kê thêm đèn dành cho người đi bộ, làn đường ưu tiên Cùng với các bộ cảm biến quang và ic thời gian thực, chúng ta sẽ tự động thay
Trang 16đổi thời gian ban ngày và ban đêm ( ban đêm thì giảm thời giảm xuống, ban ngày tăng thời gian lúc cao điểm để tránh gây tắc nghẽn)