LỜI NÓI ĐẦU
Ngày nay cùng với sự phát triển của khoa học kỹ thuật, xã hội ngày càng văn
minh hiện đại và nhu cầu về giao thông ngày càng trở nên cần thiết, nhất là trong các
khu vực thành thị. Do nhu cầu của đời sống con người, đặc biệt là nhu cầu đi lại, các
loại phương tiện giao thông đã tăng một cách chóng mặt. Riêng tại Việt Nam số lượng
xe máy trong những năm qua tăng một cách đột biến, mật độ xe lưu thông trên đường
ngày một nhiều, trong khi đó hệ thống đường xá tại Việt Nam còn quá nhiều hạn chế
nên thường gây ra các hiện tượng như kẹt xe, ách tắc giao thông giờ cao điểm… và
đặc biệt tai nạn giao thông ngày càng phổ biến trở thành mối hiểm họa cho nhiều
người.
Vì lý do đó các luật lệ giao thông lần lượt ra đời và được đưa vào sử dụng.
Trong đó hệ thống đèn giao thông là công cụ điều khiển giao thông công cộng thực tế
và hiệu quả có vai trò rất lớn trong việc đảm bảo an toàn và giảm thiểu tai nạn giao
thông.
Từ thực tế đó, em quyết định chọn đề tài “Xây dựng hệ thống điều khiển đèn
giao thông dùng vi điều khiển 89S52” làm đề tài cho bài tiểu luận của môn học “Vi
xử lý và vi điều khiển trong đo lường và điều khiển tự động”.
Sau quá trình tự tìm tòi và học hỏi, cùng với sự giúp đỡ của các thầy giáo trong
bộ môn và các bạn sinh viên trong lớp, cuối cùng em cũng đã hoàn thành xong đề tài
này. Trong quá trình làm đề tài, chắc chắn luôn có thiếu sót trong nội dung cũng như
cách trình bày nên em mong các thầy và các bạn sẽ góp ý chân thành để sau này em có
thể vận dụng để hoàn thành tốt các đề tài khác, đồ án tốt nghiệp và quan trọng hơn là
cho công việc sau này.
Em xin chân thành cảm ơn !
Huế, ngày 7 tháng 12 năm 2013
1
Phan Hữu Đan - Điện tử viễn thông K34
MỤC LỤC
LỜI NÓI ĐẦU 1
MỤC LỤC 2
I/ GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89S52 3
khiển do hãng Atmel sản xuất. Các sản
phẩm AT89S52 thích hợp cho những ứng
dụng điều khiển. Việc xử lý trên byte và
các toán số học ở cấu trúc dữ liệu nhỏ
được thực hiện bằng nhiều chế độ truy
xuất dữ liệu nhanh trên RAM nội. Tập
lệnh cung cấp một bảng tiện dụng của
những lệnh số học 8 bit gồm cả lệnh nhân
và lệnh chia. Nó cung cấp những hổ trợ
mở rộng trên chip dùng cho những biến
một bit như là kiểu dữ liệu riêng biệt cho phép quản lý và kiểm tra bit trực tiếp trong
hệ thống điều khiển.
AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte bộ nhớ chỉ đọc có thể xóa
và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 3 TIMER/COUNTER 16
Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao
động tạo xung Clock và bộ dao động ON-CHIP.
Các đặc điểm của chip AT89S52 được tóm tắt như sau:
• 8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá.
• Tần số hoạt động từ: 0Hz đến 24 MHz.
• 3 mức khóa bộ nhớ lập trình.
• 3 bộ Timer/counter 16 Bit.
• 128 Byte RAM nội.
• 4 Port xuất /nhập I/O 8 bit.
• Giao tiếp nối tiếp.
• 64 KB vùng nhớ mã ngoài.
• 64 KB vùng nhớ dữ liệu ngoại.
• 4 µs cho hoạt động nhân hoặc chia.
3
Phan Hữu Đan - Điện tử viễn thông K34
4
Port 1: từ chân 1 đến chân 9 (P1.0 _ P1.7). Port 1 là port IO dùng cho giao tiếp
với thiết bị bên ngoài nếu cần.
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7). Port 2 là một port có tác dụng kép
dùng như các đường xuất/nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị
dùng bộ nhớ mở rộng.
Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7). Port 3 là port có tác dụng kép. Các
chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệ đến các đặc
tính đặc biệt của 89S52 như ở bảng sau:
5
Phan Hữu Đan - Điện tử viễn thông K34
Bit Tên Chức năng chuyển đổi
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD
TXD
INT0
INT1
T0
T1
WR
RD
Ngõ vào dữ liệu nối tiếp.
Ngõ xuất dữ liệu nối tiếp.
Ngõ vào ngắt cứng thứ 0.
Các giá trị tụ và điện trở được chọn là:
R
1
=10Ω, R
2
=220Ω, C=10 µF.
Các ngõ vào bộ dao động X1, X2:
Bộ tạo dao động được tích hợp bên trong
89S52. Khi sử dụng 89S52, người ta chỉ cần nối
thêm thạch anh và các tụ. Tần số thạch anh tùy
thuộc vào mục đích của người sử dụng, giá trị tụ
thường được chọn là 33p.
3. Tổ chức bộ nhớ bên trong 89S52
Bộ nhớ trong 89S52 bao gồm ROM và RAM. RAM trong 89S52 bao gồm
nhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank
thanh ghi và các thanh ghi chức năng đặc biệt.
AT89S52 có bộ nhớ được tổ chức theo cấu trúc Harvard: có những vùng bộ nhớ
riêng biệt cho chương trình và dữ liệu. Chương trình và dữ liệu có thể chứa bên trong
89S52 nhưng 89S52 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và 64K byte
dữ liệu bên ngoài.
7
Phan Hữu Đan - Điện tử viễn thông K34
Bản đồ bộ nhớ Data bên trong Chip 89S52 được tổ chức như sau:
8
Phan Hữu Đan - Điện tử viễn thông K34
Địa chỉ
byte
Địa chỉ bit Địa chỉ bit
Địa chỉ
byte
3.4.1. Thanh ghi trạng thái chương trình (PSW: Program Status Word)
BIT SYMBOL ADDRESS DESCRIPTION
PSW.7 CY D7H Cary Flag
PSW.6 AC D6H Auxiliary Cary Flag
PSW.5 F0 D5H Flag 0
PSW4 RS1 D4H Register Bank Select 1
PSW.3 RS0 D3H Register Bank Select 0
00=Bank 0; address 00H÷07H
01=Bank 1; address 08H÷0FH
10=Bank 2; address 10H÷17H
11=Bank 3; address 18H÷1FH
PSW.2 OV D2H Overlow Flag
PSW.1 - D1H Reserved
PSW.0 P DOH Even Parity Flag
Chức năng từng bit trạng thái chương trình
- Cờ Carry CY (Carry Flag):Cờ nhớ thường nó được dùng cho các lệnh toán
học: C =1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn và ngược lại C
= 0 nếu phép toán cộng không tràn và phép trừ không có mượn.
- Cờ Carry phụ AC (Auxiliary Carry Flag): Khi cộng những giá trị BCD
(Binary Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4 bit thấp nằm
trong phạm vi điều khiển 0AH - 0FH. Ngược lại AC = 0
- Cờ 0 (Flag 0):
Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng.
- Những bit chọn bank thanh ghi truy xuất:
RS1 và RS0 quyết định dãy thanh ghi tích cực. Chúng được xóa sau khi reset hệ
thống và được thay đổi bởi phần mềm khi cần thiết.
Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng là
Bank 0, Bank1, Bank2 và Bank3.
10
Phan Hữu Đan - Điện tử viễn thông K34
Các ngắt đóng một vai trò quan trọng trong thiết kế và cài đặt các ứng dụng vi
điều khiển. Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giải
quyết sự kiện đó trong khi một chương trình khác đang thực thi.
- Tổ chức ngắt của 89S52:
Có 5 nguồn ngắt ở 89S52: 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port
nối tiếp. Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và được cho
phép từng cái một bằng phần mềm. Mức độ ưu tiên của các ngắt được lưu trong thanh
ghi IP (Interrupt Priority) hay nói cách khác thanh ghi IP cho phép chọn mức ưu tiên
cho các ngắt (giá trị thanh ghi IP khi reset là 00h).
Bit Ký hiệu Địa chỉ bit Mô tả
IP.7 _ _ Không được mô tả
IP.6 _ _ Không được mô tả
IP.5 ET2 BDH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
timer 2
IP.4 ES BCH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
cổng nối tiếp.
IP.3 ET1 BBH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
timer 1
12
Phan Hữu Đan - Điện tử viễn thông K34
IP.2 EX1 BAH Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
ngắt ngoài 1
IP.1 ET0 B9H Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
timer 0
IP.0 EX0 B8H Chọn mức ưu tiên cao (=1) hay thấp (=0) tại
ngắt ngoài 0
Nếu 2 ngắt xảy ra đồng thời thì ngắt nào có nào có mức ưu tiên cao hơn sẽ
được phục vụ trước.
Nếu 2 ngắt xảy ra đồng thời có cùng mức ưu tiên thì thứ tự ưu tiên được
thực hiện từ cao đến thấp như sau: ngắt ngoài 0 – timer 0 – ngắt ngoài 1 – timer 1 –
Port nối tiếp RI SCON.0
Các loại cờ ngắt
- Các vectơ ngắt:
Khi chấp nhận ngắt, giá trị được nạp vào PC gọi là vector ngắt. Nó là địa chỉ bắt
đầu của ISR cho nguồn tạo ngắt, các vector ngắt được cho ở bảng sau :
Ngắt Cờ Địa chỉ vector
Reset hệ thống RST 0000H
Bên ngoài 0 IE0 0003H
Timer 0 TF0 000BH
Bên ngoài 1 IE1 0013H
Timer 1 TF1 001BH
Port nối tiếp TI và RI 0023H
Timer 2 002BH
Vector reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo nghĩa
này, nó giống ngắt: nó ngắt chương trình chính và nạp cho PC giá trị mới.
15
Phan Hữu Đan - Điện tử viễn thông K34
II/ XÂY DỰNG HỆ THỐNG ĐIỀU KHIỂN ĐÈN GIAO THÔNG
1. Chế độ hoạt động
Thực tế tại mỗi giao lộ, hệ thống đèn giao thông luôn có các chế độ hoạt động
khác nhau như: chế độ giờ cao điểm, chế độ bình thường, chế độ giờ thấp điểm (ban
đêm sau 22h) và đôi khi có chế độ tự động nhường đường khi giao nhau với đường tàu
hỏa… Nhưng vì đây là bài tiểu luận nên em chỉ xây dựng hệ thống điều khiển đèn giao
thông ở chế độ bình thường: đèn xanh 20s, đèn vàng 5s và đèn đỏ 25s trên 2 lan
đường.
2. Các thành phần chính của hệ thống
Hệ thống đèn giao thông gồm 4 phần chính sau:
- Mạch điều khiển trung tâm dùng vi điều khiển AT89S52.
- Mạch dao động, reset.
- Mạch hiển thị thời gian đếm lùi dùng Led 7 đoạn.
thường
Chế độ điều khiển
End.
Chạy chương trình
quét Led 7 đoạn và
đếm lùi thời gian.
Bật đèn xanh 1
Bật đèn đỏ 2
Bật đèn đỏ 1
Bật đèn xanh 2
Chạy chương trình
quét Led 7 đoạn và
đếm lùi thời gian.
Chạy chương trình
quét Led 7 đoạn và
đếm lùi thời gian.
Begin
Chế độ bình
thường
Bật đèn vàng 1
Bật đèn đỏ 2
Bật đèn đỏ 1
Bật đèn vàng 2
Chạy chương trình
quét Led 7 đoạn và
đếm lùi thời gian.
6. Sơ đồ mạch
6.1. Sơ đồ nguyên lý trên ISIS của phần mềm Protues
6.2. Sơ đồ mạch in
18
20
Phan Hữu Đan - Điện tử viễn thông K34
DEC R1
CJNE R0,#0,LAPB
RET
CTC:
MOV P1,#00110000B
MOV R0,#25
MOV R1,#20
LAPC:
CALL HIENTHI
DEC R0
DEC R1
CJNE R0,#5,LAPC
RET
CTD:
MOV P1,#00101000B
MOV R0,#5
MOV R1,#5
LAPD:
CALL HIENTHI
DEC R0
DEC R1
CJNE R0,#0,LAPD
RET
21
Phan Hữu Đan - Điện tử viễn thông K34
HIENTHI:
MOV R7,#100
QUET:
SETB P0.3
CALL DELAY
CLR P0.3
DJNZ R7,QUET
RET
MALED:DB
11000000B,11111001B,10100100B,10110000B,10011001B,10010010B,10000
010B,11111000B,10000000B,10010000B
RET
DELAY:
MOV R4,#30
LAP:MOV R5,#35
LAPM:
NOP
DJNZ R5,LAPM
DJNZ R4,LAP
RET
END
23
Phan Hữu Đan - Điện tử viễn thông K34
8. Nhận xét của giáo viên