Thiết kế hệ vi xử lý 8 bít Bùi Đức Thắng-TĐH1-K47
ĐỀ TÀI THIẾT KẾ HỆ VI XỬ LÝ 8 BIT
YÊU CẦU
Phần cứng :
1. Bộ vi xử lý 8 bit (8085, 89C51 ….)
2. Bộ nhớ chương trình ROM : 8KB từ địa chỉ 0000H
3. Bộ nhớ dữ liệu RAM 8kB có địa chỉ tuỳ chọn.
4. Cổng vào tương tự 8 kênh nhận tín hiệu nhiệt độ từ 0 – 10V
tương ứng vói nhiệt độ từ 0 – 200 độ C.
5. Nhập dữ liệu vào từ bàn phím 16 phím
6. Khối hiển thị dữ liệu dùng màn hình tinh thể lỏng LCD.
Phần mềm :
1. Tín hiệu cho phép chạy và dừng chương trình.Tín hiệu dừng khẩn
cấp.
2. Đọc tín hiệu từ 8 kênh đo lư trữ trong vùng nhớ RAM .
3. Sau mỗi lần đọc tính giá trị trung bình của nhiệt độ và gửi kết quả
ra cổng hiển thị bằng LCD
4. Chương trinh dừng lại báo động bằng còi nếu xảy ra một số điều
kiện sau:
- Giá trị trung bình < hoặc > giá trị min hoặc max tương ứng cho
trước.Các giá trị max & min này được đặt ở trong 2 ô nhớ RAM.
- Có 4 kênh đo vượt quá hoặc nhỏ hơn giá trị giới hạn cho
phép so với giá trị trung bình.
Bài tập dài: Thiết kế hệ Vi xử lý 8 bít
1
Thiết kế hệ vi xử lý 8 bít Bùi Đức Thắng-TĐH1-K47
PHẦN I
THIẾT KẾ MẠCH PHẦN CỨNG
CHƯƠNG I
ĐỊNH HƯỚNG THIẾT KẾ
Thiết kế một hệ vi xử lý bao gồm cả việc thiết kế tổ chức phần cứng và viết
o
÷ 200
o
C.
+ Xử lý việc hiển thị kết quả nhiệt độ trung bình ta dùng 3 LED 7 thanh để
hiển thị tương ứng với các nhiệt độ trong dải 0 ÷ 200
0
C.
+ Tín hiệu cho phép chạy được xử lý bằng cách dùng một nút ấn Reset hệ
thống.
+ Tín hiệu báo động được xử lý bằng một còi báo động kết nối với một cổng
bất kỳ phục vụ cho vào/ra.
+ Nếu có yêu cầu dùng các phím để định các mode hoạt động, cũng như đặt
lại giá trị MAX và MIN thì bàn phím cũng phải được kết nối với các cổng giao tiếp
vào/ra (ở đây yêu cầu dùng 8255).
Tất cả các thiết bị phải được kết nối với nhau thông qua các bus cần thiết gồm
bus dữ liệu, bus địa chỉ và bus điều khiển.
Sơ đồ khối cho thiết kế phần cứng của hệ thống như sau:
Bài tập dài: Thiết kế hệ Vi xử lý 8 bít
3
VXL
89C51
Khối
v o à
tương
tự 8
kênh
Khối
hiển thị
Control Bus
trình cho Flash và kiểm tra chương trình.
Port 3
Bài tập dài: Thiết kế hệ Vi xử lý 8 bít
4
Thiết kế hệ vi xử lý 8 bít Bùi Đức Thắng-TĐH1-K47
Port 3 là port xuất nhập 8 bit hai chiều.
Port 3 cũng còn được dùng làm chức năng khác của AT89C51 các chức năng
được liệt kê như sau:
Chân của port Chức năng
P3.0 RxD ( ngõ vào của port nối tiếp )
P3.1 TxD ( ngõ ra của port nối tiếp )
P3.2
0INT
( ngõ và ngắt ngoài 0 )
P3.3
1INT
( ngõ vào ngắn ngoài 1 )
P3.4 TO ( ngõ vào bên ngoài của bộ định thời 0 )
P3.5 T1 ( ngõ vào bên ngoài của bộ định thời 1 )
P3.6
RW
( điều khiển bộ nhớ dữ liệu ngoài )
P3.7
RD
( điều khiển đọc bộ nhớ dữ liệu ngoài )
Port 3 cũng nhận một vài tín hiệu điều khiển cho việc lập trình Flash và điều
khiển chương trình.
RST
Ngõ vào reset.
ALE/
Ngõ vào đến mạch khuyếch đại dảo của mạch dao động và ngõ đến mạch
xung clock bên trong chíp.
Bài tập dài: Thiết kế hệ Vi xử lý 8 bít
5
Thiết kế hệ vi xử lý 8 bít Bùi Đức Thắng-TĐH1-K47
XTAL2
Ngõ ra từ mạch khuyếch đại đảo của mạch dao động.
1.2 Tổ chức bộ nhớ:
1.2.1 Cấu trúc chung của bộ nhớ:
Tất cả các vi điều khiển thuộc họ MCS-51 đều phân chia bộ nhớ thành hai
vùng địa chỉ cho bộ nhớ dữ liệu và bộ nhớ chương trình. Sự phân chia logic giữa
bộ nhớ dữ liệu và bộ nhớ chương trình cho phép truy nhập bộ nhớ dữ liệu bằng 8
bit địa chỉ giúp cho việc lưu trữ và thao tác dữ liệu nhanh hơn.Tuy nhiên, chúng ta
có thể sử dụng địa chỉ bộ nhớ dữ liệu 16 bit thông qua thanh ghi DPTR.
Bộ nhớ chương trình là loại bộ nhớ chỉ cho phép đọc, không cho phép ghi.
Một số vi điều khiển được tích hợp sẵn bộ nhớ chương trình bên trong với dung
lượng khoảng 4kbyte hay 8 kbyte, số còn lại phải sử dụng bộ chương trình mở rộng
mà quá trình truy nhập được thực hiện thông qua sự điều khiển bằng tín hiệu PSEN
(Progam Strobe Enable).
Tuy nhiên, vi điều khiển 8051 cho phép ta sử dụng đến 64kbyte bộ nhớ
chương trình bằng cách sử dụng cả bộ nhớ chương trình bên trong và bên ngoài.
Bộ nhớ số liệu chiếm giữ vùng địa chỉ phân chia của bộ nhớ chương trình.
Dung lượng của bộ nhớ dữ liệu có thể mở rộng lên tới 64 kbyte. Trong quá trình
truy nhập bộ nhớ số liệu, CPU phát ra các tín hiệu đọc và tín hiệu viết số liệu thông
qua các chân RD và WR.Bài tập dài: Thiết kế hệ Vi xử lý 8 bít
6
00H
rộng bằng cách cho hai tín hiệu RD và PSEN qua một cổng logic AND, lối ra của
cổng AND này sẽ tạo tín hiệu đọc cho bộ nhớ mở rộng.
1.2.2 Bộ nhớ chương trình:
Sau khi Reset, CPU bắt đầu thực hiện chương trình từ địa chỉ 0000H. Vùng
đầu của bộ nhớ chương trình là vùng chứa các vector ngắt, mỗi ngắt được phân
chia một vùng địa chỉ cố định trong trong bộ nhớ chương trình. Khi xuất hiện ngắt,
CPU sẽ nhảy tới địa chỉ này, đây cũng là địa chỉ đầu của chương trình con phục vụ
ngắt. Các vector ngắt cách nhau 8 byte, vì vậy nếu chương trình con phục vụ ngắt
quá dài (>8 byte) thì tại vector ngắt ta phải đặt một lệnh nhảy không điều kiện tới
vùng địa chỉ khác chứa chương trình con phục vụ ngắt.
1.2.3 Bộ nhớ số liệu:
Phía bên phải của Hình 2.3 biểu diễn không gian bộ nhớ dữ liệu của MCS-
51. Chúng ta có thể sử dụng tới 64 Kbyte bộ nhớ số liệu ngoại vi. Độ rộng bus địa
chỉ của bộ nhớ số liệu ngoài có thể là 8 bit hoặc 16 bit. Bus địa chỉ rộng 8 bit
thường được sử dụng để liên kết với một hoặc nhiều đường vào ra khác để định địa
chỉ cho RAM theo trang. Trong trường hợp bus địa chỉ rộng 16 bit, cổng P2 sẽ phát
ra 8 bit địa chỉ cao còn cổng P1 sẽ phát ra 8 bit địa chỉ thấp. Bằng cách này, ta có
thể truy nhập trực tiếp lên bộ nhớ dữ liệu ngoài với độ lớn tối đa là 64 Kbyte.
Bộ nhớ số liệu trong được chia ra làm 3 vùng:
+128 byte cao.
+128 byte thấp.
+Vùng dành cho các thanh ghi chức năng đặc biệt (SFR).
Địa chỉ của bộ nhớ số liệu trong luôn là 8 bit, và có thể quản lý được 256
byte bộ nhớ.
2. Tổ chức bộ nhớ (Memory Map):
Từ cấu trúc của vi điều khiển 89C51 giới thiệu ở chương I và yêu cầu thiết kế
ta tiến hành phân bổ các vùng nhớ như sau:
Bộ nhớ chương trình 8K ROM chia làm hai vùng:
Bài tập dài: Thiết kế hệ Vi xử lý 8 bít
7
kế thêm vùng nhớ chương trình dùng thêm 8Kb ROM đặt ở ngoài. Đối với yêu cầu
cho nhớ dữ liệu, vì 89C51 đã có 128 bytes RAM trong và yêu cầu cần thiết kế bộ
Bài tập dài: Thiết kế hệ Vi xử lý 8 bít
8
Thiết kế hệ vi xử lý 8 bít Bùi Đức Thắng-TĐH1-K47
nhớ dữ liệu là 4Kb nên để dễ dàng cho thiết kế ta sử dụng thêm 8Kb RAM ngoài để
mở rộng bộ nhớ dữ liệu cho hệ thống.
Bộ nhớ ROM ngoài
Thực ra thì ta có thể dùng bộ nhớ ROM ngoài là các chíp nhớ EPROM có
dung lượng 4K hoặc 8K có bán trên thị trường để mở rộng bộ nhớ.Tuy nhiên, để
cho đơn giản ta lựa chọn giải pháp là dùng bộ nhớ ROM 8k trên chíp vi điều khiển
89S51.Như vậy sẽ đơn giản hơn rất nhiều cho thiết kế mà vẫn phù hợp với nội
dung phạm vi cho phép của chương trình.
Bộ nhớ RAM ngoài
Đối với RAM ngoài ta sử dụng loại SRAM vi mạch dùng trong thiết kế là
6264. Cũng có 13 đường địa chỉ 8 đường dữ liệu. Nó có địa chỉ 2000÷3FFF, địa chỉ
này được chọn ra trong vùng địa chỉ của vi điều khiển bởi chân /CS2 của giải mã
địa chỉ. Ngoài ra còn có đường chọn vỏ khác là /CS2 được nối tích cực và có hai
đườngtín hiệu yêu cầu đọc viết là /OE, /WE .
• Sơ đồ chân của RAM 6264:
2. Vi mạch ADC0809:
Bộ ADC 0809 là một thiết bị CMOS tích hợp với một bộ chuyển đổi
tương sang số 8 bit, bộ chọn kênh và mật bộ logic điều khiển tương thích. Bộ
chuyển đổi tương tự số này sử dụng phương pháp chuyển đổi xấp xỉ. Bộ chọn kênh
có thể chọn ra kênh cần chuyển đổi bằng 3 chân chọn địa chỉ. Thiết bị này loại trừ
khả năng cần thiết điều chỉnh điểm zero bên ngoài và khả năng điều chỉnh tỉ số làm
cho ADC đễ dàng giao tiếp với các bộ vi xử lý.
Các đặc điểm cơ bản của ADC 0809
- Nguồn nuôi đơn ± 5 V, hiệu suất cao.
Bài tập dài: Thiết kế hệ Vi xử lý 8 bít
- Start: xung cho phép bắt đầu chuyển đổi.
- Clk:đầu vào xung clock
- Ref(+): điện áp vào chuẩn +5v
- Ref(-): điện áp vào chuẩn 0
- Vcc: nguồn cung cấp
b. Cấu trúc bên trong của ADC 0809
Bài tập dài: Thiết kế hệ Vi xử lý 8 bít
10
Thiết kế hệ vi xử lý 8 bít Bùi Đức Thắng-TĐH1-K47
Cấu trúc bên trong của ADC0809 được thể hiện ở hình vẽ dưới:
Hoạt động chuyển đổi:
Các bit địa chỉ ở lối vào A,B,C từ bộ giải mã địa chỉ sẽ chốt và xác định kênh
đầu vào nào được chọn. Khi một kênh được chọn đồng thời yêu cầu START, ALE
được tích cực, yêu cầu độ rộng xung START không nhỏ hơn 200ns. Giá trị điện áp
cần được chuyển đổi sẽ được chốt lại ở cổng vào tương ứng xung Start bắt đầu
chuyển đổi. Sau xung START khoảng 10μs đầu ra EOC (end of convert) lúc này
xuống thấp thực sự bắt đầu quá trình chuyển đổi. Trong suốt quá trình chuyển đổi
EOC luôn ở mức tích cực thấp, đồng thời đầu ra 3 trạng thái của ADC0809 bị thả
nổi. Sau khoảng 100 µs, ADC0809 thực hiện việc chuyển đổi xong, dữ liệu đầu vào
được đưa đến bộ đệm đầu ra ba trạng thái đồng thời chân tín hiệu EOC chuyển lên
mức cao báo cho VXL biết để đọc kết quả vào.
c. Ghép ADC0809 với VXL8051.
+ Các kênh vào Analog được nối vào các đầu vào tương ứng của ADC. Mỗi
kênh đó có địa chỉ riêng do tổ hợp 3 bit địa chỉ A,B,C quy định. Các đầu vào địa
chỉ này kết nối với đường địa chỉ A
0
A
1
A
2
7
): là các đường xuất nhập có tên là cổng A.
Chân 18 ÷ 25 (PB
0
– PB
7
): là các đường nhập xuất có tên cổng B.
Chân 10 ÷ 13, 14 ÷ 17 (PB
0
– PB
7
): là các đường nhập xuất có tên cổng C.
Chân 27 ÷ 34 (D
0
– D
7
): là các đường dữ liệu (data) hoạt động hai chiều,
dẫn tín hiệu điều khiển từ vi xử lý ra các thiết bị bên ngoài đồng thời nhận các dữ
liệu từ các thiết bị điều khiển bên ngoài vào vi xử lý.
Chân 35 (Reset input): ngõ vào xóa, chân reset phải được nối với tín hiệu
reset out của vi xử lý để không làm ảnh hướng đến mạch điều khiển. Khi reset, các
cổng của 8255A là các ngõ vào, đồng thời tất cả các dữ liệu trên thanh ghi bên
trong 8255A đều bị xóa, 8255A trở về trạng thái ban đầu săn sàng làm việc.
Chân 6 (CS\): tín hiệu ngõ vào chip select (CS\) được điều khiển bởi vi xử lý,
dùng để lựa chọn 8255A làm việc khi vi xử lý giao tiếp với nhiều thiết bị.
Chân 5 (RD\): ngõ vào đọc dữ liệu (Read Input).
Chân 36 (WR\) : ngõ vào ghi dữ liệu (Write Input).
Chân 8,9 (A
1
, A
PC
0
PC
1
PC
2
PC
3
PB
0
PB
1
PB
2
PA
4
PA
5
PA
6
PA
7
WR\
RESET
D
0
D
1
D
2
0
– PA
7
PB
0
– PB
7
PC
0
– PC
7
RD\
WR\
RESET
A
0
A
1
CS\
8255A
8255A
Thiết kế hệ vi xử lý 8 bít Bùi Đức Thắng-TĐH1-K47
•Bảng địa chỉ lựa chọn thanh ghi và các cổng:
A
1
A
0
Cổng và thanh ghi
0 0 Cổng A
0 1 Cổng B
Đệm
bus dữ
liệu
Logic
điều
khiển
ghi/đọc
RD\
WR\
CS\
A
0
A
1
D
7
–
D
0
PA
7
–
PA
0
PC
7
– PC
4
PC
3
nhau là:
+ Định nghĩa chế độ các cửa (bit D
7
của từ điều kiển là 1).
+ Lập/xoá các bit của Port C (bit D
7
của từ điều khiển là 0).
• Định nghĩa chế độ các cổng
Khi D
7
=1, 8255A sẽ sử dụng thông tin trong CWR để định nghĩa chế độ các
cửa. Nội dung của CWR xác định chức năng của 24 đường ghép nối với thiết bị
ngoại vi. Phần mềm của hệ thống sẽ định nghĩa chế độ của PA, PB một cách độc
lập; còn PC có thể được định nghĩa độc lập hay chia làm hai phụ thuộc vào chế độ
của PA và PB.
Bài tập dài: Thiết kế hệ Vi xử lý 8 bít
15
Thiết kế hệ vi xử lý 8 bít Bùi Đức Thắng-TĐH1-K47
Trong chế độ này có thể có 3 chế độ làm việc khác nhau tuỳ thuộc vào nội
dung của hai bit D
6
D
5
, cụ thể là:
+ Chế độ 0(Vào ra cơ sở): D
6
D
5
= 00,ở chế độ này 8255A cho khả năng
xuất/nhập dữ liệu đơn giản qua cả 3 cổng A, B, C một cách độc lập.
16
1D
6
D
5
D
4
D
3
D
2
D
1
D
0
Nhóm B
PC
L
(4 bit thấp)
1 = Input
0 = OutputPB
1 = Input
0 = OutputMode
select
1 = mode 0
0 = mode 1
Nhóm A
Mode select
00 = mode 0
01 = mode 1
+ Các chân số liệu của 8255 có thể kết nối trực tiếp vào Bus số liệu của hệ
thống mà không cần đệm 3 trạng thái, vì bản thân các cổng P
0
của 8051 đều có đệm
3 trạng thái rồi.
e. Ghép nối 8255A với thiết bị ngoại vi:
Phần ghép nối với thiết bị ngoại vi của 8255A thông qua 24 đường số liệu và
điều khiển ở các cổng A, B, C. Các đường ghép nối này được định nghĩa bằng
Bài tập dài: Thiết kế hệ Vi xử lý 8 bít
17
0D
6
D
5
D
4
D
3
D
2
D
1
D
0
1: Lập
0: Xoá
Cửa CD
3
D
2
D 1
8
D 0
7
E
6
R W
5
R S
4
V S S
1
V D D
2
V E E
3
LCD1
LM016L
Thiết kế hệ vi xử lý 8 bít Bùi Đức Thắng-TĐH1-K47
chương trình như giới thiệu ở trên. Bằng cách chọn chế độ làm việc thích hợp và
chính xác vi mạch 8255A có thể đáp ứng được những nhu cầu ghép nối tinh vi.
4. Thiết kế khối hiển thị:
Ở đây ta dùng khối hiển thị là dùng khối hiển thị tinh thể lỏng LCD:
Khối hiển thị này có ưu điểm là:
- Màn hình đang dần có giá thành hạ
- Khả năng hiển thị số, ký tự và đồ họa tốt hơn nhiều so với đèn LED.
- Sử dụng thêm bộ điều khiển làm tươi LCD và như vậy giải phóng CPU
khỏi công việc này .Còn đối với LED luôn cần CPU hoặc bằng cách nào đó để duy
trì việc hiển thị dữ liệu.
- Dễ dàng lập trình các kí tự ,đồ họa.
P1
P3.0÷P3.
5
A14
A15
P2
(P3.7)
(P3.6