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, đốivớ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
Trang 1LỜ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ănminh 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áckhu 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ácloạ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 đườngngà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à đặcbiệ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 giaothô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àinà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
Trang 2MỤ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
Trang 3I/ GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89S52
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 16Bit, 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
Trang 4cung 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ụngyê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ỏ 40châ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, đốivớ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 đặctính đặc biệt của 89S52 như ở bảng sau:
Trang 5Ngõ 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ùnglà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úngvớ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ấpnguồn 21V khi lập trình cho Eprom trong 89S52
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
5
Phan Hữu Đan - Điện tử viễn thông K34
Trang 6trong đượ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à:
R1=10, R2=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ồmnhiề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 bankthanh 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 trong89S52 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
Bản đồ bộ nhớ Data bên trong Chip 89S52 được tổ chức như sau:
Địa chỉ
Địa chỉ byte
Trang 7RAM bên trong AT89S52 được phân chia như sau:
Các bank thanh ghi có địa chỉ từ 00H đến 1FH
7
Phan Hữu Đan - Điện tử viễn thông K34
Trang 8 RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH.
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 ghinày được đại diện bằng các thanh ghi từ R0 đến R7 Sau khi khởi động thì hệ thốngbank 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 đượctruy xuất bởi các thanh ghi R0 đến R7 Viêc thay đổi bank thanh ghi được thực hiệnthô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à thanhghi 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ùngtrên của RAM nội từ địa chỉ 80H đến 0FFH
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)
Trang 9BIT SYMBOL ADDRESS DESCRIPTION
00=Bank 0; address 00H07H01=Bank 1; address 08H0FH10=Bank 2; address 10H17H11=Bank 3; address 18H1FH
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ằmtrong 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
Trang 10Bit 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
Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở nhữngkhoả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ácngõ 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 để đothờ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ờichươ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
Trang 11Cá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ảiquyế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 chophé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 thanhghi IP (Interrupt Priority) hay nói cách khác thanh ghi IP cho phép chọn mức ưu tiêncho các ngắt (giá trị thanh ghi IP khi reset là 00h)
11
Phan Hữu Đan - Điện tử viễn thông K34
Trang 12 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ộtngắ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ộtchươ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 đặtbiệt có định địa chỉ bit IE (Interrupt Enable: cho phép ngắt) ở địa chỉ A8H
Tóm tắt thanh ghi IE
Trang 13- 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ênmức cao để xác nhận ngắt
Trang 14Port nối tiếp TI và RI 0023H
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
Trang 15Như 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/Onhững xung ở các mức cao hoặc mức thấp để điều khiển các transistor từ đó điều khiểncác đèn hiển thị.
5 Sơ đồ thuật toán
15
Phan Hữu Đan - Điện tử viễn thông K34
Chế độ bình thường Begin
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.
Bật đèn xanh 1 Bật đèn đỏ 2
Chạy chương trình quét Led 7 đoạn và đếm lùi thời gian.
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.
Trang 16a) Sơ đồ thuật toán tổng quát b) Sơ đồ thuật toán chi tiết
6 Sơ đồ mạch
6.1 Sơ đồ nguyên lý trên ISIS của phần mềm Protues
Trang 22MALED:DB
11000000B,11111001B,10100100B,10110000B,10011001B,10010010B,10000010B,11111000B,10000000B,10010000B
Trang 238 Nhận xét của giáo viên
23
Phan Hữu Đan - Điện tử viễn thông K34