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
Có
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 100s 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 100s. 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