Tải bản đầy đủ (.docx) (69 trang)

Thiết kế hệ thống điều khiển đèn giao thông cho ngã tư đường nguyễn trãi lê lợi

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 (1.91 MB, 69 trang )

LỜI CẢM ƠN
Để hoàn thành đồ án tốt nghiệp này, lời đầu tiên em xin chân thành cảm
ơn các thầy giáo, cô giáo trong Khoa Công nghệ thông tin, Trường Đại học
Công nghệ thông tin và Truyền thông- Đại học Thái Nguyên, những người đã
tận tình giảng dạy, trang bị cho chúng em những vốn kiến thức và kinh nghiệm
quý báu, cung cấp cho chúng em những điều kiện và mơi trường học tập tốt nhất.
Em xin bày tỏ lịng biết ơn sâu sắc nhất tới cô giáo Lưu Thị Liễu, người
đã tận tình hướng dẫn, chỉ bảo em trong suốt thời gian thực hiện đồ án.
Nhân dịp này em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè,
những người thân đã cổ vũ, động viên tiếp thêm cho em nghị lực để em hoàn
thành đồ án tốt nghiệp.
Cuối cùng, em xin kính chúc các thầy, cơ và gia đình dồi dào sức khỏe và
thành cơng hơn nữa trong sự nghiệp của mình.
Thái Nguyên,tháng 6 năm 2012
Sinh viên thực hiện
Nguyễn Trung Kiên

1


LỜI CAM ĐOAN
Để hoàn thành đồ án tốt nghiệp đúng thời gian quy định và đáp ứng được
yêu cầu đề ra, bản thân em đã cố gắng nghiên cứu, học tập và tích lũy thêm kiến
thức. Em đã tham khảo một số tài liệu nêu trong phần “TÀI LIỆU THAM
KHẢO “ và không hề sao chép nội dung từ bất kì đồ án nào khác. Tồn bộ đồ án
là do bản thân em nghiên cứu xây dựng nên.
Em xin cam đoan những lời trên là đúng, mọi thông tin sai lệch em xin
hoàn toàn chịu trách nhiệm trước Hội đồng.
Thái Nguyên, tháng 6 năm 2012
Sinh viên
Nguyễn Trung Kiên



2


MỤC LỤC

DANH MỤC HÌNH VẼ
STT
Hình 1.1
Hình 1.2
Hình 2.1
Hình 2.2
Hình 2.3
Hình 2.4
Hình 2.5
Hình 2.6
Hình 2.7
Hình 2.8
Hình 2.9
Hình 2.10
Hình 2.11
Hình 2.12

MƠ TẢ
Sơ đồ khối của họ vi điều khiển 8051
Sơ đồ chân
Hình ảnh thực tế của AT89C51
Dạng của Led 7 thanh
Thạch anh
Transistor

Led đơn
Điện trở
Ảnh A103J
Tụ điện
IC 7805
Jack cắm
ULN2803
PL2303

3

TRANG
13
15
30
30
33
34
35
35
36
36
37
38
38
39


Hình 2.13
Hình 2.14

Hình 3.1
Hình 3.2
Hình 3.3
Hình 3.4
Hình 3.5
Hình 3.6
Hình 3.7
Hình 3.8
Hình 3.9
Hình 3.10
Hình 3.11
Hình 3.12
Hình 3.13
Hình 3.14
Hình 3.15
Hình 3.16
Hình 3.17
Hình 3.18
Hình 3.19
Hình 3.20
Hình 3.21
Hình 3.22

Sơ đồ chân của PL 2303
Sơ đồ khối của PL 2303
Sơ đồ khối
Giản đồ thời gian của các đèn
Sơ đồ nguyên lý mạch
Sơ đồ nguyên lý khối reset
Sơ đồ nguyên lý khối tạo xung dao động

Sơ đồ nguyên lý khối vi điều khiển
Sơ đồ mạch đệm tín hiệu điều khiển các led 7 thanh
và led đơn trên cột đèn
Hình dạng ngồi và cấu tạo trong của ULN 2803
Các Transistor phối hợp với ULN 2803 để điều
khiển led 7 thanh và các led đơn
Sơ đồ nguyên lý khối hiển thị
Sơ đồ nguyên lý khối nguồn
Giao diện giao tiếp với máy tính
Sơ đồ nguyên lý PL2303
Lưu đồ thuật tốn chương trình chính
Lưu đồ chương trình Xử lý truyền thơng
Chương trình Xử lý dữ liệu, điều khiển led giao
thơng và led 7 đoạn
Mạch thiết kế trên proteus
Chạy thử mạch mô phỏng
Sơ đồ mạch in khối điều khiển trung tâm
Sơ đồ mạch in mạch sa bàn
Mạch hoàn thành (a)
Mạch hoàn thành (b)

4

39
40
41
41
42
43
43

44
45
46
47
47
48
48
49
50
51
52
59
60
61
61
62
63


DANH MỤC TỪ VIẾT TẮT

-

ROM: Read Only Memory

-

RAM: Random Access Memory

-


CPU: Central Processing Unit

-

SRAM: Static Random Access Memory

-

PLC :Programable logic controller

-

EEPROM: Electrically Erasable Programmable Read Only Memory

-

EPROM: Erasable Programmable Read Only Memory

-

CMOS: Complementary Metal Oxide Semiconductor

-

CISC: Complex Instruction Set Computer

-

PSEN: Program Store Enable


-

ALE: Address Latch Enable

-

RST: Reset

-

SFR: Special Function Register

-

MSB: Most Significant Bit

-

LSB: Least Significant Bit

-

PEROM: Flash Programmable And Erasable Read Only Memory

-

PCON: Power Control Register

-


LED: Light Emitting Diode

-

IC: Integrated Circuit

-

TTL: Transistor-Transistor Logic

-

DC: Direct Current

-

PSEN: Program store enable

-

OE: Output Enable

5


-

IP: Interrupt Priority


-

OSC: Oscillator

-

IE: Interrupt Enable

LỜI NÓI ĐẦU
Ngày nay cùng với sự phát triển đi lên của xã hội, các phương tiện tham
gia giao thông cũng gia tăng không ngừng và hệ thống giao thơng ngày càng
phức tạp . Vì vậy để đảm bảo giao thơng được an tồn và thơng suốt thì việc sử
dụng các hệ thống tín hiệu để điều khiển và phân luồng tại các nút giao thông là
rất cần thiết.
Nhận thấy đây là vấn đề rất sát thực, với những kiến thức đã được trang
bị trong quá trình học tập và nghiên cứu tại trường Đại học Công nghệ thông tin
và Truyền thông, em đã lựa chọn đề tài:”Thiết kế hệ thống điều khiển đèn giao
thông cho ngã tư đường Nguyễn Trãi-Lê Lợi”.
Trong quá trình thực hiện đồ án em đã nhận được sự chỉ bảo, hướng dẫn
tận tình của các thầy cơ trong khoa, đặc biệt đó là sự chỉ bảo của cơ Lưu Thị
Liễu. Em xin trân thành cảm ơn sự chỉ bảo của các thầy cô!
Trong khi thực hiện đồ án do kiến thức cịn hạn chế, và khơng có nhiều
thời gian thực hiện,vậy nên đồ án của em cịn nhiều thiếu xót mong các thầy cơ
đóng góp và bổ xung ý kiến để đồ án của em đươc hoàn thiện hơn!
Em xin chân thành cảm ơn!
Sinh viên thưc hiện
Nguyễn Trung Kiên

6



CHƯƠNG 1
VI ĐIỀU KHIỂN AT89C51
1.1 Tóm tắt về lịch sử của 8051
Chúng ta đã biết Intel sản xuất các trung tâm vi xử lí họ x86.Tuy nhiên
ngồi các trung tâm vi xử lý đó, Intel cịn thiết kế và sản xuất các trung tâm Vi
xử lý chuyên dụng phục vụ các mục đích đo lường và điều khiển tự động, phục
vụ các ứng dụng đơn giản nhưng rất phổ biến khác, đặc biệt là trong các Hệ
thống nhúng (Embedded Systems). Các chip Vi xử lý loại này đã vượt ra ngồi
khn khổ của một trung tâm Vi xử lý đơn thuần, trở thành một máy vi tính
(MicroComputer). Cũng có thể nhìn nhận rằng, các trung tâm Vi xử lý họ này là
một máy vi tính thực thụ, nếu nhìn nhận chip này theo quan điểm kiến trúc máy
tính của Von Neumann: Chip được trang bị thêm bộ nhớ chương trình (ROM
hoặc EPROM) và bộ nhớ dữ liệu, cũng như các cổng vào/ra nối tiếp, vào/ra song
song, v.v…
Vào năm 1980 Intel cơng bố chíp 8051(80C51), bộ vi điều khiển đầu tiên
của họ: vi điều khiển họ MCS-51. Nó bao gồm 4KB ROM, 128 byte RAM, 32
đường xuất nhập, 1 port nối tiếp và 2 bộ định thời 16 bit. Tiếp theo sau đó là sự
ra đời của chip 8052,8053,8055 với nhiều tính năng được cải tiến.
Hiện nay Intel khơng cịn cung cấp các loại Vi điều khiển họ MCS-51
nữa, thay vào đó các nhà sản xuất khác như Atmel, Philips/signetics, AMD,
Siemens, Matra&Dallas, Semiconductors được cấp phép làm nhà cung cấp thứ
hai cho các chip của họ MCS-51. Chip Vi điều khiển được sử dụng rộng rãi trên
thế giới cũng như ở Việt Nam hiện nay là Vi điều khiển của hãng Atmel với
nhiều chủng loại vi điều khiển khác nhau.

7


Hãng Atmel có các chip Vi điều khiển có tính năng tương tự như chip Vi

điều khiển MCS-51 của Intel, các mã số chip được thay đổi chút ít khi được
Atmel sản xuất. Mã số 80 chuyển thành 89, chẳng hạn 80C52 của Intel khi sản
xuất ở Atmel mã số thành 89C52 (Mã số đầy đủ: AT89C52) với tính năng
chương trình tương tự như nhau. Tương tự 8051,8053,8055 có mã số tương
đương ở Atmel là 89C51, 89C53, 89C55. Vi điều khiển Atmel sau này ngày càng
được cải tiến và được bổ sung thêm nhiều chức năng tiện lợi hơn cho người
dùng.
Bảng 1
89C51
89C52

Dung lượng RAM
128 byte
128 byte

Dung lượng ROM
4 Kbyte
8 Kbyte

Chế độ nạp
song song
song song

89C53
89C55

128 byte
128 byte

12 Kbyte

20 Kbyte

song song
song song

Sau khoảng thời gian cải tiến và phát triển, hãng Atmel tung ra thị trường
dòng Vi điều khiển mang số hiệu 89Sxx với nhiều cải tiến và đặc biệt là có thêm
khả năng nạp chương trình theo chế độ nối tiếp rất đơn giản và tiện lợi cho người
sử dụng.
Bảng 2
89S51
89S52
89S53
89S55

Dung lượng RAM
128 byte
128 byte
128 byte
128 byte

Dung lượng ROM
4 Kbyte
8 Kbyte
12 Kbyte
20 Kbyte

Chế độ nạp
nối tiếp
nối tiếp

nối tiếp
nối tiếp

1.2 Giới thiệu về vi điều khiển AT89C51
Đặc điểm và chức năng hoạt động của các IC họ MCS-51 hoàn toàn tương
tự như nhau. Ở đây giới thiệu IC 89C51 là một họ IC vi điều khiển do hãng Intel
của Mỹ sản xuất.

8


1.2.1 Các đặc điểm của vi điều khiển AT895C1 được tóm tắt như sau

• AT89C51 có những đặc điểm chung của họ vi điều khiển 8051
-

4 KB PEROM (Flash Programmable and Erasable Read Only

Memory), có khả năng tới 1000 chu kỳ ghi xoá
- Tần số hoạt động từ: 0Hz đến 24 MHz.
- 128 Byte RAM nội.
- 4 Port xuất /nhập 8 bit.
- 2 bộ Timer/counter 16 Bit.
- Giao tiếp nối tiếp điều khiển bằng phần cứng.
- 64 KB vùng nhớ mã ngoài
- 64 KB vùng nhớ dữ liệu ngoài.
- Cho phép xử lý bit.
- 210 vị trí nhớ có thể định vị bit.
- 4 chu kỳ máy (4 µs đối với thạch anh 12MHz) cho hoạt động nhân
hoặc chia.

- Có các chế độ nghỉ (Low-power Idle) và chế độ nguồn giảm (Powerdown).

• AT89C51 là một vi điều khiển 8 Bit, chế tạo theo công nghệ CMOS
chất lượng cao. Thiết bị này được chế tạo bằng cách sử dụng bộ nhớ
không bốc hơi mật độ cao của ATMEL và tương thích với chuẩn công
nghiệp MCS – 51 về tập lệnh và các chân ra.
• AT89C51 có các đặc trưng cơ bản như sau: 4 K byte Flash, 128 byte
RAM, 32 đường xuất nhập, hai bộ định thời/đếm 16-bit, một cấu trúc ngắt
hai mức ưu tiên và 5 nguyên nhân ngắt, một port nối tiếp song công, mạch
dao động và tạo xung clock trên chip.
• AT89C51 được thiết kế với logic tĩnh cho hoạt động có tần số giảm xuống
0 và hỗ trợ hai 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, 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

9


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.
1.2.2 Sơ đồ khối và sơ đồ chân
Các thành viên khác của họ MCS-51 có các tổ hợp ROM (EPROM), RAM
trên chip với dung lượng khác nhau, bộ biến đổi tín hiệu tương tự-số và số-tương
tự, và có thể có thêm bộ định thời thứ ba. Mỗi một chíp của họ MCS-51 đều có
phiên bản CMOS tiêu thụ cơng suất thấp.

 Sơ đồ khối

10



Hình 1.1 Sơ đồ khối của họ vi điều khiển 8051

• CPU(Central Processing Unit):
Đơn vị xử lý trung tâm tính tốn và điều khiển q trình hoạt động của hệ
thống.

• OSC(Oscillator):
Mạch dao động tạo tín hiệu xung clock cung cấp cho các khối trong chip
hoạt động.

11


• Interrupt control:
Điều khiển ngắt, nhận tín hiệu ngắt từ bên ngoài, từ bộ định thời, và từ
cổng nối tiếp, lần lượt đưa các ngắt này đến CPU để xử lý.

• Other register:
Các thanh ghi khác, lưu trữ dữ liệu của các port xuất/nhập, trạng thái làm
việc của các khối bên trong chip trong suốt q trình hoạt động.

• RAM (Random access Memory):
Bộ nhớ dữ liệu trong chip, lưu các dữ liệu.

• ROM(Read only Memory):
Bộ nhớ chương trình trong chip, lưu chương chình hoạt động của chip.

• I/O ports (In/Out ports):

Các port xuất/nhập, điều khiển việc xuất nhập dữ liệu dưới dạng song
song giữa trong và ngồi chip thơng qua các port P0, P1, P2, P3.

• Serial port:
Port nối tiếp, điều khiển việc xuất nhập dữ liệu dưới dạng nối tiếp giữa
trong và ngồi chip thơng qua các chân TxD, RxD.

• Timer 0, Timer 1:
Bộ định thời 0,1; dùng để định thời gian hoặc đếm sự kiện thông qua các
chân T0,T1.

• Bus control:
Điều khiển bus, điều khiển hoạt động của hệ thống bus và việc di chuyển
thông tin trên hệ thống bus.

• Bus system:
Hệ thống bus, liên kết các khối trong chip lại với nhau.

 Sơ đồ chân

12


Hình 1.2 Sơ đồ chân



-

Chân VCC

Chân số 40 là VCC cấp điện áp nguồn cho vi điều khiển .
Nguồn điện cấp là +5V±0.5.
Chân GND
Chân số 20 nối GND (hay nối Mass).
Khi thiết kế cần sử dụng một mạch ổn áp để bảo vệ cho Vi điều khiển,
cách đơn giản là sử dụng IC ổn áp 7805.

13


• Port 0 (P0)
Port 0 gồm 8 chân (từ chân 32 đến 39) có hai chức năng:

- Chức năng xuất/nhập: Các chân này được dùng để nhận tín hiệu từ bên
ngồi vào để xử lí, hoặc dùng để xuất tín hiệu ra bên ngồi, chẳng hạn

-

xuất tín hiệu để điều khiển led đơn sáng tắt.
Chức năng là bus dữ liệu và bus địa chỉ (AD7-AD0) : 8 chân này (hoặc
Port 0) còn làm nhiệm vụ lấy dữ liệu từ ROM hoặc RAM ngoại (nếu có
kết nối với bộ nhớ ngồi), đồng thời Port 0 còn được dùng để định địa chỉ

của bộ nhớ ngồi.
• Port 1 (P1)
- Port 1 gồm 8 chân (từ chân 1 đến chân 8), chỉ có chức năng làm các
đường xuất/nhập, khơng có chức năng khác.
• Port 2 (P2)
Port 2 gồm 8 chân (từ chân 21 đến chân 28) có hai chức năng:


- Chức năng xuất/nhập .
- Chức năng là bus địa chỉ cao (A8-A15): Khi kết nối với bộ nhớ ngồi có
dung lượng lớn, cần 2 byte để định địa chỉ của bộ nhớ, byte thấp do P0
đảm nhận, byte cao do P2 này đảm nhận.
• Port 3 (P3)
Port 3 gồm 8 chân (từ chân 10 đến 17):
- Chức năng xuất /nhập.
- Với mỗi chân có một chức năng riêng thứ hai .
Bảng dưới đây cho ta chức năng các chân của Port 3 và 2 chân P1.0, P1.1
của Port 1:
Bit
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5

Tên
RxD
TxD
INT0
INT1
T0
T1

P3.6

WR


P3.7

RD

Chức năng
Ngõ vào nhận 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 của Timer/Counter thứ 0
Ngõ vào của Timer/Counter thứ 1
Ngõ điều khiển ghi dữ liệu lên bộ
nhớ ngoài
Ngõ điều khiển đọc dữ liệu từ bộ nhớ

14


P1.0

T2

P1.1

T2X

bên ngoài
Ngõ vào của Timer/Counter thứ 2
Ngõ Nạp lại/thu nhận của
Timer/Counter thứ 2


• Chân RESET (RST)
Ngõ vào RST ở chân 9 là ngõ vào Reset dùng để thiết lập trạng thái ban
đầu cho vi điều khiển. Hệ thống sẽ được thiết lập lại các giá trị ban đầu nếu
ngõ này ở mức 1 tối thiểu 2 chu kì máy.

• Chân XTAL1 và XTAL2
Hai chân này có vị trí chân là 18 và 19 được sử dụng để nhận nguồn xung
clock từ bên ngoài để hoạt động, thường được ghép nối với thạch anh và các
tụ để tạo nguồn xung clock ổn định.

• Chân cho phép bộ nhớ chương trình PSEN
- PSEN ( program store enable) tín hiệu được xuất ra ở chân 29 dùng để
truy xuất bộ nhớ chương trình ngoài. Chân này thường được nối với chân

-

OE (output enable) của ROM ngồi.
Khi thực thi một chương trình ở ROM nội, chân này được duy trì ở mức

-

logic khơng tích cực (logic 1) .
Khi vi điều khiển làm việc với bộ nhớ chương trình ngồi, chân này phát
ra tín hiệu kích hoạt ở mức thấp và được kích hoạt 2 lần trong một chu kì

máy.
• Chân ALE (chân cho phép chốt địa chỉ-chân 30)
- Khi Vi điều khiển truy xuất bộ nhớ từ bên ngồi, port 0 vừa có chức năng
là bus địa chỉ, vừa có chức năng là bus dữ liệu do đó phải tách các đường

dữ liệu và địa chỉ. Tín hiệu ở chân ALE dùng làm tín hiệu điều khiển để
giải đa hợp các đường địa chỉ và các đường dữ liệu khi kết nối chúng với

-

IC chốt.
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động đưa vào Vi
điều khiển, như vậy có thể dùng tín hiệu ở ngõ ra ALE làm xung clock

-

cung cấp cho các phần khác của hệ thống.
Khi khơng sử dụng có thể bỏ trống chân này.

15


• Chân EA
- Chân EA dùng để xác định chương trình thực hiện được lấy từ ROM nội
-

hay ROM ngoại.
Khi EA nối với logic 1(+5V) thì Vi điều khiển thực hiện chương trình lấy

-

từ bộ nhớ nội.
Khi EA nối với logic 0(0V) thì Vi điều khiển thực hiện chương trình lấy
từ bộ nhớ ngoại .


1.3 Bộ nhớ chương trình- Bộ nhớ ROM
Bộ nhớ ROM dùng để lưu chương trình do người viết chương trình viết ra.
Chương trình là tập hợp các câu lệnh thể hiện các thuật toán để giải quyết các
cơng việc cụ thể, chương trình do người thiết kế viết trên máy vi tính, sau đó
được đưa vào lưu trong ROM của vi điều khiển, khi hoạt động, vi điều khiển truy
xuất từng câu lệnh trong ROM để thực hiện chương trình. ROM cịn dùng để
chứa số liệu các bảng, các tham số hệ thống, các số liệu cố định của hệ thống.
Trong quá trình hoạt động nội dung ROM là cố định, không thể thay đổi, nội
dung ROM chỉ thay đổi khi ROM ở chế độ xóa hoặc nạp chương trình (do các
mạch điện riêng biệt thực hiện).
Bộ nhớ ROM được tích hợp trong chip Vi điều khiển với dung lượng tùy
vào chủng loại cần dùng.
Bộ nhớ ROM được định địa chỉ theo từng Byte, các byte được đánh địa
chỉ theo số hex-số thập lục phân, bắt đầu từ địa chỉ 0000H, khi viết chương trình
cần chú ý đến địa chỉ lớn nhất trên ROM, chương trình được lưu sẽ bị mất khi địa
chỉ lưu vượt qua vùng này.
Ngồi ra Vi điều khiển cịn có khả năng mở rộng bộ nhớ ROM với việc
giao tiếp với bộ nhớ ROM bên ngoài lên đến 64Kbyte (địa chỉ từ 0000H đến
FFFFH).
1.4 Bộ nhớ dữ liệu-Bộ nhớ RAM
Bộ nhớ RAM dùng làm môi trường xử lý thông tin, lưu trữ các kết quả
trung gian và kết quả cuối cùng của các phép tốn, xử lí thơng tin. Nó cũng dùng
để tổ chức các vùng đệm dữ liệu, trong các thao tác thu phát, chuyển đổi dữ liệu.

16


RAM nội trong vi điều khiển được tổ chức như sau:

- Các vị trí trên RAM được định địa chỉ theo từng Byte bằng các số thập

-

lục phân (số Hex).
Các bank thanh ghi có địa chỉ 00H đến 1FH .
210 vị trí được định địa chỉ bit .
Các vị trí RAM bình thường .
Các thanh ghi có chức năng đặc biệt có địa chỉ từ 80H đến FFH.

Các byte RAM 8 bit của vi điều khiển được gọi là "ô nhớ", nếu các ơ nhớ
có chức năng đặc biệt thường được gọi là "thanh ghi", nếu là bit thì được gọi là
"bit nhớ".
1.4.1 Các bank thanh ghi
Các bank thanh ghi có địa chỉ byte từ 00H đến 1FH, có 8 thanh ghi trong
mỗi bank, các thanh ghi được đặt tên từ R0-R7, các thanh ghi này được đặt mặc
định trong bank 1. Có 4 bank thanh ghi và tại mỗi thời điểm chỉ có một bank
thanh ghi được truy xuất với các thanh ghi từ R0 đến R7, để thay đổi việc truy
xuất các thanh ghi trên các bank thanh ghi, người dùng phải thay đổi giá trị các
bit chọn bank trong thanh ghi trạng thái PSW bằng các câu lệnh trong chương
trình.
Các lệnh dùng các thanh ghi từ R0 đến R7 mất khoảng khơng gian lưu trữ
ít hơn và thời gian thực hiện nhanh hơn so với các lệnh dùng các ơ nhớ RAM
khác, ngồi ra các thanh ghi này cịn có thêm một số chức năng đặc biệt khác, vì
lí do này các dữ liệu sử dụng thường được người viết chương trình đưa vào lưu
trong các thanh ghi này. Ngồi ra, có thể truy xuất thanh ghi trên các bank thanh
ghi như với các ơ nhớ bình thường khác. Ví dụ: nguời dùng có thể truy xuất đến
thanh ghi R7 bằng ô nhớ 07H.
1.4.2 Vùng RAM truy xuất từng bit
Trên RAM nội có 210 ơ nhớ bit được định địa chỉ và có thể truy xuất đến
từng bit, các bit nhớ này cũng được định địa chỉ bằng các số thập lục phân- số
Hex. Trong đó có 128 bit nằm trong các ơ nhớ có địa chỉ byte từ 20H đến 2FH,

các bit nhớ còn lại chứa trong nhóm thanh ghi có chức năng đặc biệt.

17


Mặc dù các bit nhớ và ô nhớ (byte) cùng được định bằng số Hex, tuy
nhiên chúng sẽ được nhận dạng là địa chỉ bit hay địa chỉ byte thông qua các câu
lệnh tương ứng dành cho các bit nhớ hoặc các ơ nhớ này :
Ví dụ :
mov

05H,#10111111B

;>>> lệnh này thiết lập giá trị cho ơ

nhớ có địa chỉ là 05H.
1.4.3 Vùng RAM bình thường
Vùng RAM này có địa chỉ byte từ 30H đến 7FH, dùng để lưu trữ dữ liệu,
được truy xuất theo từng byte.
1.4.4 Các thanh ghi có chức năng đặc biệt
Các thanh ghi này được định địa chỉ byte, một số được định thêm địa chỉ
bit, có địa chỉ của các thanh ghi này nằm trong khoảng 80H đến FFH. Các thanh
ghi đặc biệt này được dùng để xác lập trạng thái hoạt động cần thiết cho Vi điều
khiển.
1.4.5 Tìm hiểu một số ơ nhớ có chức năng đặc biệt

• Các thanh ghi có địa chỉ 80H, 90H, A0H, B0H:
Đây là các thanh ghi kiểm tra và điều khiển mức logic của các Port, có thể
truy xuất và xác lập các thanh ghi này với địa chỉ byte hoặc tên riêng lần lượt là
P0, P1, P2, P3 tương ứng với các Port xuất. Chẳng hạn để tất cả các chân của

Port 0 lên mức logic 1, cần làm cho các bit của thanh ghi có địa chỉ 80H lên mức
1.

• Thanh ghi A
Thanh ghi A là thanh ghi quan trọng, dùng để lưu trữ các toán hạng và kết
quả của phép tính.
Thanh ghi A có độ dài 8 bits, có địa chỉ là E0H.

• Thanh ghi B
Thanh ghi B ở địa chỉ F0H, được dùng với thanh ghi A để thực hiện các phép
toán số học. Khi thực hiện lệnh chia với thanh ghi A, số dư được lưu trữ ở thanh

18


ghi B. Ngồi ra thanh ghi B cịn được dùng như một thanh ghi đệm có nhiều
chức năng.

• Con trỏ ngăn xếp SP: địa chỉ 81H
Con trỏ ngăn xếp SP là một thanh ghi có địa chỉ 81H, giá trị của nó được
tăng, giảm tự động khi thực hiện các lệnh PUSH, CALL, POP con trỏ SP dùng
quản lí và xử lí các nhóm dữ liệu liên tục. Giá trị mặc định của SP là 07H.

• Con trỏ dữ liệu DPTR
Con trỏ dữ liệu DPTR là thanh ghi 16 bit duy nhất của Vi điều khiển được tạo
thành từ hai thanh ghi DPL (byte thấp-địa chỉ byte 82H) và DPH (byte cao-địa
chỉ byte 83H). Hai thanh ghi DPL và DPT có thể truy xuất độc lập bởi người sử
dụng. Con trỏ dữ liệu DPTR thường được sử dụng khi truy xuất dữ liệu từ bộ nhớ
ROM hoặc bộ nhớ từ bên ngồi.


• Thanh ghi trạng thái chương trình PSW (địa chỉ byte D0H)
ĐỊA
BIT

CHỈ
BIT


HIỆU
C hoặc

CHỨC NĂNG

PSW.7

D7H

PSW.6

D6H AC

Cờ nhớ phụ

PSW.5

D5H F0

Cờ 0 hay cờ Zero

PSW.4


D4H RS1

Bit lựa chọn dãy thanh ghi

PSW.3

D3H RS0

Bit lựa chọn dãy thanh ghi

PSW.2

D2H 0V

PSW.1

D1H -

Chưa được thiết kế để sử dụng

PSW.0

D0H P

Cờ chẵn lẻ

Cy

Cờ nhớ


Cờ tràn với phép tính liên quan đến số nhị phân có
dấu

Chức năng từng bit trong thanh trạng thái PSW:

- Cờ nhớ C
Cờ được sử dụng trong các lệnh toán học:

19


C=1 nếu phép toán cộng xảy ra tràn hoặc phép trừ có mượn
C=0 nếu phép tốn cộng khơng tràn hoặc phép trừ khơng có mượn.

- Cờ nhớ phụ AC:
Cờ AC được dùng trong các phép toán cộng hai số BCD.
Khi cộng số BCD:
Nếu kết quả 4 bit lớn hơn 09H thì AC=1
Nếu kết quả 4 bit dưới 09H thì AC=0.

- Cờ 0 hay cờ nhớ Z:
Cờ Z = 0 khi thanh ghi A có giá trị khác 0
Cờ Z =1 khi thanh ghi A có giá trị là 0

- Các bit chọn bank thanh ghi:
Hai bit RS1 và RS2 dùng để xác lập bank thanh ghi được sử dụng, mặc
định RS1=0 và RS2=0
RS1


RS2

0
0
1
1

0
1
0
1

Bank

thank

ghi

được sử dụng
Bank 0
Bank 1
Bank 2
Bank 3

- Cờ tràn OV
Được sử dụng trong các phép tốn cộng có dấu, với các phép tốn cộng
khơng dấu cờ tràn OV được bỏ qua, không cần quan tâm đến OV. Nếu:
Phép cộng hai số có dấu lớn hơn +127 thì OV=1 .
Hoặc phép trừ hai số có dấu nhỏ hơn -127 thì OV=1 .
Các trường hợp cịn lại OV=0 .


- Cờ chẵn lẻ
Cờ chẵn lẻ P tự động được đặt bằng 1 hoặc 0 sao cho tổng số bit mang giá
trị 1 trên thanh ghi A với cờ P luôn là một số chẵn. Cờ chẵn lẻ được dùng để xử lí
dữ liệu trước khi truyền đi theo kiểu nối tiếp hoặc xử lí dữ liệu trước khi nhận
vào theo kiểu nối tiếp (hạn chế lỗi phát sinh trong quá trình truyền).

20


1.5 Các Bộ định thời của 89C51
Vi điều khiển họ 8051 có 2 bộ định thời là bộ định thời 0 và bộ định thời 1.
Chúng có thể hoạt động như là bộ định thời hoặc bộ đếm. Chế độ hoạt động của
các Bộ định thời được cất trong thanh ghi TMOD:
GATE0
+ Nếu bit GATE xóa, các Bộ định thời được phép hoạt động khi bit TR# tương
ứng trong thanh ghi TCON thiết lập. Ngược lại, nếu GATE thiết lập thì các bộ
định thời chỉ hoạt động khi các chân INT# tương ứng tích cực (mức thấp).
+ Bit C/T# dùng để lựa chọn chế độ hoạt động bộ đếm hay bộ định thời. Nếu
được thiết lập thì nó hoạt động theo chế độ đếm sự kiện, lúc này nguồn xung cho
bộ đếm là xung ngoài đưa vào từ chân T# tương ứng (chân 14, 15). Nếu bị xóa,
thì nó hoạt động theo chế độ định thời với nguồn xung là xung tạo ra từ bộ tạo
dao động trên chip sau khi chia 12.
+ Các bit M0, M1 dùng để xác dịnh chế độ đếm cho các bộ đếm:

Các chế độ hoạt động của các bộ đếm
Sự hoạt động của các Bộ định thời được điều khiển bởi thanh ghi TCON:
IE1
+ Các bit TR# cho phép Bộ định thời hoạt động (nếu được thiết lập) hoặc không
cho phép chúng hoạt động (nếu bị xóa).

+ Các bit TF# là các cờ tràn tương ứng với các Bộ định thời. Chúng được thiết
lập khi xảy ra tràn và được xóa bằng phần cứng nếu khi đó bộ xử lý rẽ nhánh đến
chương trình phục vụ ngắt tương ứng.
+ Các bit IT# là các bit ngắt. Thiết lập IT# tạo ra chế độ ngắt cạnh, chân INT#
nhận ra một ngắt khi nhận ra có một sườn âm (↓) của tín hiệu vào. Xóa IT# tạo ra
chế độ ngắt mức, tức là ngắt được tạo ra khi tín hiệu vào ở mức thấp (0). Ở chế

21


độ ngắt mức, khi tín hiệu vào cịn ở mức thấp thì ngắt được tạo ra liên tục cho
đến khi tín hiệu vào chuyển lên mức cao hoặc thiết lập IT#.
+ Các bit IE# là các cờ ngắt cạnh, được thiết lập khi dò thấy ngắt cạnh.
1.6 Điều khiển ngắt
Bộ vi điều khiển 89C51 có 5 nguồn ngắt: TF0, TF1, INT0, INT1 và ngắt
do cổng nối tiếp. Sự điều khiển hoạt động ngắt được cất trong 2 thanh ghi là
thanh ghi cho phép ngắt IE (Interrupt Enable) và thanh ghi xác định thứ tự ưu
tiên ngắt IP (Interrupt Priority).
Các bit và chức năng của chúng trong thanh ghi IE như sau (thiết lập là
cho phép, xóa là cấm):
MC
h

c
n
ă
n
g
EC
h

o
n
g

t
t
o
à
n
c

22



c
-K
h
ô
n
g
d
ù
n
g
EC
h
o
p
h

é
p
n
g

t
d
o
b

đ

n
h
t

23


h

i
2
EC
h
o
p
h
é
p

n
g

t
d
o
c

n
g
n

i
t
i
ế
p
EC
h
o

24


p
h
é
p
n
g


t
d
o
b

đ
ế
m
1
EC
h
o
p
h
é
p
n
g

t
t

b

25


×