Website: Email : Tel : 0918.775.368
BÀI TẬP LỚN VI XỬ LÝ
Đề tài: Hệ thống điều khiển đèn giao thông tại 1 ngã tư.
MỤC LỤC
I.Tài liệu tham khảo 2
II. Đặt vấn đề 2
III. Phương án giải quyết 2
IV. Mô tả hệ thống 3
1. Khối chế độ……………………………………………………………5
2. Khối điều khiển trung tâm…………………………………………….5
3. Khối giải mã………………………………………………………. .22
4. Khối hiển thị…………………………………………………………. 25
V. Code………………………………………………………………………. 28
VI. Sơ đồ mạch điều khiển 30
VII. Sơ đồ mạch in……………
31
VIII. Nguyên lý hoạt động…… 31
IX. Mở rộng thêm các chức năng của chương trình 32
X. Kết luận……………………………………………………………… …. 34
1
Website: Email : Tel : 0918.775.368
I.Tài liệu tham khảo
1. Họ vi điều khiển 8051_ tác giả: Tống Văn On- Hoàng Đức Hải
2. Cấu trúc và lập trình họ vi điều khiển 8051_ tác giả: Nguyễn Tăng Cường
3. Lập trình hợp ngữ( Assembly) và máy tính IBM-PC_ Biên dịch: Quách Tuấn
Ngọc- Đỗ Tiến Dũng- Nguyễn Quang Khải
II. Đặt vấn đề
Hệ thống giao thông là vấn đề rất quan trọng trong một đô thị văn minh.
Nhưng hiện nay tại Hà Nội và một số thành phố lớn nói chung vẫn thường
xuyên xảy ra tai nạn và ách tắc giao thông đặc biệt là vào các giờ cao điểm. Hệ
nhấp nháy
Khối hiển thị
S
Website: Email : Tel : 0918.775.368
Gồm 4 khối hoạt động liên quan chặt chẽ với nhau
- Khối chế độ: là khối đặt các chế độ để điều khiển đèn
- Khối điều khiển trung tâm: là khối quan trọng nhất của cả hệ
thống, điều khiển đèn bằng các lệnh đã được lập trình sẵn.
- Khối giải mã: giải mã tín hiệu nhận được từ khối điều khiển trung
tâm rồi đưa tín hiệu ra khối hiển thị
- Khối hiển thị: là khối hiển thị thời gian hoạt động từng đèn
SƠ ĐỒ KHỐI CỦA HỆ THỐNG
2. Khối Chế độ hoạt động
Hệ thống điều khiển đèn giao thông hoạt động ở 2 chế độ khác nhau, đó
là: Tự động và chế độ ban đêm. Khối chế độ làm nhiệm vụ chuyển chế độ khi
có yêu cầu của người điều khiển. Thực chất bên trong khối chế độ là một hệ
thống chuyển mạch dùng các công tắc bấm
4
Khối điều
khiển trung
tõm
Khối
Hiển thị
Khối
chế độ
Khối giải
mó
Website: Email : Tel : 0918.775.368
- Chế độ tự động( chế độ 2): Tất cả các khối đều hoạt động. Sử dụng
chế độ này tại các thời điểm có lưu lượng xe tham gia giao thông bình
kế em dùng loại chip AT89C51, nhưng nó thuộc họ 80x51 nên em xin trình
bày các đặc điểm tổng quát của họ vi xử lý này.
Các đặc điểm chung của MC8051:
6
Website: Email : Tel : 0918.775.368
MC - 51 là họ Micro Controller được chế tạo ban đầu bởi công ty Intel.
µC8051có các đặc điểm sau:
- CPU 8-bít thích hợp với các ứng dụng đo lường, điều khiển.
- Có khả năng xử lý từng bít.
- Cho phép địa chỉ hoá 64Kbyte bộ nhớ chương trình.
- Cho phép truy nhập 64Kbyte bộ nhớ chương trình.
- 4Kbyte bộ nhớ chương trình trên Chip (ROM, EPROM, EEPROM).
- 128 byte bộ nhớ dữ liệu trên chíp (với 8952 là 256 byte).
- 32 đường vào ra có địa chỉ riêng biệt.
- 2 bộ Timer/Counter (với 8952 thì có 3 bộ Timer/Counter)
- Cổng truyền thông tin nối tiếp hoạt động ở chế độ Full- Duplex.
- Cấu trúc ngắt gồm 6 nguồn ngắt và 5 Véc tơ ngắt với 2 mức ưu tiên.
- Có thể phát xung clock trên Chip.
Sơ đồ chân linh kiện:
Sơ đồ. Bố trí chân của
µ
C 8051
Đây là loại vi xử lý có 40 chân và bố trí như sau:
7
Website: Email : Tel : 0918.775.368
- Chân 32 ÷ 39 là cổng P0
- Chân 1 ÷ 8 là cổng P1
- Chân 21 ÷ 28 là cổng P2
- Chân 10 ÷ 17 là cổng P3
- Chân 9 là RESET
cần thiết trong suốt quá trình xử lý bộ nhớ số
liệu.
Bộ nhớ chương trình
Sau khi Reset CPU bắt đầu thực hiện từ địa chỉ 0000H. Bảng vector ngắt
bắt đầu từ địa chỉ 0003H đến 002BH. Mỗi một ngắt được xác định tại một vị trí
cố định trong bộ nhớ chương trình. Khi một ngắt xảy ra CPU sẽ nhảy tới vị trí
mà nó yêu cầu phục vụ. Mỗi một vector ngắt có độ dài 8 Byte. Nếu chương
trình ngắt đủ ngắn thì ta chứa ngay trong 8 Byte này, nếu chương trình ngắt dài
thì nó chỉ chứa một lệnh nhảy tới chương trình phục vụ.
9
Website: Email : Tel : 0918.775.368
4Kbyte (hoặc 8Kbyte, 16Kbyte ) phần thấp nhất của bộ nhớ chương trình
có thể ở ROM trong hoặc ở ROM ngoài. Điều này được thực hiện bởi nối chân
EA
lên mức logic 1 hay 0 (
EA
= 1 thì ROM trong
EA
= 0 thì ROM ngoài). Khi
truy cập bộ nhớ ngoài MCS - 8051 sử dụng P0 và P2 làm 16 đường vào ra,
trong đó P0 làm chức năng Bus địa chỉ và Bus dữ liệu. P0 là Byte địa chỉ phần
thấp của bộ nhớ chương trình còn P2 là byte địa chỉ phần cao.
Địa chỉ của bộ nhớ chương trình luôn có độ rộng là 16 bít.
Bộ nhớ dữ liệu
Bộ nhớ số liệu có thể truy nhập tới 64Kbyte bộ nhớ dữ liệu ngoài. Địa chỉ
của bộ nhớ ngoài có thể là 1 Byte hoặc 2 Byte. Bộ nhớ số liệu trong được chia
làm 3 khối, 128 Byte thấp, 128 Byte cao và khối thanh ghi chức năng đặc biệt.
Bộ nhớ trong luôn sử dụng địa chỉ 1 Byte. Sơ đồ bộ nhớ dữ liệu trong:
* Phần Lower 128 Bytes được chia thành 3 vùng:
gian, thanh chứa
con trỏ ngăn xếp
Hình 4. Sơ đồ bộ nhớ dữ liệu trong
Website: Email : Tel : 0918.775.368
+ Vùng 2: Địa chỉ từ 20H đến 2FH bao gồm 16Byte là vùng ô nhớ địa chỉ
theo Bit. Tập lệnh của MC - 51 bao gồm sự lựa chọn độ rộng của câu lệnh theo
từng Bit và 128 Bits trong vùng này có thể được xử lý bởi các câu lệnh trực tiếp
hoặc gián tiếp. Địa chỉ các Bits này là từ 00H đến 7FH.
+ Vùng 3: Địa chỉ từ 30H đến 7FH làm chức năng thông thường của bộ
nhớ RAM.
Tất cả các Bytes trong 128 Bytes Lower đều có thể được xử lý bởi địa chỉ
trực tiếp hoặc gián tiếp.
* Phần Upper 128 Bytes chỉ có thể được xử lý bởi địa chỉ gián tiếp và
phần này không có trong 8051.
* Vùng các thanh ghi chức năng đặc biệt (SFR). SFRs bao gồm bộ chốt
các cổng, Timer, điều khiển ngoại vi. Các thanh ghi này chỉ có thể được xử lí
bởi địa chỉ trực tiếp. 16 địa chỉ trong vùng thanh ghi chức năng đặc biệt là địa
chỉ theo Bytes và Bits. Địa chỉ theo Bits trong vùng này là từ 80H đến FFH.
Thanh ghi trạng thái chương trình (Program Status Word: PSW )
Thanh ghi trạng thái chứa các Bits ảnh hưởng đến trạng thái của CPU.
Cấu trúc của thanh ghi trạng thái:
CY AC F0 RS1 RS0 0V P
Thanh ghi trạng thái nằm trong vùng các thanh ghi chức năng đặc biệt.
Nó chứa bit Carry, bit Carry phụ (dùng cho hoạt động BCD), 2 bit lựa chọn
nhóm thanh ghi, cờ tràn, cờ dấu và 2 cờ trạng thái mà người dùng có định
nghĩa.
Các chế độ địa chỉ
Các chế độ địa chỉ trong tập lệnh của MCS -51 như sau:
11
Website: Email : Tel : 0918.775.368
Port in Chức năng khác
P1.0 T2 (Đầu vào bên ngoài của Timer/Counter 2)
P1.1 T2EX (Trigger lạp lại của Timer/Counter 2)
P3.0 RXD (Cổng đầu vào nối tiếp)
P3.1 TXD (Cổng đầu ra nối tiếp)
P3.2
0INT
(Ngắt ngoài)
P3.3
1INT
(Ngắt ngoài)
P3.4 T0 (Đầu vào bên ngoài của bộ Timer/Counter 0 )
P3.5 T1 (Đầu vào bên ngoài của bộ Timer/Counter 1 )
P3.6
WR
(Xung chốt để viết bộ nhớ dữ liệu ngoài )
P3.7
RD
(Xung chốt để đọc bộ nhớ dữ liệu ngoài )
Tất cả bộ chốt các cổng đều được đặt ở mức logic "1" khi Reset.
Timer/ Counter
MC 8051 có hai thanh ghi Timer/Counter 16 bit: Timer 0 và Timer 1.
Các thanh ghi này đều có thể hoạt động ở chế độ Timer hoặc Couter.
Trong chế độ Timer nội dung của thanh ghi sẽ tăng sau mỗi chu kỳ máy
và tần số của đồng hồ bằng 1/12 tần số máy phát thạch anh.
Trong chế độ Counter nội dung của thanh ghi sẽ tăng khi có sự chuyển từ
1→ 0 tại chân tín hiệu T0 hoặc T1. Trong chế độ này đầu vào sẽ được lấy mẫu
tại S5P2 của chu kỳ máy vì vậy tần số đếm lớn nhất bằng 1/24 tần số máy phát
thạch anh.
Chức năng Timer hoặc Counter được chọn bởi bit điều khiển
-
T
C
: Bit lựa chọn Timer hoặc Counter.
- M1: Bit lựa chọn chế độ.
- M2: Bit lựa chọn chế độ.
14
GATE C/ M1 M0 GATE C/ M1 M0
TIMER 1 TIMER 1
Website: Email : Tel : 0918.775.368
M1 M0 Chế độ hoạt động (Operating Mode)
0 0 0 Timer 13 bit
0 1 1 Timer/Counter 16 bit
1 0 2 Timer/Counter tự đông lạp 8 bit
1 1 3 (Timer 0) TL0 là bộ Timer/Counter 8
bit được điều khiển bởi các bit điều
khiển Timer 0, TH0 là bộ Timer 8 bit
và được điều khiển bởi những bit điều
khiểu Timer 1.
1 1 3 (Timer 1) Timer/Counter 1 dừng.
- Mode 0: Cả 2 Timer trong Mode 0 là một bộ đếm 8 bit với đầu vào đã
được chia cho 32. Đây là bộ timer 13 bit. ở chế độ này thanh ghi Timer được
định dạng như là thanh ghi 13 bit. Tín hiệu Gate có thể là 1 bit trong thanh ghi
TMOD hay là tín hiệu tại chân ngoài.
- Mode 1: Mode 1 giống Mode 0 ngoại trừ là thanh ghi Timer hoạt động
với địa chỉ 16 bit.
- Mode 2: Định dạng thanh ghi Timer như là một bộ đếm 8 bit (TL1 ) với
chức năng tự động lạp lại giá trị. Khi TL1 đếm tràn nó sẽ đặt cờ TF1 và lạp lại
nội dung TH1 đã được đặt trước bằng phần mềm.
- Mode 3: Timer 1 là một bộ đếm, nó sẽ hoạt động khi TR1 được đặt
- SM0: Xác định chế độ cổng nối tiếp.
- SM1: Xác định chế độ cổng nối tiếp.
- SM2: Trong chế độ 2 hoặc 3, nếu SM2 được lập bằng 1 thì sau đó RI sẽ
không được hoạt động nếu bit dữ liệu thứ 9 được nhận bằng 0. Trong chế độ 1,
nếu SM2 = 1 thì RI sẽ không được hoạt động nếu bit Stop không được nhận
bằng 1. Trong Mode 0, SM2 = 0.
16
Website: Email : Tel : 0918.775.368
- REN: Được thiết lập hoặc xoá bằng phần mềm để cho phép chế độ nhận
hoạt động hoặc không hoạt động.
- TB8: Bit dữ liệu thứ 9 sẽ được truyền trong Mode 2, 3. Được thiết lập
hoặc xoá bằng phần mềm.
- RB8: Trong Mode 2 và 3 là bit dữ liệu thứ 9. Trong Mode 1, nếu
SM2 = 0 RB8 là bit Stop, trong Mode 0 thì RB8 không được sử dụng.
- TI: Cờ cho phép ngắt truyền, được thiết lập bằng phần cứng tại cuối bit
thứ 8 trong Mode 0, hoặc tại thời điểm bắt đầu của bit Stop trong các chế độ
khác. Phải được xoá bằng phần mềm.
- RI: Cờ cho phép ngắt nhận. Được thiết lập bằng phần cứng tại thời
điểm cuối của bit thứ 8 trong Mode 0, hoặc tại thời điểm bắt đầu bit Stop trong
các chế độ khác. Phải được xoá bằng phần mềm.
SM0 SM1 Mode Descreption Baurate
0 0 0 Thanh ghi dịch F
osc
/12
0 1 1 8 bit UART Thay đổi
1 0 2 9 bit UART F
osc
/64 hoặc F
osc
/32
*. Cổng nối tiếp trong Mode 2:
Tốc độ trong chế độ này cố định là1/32 hoặc 1/64 tốc độ của tần số phát
phụ thuộc vào bit SMOD trong thanh PCON.
- SMOD = 1, Baud Rate = 1/32*F
osc.
- SMOD = 0, Buad Rate = 1/64*F
osc
.
Để thiết lập bit SMOD thực hiện câu lệnh:
ORL PCON, #80H.
Địa chỉ của thanh ghi PCON là 87H.
18
BaudRate
FoscK
*384
*
256
−
)1256(*12*32
*
TH
FoscK
−
Website: Email : Tel : 0918.775.368
*. Cổng nối tiếp trong Mode 3:
Tốc độ trong chế độ 3 thay đổi và thiết lập giống trong chế độ 1.
Ngắt
8051 cung cấp 5 nguồn ngắt 2 ngắt ngoài, 2 ngắt của bộ Timer và 1 ngắt
của cổng nối tiếp.
Hệ thống điều khiển ngắt
Mỗi một nguồn ngắt có thể hoạt động hoặc không hoạt động một cách
riêng biệt bởi sự thiết lập hoặc xoá bit trong thanh ghi chức năng đặc biệt IE:
EA ET2 ES ET1 EX1 ET0 EX0
- EA: Nếu EA = 0 ngắt sẽ không được thực hiện. Nếu EA = 1 thì mỗi
nguồn ngắt có thể hoạt động hoặc không hoạt động tùy thuộc vào việc thiết lập
hoặc xoá bit cho phép của nó.
- ET2: dành cho người sử dụng.
- ES: Cho phép ngắt của cổng nối tiếp hoạt động hoặc không hoạt động.
- ET1: Cho phép ngắt tràn của bộ Timer 1 tích cực hoặc không tích cực.
- EX1: Cho phép chân
1INT
tích cực hoặc không tích cực.
20
Website: Email : Tel : 0918.775.368
- ET0: Cho phép ngắt tràn của bộ Timer 0 tích cực hoặc không tích cực.
- EX0: Cho phép chân
0INT
tích cực hoặc không tích cực.
Cấu trúc mức ưu tiên:
Mỗi nguồn ngắt cũng có thể được lập trình một cách độc lập một trong
hai mức ưu tiên tuỳ thuộc vào việc thiết lập hoặc xoá bit trong thanh ghi chức
năng đặc biệt IP:
PT2 PS PT1 PX1 PT0 PX0
- : Dành cho người sử dụng.
- PT2: Định nghĩa mức ưu tiên ngắt cho bộ Timer 2.
- PS: Định nghĩa mức ưu tiên ngắt cho cổng nối tiếp.
- PT1: Định nghĩa mức ưu tiên ngắt cho bộ Timer 1.
- PX1: Định nghĩa mức ưu tiên ngắt cho chân
1INT
.
hoạt động. Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho
mạch dao đông cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của
chip cho đến khi có reset cứng tiếp theo.
4. Khối giải mã
Xuất phát từ ý tưởng khi hệ thống điều khiển đèn giao thông hoạt động,
trên các cột đèn ngoài các đèn đường còn có các đồng hồ đếm ngược thời gian
hoạt động của đèn. Vì các đèn hoạt động với những khoảng thời gian khác nhau
(Đỏ 30s, Xanh 26s, vàng 4s), đèn của các trục hoạt động không giống nhau, do
vậy ta phải lập trình để sao cho đồng hồ có thể đếm ngược . Trong mỗi chu kỳ
22
Website: Email : Tel : 0918.775.368
hoạt động của hệ thống điều khiển, các bộ đếm lại có những giá trị ban đầu
khác nhau tương ứng với thời gian đếm của các đèn. Để giải quyết vấn đề này
ta phải dùng tính năng của Vi điều khiển để nạp giá trị ban đầu cho bộ đếm của
mỗi trục.
Thực hiện khối giả mã:
Khối giải mã là bộ chuyển đổi từ BCD( dùng IC giải mã 74LS47)
LED 7 thanh
Bộ giải mã:
Để hiển thị đèn đếm để thông báo thời gian hoạt động của đèn. Vì đầu ra
là mã BCD nên để hiển thị dưới dạng số thập phân ta phải giải mã BCD thành
số thập phân. Để thực hiện ta dùng IC74LS47 và đèn LED 7 thanh. Sơ đồ chân
của IC 74LS47 như hình bên. A0, A1, A2, A3 là các đầu vào BCD. Trong đó
các chân 1,2,6,7 là các đầu vào mã BCD, các chân 9,10,11,12,13,14,15 là các
chân ra LED 7 thanh( mức tích cực thấp)
23
Website: Email : Tel : 0918.775.368
Sơ đồ cấu tạo trong của 74LS47