Tải bản đầy đủ (.doc) (25 trang)

đề 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

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 (935.2 KB, 25 trang )

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


1. Tổng quan về 89S52 3
2. Mô tả các chân của 89S52 5
2.1. Sơ đồ chân 89S52 5
2.2. Chức năng của các chân 89S52 5
3. Tổ chức bộ nhớ bên trong 89S52 7
3.1. RAM đa dụng 9
3.2. RAM có thể định địa chỉ bit 9
3.3. Các bank thanh ghi 9
3.4. Các thanh ghi có chức năng đặc biệt 9
3.4.1. Thanh ghi trạng thái chương trình (PSW) 10
3.4.2. Thanh ghi TIMER 11
3.4.3. Thanh ghi ngắt (INTERRUPT) 12
II/ XÂY DỰNG HỆ THỐNG ĐIỀU KHIỂN ĐÈN GIAO THÔNG 15
1. Chế độ hoạt động 15
2. Các thành phần chính của hệ thống 15
3. Các linh kiện sử dụng 15
4. Nguyên lý hoạt động 16
5. Sơ đồ thuật toán 16
6. Sơ đồ mạch 17
6.1. Sơ đồ nguyên lý trên ISIS của phần mềm Protues 17
6.2. Sơ đồ mạch in 17
6.3. Hình ảnh thiết kế 3D trên ARES của phần mềm Proteus 18
6.4. Hình ảnh thực tế 18
7. Chương trình lập trình Assembly 19
8. Nhận xét của giáo viên 23
2
Phan Hữu Đan - Điện tử viễn thông K34
I/ GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89S52
1. Tổng quan về 89S52
AT89S52 là họ IC 8051 vi điều

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

Phan Hữu Đan - Điện tử viễn thông K34
Sơ đồ khối của AT89S52
AT89S52
2. Mô tả các chân của 89S52
2.1. Sơ đồ chân 89S52
Mặc dù các thành viên của họ
8051(ví dụ 8751, 89S52, 89C51,
DS5000) đều có các kiểu đóng vỏ
khác nhau, chẳng hạn như hai hàng
chân DIP (Dual In-Line Pakage),
dạng vỏ dẹt vuông QPF (Quad Flat
Pakage) và dạng chip không có chân
đỡ LLC (Leadless Chip Carrier) thì
chúng đều có 40 chân cho các chức
năng khác nhau như vào ra I/O, đọc
RD
, ghi
WR
, địa chỉ, dữ liệu và
ngắt. Cần phải lưu ý một số hãng
cung cấp một phiên bản 8051 có 20
chân với số cổng vào ra ít hơn cho
các ứng dụng yêu cầu thấp hơn. Tuy
nhiên vì hầu hết các nhà phát triển sử
dụng chíp đóng vỏ 40 chân với hai hàng chân DIP nên ta chỉ tập trung mô tả phiên bản
này.
2.2. Chức năng của các chân 89S52
Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7). Port 0 có 2 chức năng: trong các
thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO, đối
với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và bus dữ liệu.

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.

Ngõ vào ngắt cứng thứ 1.
Ngõ vào TIMER/ COUNTER thứ 0.
Ngõ vào của TIMER/ COUNTER thứ 1.
Tín hiệu ghi dữ liệu lên bộ nhớ ngoài.
Tín hiệu đọc bộ nhớ dữ liệu ngoài.
PSEN (Program store enable):
PSEN là tín hiệu ngõ ra có tác dụng cho phép đọc bộ nhớ chương trình
mở rộng và thường được nối đến chân OE của Eprom cho phép đọc các byte
mã lệnh.
PSEN ở mức thấp trong thời gian 89S52 lấy lệnh. Các mã lệnh của chương trình
được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong 89S52 để
giải mã lệnh. Khi 89S52 thi hành chương trình trong ROM nội, PSEN ở mức cao.
ALE (Address Latch Enable):
Khi 89S52 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và dữ
liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ 30 dùng
làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng
với IC chốt.
Tín hiệu ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là
địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động.
EA (External Access): Tín hiệu vào EA (chân 31) thường được mắc lên mức 1
hoặc mức 0. Nếu ở mức 1, 89S52 thi hành chương trình từ ROM nội. Nếu ở mức 0,
89S52 thi hành chương trình từ bộ nhớ mở rộng. Chân EA được lấy làm chân cấp
nguồn 21V khi lập trình cho Eprom trong 89S52.
6
Phan Hữu Đan - Điện tử viễn thông K34
RST (Reset): Khi ngõ vào tín hiệu này đưa lên
mức cao ít nhất 2 chu kỳ máy, các thanh ghi bên
trong được nạp những giá trị thích hợp để khởi
động hệ thống. Khi cấp điện mạch phải tự động
reset.

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

RAM bên trong AT89S52 được phân chia như sau:
 Các bank thanh ghi có địa chỉ từ 00H đến 1FH.
 RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH.
 RAM đa dụng từ 30H đến 7FH.
 Các thanh ghi chức năng đặc biệt từ 80H đến FFH
3.1. RAM đa dụng
RAM đa dụng có địa chỉ từ 30h – 7Fh có thể truy xuất mỗi lần 8 bit bằng cách
dùng chế độ định địa chỉ trực tiếp hay gián tiếp.
Các vùng địa chỉ thấp từ 00h – 2Fh cũng có thể sử dụng cho mục đích như trên,
ngoài các chức năng đặc biệt được đề cập ở phần sau.
3.2. RAM có thể định địa chỉ bit
Vùng địa chỉ từ 20h -2Fh gồm 16 byte có thể thực hiện như vùng RAM đa dụng
(truy xuât mỗi lần 8 bit) hay thực hiện truy xuất mỗi lần 1 bit bằng các lệnh xử lý bit.
3.3. Các bank thanh ghi
Vùng địa chỉ 00h – 1Fh được chia thành 4 bank thanh ghi: bank 0 từ 00h – 07h,
bank 1 từ 08h – 0Fh, bank 2 từ 10h – 17h và bank 3 từ 18h – 1Fh. Các bank thanh ghi
này được đại diện bằng các thanh ghi từ R0 đến R7. Sau khi khởi động thì hệ thống
bank 0 được chọn sử dụng.
Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi được
truy xuất bởi các thanh ghi R0 đến R7. Viêc thay đổi bank thanh ghi được thực hiện
thông qua thanh ghi từ trạng thái chương trình (PSW).
3.4. Các thanh ghi có chức năng đặc biệt
Các thanh ghi trong 89S52 được định dạng như một phần của RAM trên chip vì
vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình và thanh
ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp). Cũng như R0 đến R7,
89S52 có 21 thanh ghi có chức năng đặc biệt (SFR: Special Function Register) ở vùng
trên của RAM nội từ địa chỉ 80H đến 0FFH.
9
Phan Hữu Đan - Điện tử viễn thông K34
Sau đây là một vài thanh ghi đặc biệt thường được sử dụng:

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ờ tràn OV (Over Flag):
Cờ tràn được set sau một hoạt động cộng hoặc trừ nếu có sự tràn toán học.
- Bit Parity (P):
Bit tự động được set hay Clear ở mỗi chu kỳ máy để lập Parity chẵn với thanh
ghi A. Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity luôn luôn chẵn. Ví dụ A
chứa 10101101B thì bit P set lên một để tổng số bit 1 trong A và P tạo thành số chẵn.
Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Port nối
tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu.
3.4.2. Thanh ghi TIMER
Vi Điều Khiển 89S52 có 3 timer 16 bit, mỗi timer có bốn cách làm việc. Người
ta sử dụng các timer để:
o Định khoảng thời gian.
o Đếm sự kiện.
o Tạo tốc độ baud cho port nối tiếp trong 89S52.
11
Phan Hữu Đan - Điện tử viễn thông K34
RS1 RS0 BANK
0 0 0
0 1 1
1 0 2
1 1 3
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở những
khoảng đều đặn và đặt cờ tràn timer. Cờ được dùng để đồng bộ hóa chương trình để
thực hiện một tác động như kiểm tra trạng thái của các ngõ vào hoặc gửi sự kiện ra các
ngõ ra. Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để đo
thời gian trôi qua giữa hai sự kiện (ví dụ đo độ rộng xung).
3.4.3. Thanh ghi ngắt (INTERRUPT)
Một ngắt là sự xảy ra một điều kiện, một sự kiện mà nó gây ra treo tạm thời thời
chương trình chính trong khi điều kiện đó được phục vụ bởi một chương trình khác.

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 –

cổng nối tiếp – timer 2.
 Nếu chương trình của một ngắt có mức ưu tiên thấp đang chạy mà có một
ngắt xảy ra với mức ưu tiên cao hơn thì chương trình này tạm dừng để chạy một
chương trình khác có mức ưu tiên cao hơn.
- Cho phép và cấm ngắt:
Mỗi nguồn ngắt được cho phép hoặc cấm ngắt qua một thanh ghi chức năng đặt
biệt có định địa chỉ bit IE (Interrupt Enable: cho phép ngắt) ở địa chỉ A8H.
13
Phan Hữu Đan - Điện tử viễn thông K34
14
Phan Hữu Đan - Điện tử viễn thông K34
Bit Ký hiệu Địa chỉ bit Mô tả
IE.7 EA AFH Cho phép / Cấm toàn bộ
IE.6 _ AEH Không được mô tả
IE.5 ET2 ADH Cho phép ngắt từ Timer 2 (8052)
IE.4 ES ACH Cho phép ngắt port nối tiếp
IE.3 ET1 ABH Cho phép ngắt từ Timer 1
IE.2 EX1 AAH Cho phép ngắt ngoài 1
IE.1 ET0 A9H Cho phép ngắt từ Timer 0
IE.0 EX0 A8H Cho phép ngắt ngoài 0
Tóm tắt thanh ghi IE
- Các cờ ngắt:
Khi điều kiện ngắt xảy ra thì ứng với từng loại ngắt mà loại cờ đó được đặt lên
mức cao để xác nhận ngắt.
Ngắt Cờ Thanh ghi SFR và vị trí bit
Bên ngoài 0 IE0 TCON.1
Bên ngoài 1 IE1 TCON.3
Timer 1 TF1 TCON.7
Timer 0 TF0 TCON.5
Port nối tiếp TI SCON.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.

- Mạch hiển thị đèn trạng thái: xanh, vàng, đỏ.
3. Các linh kiện sử dụng
- Vi điều khiển AT89S52.
- 4 Led 7 đoạn ( Anốt chung) hiển thị thời gian đếm lùi.
- 6 Led trạng thái: 2 xanh lá, 2 vàng và 2 đỏ.
- 4 transistor C828A (NPN).
- 1 IC ổn áp 7805.
- 1 điện trở thanh 10K.
- 1 thạch anh 12MHz và 2 tụ gốm 33pF.
- 1 tụ hóa 10 F và các trở loại 1k - 10k.
- 1 công tắc nguồn và 1 nguồn pin 9V.
16
Phan Hữu Đan - Điện tử viễn thông K34
4. Nguyên lý hoạt động
Mạch đèn giao thông hoạt động dựa trên nội dung đã lập trình cho vi điều khiển
AT89S52. AT89S52 đưa dữ liệu đến các Led trạng thái ( xanh, vàng, đỏ) để điều khiển
các Led này đóng, mở. Ngoài ra, nó còn xuất dữ liệu đến các transistor để tăng dòng
cho các Led 7 đoạn, các transistor sẽ điều khiển việc đóng mở các Led 7 đoạn bằng
việc đếm thời gian lùi.
Như vậy mỗi khi bắt đầu thực hiện việc đếm lùi, nếu trục lộ này đèn xanh hoặc
đèn vàng thì trục lộ bên kia sẽ đèn đỏ và ngược lại. AT89S52 sẽ xuất ra các cổng I/O
những xung ở các mức cao hoặc mức thấp để điều khiển các transistor từ đó điều khiển
các đèn hiển thị.
5. Sơ đồ thuật toán
a) Sơ đồ thuật toán tổng quát b) Sơ đồ thuật toán chi tiết
17
Phan Hữu Đan - Điện tử viễn thông K34
Chương trình
chính
Chế độ bình

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

Phan Hữu Đan - Điện tử viễn thông K34
6.3. Hình ảnh thiết kế 3D trên ARES của phần mềm Protues
6.4. Hình ảnh thực tế
19
Phan Hữu Đan - Điện tử viễn thông K34
7. Chương trình lập trình Assembly
ORG 00H
MAIN:
CALL CTA
CALL CTB
CALL CTC
CALL CTD
JMP MAIN
CTA:
MOV P1,#10000100B
MOV R0,#20
MOV R1,#25
LAPA:
CALL HIENTHI
DEC R0
DEC R1
CJNE R0,#5,LAPA
RET
CTB:
MOV P1,#01000100B
MOV R0,#5
MOV R1,#5
LAPB:
CALL HIENTHI
DEC R0

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:

MOV P0,#00H
MOV A,R0
MOV B,#10
DIV AB
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P2,A
SETB P0.0
CALL DELAY
CLR P0.0
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
SETB P0.1
CALL DELAY
CLR P0.1
MOV A,R1
MOV B,#10
DIV AB
MOV DPTR,#MALED
MOVC A,@A+DPTR
MOV P2,A
22
Phan Hữu Đan - Điện tử viễn thông K34
SETB P0.2
CALL DELAY
CLR P0.2
MOV A,B
MOVC A,@A+DPTR
MOV P2,A

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


























24
Phan Hữu Đan - Điện tử viễn thông K34


25
Phan Hữu Đan - Điện tử viễn thông K34

×