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

ĐỒ ÁN VI XỬ LY THIẾT KẾ MẠCH LED CUBE 5X5X5 DÙNG VI ĐIỀU KHIỂN AT89C51

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 (880.72 KB, 23 trang )

Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

BỘ THÔNG TIN VÀ TRUYỀN THÔNG
TRƯỜNG CAO ĐẲNG CNTT HỮU NGHỊ VIỆT - HÀN
KHOA CÔNG NGHỆ THÔNG TIN ỨNG DỤNG

ĐỒ ÁN VI XỬ LY
THIẾT KẾ MẠCH LED CUBE 5X5X5
DÙNG VI ĐIỀU KHIỂN AT89C51

GVHD

: Nguyễn Vũ Anh Quang

Nhóm SVTH

: Nguyễn Văn Thanh Hải
Nguyễn Ngô Hữu Việt

Page 1


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

Đà Nẵng , tháng 12 năm 2011



LỜI NÓI ĐẦU
Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới của chúng ta
đã và đang ngày một thay đổi, văn minh và hiện đại hơn. Sự phát triển của kỹ thuật điện tử
đã tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật như sự chính xác cao, tốc độ
nhanh, gọn nhẹ là những yếu tố rất cần thiết góp phần cho hoạt động của con người đạt hiệu
quả cao.
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử dụng
được lại là một điều rất phức tạp. Các bộ vi điều khiển theo thời gian cùng với sự phát triển
của công nghệ bán dẫn đã tiến triển rất nhanh, từ các bộ vi điều khiển 4 bit đơn giản đến các
bộ vi điều khiển 32 bit, rồi sau này là 64 bit. Điện tử đang trở thành một ngành khoa học đa
nhiệm vụ. Điện tử đã đáp ứng được những đòi hỏi không ngừng từ các lĩnh vực công – nông
– lâm – ngư nghiệp cho đến các nhu cầu cần thiết trong hoạt động đời sống hằng ngày.
Nền công nghệ ứng dụng vi xử ly vào đời sống ngày càng khá phổ biến và không
ngừng được phát triển. Trong đời sống nó được ứng dụng khá rộng rãi trong nhiều lĩnh vực
như điều khiển tự động, trang trí quảng cáo, các đèn giao thông… đặc biệt là chúng ta hay
băt gặp nhất là ứng dụng trong trang trí quảng cáo của vi xử ly.những biển quảng cáo nổi bật
làm chúng ta rất tò mò. Từ thực tiễn trên và sau khi học môn đồ án vi xử ly em đã chọn đề
tài cho đồ án môn học này là : MẠCH ĐÈN LED CUBE 5X5X5

Page 2


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

Chương 1
Vi Điều Khiển 89C51


1.1. Sơ đồ chân 89C51:
89c51 là IC vi điều khiển (Microcontroller) do hãng Atmel sản xuất. IC này có đặc
điểm như sau:
• 4k byte ROM,128 byte RAM nội.
• 4 Port I/O 8 bit.
• 2 bộ đếm/ định thời 16 bit.
• Giao tiếp truyền dữ liệu nối tiếp.
• 64k byte bộ nhớ bên ngoài dung để lưu chương trình điều khiển.
• 64k byte bộ nhớ bên ngoài dung để lưu dữ liệu.
• 210 bit có thể truy xuất từng bit..
• Có các lệnh xử ly bit.
Sơ lược về các chân của 89C51:

Hình 2-1. Sơ đồ chân 89C51
Page 3


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

1.1.1. Chức năng của các chân 89C51:
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 8 (P1.0 _ P1.7). Port 1 chỉ có chức năng dung làm các
đường điều khiển xuất nhập IO
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7). Nếu không dùng bộ nhớ mở rộng bên

ngoài thì port 2 dùng làm các đường điều khiển IO.Nếu dung bộ nhớ mở rộng bên ngoài thì
port 2 có chức năng là bus địa chỉ cao A0 – A15.
Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7). Port 3 là port có 2 chức năng.Các chân
port này có nhiều chức năng , các công dụng chuyển đổi có liên hệ đặc biệt của 89C51 như ở
bảng sau:
PSEN (Program store enable):
PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở
rộng 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 89C51 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 89C51 để giải mã
lệnh. Khi 89C51 thi hành chương trình trong EPROM nội PSEN ở mức logic 1.
ALE (Address Latch Enable):
Khi 89C51 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và dữ liệu
(AD7 – AD0) 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 thì vi điều khiển thi hành chương trình từ bộ nhớ nội.
Nếu ở mức 0 thì vi điều khiển thi hành chương trình từ bộ nhớ ngoại.
RST (Reset):
Ngõ vào chân 9 là ngõ vào Reset.Khi cấp điện cho hệ thống hoặc nhấn nút reset thì
mạch sẽ reset vi điều khiển.Khi reset thì tín hiệu reset phải ở mức cao ít nhất 2 chu kì máy.
1.1.2. Các ngõ vào bộ dao động Xtal1, Xtal2:
Bộ tạo dao động được tích hợp bên trong 89C51. Khi sử dụng 89C51, người ta chỉ cần
nối thêm tụ thạch anh và các tụ. Tần số tụ thạch anh thường là 12 Mh – 24 Mh.

Page 4



Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

1.2.

Đồ án Vi

Cấu trúc bên trong của 89C51:
1.2.1 Sơ đồ khối bên trong 89C51:

Hình 2-3. Cấu trúc bên trong của vi điều khiển

1.2.2 Tổ chức bộ nhớ.

Hình 2-4. Bảng tóm tắt các vùng nhớ 89C51

Page 5


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đờ án Vi

RAM bên trong 89C51 đượ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 từ 80H đến FFH.

Địa chỉ
byte

Địa chỉ
byte

Đòa chỉ bit

7F

Đòa chỉ bit

FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
D0 D7 D6 D5 D4 D3 D2 – D0 PSW

30
2F
2E
2D
2C
2B
2A
29
28
27
26

25
24
23
22
21
20
1F
18
17
10
0F
08
07
00

RAM đa dụng
7F
77
6F
67
5F
57
4F
47
3F
37
2F
27
1F
17

0F
07

7E
76
6E
66
5E
56
4E
46
3E
36
2E
26
1E
16
0E
06

B8





– BC BB BA B9 B8

IP


7D 7C 7B 7A 79 78

75 74 73 72 71
6D 6C 6B 6A 69
65 64 63 62 61
5D 5C 5B 5A 59
55 54 53 52 51
4D 4C 4B 4A 49
45 44 43 42 41
3D 3C 3B 3A 39
35 34 33 32 31
2D 2C 2B 2A 29
25 24 23 22 21
1D 1C 1B 1A 19
15 14 13 12 11
0D 0C 0B 0A 09
05 04 03 02 07
Bank 3 1

70
68
60
58
50
48
40
38
30
28
20

18
10
08
00

Bank 2
Bank 1
Bank thanh ghi 0
(mặc đònh cho R0-R7)
RAM

B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
A8

AF –

– A A A A9 A8
C B A

IE

A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
99 không được đòa chỉ hóa bit
98 9F 9E 9D 9C 9B 9A 99 98

SBUF
SCON

90 97 96 95 94 93 92 91 90


P1

8D
8C
8B
8A
89
88
87

không được đòa chỉ hóa bit
không được đòa chỉ hóa bit
không được đòa chỉ hóa bit
không được đòa chỉ hóa bit
không được đòa chỉ hóa bit
8F 8E 8D 8C 8B 8A 89 88
không được đòa chỉ hóa bit

83 không được đòa chỉ hóa bit
82 không được đòa chỉ hóa bit
81 không được đòa chỉ hóa bit
80 87 86 85 84 83 82 81 80

TH1
TH0
TL1
TL0
TMOD
TCON
PCON

DPH
DPL
SP
P0

CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT

Hình 2-5. Cấu trúc bộ nhớ Ram bên trong vi điều khiển

- Bộ nhớ trong 89C51 bao gờm ROM và RAM. RAM trong 89C51 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
Page 6


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

thanh ghi chức năng đặc biệt.
- 89C51 có bộ nhớ 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 8951 nhưng 8951 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ộ nhớ bên trong 89C51 bao gồm ROM và RAM. RAM 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.
89C51 có bộ nhớ theo cấu trúc Harvard: có những vùng 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 89C51 nhưng 89C51 vẫn có thể
kết nối với 64 k byte bộ nhớ chương trình và 64 k byte bộ nhớ dữ liệu mở rộng.
Ram đa dụng:

Vùng nhớ Ram đa dụng gồm có 80 byte địa chỉ từ 30H – 7FH .Vùng nhớ bank thanh
ghi 32 byte từ 00H – 1FH cũng có thể dung làm vùng nhớ Ram đa dụng. Mọi địa chỉ trong
vùng Ram đa dụng đều có thể truy xuất tự do dùng kiểu địa chỉ trực tiếp hoặc gián tiếp. Bộ
nhớ ngan xếp của vi điều khiển dùng bộ nhớ Ram nội nên dung lượng bộ nhớ ngăn xếp nhỏ
trong khi đó các bộ vi xử ly bên ngoài làm bộ nhớ ngăn xếp nên dung lượng tùy y mở rộng.
Ram có thể truy xuất từng bit:
89C51 chứa 210 bit được địa chỉ hóa từng bit, trong đó 128 bit chứa ở các byte có địa
chỉ từ 20H đến 2FH, các bit còn lại chứa trong nhóm thanh ghi chức năng đặc biệt.
Ytưởng truy xuất từng bit bằng phần mềm là một đặc tính mạnh của vi điều khiển nói
chung. Các bit có thể được đặt, xóa, and, or,… với 1 lệnh đơn. Ngoài ra các port cũng có thể
truy xuất được từng bít làm đơn giản phần mềm xuất nhập từng bit.
Các bank thanh ghi:
Bộ lệnh 89C51 hỗ trợ 8 thanh ghi có tên là R0 đến R7 và theo mặc định (sau khi reset
hệ thống), các thanh ghi nàyở các địa chỉ 00H đến 07H.
Đây là lệnh 1 byte dùng địa chỉ thanh ghi. Tuy nhiên có thể thi hành bằng lệnh 2 byte
dùng địa chỉ trực tiếp nằm trong byte thứ 2: MOV A, 05H.
Lệnh dùng các thanh ghi R0 đến R7 thì sẽ ngắn hơn và nhanh hơn nhiều so với lệnh
tương ứng dùng địa chỉ trực tiếp.
Bank thanh ghi tích cực bằng cách thay đổi các bit trong từ trạng thái chương trình
(PSW). Giả sủ thanh ghi thứ 3 đang được truy xuất, lệnh sau đây sẽ di chuyển nội dung của
thanh ghi A vào ô nhớ ram có địa chỉ 18H:
MOV R0, A.
Các thanh ghi có chức năng đặc biệt:
89C51 có 21 thanh ghi chức năng đặc biệt (SFR: Special Funtion Register) ở vùng trên của
RAM nội từ địa chỉ 80H đến FFH.
Chú y: tất cả 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có 21 thanh ghi chức
Page 7


Trường cao đẳng CNTT hữu nghị Việt - Hàn

Xử Ly

Đồ án Vi

năng đặc biệt được định nghĩa sẵn các địa chỉ.
1.2.3. Các thanh ghi port xuất nhập:
Các port của 89C51 bao gồm port 0 ở địa chỉ 80H, port 1 ở địa chỉ 90H, port 2 ở địa chỉ
A0H, và port3 ở địa chỉ B0H. tất cả các port này đều có thể truy xuất từng bit nên rất thuận
tiện trong khả năng giao tiếp.
1.2.3.1. Các thanh ghi timer:
89C51 có chứa 2 bộ định thời/ đếm 16 bit được dùng cho việc định thời hoặc đếm sự
kiện. Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (TH0: byte cao). Timer 1 ở địa chỉ
8BH (TL1: byte thấp) và 8DH (TH1: byte cao). Việc khởi động timer được Set bởi Timer
Mode (TMOD) ở địa chỉ 89H và thanh ghi điều khiển timer (TCON) ở địa chỉ 88H, chỉ có
TCON được địa chỉ hóa từng bit.
1.2.3.2. Các thanh ghi port nối tiếp:
89C51 chứa một port nối tiếp dành cho việc trao đổi thông tin với các thiết bị nối tiếp
như máy tính, modem hoặc giao tiếp nối tiếp với các IC khác. Một thanh ghi gọi là bộ đệm
dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả 2 dữ liệu truyền và dữ liệu nhận. Khi truyền
dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF. Các mode vận hành khác nhau
được lập trình qua thanh ghi điều khiển port nối tiếp SCON ở địa chỉ 98H.
1.2.3.3. Các thanh ghi ngắt:
89C51 có cấu trúc 5 nguồn ngắt, 2 mức ưu tiên. Các ngắt bị cấm sau khi reset hệ
thống và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt (IE) ở địa chỉ A8H, cả 2
thanh ghi được địa chỉ hóa từng bit.
1.2.3.4. Thanh ghi điều khiển công suất:
Thanh ghi điều khiển công suất (PCON) ở địa chỉ 87H chứa các bit điều khiển.
1.2.3.5. Tín hiệu Reset:
89C51 có ngõ vào reset RST tác động ở mức cao trong khoảng thời gian 2 chu kỳ, sau
đó xuống mức thấp để 89C51 bắt đầu làm việc. RST có thể kích bằng tay bằng một phím

nhấn thường mở, sơ đồ mạch reset như hình trên (hình a)
sau khi reset hệ thống được tóm tắt như sau:

Page 8


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Thanh ghi

Nội dung

Đếm chương trình PC

0000H

Thanhghi tích lũy A

00H

Thanh ghi B

00H

Thanh ghi trạng thái

00H

SP


07H

DPTR

0000H

Port 0 đến Port 3

FFH

IP

XXX0000 B

IE

0XX00000 B

Đồ án Vi

Các thanh ghi định thời 00H

1.2.3.6.Hoạt động thanh ghi TIMER:
89C51 có hai timer 16 bit, mỗi timer có bốn cách làm việc. Người ta sử dụng các timer
để:


Định khoảng thời gian.




Đếm sự kiện.
Page 9


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly


Đồ án Vi

Tạo tốc độ baud cho port nối tiếp trong 89C51.

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 ).
Truy xuất các timer của 89C51 dùng sáu thanh ghi chức năng đặc biệt cho trong bảng
sau:
SFR

Mục Đích

Địa chỉ

Địa chỉ hóa từng bit

TCON


Điều khiển Timer

88H



TMOD

Chế độ Timer

89H

Không

TL0

Byte thấp của Timer 0

90H

Không

TL1

Byte thấp của Timer 1

91H

Không


TH0

Byte cao của Timer 0

92H

Không

TH1

Byte cao của Timer 1

93H

Không

Các thanh ghi chức năng của timer trong 8031.

Page 10


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

1.2.3.7 Thanh ghi chế độ timer (TMOD):
Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho Timer 0, và
Timer 1.

Bit

Tên

Time
r

Mô tả

7

GATE

1

Bit mở cổng, khi lên 1 timer chỉ chạy khi INT1 ở mức
cao

6

C/T

1

Bit chọn chế độ Count/Timer
1 = bộ đếm sự kiện
0 = bộ định khoảng thời gian

5


M1

1

Bit 1 của chế độ mode

4

M0

1

Bit 0 của chế độ mode

3

GATE

0

Bit mở cổng, khi lên 1 timer chỉ chạy khi INT0 ở mức
cao

2

C/T

0

Bit chọn chế độ Count/Timer


1

M1

0

Bit 1 của chế độ mode

0

M0

0

Bit 0 của chế độ mode

Tóm tắt thanh ghi chức năng TMOD.
1.2.3.8. Thanh ghi điều khiển timer(TCON)
Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho Timer 1, Timer 0.
Bit

Ky hiệu

Địa chỉ Mô tả

TCON.7 TF1

8FH


Cờ báo tràn timer 1. Đặt bởi phần cứng khi tràn,
được xóa bởi phần mềm, hoặc phần cứng khi bộ
xử ly chỉ đến chương trình phục vụ ngắt.

TCON.6 TR1

8EH

Bit điều khiển timer 1 chạy đặt xóa bằng phần
mềm để cho timer chạy ngưng.

TCON.5 TF0

8DH

Cờ báo tràn Timer 0.

TCON.4 TR0

8CH

Bit điều khiển Timer 0 chạy

TCON.3 IE1

8BH

Cờ cạnh ngắt 1 bên ngoài. Đặt bởi phần cứng
khi phát hiện một cạnh xuống ở INT1 xóa bằng
phần mềm họăc phần cứng khi CPU chỉ đến

chương trình phục vụ ngắt.

TCON.2 IT1

8AH

Cờ kiểu ngắt 1 bên ngoài. Đặt xóa bằng phần
mềm để ngắt ngoài tích cực cạnh xuống /mức

Page 11


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

thấp.
TCON.1 IE0

89H

Cờ cạnh ngắt 0 bên ngòai

TCON.0 IT0

88h

Cờ kiểu ngắt 0 bên ngoài


1.2.3.9 .Khởi động và truy xuất thanh ghi timer:
Thông thường các thanh ghi được khởi động một lần đầu ở chương trình để đặt ở chế
độ làm việc đúng. Sau đó, trong thân chương trình, các thanh ghi timer được cho chạy, dừng,
các bit được kiểm tra và xóa, các thanh ghi timer được đọc và cập nhật…. theo đòi hỏi các
ứng dụng.
TMOD là thanh ghi thứ nhất được khởi động vì nó đặt chế độ hoạt động. Ví dụ, các
lệnh sau khởi động Timer 1 như timer 16 bit (chế độ 1) có xung nhịp từ bộ dao động tên chip
cho việc định khoảng thời gian:
MOV TMOD, #1B
Lệnh này sẽ đặt M1 = 1 và M0 = 0 cho chế độ 1, C/ T= 0 và GATE = 0 cho xung nhịp
nội và xóa các bit chế độ Timer 0. Dĩ nhiên, timer không thật sự bắt đầu định thời cho đến
khi bit điều khiển chạy TR1 được đặt lên 1.
Nếu cần số đếm ban đầu, các thanh ghi TL1/TH1 cũng phải được khởi động. Một
khoảng 100s có thể được khởi động bằng cách khởi động giá trị cho TH1/TL1 là FF9CH:
MOV TL1, #9CH
MOV TH1, #0FFH
Rồi timer được cho chạy bằng cách đặt bit điều khiển chạy như sau:
SETB TR1
Cờ báo tràn được tự động đặt lên 1 sau 100s. Phần mềm có thể đợi trong 100 s
bằng cách dùng lệnh rẽ nhánh có điều kiện nhảy đến chính nó trong khi cờ báo tràn chưa
được đặt lên 1:
WAIT: JNB TF1, WAIT
Khi timer tràn, cần dừng timer và xóa cờ báo tràn trong phần mềm:
CLR TR1
CLR TF1
1.2.3.10. 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.
Page 12


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

Tổ chức ngắt của 89C51:
Có 5 nguồn ngắt ở 89C51: 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.
Khi có hai hoặc nhiều ngắt đồng thời, hoặc một ngắt xảy ra khi một ngắt khác đang
được phục vụ, có cả hai sự tuần tự hỏi vòng và sơ đồ ưu tiên hai mức dùng để xác định việc
thực hiện các ngắt. Việc hỏi vòng tuần tự thì cố định nhưng ưu tiên ngắt thì có thể lập trình
được.
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.
Bit

Ky 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ột để
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 lọai cờ ngắt
Page 13


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

Các vectơ ngắt :
Khi chấp nhận ngắt, giá trị được nạp vào PC được 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.

Page 14


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

CHƯƠNG 2
MẠCH ĐÈN LED CUBE 5X5X5

2.1 Nguyên lý làm việc của mạch Led cube:
Mạch điện sử dụng Vi Điều Khiển nên về phần cứng khá đơn giản.
Khối điều khiển trung tâm sử dụng Vi Điều Khiển 89C51.
Khi ta cấp nguồn cho vi xử lí thì vi xử lí sẽ hoạt động. Nó sẽ cấp nguồn cho các chân của
vi xử lí. Và mạch sẽ hoạt động theo chế độ đã định sẵn.
Vi điều khiển sẽ xuất tín hiệu ra các port để làm sáng đèn Led mong muốn.
2.1.1. Khối Led cube 5x5x5:
Trước khi đi vào nguyên ly hoạt động của mạch ta tìm hiểu qua về khối Led Cube.
Khối LED cube có đủ kích cỡ khác nhau (5x5x5, 8x8x8, 10x10x10, 16x16x16....),
mỗi khối gồm có rất nhiều LED đơn được ghép lại với nhau. Trong khối đó các LED đơn
được ghép từ nhiều lớp xếp chồng lên nhau, mỗi lớp gồm nhiều hàng và cột. Tại mỗi giao
điểm của hàng với cột là một LED đơn.
Khi thiết kế những khối LED ta cần chú y đến sự đồng đều về độ sáng của các LED
để việc hiển thị được đồng đều. Bên cạnh đó vấn đề cấp nguồn cho mạch cũng cần được chú
y và thiết kế cho phù hợp. Trong đề tài này em sử dụng khối LED 5x5x5
 Sau đây là cách ghép nối của khối LED cube 5x5x5:
Led cube 5x5x được tạo thành từ 125 bóng Led, xếp thành 5 lớp mỗi lớp 25 bóng.
Ở đây ta không dùng 125 mối nối để thắp sáng từng bóng đèn mà ta sẽ mắc chung các
chân anot của 25 bóng đèn trên 1 lớp với nhau và mắc chung 5 chân Katot để tạo thành 1
cột
Bước 1: Tạo khung Led: sử dụng gỗ ép, xốp, bìa catong…tùy vào vật liệu sẵn có
để tạo khung cho LED. Ta vẽ hình vuông lớn rồi chia thành 25 ô nhỏ đều nhau cạnh
2cm. tại giao điểm của các cạnh hình vuông ta đục lỗ cho bằng đường kính của Led.
Bước 2: Bẻ chân Led: chân Katot ta giữ nguyên, chân Anot ta bẻ vuông góc với
chân Katot
Bước 3: Hàn Led: sau khi bẻ chân Led, ta đặt Led vào các lỗ trên khung và hàn.
Ta sẽ hàn các chân Anot lại với nhau. Sau khi hàn xong 25 Led ta được lớp thứ nhất.
Tương tự ta sẽ có các lớp tiếp theo.
Sau đó ta sẽ xếp chồng các lớp Led lên với nhau và hàn các chân Katot ở các cột
tương ứng lại với nhau ta sẽ được khối Led 5x5x5


Page 15


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

2.1.2 Nguyên tắc làm sáng đèn trên khối LED:
Để cho 1 Led bất kì sáng, đầu tiên ta nối chân Anot chung của lớp với điểm có điện
thế cao, khi đó 25 bóng Led sẽ có chân Anot được nối với điểm điện thế cao. Sau đó ta
sẽ nối điểm điện thế thấp cho chân Katot của Led nào cần thắp sáng.
Ví dụ: để thắp sáng bóng đèn thứ 16 của lớp thứ 3 thì ta sẽ nối chân Anot chung của
lớp thứ 3 với điểm có điện thế cao, còn chân Katot của cột 16 sẽ nối với điểm có điện
thế thấp lúc này đèn sẽ sáng.
Tương tự như vậy đối với một cột hoặc một hàng sáng cùng lúc.

Page 16


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

2.2 Sơ đồ nguyên lý:

Sơ đồ mô phỏng trong phần mềm Proteus:


Page 17


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

2.3 Sơ đồ mạch in
 Sơ đồ đế khối LED

 Sơ đồ khối điều khiển

Page 18


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

2.4

Đồ án Vi

Linh kiện sử dụng trong mạch:
- Khối điều khiển trung tâm: Vi điều khiển 89C51
- IC LM 7805
- Transistor A1015
- Điện trở, tụ 10uF,
- Đèn Led


2.5 Chương trình điều khiển:
#include "REGX52.H"
int i,j,k,l,m,n,o,p,q,w,e,f,g,a;
void delay(unsigned char time){
while(time--){
unsigned char j = 125;
while(j--);
};}
//HIEU UNG LOP NGANG CHAY LEN _ XUONG
manghu1[9]={0xBE,0xBD,0xBB,0xB7,0xAF,0xB7,0xBB,0xBD,0xBE, };
void hu1()
{P1=0;P2=0;P3=0;
for(i=0;i<9;i++)
{P0=manghu1[i];delay(200);}
}
//HIEU UNG LOP DUNG DI CHUYEN
void hu2()
{P0=0x40;P1=0xE0;P2=0XFF;P3=0XFF;delay(400);
P0=0x40;P1=0x1F;P3=0xFC;delay(400);
P0=0x40;P3=0x83;P1=0XFF;P2=0XFF;delay(400);
P0=0x40;P3=0x7F;P2=0xF0;P1=0XFF;delay(400);
P0=0;P2=0x0F;P1=0XFF;P3=0XFF;delay(400);
Page 19


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi


P0=0x40;P3=0x7F;P2=0xF0;P1=0XFF;delay(400);
P0=0x40;P3=0x83;P1=0XFF;P2=0XFF;delay(400);
P0=0x40;P1=0x1F;P3=0xFC;delay(400);
P0=0x40;P1=0xE0;P2=0XFF;P3=0XFF;delay(400);
}
//HIEU UNG LOP DUNG XOAY
void hu3()
{P0=0x40;P3=0x83;delay(400);
P0=0x40;P1=0xAF;P3=0xEF;P2=0xEB;delay(400);
P0=0x40;P1=0x7B;P3=0xEF; P2=0xBD;delay(400);
P0=0 ;P1=0xFE;P3=0xEE;P2=0xFE;delay(400);
}
//HIEU UNG NAM MOC LEN
void hu4()
{ P0=0xFE;P3=0xEF;P2=0XFF;P1=0XFF;delay(400);
P0=0xFD;P3=0xC7;P2=0XFF;P1=0XFF;delay(400);
P0=0xFB;P3=0xC7;P1=0x7F;P2=0xFD;delay(400);
P0=0xF7;P3=0xC6;P1=0x3F;P2=0xF8;delay(400);
P0=0xAF;P1=0;P2=0;P3=0;delay(400);
P0=0xAF;P1=0;P2=0;P3=0;delay(400);
P0=0xAF;P1=0xC0;P3=0x39;P2=0x07;delay(400);
P0=0xB7;P1=0xC0;P3=0x39;P2=0x07;delay(400);
P0=0xBB;P1=0xC0;P3=0x39;P2=0x07;delay(400);
P0=0xBD;P1=0xC0;P3=0x39;P2=0x07;delay(400);
P0=0xBE;P1=0xC0;P3=0x39;P2=0x07;delay(100);
}
//LOP XOAY QUANH
void hu5()
{P0=0xAF;P1=0;P2=0;P3=0;delay(400);//TREN CUNG
P0=0x40;P1=0xE0;P2=0XFF;P3=0XFF;delay(400); //MAT1

P0=0x40;P1=0xFE;P3=0xF9;P2=0xE7;delay(400);//MAT2
P0=0;P2=0x0F;P1=0XFF;P3=0XFF;delay(400); //MAT3
Page 20


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

P0=0;P1=0xCF;P3=0x3F;P2=0XFF;delay(400);//MAT4
P0=0xBE;P1=0;P2=0;P3=0;delay(400);//DUOI CUNG
P0=0;P1=0xCF;P3=0x3F;P2=0XFF;delay(400);//MAT4
P0=0;P2=0x0F;P1=0XFF;P3=0XFF;delay(400); //MAT3
P0=0x40;P1=0xFE;P3=0xF9;P2=0xE7;delay(400);//MAT2
P0=0x40;P1=0xE0;P2=0XFF;P3=0XFF;delay(400); //MAT1
}
//CHOP TAT KHOI
void chop()
{for(q=0;q<5;q++)
{P0=0;P1=0;P2=0;P3=0;delay(300);}
for(w=0;w<5;w++)
{P0=0xff;P1=0;P2=0;P3=0;delay(300);}
}
//LAP PHUONG
void lapphuong()
{P0=0xBE;P1=0xC0;P3=0x39;P2=0x07;delay(1);
P0=0;P1=0xEE;P2=0xEF;P3=0XFF;delay(1);
P0=0xAF;P1=0xC0;P3=0x39;P2=0x07;delay(1);
}

//SANG DON KIEU XEO XEO
void donxeo()
{P0=0xE0;P1=0xEF;P2=0XFF;P3=0XFF;delay(400);//X1
P0=0XE0;P1=0xD7;P3=0XFF;P2=0XFF;delay(400);//X2
P0=0XE0;P1=0xBB;P3=0xBF;P2=0XFF;delay(400);//X3
P0=0XE0;P1=0x7D;P3=0x5F;P2=0XFF;delay(400);//X4
P0=0;P1=0xFE;P3=0xEE;P2=0xFE;delay(400);//X5
P0=0XE0;P1=0XFF;P3=0xF5;P2=0x7D;delay(400);//X6
P0=0XE0;P1=0XFF;P3=0xFB;P2=0xBB;delay(400);//X7
P0=0XE0;P1=0XFF;P3=0XFF;P2=0xD7;delay(400);//X8
P0=0XE0;P1=0XFF;P3=0XFF; P2=0xEF;delay(400);//X9
P0=0XE0;P2=0xC7;P3=0XFF;P1=0XFF;delay(400);//DON8
Page 21


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi

P0=0XE0;P2=0x83;P3=0xFB;P1=0XFF;delay(400);//DON7
P0=0XE0;P2=0x01;P3=0xF1;P1=0XFF;delay(400);//DON6
P0=0;P1=0xFE;P3=0xE0;P2=0;delay(400);//DON5
P0=0;P2=0;P3=0x40;P1=0x7C;delay(400);//DON4
P0=0;P2=0;P3=0;P1=0x38;delay(400);//DON3
P0=0;P2=0;P3=0;P1=0x10;delay(400);//DON2
P0=0;P1=0;P2=0;P3=0;delay(400);//DON1
P0=0;P1=0;P2=0x10;P3=0;delay(400);//DONTAT1
P0=0;P1=0;P2=0x38;P3=0;delay(400);//DONTAT2
P0=0;P1=0;P2=0x7C;P3=0x04;delay(400);//DONTAT3

P0=0;P1=0;P2=0xFE;P3=0x0E;delay(400);//DONTAT4
P0=0xE0;P1=0x01;P2=0xFF;P3=0x1F;delay(400);//DONTAT5
P0=0xE0;P1=0x83;P2=0xFF;P3=0xBF;delay(400);//DONTAT6
P0=0xE0;P1=0xC7;P2=0xFF;P3=0xFF;delay(400);//DONTAT7
P0=0xE0;P1=0xEF;P2=0xFF;P3=0xFF;delay(400);//DONTAT8
P0=0xE0;P1=0xFF;P2=0xFF;P3=0xFF;delay(400);//DONTAT9
}
//KIM CUONG
int hh,kk;
void kimcuong()
{for(hh=0;hh<200;hh++)
{P0=0xFE;P1=0XFF;P2=0XFF;P3=0xEF;delay(1);
P0=0xFD;P1=0x3F;P3=0xC6;P2=0xF8;delay(1);
P0=0xBB;P1=0;P2=0;P3=0;delay(1);
P0=0xF7;P1=0x3F;P3=0xC6;P2=0xF8;delay(1);
P0=0xEF;P1=0XFF;P2=0XFF;P3=0XFF;delay(1);}
for(kk=0;kk<200;kk++)
{P0=0xFD;P1=0XFF;P2=0XFF;P3=0xEF;delay(1);
P0=0xFB;P1=0x3F;P3=0xC6;P2=0xF8;delay(1);
P0=0xB7;P1=0;P2=0;P3=0;delay(1);
P0=0xEF;P1=0x3F;P3=0xC6;P2=0xF8;delay(1);
P0=0xFE;P1=0XFF;P2=0XFF;P3=0XFF;delay(1);}
Page 22


Trường cao đẳng CNTT hữu nghị Việt - Hàn
Xử Ly

Đồ án Vi


}
void main(void)
{
while(1)
{
for(a=0;a<=4;a++)
kimcuong();
for(g=0;g<=4;g++)
donxeo();
for(f=0;f<=4;f++)
thanhngang();
for(e=0;e<=800;e++)
lapphuong();
for(p=0;p<=5;p++)
chop();
for(n=0;n<=500;n++)
hu5();
for(i=0;i<=4;i++)
hu1();
for(j=0;j<=4;j++)
hu2();
for(k=0;k<=4;k++)
hu3();
for(m=0;m<=4;m++)
hu4();
}}

Page 23




×