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

hệ thống điều khiển đèn giao thông tại 1 ngã tư

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 (508.18 KB, 35 trang )

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- Hồ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ệ
thống đèn báo hiệu tại các ngã tư hoạt động chưa đạt được hiệu quả tối ưu, chưa
tiện lợi cho người đi đường. Do vậy việc thiết kế hệ thống đèn báo hiệu hợp lý,
hiệu quả là rất cần thiết.
III. Phương án giải quyết
Xuất phát từ việc cần thiết phải có một hệ thống điều khiển đèn giao
thông khoa học và đạt hiệu quả. Nhóm thiết kế chúng em đã chọn đề tài thiết kế
hệ thống điều khiển đèn giao thơng có hiển thị đồng hồ đếm ngược báo hiệu
thời gian hiển thị các đèn. Việc có đồng hồ đếm thơng báo hoạt động của các
đèn làm cho người tham gia giao thông chủ động trong việc chấp hành luật giao
thông, đẩy lùi tan nạn và ách tắc giao thông.

2


Website: Email : Tel : 0918.775.368

LƯU ĐỒ GIẢITHUẬT
BEGIN
Công tắc chuyển
mạch

So sánh chọn chế
độ

D


S

DK=1

Chế độ đèn vàng
nhấp nháy

Chế độ tự động

Khối hiển thị

END
DK: Bít điều khiển chế độ
IV. Mơ tả hệ thống
1. Các khối của hệ thống
3


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

Khối

chế độ

Khối điều
khiển trung
tõm

Khối
Hiển thị

Khối giải

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


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
thường. Các đèn hoạt động theo chế độ đã được định từ trước trong bộ
diều khiển.
Chế độ ban đêm( chế độ đèn vàng nhấp nháy- chế độ1): Các khối điều
khiển trung tâm, khối giải mã và đồng hồ bị ngắt bằng cách cắt nguồn. Chế độ
này dùng vào các thời điểm vắng vẻ, cụ thể là vào ban đêm. Lưu lượng xe tham
gia hoạt động giao thông nhỏ, nên việc sử dụng các đèn điều khiển là không cần

thiết. Hoạt động của các cột đèn ở chế độ này là đèn vàng nháy liên tục theo
xung đồng hồ. Các xe được đi liên tục không cần dừng lại.
3. Khối điều khiển trung tâm
Đối với hệ thống điều khiển đèn giao thông, khối điều khiển là khối quan
trọng nhất, nó là trung tâm nhận tín hiệu và phát các tín hiệu điều khiển đèn của
hệ thống. Hệ thông giao thông mà ta thiết kế có sử dụng bộ đồng hồ đếm
ngược, để khi hiển thị đèn đỏ thì đồng hồ đếm ngược từ 29 về 0, đèn xanh thì
đồng hồ đếm ngược từ 26 về 0, đèn vàng 3s. Ta thấy đồng hồ đếm ngược có
những giá trị ban đầu khác nhau ứng với mỗi tín hiệu hiển thị của đèn. Vì vậy,
khối vi điều khiển không những dùng để điều khiển các đèn mà còn dùng để
thiết lập giá trị ban đầu của bộ đông hồ đếm ngược.

5


Website: Email : Tel : 0918.775.368

Sơ đồ chân của AT89C52
Khối điều khiển trung tâm là bộ não của tồn bộ hệ thống điều khiển đèn
giao thơng. Cấu tạo của khối chỉ bao gồm một IC vi điều khiển AT89C51 như
hình bên. Xử lý bên trong thơng qua phần mềm lập trình sẵn đã được nạp trong
ROM của VĐK, đưa tín hiệu điều khiển các đèn đường P1, tín hiệu ra đồng hồ
là các chân P0,P2.Chân P3.0 nối với khối chế độ. Các port 0,1,2 ở đây đều được
dùng để xuất dữ liệu, port 3.0 dùng nhận tín hiệu được đưa vào từ khối chế độ. ,
chân 18,19 nối với bộ tạo dao động thạch anh 12MHz,
Vi điều khiển họ 80x51
Đây là họ vi xử lý loại one chip 8 bit thơng dụng, nó rất phù hợp cho
các ứng dụng trong đo lường và điều khiển mức độ vừa phải. Trong thiết
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ỉ hố 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
- Chân 29 là PSEN
- Chân 30 là ALE
- Chân 31 là EA để chọn chế độ làm việc với ROM ngoài hay ROM trong
- Nguồn cấp vào chân 20 và 40
 Cấu trúc bên trong của µ C 8051

8


Website: Email : Tel : 0918.775.368

Hình 3. Cấu trúc bên trong của µC 8051
 Tổ chức bộ nhớ trong µ C 8051
µC 8051 có hai khoảng địa chỉ độc lập cho bộ nhớ chương trình và bộ
nhớ số liệu. Sự độc lập của bộ nhớ chương trình và bộ nhớ số liệu cho phép bộ
nhớ dữ liệu được xử lý bởi địa chỉ 8 bit. Tuy nhiên địa chỉ 16 bit cũng có thể
được sử dụng thơng qua thanh ghi DPTR.
Bộ nhớ chương trình (ROM, EPROM ) là bộ nhớ chỉ có đọc. Bộ nhớ này
có thể lên tới 64Kbyte. Trong 8051 4Kbyte thấp nhất của bộ nhớ chương trình
là trên chíp. Bộ nhớ ngồi có thể đọc được nhờ tín hiệu chốt của chân PSEN.
Bộ nhớ số liệu độc lập với bộ nhớ chương trình. 128 Byte thấp nhất của
bộ nhớ dữ liệu ở trên chíp và nó có thể truy nhập đến 64Kbyte ngồi CPU sẽ
phát ra các tín hiệu RD và WR 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 ngồi). Khi
truy cập bộ nhớ ngồ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 ln 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 ngồi. Địa chỉ
của bộ nhớ ngồ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:

FFH

Phần
trên128
Phần dưới
128


80H
7FH
00H

FFH

Chỉ xử lý bởi
địa chỉ gián
tiếp
Xử lý bởi
địa chỉ trực
tiếp hoặc
gián tiếp

Xử lý bởi
địa chỉ trực
tiếp

80H

Thanh ghi chức
năng đặc biệt

Các bít trạng thái
và các bít điều
khiển cổng, các
thanh ghi thời
gian, thanh chứa
con trỏ ngăn xếp


Hình 4. Sơ đồ bộ nhớ dữ liệu trong
* Phần Lower 128 Bytes được chia thành 3 vùng:
+ Vùng 1: Địa chỉ từ 00H đến 1FH là phần thấp nhất được chia thành 4
khối của 8 thanh ghi. Các lệnh của chương trình sẽ gọi các thanh ghi này từ R0
đến R7. 2 bít trong thanh ghi trạng thái (RS0, RS1 ) sẽ lựa chọn 4 khối này.
10


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

- Chế độ địa chỉ trực tiếp: Chế độ địa chỉ trực tiếp sử dụng địa chỉ 8 bit.
Chỉ có RAM trong và các thanh ghi chức năng đặc biệt có thể sử dụng địa chỉ
trực tiếp.
- Chế độ địa chỉ gián tiếp: Trong chế độ địa chỉ gián tiếp các câu lệnh
thanh ghi nơi chứa địa chỉ của toán hạng. Cả RAM trong và RAM ngoài đều là
địa chỉ gián tiếp.
Thanh ghi địa chỉ đối với địa chỉ 8 bit có thể là R0 hoặc R1 của nhóm
thanh ghi được lựa chọn hoặc của con trỏ ngăn xếp. Thanh ghi địa chỉ 16 bits
dùng cho địa chỉ 16 bits chỉ có thể là thanh ghi con trỏ dữ liệu 16 bits, DPTR.

- Câu lệnh thanh ghi đặc biệt: Một vài câu lệnh luôn luôn hoạt động trên
thanh chứa (Acc), hoặc con trỏ dữ liệu (DPTR ). Vì vậy nó khơng cần byte địa
chỉ nào để chỏ tới nó. Bản thân mã lệnh của nó sẽ làm điều đó.
- Chế độ địa chỉ hằng số trực tiếp: Giá trị của hằng số theo mã lệnh trong
ơ nhớ chương trình.
- Chế độ địa chỉ chỉ số: Chỉ có bộ nhớ chương trình có thể được xử lý với
địa chỉ chỉ số và nó chỉ có thể được đọc. Chế độ này có xu hướng dùng để đọc
bảng trong bộ nhớ chương trình. Một thanh ghi cơ sở 16 bit (DPTR hoặc PC )
trỏ tới địa chỉ cơ sở của bảng và thanh chứa Acc được thiết lập với số lượng
danh mục của bảng. Địa chỉ của danh mục trong bộ nhớ chương trình hình
thành bởi thêm dữ liệu thanh chứa vào con trỏ cơ sở.
Một loại khác của chế độ địa chỉ chỉ số là sử dụng trong câu lệnh "Jump".
Địa chỉ đích được xác định bởi tổng của con trỏ cơ sở và dữ liệu thanh chứa.
 Cổng I/O song song
µC 8051 có 4 cổng vào ra song song P0. P1, P2 và P3. Trong hầu hết các
ứng dụng với bộ nhớ ngoài thì cổng P0 được sử dụng như là Bus dữ liệu và địa
chỉ phần thấp còn P2 tương ứng với byte cao của địa chỉ.
Tất cả các chân của P3 và 2 chân của P1 (P1.0, P1.1) là đa chức năng, các chức
năng của chúng được thể hiện ở bảng sau:
12


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

INT 0 (Ngắt ngoài)

P3.3

INT 1 (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
thanh ghi
13

C
T

trong


Website: Email : Tel : 0918.775.368


chức năng đặc biệt TMOD. Timer 0 và Timer 1 có chế độ hoạt động được lựa
chọn bởi cặp bit (M0, M1 ).
TCON:Thanh ghi điều khiển Timer/Counter. Địa chỉ hoá theo bit

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

- TF1: Cờ báo Timer 1 tràn.
- TR1: Bit điều khiển làm việc của Timer 1..
- TF0: Cờ báo Timer 0 tràn.
- TR0: Bit điều khiển làm việc của Timer 0.
- IE1: Cờ cho phép chân INT 1 có thể hoạt động.
- IT1: Bit điều khiển ngắt ở chân INT 1 .
- IE0: Cờ cho phép chân INT 0 có thể hoạt động.
- IT0: Bit điều khiển loại ngắt ở chân INT 0 .
Thanh ghi điều khiển chế độTimer/Counter:TMOD


GATE

C/

M1

M0

GATE

TIMER 1

C/

M1

M0

TIMER 1

- GATE: Khi TRx được thiết lập và GATE = 1, thì TIMER/COUNTERx
sẽ chỉ chạy trong khi chân INTx ở mức cao. Khi GATE = 0 thì
TIMER/COUNTERx sẽ chỉ chạy trong khi TRx = 1.
- C T : Bit lựa chọn Timer hoặc Counter.
- M1: Bit lựa chọn chế độ.
- M2: Bit lựa chọn chế độ.

14



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
bằng 1. Timer 0 thiết lập TL0 và TH0 như 2 bộ đếm độc lập.
 Giao diện cổng nối tiếp
Cổng nối tiếp hoạt động ở chế độ Full duplex, có nghĩa là nó có thể
truyền và nhận tại cùng một thời điểm. Thanh ghi truyền và nhận của cổng
thông tin nối tiếp, cả hai truy nhập tại thanh ghi chức năng đặc biệt SBUF. Khi
ta viết tới SBUF thì là thanh ghi truyền và khi đọc SBUF ta sẽ truy nhập tới
thanh ghi nhận độc lập. Cổng thông tin nối tiếp có thể hoạt động ở 4 chế độ:


15


Website: Email : Tel : 0918.775.368

- Mode 0: Số liệu nối tiếp vào và ra thông qua chân RXD, TXD. Truyền
và nhận 8 bit. 8 bit dữ liệu (đầu tiên là trọng số nhỏ nhất LSB ). Tốc độ truyền
cố định bằng 1/12 tần số máy phát.
- Mode 1: 10 bit được truyền thông qua chân TXD. Nhận thông qua chân
RXD: 1 bit Start (0 ), 8 bit dữ liệu (LSB ) đầu tiên), 1 bit Stop (1 ). Khi nhận
bit Stop sẽ được đặt vào RB8 trong thanh ghi SCON. Tốc độ truyền có thể thay
đổi.
- Mode 2: 11 bit được truyền thông qua chân chân TXD hoặc được nhận
thông qua chân RXD. 1 bit Start (0 ), 8 bit dữ liệu (bit đầu tiên là LSB ), 1 bit
dữ liệu thứ 9 có thể được đặt, 1 bit Stop (1 ). Khi phát bit thứ 9 sẽ được đặt tại
TB8 thanh SCON. Khi nhận bit thứ 9 sẽ được đặt vào RB8 trong thanh ghi
SCON. Tốc độ độ truyền có thể đặt bằng 1/32 hoặc bằng 1/64 tần số máy phát.
- Mode 3: 11 bit được truyền thông qua chân TXD hoặc nhận thông qua
RXD. 1 bit Start (0 ), 8 bit dữ liệu, bit dữ liệu thứ 9 có thể được đặt, 1 bit Stop
(1 ). Mode 3 tương tự Mode 2 nhưng tốc độ truyền có thể thay đổi.
Trong tất cả 4 Mode trên, chế độ truyền được khởi đầu bằng câu lệnh,
trong đó thanh ghi SBUF được sử dụng giống như thanh ghi đích, chế độ nhận
được khởi đầu trong Mode 0 bởi điều kiện RI = 0 và REN = 1. Nhận được khởi
đầu trong các chế độ khác bởi đặt bit Start nếu REN = 1.
SCON: Thanh ghi điều khiển cổng nối tiếp. Địa chỉ hoá theo bit.

SM0

SM1


SM2

REN

TB8

RB8

TI

RI

- 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

Fosc/12

0

1


1

8 bit UART

Thay đổi

1

0

2

9 bit UART

Fosc/64 hoặc Fosc/32

1

1

3

9 bit UART

Thay đổi

Thiết lập cổng nối tiếp:
MODE

SCON


0

10H

1

50H

2

90H

3

D0H

0

NA

Sự thay đổi của SM2

Môi trường xử lý đơn chức năng

Môi trường xử lý đa chức năng
17


Website: Email : Tel : 0918.775.368


1

70H

2

B0H

3

F0H

Phát tốc độ:
*. Cổng nối tiếp trong Mode 0:
Chế độ 0 có tốc độ cố định bằng 1/12 máy phát tần số. Trong chế độ này chỉ
cần định nghĩa thanh ghi SCON:
Baud rate =

Fosc
12

*. Cổng nối tiếp trong Mode 1:
Tốc độ trong chế độ này thay đổi. Nó được phát bởi Timer 1.
K * Fosc

Baud Rate = 32 *12 * (256 − TH 1)
- Nếu SMOD = 0 thì K = 1.
- Nếu SMOD = 1 thì K = 2.
Với

TH1 = 256 −

K * Fosc
384 * BaudRate

Chú ý: TH1 phải có giá trị nguyên.
*. 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*Fosc.
- SMOD = 0, Buad Rate = 1/64*Fosc.
Để 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


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.

INT 0

INT1

Hệ thống điều khiển ngắt

Ngắt ngồi INT 0 và INT 1
Có thể hoạt động theo mức hay theo sườn phụ thuộc vào bit IT0 và IT1
trong thanh ghi TCON.
Ngắt của bộ Timer 0 và Timer 1 được phát bởi TF0 và TF1, chúng được
thiết lập trong thanh ghi Timer/Counter (ngoại trừ Timer 0 trong chế độ 3 ). Khi
ngắt Timer hoạt động, thì cờ phát ra nó được xố bởi phần cứng ở trên chip khi
thứ tự phục vụ được trỏ tới.
Ngắt của cổng nối tiếp được tạo ra bởi phép lơgic OR giữa chân RI và TI.
Nó sẽ được xố bởi phần cứng khi thứ tự phục vụ được trỏ tới. Trong thực tế
thứ tự phục vụ sẽ không phải xác định đó là RI hoặc TI phát ra lệnh ngắt và bit
này sẽ phải xoá bằng phần mềm.

19


Website: Email : Tel : 0918.775.368

Trình tự thực hiện bất kỳ một lệnh ngắt nào cũng đều được thực hiện theo
3 bước sau:
- Thiết lập bit EA = 1 trong thanh ghi IE.
- Thiết lập bit tương ứng trong thanh ghi IE bằng 1.
- Bắt đầu thực hiện tại địa chỉ của vector tương ứng theo bảng sau:
Nguồn ngắt

Địa chỉ của vector ngắt

IE0

0003H


TF0

000BH

IE1

0013H

TF1

001BH

RI va TI

0023H

TF2 và EXF2

002BH

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 xố 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 INT 1 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 INT 0 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 INT 1 .
- PT0: Định nghĩa mức ưu tiên ngắt cho bộ Timer 1.
- PX0: Định nghĩa mức ưu tiên ngắt cho chân INT 0 .
Nếu có hai yêu cầu của hai mức ưu tiên khác nhau được nhận cùng một
thời điểm, thì u cầu nào có mức ưu tiên cao hơn sẽ được thực hiện. Nếu yêu
cầu có cùng mức ưu tiên thì nó sẽ được thực hiện theo trình tự sau:

Thứ tự

Nguồn

Mức ưu tiên

1.

IE0


Cao nhất

2.

TF0

3.

IE1

4.

TF1

21


Website: Email : Tel : 0918.775.368

5.

RI+TI

6.

TF2+EXF2

Thấp nhất


Trên đây là một số chức năng đặc biệt của vi xử lý họ 8051 cần
quan tâm và nắm được trong quá trình thiết kế.
Giới thiệu qua về AT89C52:
AT89c52 là một hệ vi tính 16 bit đơn chip CMOS co hiệu xuất cao cơng
xuất nguồn tiêu thụ thấp và có 4k bộ nhớ ROM flash xố được/ lập trình được.
Chip này được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ
tích hợp cao của Atmel. AT89c52 có các đặc trưng chuẩn sau: 8k flash, 256byte
RAM, 32 đường xuất nhập, 3 bộ định thời/ đếm 16 bit, một cấu trúcngắt 2 mức
ưu tiên và 5 nguyên nhân ngắt, 1 port nối tiếp song công, mạch dao động và
mạch tạo xung clock trên chip. Ngoài ra AT89c52 được thiết kế với logic tĩnh
cho hoạt động có tần số giảm xuống và hỗ trợ 2 chế độ tiết kiệm năng lượng
được lựa chọn bằng phần mềm. Chế độ nghỉ dừng CPU trong khi vẫn cho phép
RAM, các bộ định thời / đếm hoạt động, port nối tiếp và hệ thống ngắt tiếp tục
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 hố 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 ngồ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
Bảng chân lý của 7447:

24


Website: Email : Tel : 0918.775.368

5. Khối hiển thị
Đây là khối thể hiện kết quả của hệ thống điều khiển. Các chế độ của hệ
thống được hiển thị tại khối hiển thị.

Khối hiển thị gồm 2 phần:
- Đèn đường
- Đồng hồ
a. Đèn đường: Có 2 loại
- Đèn cho các phương tiện tham gia giao thông: Đỏ, Xanh, Vàng
- Đèn cho người đi bộ: Đỏ, Xanh
Các cột đèn hiển thị theo: Xanh  Vàng  Đỏ  Xanh ….
Đèn đỏ hiển thị trong 30 giây và đếm hiển thị từ 29  0.
Đèn xanh hiển thị trong 27 giây và đếm hiển thị từ 26  0.
Đèn vàng hiển thị trong 03 giây
Đèn cho người đi bộ: Hoạt động dựa trên hoạt động của các cột đèn. Chỉ có
hai trạng thái là Đỏ và Xanh, khi đường giao thông ở chế độ đỏ thì đèn cho
người đi bộ bật xanh, cịn khi đèn đường là xanh và vàng thì đèn cho người đi
bộ bật đỏ. Thời gian hiển thị đèn đỏ cho người đi bộ bằng thời gian hiển thị đèn
vàng và đèn xanh của các phương tiện giao thông.

b. Đồng hồ: Đồng hồ đếm theo đèn của các phương tiện giao thông. Với
đèn đỏ 30s (290), đèn xanh 27s (260), đèn vàng 3s
25


×