Tải bản đầy đủ (.pdf) (114 trang)

Hệ vi điều khiển - Chương 4 pdf

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.45 MB, 114 trang )

BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 187 -

CHƯƠNG IV: GHÉP NỐI VÀ TRAO ĐỔI DỮ LIỆU TRONG HỆ
VI XỬ LÝ
4.1. GHÉP NỐI VI XỬ LÝ/VI ĐIỀU KHIỂN VỚI BỘ NHỚ NGOÀI
Trong chương II chúng ta đã nói đến chức năng cũng như một số bộ nhớ bán
dẫn thông dụng. Trong phần này chúng ta sẽ tiếp tục nghiên cứu cách thức ghép nối vi
điều khiển 8051 với bộ nhớ ngoài khi muốn mở rộng thêm không gian nhớ.
4.1.1. MỘT SỐ CHÂN CỦA 8051 PHỤC VỤ CHO GHÉP NỐI VỚI BỘ
NHỚ NGOÀI
4.1.1.1. Chân EA
Ở các ví dụ từ trước đến nay, chúng ta sử dụng ROM trên chip hoặc
ROM ngoài để lưu mã chương trình. Nếu muốn sử dụng đồng thời cả hai bộ
nhớ ROM thì có được không? Câu trả lời là có (hình 4.2.1a).
- Bằng cách nối EA lên Vcc, khi RESET thì 8051 thực hiện chương trình
ở trên chip trước, khi chạy xong thì mới chuyển sang chạy chương trình
trên ROM ngoài. 8051 sẽ nạp các mã lệnh bắt đầu từ địa chỉ 0000h đến
0FFFh (địa chỉ cuối cùng của ROM trên chip). Sau đó bộ đếm chương
trình (con trỏ lệnh PC) tạo ra địa chỉ 1000h và tự động chuyển hướng ra
ROM ngoài có chứa mã chương trình.
- Nếu nối EA xuống Mass thì vi điều khiển sẽ chỉ thực hiện lệnh có trên


ROM ngoài từ địa chỉ 0000h đến FFFFh
0000h
FFFFh
ngoµi
chip
ngoµi
chip
FFFFh
0000h
ea = gnd ea = vcc
0FFFh
1000h
Trªn
chip

Hình 4.2.1a. Bộ nhớ ROM trên chip và ngoài chip
4.1.1.2. Cổng P0 và P2
Do thanh ghi PC và thanh ghi DPTR là thanh ghi 16 bit nên vi điều
khiển 8051 có thể mở rộng không gian nhớ tới 64 KB cho mỗi loại. Cổng P0 và
P2 dùng để cung cấp địa chỉ. Cổng P0 cấp 8 bit địa chỉ thấp là A0 – A7, Còn P2
thì cấp 8 bit địa chỉ cao từ A8 – A15. Một nhiệm vụ quan trong nữa đó là P0
còn được dùng để cấp bus dữ liệu 8 bit D0 – D7. Như vậy các chân từ P0.0 -
P0.7 vừa được dùng làm bus dữ liệu vừa dùng làm bus địa chỉ. Vậy làm thế nào
để biết được khi nào P0 được dùng làm bus dữ liệu, khi nào làm bus địa chỉ?
Đó là nhiệm vụ của chân cho phép chốt ALE. Khi ALE = 0 thì P0 làm bus dữ
BM kỹ thuật Vi điều Khiển








ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 188 -

liệu, còn khi ALE = 1 thì P0 làm bus địa chỉ. Để mở rộng địa chỉ cần nối các
chân của P0 tới mạch chốt địa chỉ (đã được giới thiệu trong phần các mạch phụ
trợ của vi xử lý) và dùng chân ALE để chốt địa chỉ (hình 4.2.1b).
4.1.1.3. Chân PSEN
Là chân cho phép cất chương trình (Program Store Enable). Đây là tín
hiệu ra và được nối tới chân OE của bộ nhớ ROM chương trình ngoài. Nếu
không ghép nối với bộ nhớ chương trình ngoài thì chân PSEN để trống.
4.1.1.4. Chân
RD

WR

Là chân cho phép đọc và ghi dữ liệu khi ghép nối 8051 với bộ nhớ dữ
liệu ngoài. Chân
RD
sẽ nối với chân OE của bộ nhớ dữ liệu ngoài. chân
WR
sẽ
nối với chân
WR
của bộ nhớ dữ liệu ngoài. Khi đọc dữ liệu từ bộ nhớ vào vi
điều khiển thì chân
RD

sẽ tích cực ở mức thấp, ngược lại khi ghi dữ liệu từ vi
điều khiển ra bộ nhớ thì chân
WR
sẽ tích cực ở mức thấp.
A0
D0
AD6
A1
U66
74LS373
3
4
7
8
13
14
17
18
111
2
5
6
9
12
15
16
19
20
10
D0

D1
D2
D3
D4
D5
D6
D7
OELE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
VCC
GND
A4
ALE
AD0
D7
VCC
U65
8051
29
30
4020
31
19

18
9
39
38
37
36
35
34
33
32
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13

14
15
16
17
PSEN
ALE
VCCGND
EA
X1
X2
RST
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10

P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
A7
A2
AD7
A3
AD5
AD2
AD1
AD4
A5
VCC
AD3
A6

Hình 4.2.1b. Ghép nối 8051 với IC chốt 74LS373
4.1.2. GHÉP NỐI VI ĐIỀU KHIỂN 8051 VỚI BỘ NHỚ CHƯƠNG
TRÌNH NGOÀI
Việc ghép nối vi điều khiển 8051 với bộ nhớ chương trình ngoài không có

gì là đặc biệt chỉ lưu ý rằng chân PSEN luôn được nối với chân OE của bộ nhớ bán
dẫn.
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 189 -

Ví dụ: Thực hiện ghép nối vi điều khiển 8051 với bộ nhớ ROM chương
trình ngoài 2764 (8Kx8).
Giải:
IC nhớ 2764 (8Kx8) có 13 chân địa chỉ từ A0 – A12 (Vì 1K = 2
10
byte=>
8KB= 2
3
.2
10
= 2
13
byte nên nó có 13 chân địa chỉ). Số ô nhớ mà IC này tạo ra là 2
13

= 8192 ô nhớ = 2000h ô nhớ. Nếu nối chân EA xuống Mass thì vùng nhớ cho phép

nạp chương trình sẽ là 0000h – 1FFFh.
Sơ đồ kết nối như sau:
AD7
SW1
AD5
AD6
AD3
C5
33p
A7
ALE
AD2
R3
R
A4
U69
2764
10
9
8
7
6
5
4
3
25
24
21
23
2

11
12
13
15
16
17
18
19
2814
22
27
1
20
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
O0
O1
O2
O3

O4
O5
O6
O7
VCCGND
OE
PGM
VPP
CE
AD6
AD0
A9
AD0 AD0
U65
8051
29
30
4020
31
19
18
9
39
38
37
36
35
34
33
32

1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
PSEN
ALE
VCCGND
EA
X1
X2

RST
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0

P3.5/T1
P3.6/WR
P3.7/RD
PSEN
AD2
A7
AD4
AD1
D1
A3
AD4
AD3
VCC
A0
AD1AD1
AD2
AD5
C4
10u
A12
A11
VCC
AD4
A2
A9
A12
A0
ALE
AD3
AD7

A11
A1
PSEN
A2
A1
A6
AD7
U66
74LS373
3
4
7
8
13
14
17
18
1
11
2
5
6
9
12
15
16
19
2010
D0
D1

D2
D3
D4
D5
D6
D7
OE
LE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
VCCGND
A5A13
A8
AD5
11.0592MHz
A10
A14
A4
A15
C6
33p
A3
VCC
A6

A5
VCC
A10
AD6
A8

Ghép nối vi điều khiển 8051 với bộ nhớ chương trình ngoài
Khi vi điều khiển lấy lệnh từ bộ nhớ thì chân PSEN được kích hoạt xuống
mức thấp, do vậy chân PSEN được nối với chân OE và CE của ROM chương trình
2764.
4.1.3. GHÉP NỐI VI ĐIỀU KHIỂN 8051 VỚI BỘ NHỚ DỮ LIỆU
NGOÀI
Ta biết rằng thanh ghi bộ đếm chương trình PC của 8051 là 16 bit và do vậy
có thể truy cập được 2
16
= 64Kb mã chương trình. ở nhiều ví dụ dữ liệu được đặt
trong không gian mã chương trình và dùng lệnh MOVC A, @A+DPTR để lấy dữ
liệu. Chữ C trong lệnh MOVC là từ chữ mã lệnh (Code) để báo rằng dữ liệu được
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 190 -


đặt trong không gian mã lệnh của 8051. Tuy nhiên họ 8051 còn có không gian dữ
liệu riêng biệt.
Vì thanh ghi con trỏ dữ liệu DPTR có độ dài 16 bit nên nó cũng có thể quản
lý được tối đa 64Kb ô nhớ dữ liệu. Như vậy 8051 có tổng cộng 128Kb không gian
địa chỉ, trong đó 64Kb dành cho mã chương trình và 64Kb dành cho dữ liệu.
Không gian chương trình được truy cập nhờ thanh ghi PC, còn không gian dữ liệu
được truy cập nhờ thanh ghi DPTR và một lệnh có tên MOVX (chữ X là từ
External để chỉ không gian bộ nhớ dữ liệu được thực hiện từ bộ nhớ ngoài). Để
chuyển dữ liệu lưu trữ ở bộ nhớ dữ liệu ngoài vào CPU lệnh MOVX A, @DPTR
được thực hiện và lệnh sẽ đọc byte dữ liệu do thanh ghi DPTR trỏ đến. Mặc dù cả
hai lệnh MOVC A, @A+DPTR và MOVX A, @DPTR khá giống nhau về hình
thức, nhưng điểm khác nhau cơ bản một lệnh thực hiện nhận dữ liệu từ vùng nhớ
chương trình, còn lệnh kia thì nhận dữ liệu từ vùng dữ liệu.
Để nối ghép 8051 với bộ nhớ dữ liệu ngoài thì cần sử dụng chân RD để
điều khiển đọc dữ liệu và chân WR để điều khiển ghi dữ liệu. Bộ nhớ dữ liệu có thể
là ROM dữ liệu hoặc RAM dữ liệu. Khi kết nối với ROM dữ liệu thì chỉ cần sử
dụng chân RD (vì bộ nhớ ROM là bộ nhớ chỉ đọc), còn khi kết nối với bộ nhớ
RAM dữ liệu thì cần sử dụng cả 2 chân RD và WR (bộ nhớ RAM vừa cho phép
đọc vừa cho phép ghi dữ liệu).
Ví dụ 1: Hãy vẽ sơ đồ kết nối vi điều khiển 8051 với bộ nhớ ROM dữ liệu
dung lượng 8Kx8 và viết chương trình đọc 30 byte dữ liệu ở bộ nhớ dữ liệu ngoài
từ địa chỉ 1000h đưa ra cổng P1.
Giải:
Sơ đồ kết nối 8051 với bộ nhớ ROM dữ liệu như sau:
Lưu ý rằng ta sử dụng cổng logic để làm bộ giải mã cho ROM dữ liệu tạo ra
địa chỉ vùng dữ liệu từ 0000h – 1FFFh và chân RD của 8051 được nối với chân OE
của ROM dữ liệu.
BM kỹ thuật Vi điều Khiển








ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 191 -

AD4
R3
R
AD1A1
A6
A9
U1
8051
29
30
4020
31
19
18
9
39
38
37
36
35
34

33
32
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
PSEN
ALE
VC CGND
EA

X1
X2
RST
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0

P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
AD6
U5
NOT
12
A5
AD1
A12
A6
C6
33p
A14
A11
RD
A7
AD6
C5
33p
VCC
AD0
VCC
AD5
AD1
A7
U4
NOT

12
RD
A10
AD7
A2
A5
SW1
AD5
VCC
A11
Y1
11.0592
A3
A0
A4
U6
NAND1
1
2
3
4
A15
AD0
AD3
A4AD4A12
AD3
ALE
VCC
A0
A13

AD5
VCC
A9
AD0
AD7
AD3
D1
U2
74LS373
3
4
7
8
13
14
17
18
1
11
2
5
6
9
12
15
16
19
20
10
D0

D1
D2
D3
D4
D5
D6
D7
OE
LE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
VC C
GND
AD2
AD4
AD2
A14
A1
U3
NOT
12
A8
A15
A3

C4
10u
A2
AD6
A13
A8
A10
U7
2764
10
9
8
7
6
5
4
3
25
24
21
23
2
11
12
13
15
16
17
18
19

2814
22
27
1
20
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
O0
O1
O2
O3
O4
O5
O6
O7
VC CGND
OE
PGM
VPP

CE
ALE
AD2
AD7

Sơ đồ kết nối 8051 với ROM dữ liệu 8Kx8
Chương trình được viết như sau:
MOV DPTR, #1000H ;dia chi dau tien ROM
;ngoai
MOV R2, #30 ;so byte can chuyen vao
AGAIN:
MOVX A, @DPTR
MOV P1, A
INC DPTR
DJNZ R2, AGAIN
Ví dụ 2: Vẽ sơ đồ ghép nối 8051 với RAM dữ liệu ngoài 6264 dung lượng
8Kx8 và viết chương trình để 8051 lấy 10 byte dữ liệu được cất từ địa chỉ 1000h
trên RAM dữ liệu ngoài đưa vào RAM nội có địa chỉ từ 30h.
Giải: Sơ đồ kết nối như sau:
Lưu ý rằng ta sử dụng cổng logic để làm bộ giải mã cho RAM dữ liệu tạo ra
địa chỉ vùng dữ liệu từ 0000h – 1FFFh và chân RD, WR của 8051 được nối lần
lượt với chân OE, WE của RAM dữ liệu.
BM kỹ thuật Vi điều Khiển








ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 192 -

A15
A10
AD0
U5
NOT
12
A3
RD
AD1
AD2AD2
C4
10u
A3
A7
A13
VCC
AD6 AD6
A8
A9
A9 A1
A15
D1
VCC
AD5
A14
A10

AD3
AD0
A4
VCC
A2
AD3
AD1
AD5
RD
AD7
A6
A13
U1
8051
29
30
4020
31
19
18
9
39
38
37
36
35
34
33
32
1

2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
PSEN
ALE
VC CGND
EA
X1
X2
RST

P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1

P3.6/WR
P3.7/RD
AD2
AD1
U2
74LS373
3
4
7
8
13
14
17
18
1
11
2
5
6
9
12
15
16
19
20
10
D0
D1
D2
D3

D4
D5
D6
D7
OE
LE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
VC C
GND
AD0
C6
33p
VCC
ALE
A5
U7
6264
10
9
8
7
6
5

4
3
25
24
21
23
2
11
12
13
15
16
17
18
19
2814
22
27
20
26
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9

A10
A11
A12
D0
D1
D2
D3
D4
D5
D6
D7
VC CGN D
OE
WE
CS1
CS2
A6
A0
AD4
AD7
U6
NAND1
1
2
3
4
AD5
VCC
A14
Y1

11.0592
A12
A7
A4
U3
NOT
12
A8 A0
AD4
ALE
C5
33p
SW1
A11
AD6
A12
AD3
A5
AD4
VCC
WR
AD7
A11
U4
NOT
12
A1
A2
WR
R3

R

Sơ đồ kết nối vi điều khiển 8051 với bộ nhớ RAM dữ liệu 6264
Chương trình được viết như sau:
MOV DPTR, #1000H ;dia chi dau tien RAM
;ngoai
MOV R2, #10 ;so byte can chuyen
MOV R0, 30H ;dia chi dau tien RAM noi
AGAIN:
MOVX A, @DPTR
MOV @R0, A
INC DPTR
INC R0
DJNZ R0, AGAIN
Trường hợp muốn ghép nối nhiểu ROM, RAM thì chúng ta phải sử dụng vi
mạch giải mã 74LS138 để giải mã cho từng IC như ví dụ dưới đây.
Ví dụ 3: Sử dụng một vi mạch giải mã 74LS138 để thiết kế mạch giải mã địa
chỉ tạo ra các tín hiệu chọn chip và thực hiện vẽ sơ đồ ghép nối vi điều khiển 8051
với bộ nhớ tương ứng.

BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng

- 193 -

Tín hiệu
chọn chip
Vùng địa chỉ
Đặc tính
truy xuất

Loại bộ nhớ
Dung lượng
0CS

0000H - 3FFFH
PSEN
EPROM 27128
16Kx8
1CS

4000H - 7FFFH
PSEN
EPROM 27128
16Kx8
2CS

8000H - 9FFFH
WR,RD

HM6264B
8Kx8
Giải:

Trước hết chúng ta hãy phân tích về vùng nhớ của từng IC trên.
- EPROM 27128 (16Kx8) có 14 chân địa chỉ từ A0 – A13 vì 16K = 2
4
.2
10

= 2
14
byte.
- IC này có thể địa chỉ được 2
14
byte = 2
14
ô nhớ = 4000h ô nhớ. Nên nếu
địa chỉ của ô nhớ đầu tiên là 0000h thì địa chỉ của ô nhớ cuối cùng phải
là 3FFFh.
- HM6264B (8Kx8) là RAM có 13 chân địa chỉ từ A0 – A12 vì 1K = 2
10

byte=> 8KB= 2
3
.2
10
= 2
13
byte.
Bảng phân chia vùng nhớ được xác định như sau:
IC
A
15


A
14

A
13

A
12

A
11

A
10

A
9
A
8
A
7
A
6
A
5
A
4
A
3

A
2
A
1
A
0
Địa
chỉ
IC1
0

0
0

0
0

1
0

1
0

1
0

1
0

1

0

1
0

1
0

1
0

1
0

1
0

1
0

1
0

1
0

1
0

1

IC2
0

0
1

1
0

1
0

1
0

1
0

1
0

1
0

1
0

1
0


1
0

1
0

1
0

1
0

1
0

1
0

1
0

1
IC3
1

1
0

0
0


0
0

1
0

1
0

1
0

1
0

1
0

1
0

1
0

1
0

1
0


1
0

1
0

1
0

1
0

1
Những vùng có địa chỉ thay đổi đã được đánh dấu như trên bảng trên.
Những vùng này sẽ được đưa vào những chân địa chỉ tương ứng của từng IC. ở đây
ta sử dụng 3 IC nhớ, do vậy sẽ dùng 3 chân đầu ra của IC giải mã 74LS138 là Y0,
Y1, Y2. Đối chiếu với bảng trạng thái của IC này (xem phần các mạch phụ trợ)
thấy chân C luông bằng 0, do vậy chân này sẽ được nối xuống Mass. Ta sẽ sử dụng
2 chân địa chỉ cao là A14 và A15 để phối hợp với A và B tạo ra các tín hiệu chọn
chip.
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên

Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 194 -

Sơ đồ kết nối như sau:
A12
A14
D1AD1
A10
A3
VCC
D0A0
A7
ALE
Y2
WR
A3
A2
A11
AD6
PSEN
AD0
A5
A7
A9
A0
AD7
AD2
A11
U72
74LS138

1
2
3
15
14
13
12
11
10
9
7
1 68
6
4
5
A
B
C
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
V C CG N D
G1
G2A
G2B

A11
A15
A12
VCC
A0
A12
VCC
AD4
U71
27128
10
9
8
7
6
5
4
3
25
24
21
23
2
26
1
11
12
13
15
16

17
18
19
28
14
20
22
27
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
VPP
D0
D1
D2
D3
D4
D5
D6

D7
V C C
GND
CE
OE
PGM
D1
A13
A8
A3
A11
A8
SW1
Y1
AD1
A4
A2
A1
A9
A7
Y1
A12
VCC
D2
A5
D1
VCC
AD3
Y0
D6

AD2
A6
D4
A7
A2
AD6
R3
R
PSEN
A1
U70
HM6264B
10
9
8
7
6
5
4
3
25
24
21
23
2
11
12
13
15
16

17
18
19
281 4
22
27
20
26
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
D0
D1
D2
D3
D4
D5
D6
D7
V C CG N D

OE
WE
CS1
CS2
C6
33p
C4
10u
A9
AD5
Y0
A4
AD3
Y1
11.0592
A14
D3
A10
AD2
A6
A8
U65
8051
29
30
402 0
31
19
18
9

39
38
37
36
35
34
33
32
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15

16
17
PSEN
ALE
V C CG N D
EA
X1
X2
RST
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12

P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
U66
74LS373
3
4
7
8
13
14
17
18
1
11
2
5
6
9
12
15
16

19
20
10
D0
D1
D2
D3
D4
D5
D6
D7
OE
LE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
V C C
GND
D5
D2
A13
A10
A12
U71
27128

10
9
8
7
6
5
4
3
25
24
21
23
2
26
1
11
12
13
15
16
17
18
19
28
14
20
22
27
A0
A1

A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
VPP
D0
D1
D2
D3
D4
D5
D6
D7
V C C
GND
CE
OE
PGM
VCC
A10
A1
VCC

A1
VCC
A8
A9
A8
VCC
RD
D5
A14
AD7
AD5
A12
A9
Y2
AD4
AD0
A10
A3
A4A4
ALE
A13
AD5
A13
D4
A10
AD7
AD0
A5
A15
AD6

AD1
D0
A6
VCC
A14
D7
A8
D7
A2
WR
A15
C5
33p
AD3
A15
A6
RD
U67
74LS245
2
3
4
5
6
7
8
9
19
1
18

17
16
15
14
13
12
11
20
10
A0
A1
A2
A3
A4
A5
A6
A7
G
DIR
B0
B1
B2
B3
B4
B5
B6
B7
V C C
GND
AD4

A0
VCC
A11
A11
PSEN
A9
A5
D3
D6
A13

Sơ đồ kết nối 8051 với bộ nhớ chương trình và dữ liệu ngoài.
Trong sơ đồ ta sử dụng một IC đệm bus là 74LS245 mục đích để tăng công
suất cho bus (xem phần các mạch phụ trợ).
4.2. GHÉP NỐI SONG SONG VÀ LẬP TRÌNH
4.2.1. TỔNG QUAN
Sau khi đơn vị xử lý trung tâm đã thu thập và xử lý thông tin, nó cần trao
đổi tín hiệu điều khiển hoặc số liệu đến các thiết bị ngoại vi khác nhau, quá trình
đó gọi là quá trình vào/ra dữ liệu . Sự ghép nối với các thiết bị ngoại vi để vào/ra
dữ liệu được thực hiện thông qua các mạch logic nối với các BUS của hệ vi xử lý.
Các mạch logic này được gọi là các bộ ghép nối vào/ra (Interface).
Trong kiểu ghép nối song song các bit dữ liệu được truyền song song đồng
thời. Kiểu ghép nối này có ưu điểm là tốc độ trao đổi thông tin lớn nhưng có nhược
điểm là phải có nhiều đường dây truyền dữ liệu và các tín hiệu điều khiển, vì vậy
nó chỉ thích hợp đối với việc trao đổi thông tin nội bộ hoặc trao đổi thông tin với
các thiết bị ngoại vi có khoảng cách gần.
Với vi điều khiển đã có sẵn các cổng vào/ra. Nhưng trong trường hợp yêu
cầu kỹ thuật đòi hỏi nhiều cổng vào/ra hơn hoặc đã sử dụng một số cổng để ghép
nối với bộ nhớ. Lúc đó chúng ta cần phải ghép thêm các thiết bị để tăng số lượng
cổng vào/ra.

Một trong những vi mạch ghép nối song song được sử dụng rộng rãi nhất
hiện nay là IC 8255A. 8255A là một vi mạch ghép nối được dùng rất phổ biến cho
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 195 -

các hệ vi xử lý 8 - 16 bit. Nó cho phép giao tiếp mềm dẻo trong nhiều ứng dụng
thực tế với nhiều cửa vào ra. Đối với các hệ vi xử lý nhỏ, 8255A có thể nối trực
tiếp với các mạch vi xử lý. Trong các hệ thống lớn hơn, việc ghép nối chỉ cần thêm
một số mạch tối thiểu. Đó là một trong những tính chất quan trọng của bộ ghép nối
8255A.
Tính linh hoạt của vi mạch này thể hiện ở khả năng lập trình. Qua một thanh
ghi điều khiển, người sử dụng có thể đặt chế độ hoạt động và cấu hình của các cửa
vào ra. Các chân số liệu tạo nên BUS dữ liệu theo hai hướng, rộng 8 bit. Tất cả các
dữ liệu khi truy nhập đọc hoặc ghi được dẫn qua các đường dẫn này.
4.2.2. GHÉP NỐI 8051 VỚI 8255A
4.2.2.1. Chức năng các chân của 8255A
8255A là một chip DIP 40 chân (Sơ đồ chân hình 4.1.1a và sơ đồ khối
hình 4.1.1b). Có 3 cổng truy cập riêng biệt. Cổng A, cổng B, cổng C và đều là
các cổng 8 bit. Các cổng này có thể là các cổng vào hoặc ra và có thể thay đổi
một cách linh hoạt.
- Các chân từ PA0 – PA7: Có thể lập trình thanh 8 bit đầu vào hoặc 8 bit

đầu ra hoặc cả 8 bit hai chiều vào/ra.
- Các chân từ PB0 – PB7: Có thể lập trình thanh 8 bit đầu vào hoặc 8 bit
đầu ra hoặc cả 8 bit hai chiều vào/ra.
- Các chân từ PC0 – PC7: Có thể lập trình thanh 8 bit đầu vào hoặc 8 bit
đầu ra. 8 Bit này cũng có thể được chia thành hai phần: Các bit cao (PC4
– PC7) là PCH và các bit thấp (PC0 – PC3) là PCL. Mỗi phần có thể
được dùng làm đầu vào hoặc đầu ra.
- Các chân
RD

WR
: Đây là hai chân điều khiển tích cực ở mức thấp tới
8255A được nối từ
RD
,
WR
của vi xử lý. Đó là các tín hiệu điều khiển
đọc, ghi. Khi tín hiệu chọn chip (
CS
) tích cực ở mức thấp (
CS
= 0) và
RD
= 0 thì các tín hiệu của cổng được chọn dẫn đến Bus dữ liệu và có
thể được gọi bởi các vi mạch khác. Khi
WR
= 0 thì mọi việc xảy ra
ngược lại dữ liệu từ Bus dữ liệu được đưa đến cổng đã chọn.
- Các chân D0 – D7: Là các chân dữ liệu của 8255A. Các chân này được
nối tới các chân dữ liệu của vi xử lý để cho phép nó trao đổi dữ liệu giữa

vi xử lý và chip 8255A.
- Chân RESET: Đây là đầu vào tín hiệu tích cực ở mức cao tới 8255A.
Được dùng để xoá thanh ghi điều khiển. Khi RESET được kích hoạt thì
tất cả các cổng được kích hoạt lại như cổng đầu vào. Trong nhiều thiết
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 196 -

kế thì chân này được nối đất để không kích hoạt nó hoặc nó cũng có thể
để hở.
- Các chân A0, A1,
CS
: Chân
CS
tích cực ở mức thấp. Khi
CS
được
chọn thì nó cùng với A1, A0 chọn các cổng riêng biệt. Các chân này
dùng để truy cập các cổng A, B, C hoặc các thanh ghi điều khiển theo
bảng dưới đây (Bảng 5.4.2a).
Bảng 5.4.2a. Phối hợp
CS

và A
1
A
2
chọn cổng
CS
A
0
A
1
Chọn cổng
0 0 0 Cổng A
0 0 1 Cổng B
0 1 0 Cổng C
0 1 1 Thanh ghi điều khiển
1 x x 8255 không được chọn
Sau đây là bảng phối hợp các chân
CS
, A, 1 A2,
RD

WR
để tạo ra
chức năng các cổng và thanh ghi điều khiển của 8255A.
Bảng 5.4.2b. Các lệnh chọn cổng và thanh ghi của 8255
CS
A
0
A
1

RD

WR
Chức năng
0 0 0 0 1
Cổng A → Bus dữ liệu
0 0 1 0 1
Cổng B→ Bus dữ liệu
0 1 0 0 1
Cổng C→ Bus dữ liệu
0 0 0 1 0
Bus dữ liệu → Cổng A
0 0 1 1 0
Bus dữ liệu → Cổng B
0 1 0 1 0
Bus dữ liệu → Cổng C
0 1 1 1 0 Ghi vào từ điều khiển
1 x x x x Đường dẫn dữ liệu ở trạng thái điện trở cao
0 x x 1 1 Đường dẫn dữ liệu ở trạng thái điện trở cao


BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên

Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 197 -


Hình 4.1.1a. Sơ đồ chân của 8255A

Hình 4.1.1b Sơ đồ khối của 8255A
4.2.2.2. Chọn chế độ của 8255A
Trong khi các cổng A, B, C được dùng để xuất/nhập dữ liệu thì thanh ghi
điều khiển phải được lập trình để chọn chế độ làm việc cho các cổng này. Các
cổng của 8255A có thể được lập trình theo một trong các chế độ dưới đây.
PB
PA3

PA2

PA1

PA0

P1.4

P1.5

GN
A1

A0

PA

PA
PA
W
RESE
TTTT
D
V
C
PA
1

2

3

5

6

4

7

8

9

11

12


10

13

14

15

17

18

16

19

20

40

39

38

36

35

37


34

33

32

30

29

31

28

27

26

24

23

25

22

21



8
2
5
5
A
D
D
D
D
D
D
D
PB
PB
PB
PB
PB
PC
PC6

PC5

PC4

PC0

PC1

PC
PC

PB0

PB1

PA

PB

PC



8255
A0

A1

RESET

CS

WR

RD

D7

D0

§Öm



liÖu

L
ogic

®iÒu
khiÓn
®äc
ghi
§iÒu

khiÓn
nhãm
A
§iÒu

khiÓn
nhãm
B
Cöa A

(8)
Cöa C

nöa cao
(4)

Cöa C


nöa thÊp

(4)

Cöa B

(8)
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 198 -

 Chế độ 0: Vào/ra thông thường
- Các cửa A, B, C được làm việc độc lập nhau.
- Các cửa A, B, C có thể là cửa vào hoặc ra tuỳ theo chế độ trong thanh
ghi điều khiển (ra số liệu được chốt, vào không chốt).
- Không có sự đối thoại giữa vi xử lý với thiết bị ngoại vi. Nếu muốn có
tín hiệu đối thoại phải dùng các bit của một cửa nào đó (thường là cửa C)
bằng cách xác lập từng bit PCi. Khi đó cửa C được xem như là hai cửa 4
bit với khả năng lập/xoá từng bit.
 Chế độ 1: Chốt vào/ra
Chia làm hai nhóm.

- Nhóm A: Gồm cửa A để trao đổi số liệu và nửa C cao (PC4 - PC7) để
đối thoại với vi xử lý và thiết bị ngoại vi của cửa A.
- Nhóm B: Gồm cửa B để trao đổi số liệu và nửa C thấp (PC0 - PC3) để
đối thoại với vi xử lý và thiết bị ngoại vi của cửa B.
 Chế độ 2: Bus hai chiều
Chỉ dùng cho cửa A với số liệu vào/ra 2 chiều tạo thành một Bus chứa:
- Cửa A (Bus hai chiều).
- 5 đường điều khiển (PC3 – PC7).
- Logic điều khiển.
- Vào và ra đều chốt.
Việc chọn chế độ làm việc cho 8255A được thực hiện nhờ thanh ghi từ
điều khiển. Đối với 8255A có hai loại từ điều khiển: Từ điều khiển cấu hình của
các cổng (hình 5.4.2b) và từ điều khiển việc lập/xoá các bit ở đầu ra PC (hình
5.4.2c).

1 = I/O Mode

0 = BSR
Mode

Mode Selection

00 = Mode 0
01 = Mode 1
1x = Mode2
Port A
1 = Input
0 = Output

Port C (Upper

PC7 - PC4)
1 = Input
0 = Output
Mode
Selcction
0 = Mode 0
1 = Mode 1
Port B
1 = Input
0 = Output
Port C (Lowe
PC3 – PC0)
1 = Input
0 = Output
Group A

Group B

D7 D6 D5 D4 D3 D2 D1 D0
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 199 -


Hình 5.4.2b. Từ điều khiển cấu hình của 8255A.

Hình 5.4.2c. Từ điều khiển lập/xoá các bit PCi của 8255A.
Ví dụ 1: Hãy tìm từ điều khiển cho 8255A cho các cấu hình sau:
Tất cả các cổng A, B, C đều là các cổng ra (chế độ 0).
PA là đầu vào, PB là đầu ra, PCL bằng đầu vào và PCH là đầu ra.
Giải:
Từ hình 5.4.2b ta có:
- Trường hợp 1 có từ điều khiển là: 1000 0000 = 80H
- Trường hợp 2 có từ điều khiển là: 1001 0001 = 91H
Ví dụ 2: Cho sơ đồ ghép nối 8081 với 8255A (hình 5.4.2d) hãy:
a) Tìm các địa chỉ vào/ra được gán cho các cổng A, B, C và thanh ghi điều
khiển.
b) Hãy lập trình 8255A cho các cổng A, B, C thành các cổng ra.
c) viết một chương trình để gửi 55H và AAH đến cổng ra một cách liên tục.
Giải:
a) Giả sử trong sơ đồ trên ta sử dụng 16 bit địa chỉ (A0 – A15), ta sẽ có địa
chỉ cơ sở dành cho 8255A như sau:
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Địa chỉ
x 1 x x x x x x x x x x x x 0 0
=4000H
(PA)
x 1 x x x x x x x x x x x x 0 1
=4001H
(PB)
x 1 x x x x x x x x x x x x 1 0
=4002H
(PC)
x 1 x x x x x x x x x x x x 1 1

=4003H
(CR)
b) Từ điều khiển cho 8255A cho cấu hình: Tất cả các cổng A, B, C đều là
các cổng ra (chế độ 0) là 80H (đã trình bày ở ví dụ 1).
c) Viết chương trình để gửi 55H và AAH đến cổng ra một cách liên tục.
MOV A, #80H ;tu dieu khien
0 x x x Bit Select S/R
BSR
Mode

D7

D6

D5

D4

D3

D2

D1

D0

Not Used.
Generally = 0.
000 = Bit0 100 = Bit4
001 = Bit1 101 = Bit5

010 = Bit2 110 = Bit6
011 = Bit3 111 = Bit7
Set=1
Reset=0
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 200 -

MOV DPTR, #4003H ;nap d/c cong cua
;thanh ghi dieu khien
MOVX @DPTR, A ;xuat tu dieu khien
MOV A, #55H ;gan A = 55
AGAIN: MOV DPTR, #4000H ;dia chi cong PA
MOVX @DPTR, A ;dua ra cong PA
INC DPTR ;dia chi cong PB
MOVX @DPTR, A ;dua ra cong PB
INC DPTR ;dia chi cong PC
MOVX @DPTR, A ;dua ra cong PC
CPL A ;dao gtri cua A (A=AAH)
ACALL DELAY ;tao tre
SJMP AGAIN ;tiep tuc


Hình 5.4.2d: Nối ghép 8051 với 8255A cho ví dụ 2
Ví dụ 3: Cho sơ đồ ghép nối 8051 với 8255A như hình vẽ (hình 5.4.2e),
hãy:
a) Tìm địa chỉ cổng vào/ra được gán cho các cổng A, B, C và thanh ghi
điều khiển.
b) Tìm từ điều khiển cho trường hợp PA là đầu ra, PB là đầu vào, PC0 –
PC3 là đầu vào, PC4 – PC7 là đầu ra.
c) Viết chương trình để nhận dữ liệu từ PB gửi ra PA. nhận dữ liệu từ PCL
gửi ra PCH.
Giải:
a) Từ sơ đồ ghép nối ta được bảng sau:
8051

AD7

P0.0

P0.7

ALE

P
3.7

P
3.6

RD

74LS373


L
E

OC

Q

D

A0

A1

AD0

8255
WR

CS

WR

RD

P
2.7

PA


PB

PC

A1

D7

D0

A0

D7

D0

A14

BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 201 -


A7 A6 A5 A4 A3 A2 A1 A0 Đ/c cổng, CR
x x 1 x x x 0 0 = 20H (PA)
x x 1 x x x 0 1 = 21H (PB)
x x 1 x x x 1 0 = 22H (PC)
x x 1 x x x 1 1 = 23H (CR)


Hình 5.4.2e: Nối ghép 8051 với 8255A cho ví dụ 3
b) Từ điều khiển cho trường hợp PA là đầu ra, PB là đầu vào, PC0 – PC3 là
đầu vào, PC4 – PC7 là đầu ra là: 1000 0011B = 83H.
c) Viết chương trình để nhận dữ liệu từ PB gửi ra PA. nhận dữ liệu từ PCL
gửi ra PCH.
CR EQU 83H ;thanh ghi tu dieu khien
APORT EQU 20H ;dia chi cong A
BPORT EQU 21H ;dia chi cong B
CPORT EQU 22H ;dia chi cong C
CRPORT EQU 23H ;dia chi t.ghi d.khien

MOV A, #CR ;PA, PCH la cong vao, PB,
;PCL la cong ra
MOV R0, #CRPORT ;nap dia chi cong thanh ghi
;dieu khien
MOVX @R0, A ;xuat tu dieu khien
MOV R0, #BPORT ;nap dia chi PB
MOVX A, @R0 ;doc PB
DEC R0 ;chi den PA (R0 = 20H)
8051

AD7


P0.0

P0.7

ALE

P
3.7

P
3.6

RD

74LS373

LE

OC

Q

D

D0

D7

A0


A1

D0

AD0

A0

A1

8255
A

WR

CS

WR

D7

RD

PA

PB

PC
L


RES

A2

A7

PCU

BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 202 -

MOVX @R0, A ;gui ra PA
MOV R0, #CPORT ;nap dia chi PC
MOVX A, @R0 ;doc PC
ANL A, #0FH ;che phan cao (duoc PCL)
SWAP A ;trao doi phan cao va phan thap
MOVX @R0, A ;gui den PCH
Đối với hệ thống cần nhiều 8255A ta sử dụng mạch giải mã 74LS138 để
giải mã như sơ đồ dưới đây:

Hình 5.4.2f. Sử dụng 74LS138 để ghép nối nhiều vi mạch 8255A

Ví dụ 4: Cho sơ đồ hình 5.4.2g, hãy lập trình cho 8255A để:
a) Đặt PC1 lên cao.
b) Sử dụng PC2 để tạo xung vuông liên tục với độ dày xung là 50%

Hình 5.4.2f. Hình vẽ mô tả cho ví dụ 4
Giải:
a) Đặt PC1 lên cao: Từ hình vẽ 5.4.2c ta tìm ra được từ điểu khiển ở chế độ
lập bit PC1 như sau: 0000 0011B
MOV R0,#CRPORT;nap dia chi thanh ghi dieu khien
MOV A, #00000011 ;chon PC1 = 1
MOVX @R0, A ;dat PC1 len cao (PC1 = 1)
b) Sử dụng PC2 để tạo xung vuông liên tục với độ dày xung là 50%
AGAIN: MOV R0, #CRPORT ;nap dia chi cong
;thanh ghi dieu khien
MOV A, #00000101 ;chon PC2 = 1
MOVX @R0, A ;dat PC2 len cao
A2

A3

A4

A5

A6

A7

G1


A0

A1

Y2

8255A

A

B

C

A2G

B2G

CS

Mạch
giảI mã
A2

A7

D0

D7


CS
WR
RD
RD
WR
A0

A1

A7

A0

PCi

8255

BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 203 -

ACALL DELAY ;thoi gian giu cham

MOV A, #00000100 ;chon PC2 = 0
MOVX @R0, A ;dat PC2 xuong thap
ACALL DELAY ;thoi gian giu cham
SJMP AGAIN ;lap lai
Ví dụ 5: Hãy sử dụng mạch giải mã 74LS138 để giải mã chọn chip
8255A với địa chỉ cơ sở của cổng là 20h. Viết chương trình để điều khiển các 7
LED nối trên cổng PB (từ PB0 – PB6) sáng theo quy luật từ trái qua phải.
Giải:
ORG 0000H
CR EQU 80H ;PA, PB, PC LA CONG RA
APORT EQU 20H ;DIA CHI CONG A
BPORT EQU 21H ;DIA CHI CONG B
CPORT EQU 22H ;DIA CHI CONG C
CRPORT EQU 23H ;DIA CHI THANH GHI DIEU KHIEN

MOV R0, #CRPORT ;nap dia chi thanh ghi dieu
khien
MOV A, #CR
MOVX @R0, A ;xuat gia tri CR toi thanh ghi dk
SANGLED:
MOV R0, #BPORT ;nap dia chi cong B
MOV A, #00H ;tat cac LED
LAP: SETB C ;dat co CY
MOVX @R0, A ;dua A toi cong ra
ACALL DELAY ;tao tre
RLC A ;xoay trai A
JNC LAP ;tiep tuc sang cac LED
SJMP SANGLED ;lap lai chu ky ban dau
DELAY: MOV R3, #100 ;tao thoi gian tre
HERE2: MOV R4, #255 ;dat R4 = 255

HERE: DJNZ R4, HERE ;R4 = 0
DJNZ R3, HERE2
RET
END
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 204 -

A[8 15]
D[0 7]
D0ALE
WR
RD
D1
D2
D3
D4
D5
D6P3.0
D7P3.1
ALEP3.4
A0 A2

A1 A3
A2 A4
A3
A4
A5 A5
A6 A6
A7 A7
Y0
Y0 D0
Y1 D1
Y2 D2
Y3 D3
Y4 D4
Y5 D5
Y6 D6
Y7 D7
RD
WR
A0
A1
D0
D1
D2
D3
D4
D5
D6
D7
PB0
PB1

PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC3
PC4
PC5
PC6
PC7
PB0
PB1
PB3
PB4
PB5
PB6
PC2
PB2
P3.2
P3.3
P3.5
PA0
PA7
PA6
PA5
PA4
PA3

PA2
PA1
XTAL2
18
XTAL1
19
RST
9
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
AD[0 7]
A[8 15]
ALE
30
EA
31

PSEN
29
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
U1
AT89C51
11.0592MHz
C1
33pF
C2
33pF
C3
100uF
R1
0.5k
VCC

D0
3
Q0
2
D1
4
Q1
5
D2
7
Q2
6
D3
8
Q3
9
D4
13
Q4
12
D5
14
Q5
15
D6
17
Q6
16
D7
18

Q7
19
OE
1
LE
11
U2
74LS373
A
1
B
2
C
3
E1
6
E2
4
E3
5
Y0
15
Y1
14
Y2
13
Y3
12
Y4
11

Y5
10
Y6
9
Y7
7
U3
74LS138
D0
34
D1
33
D2
32
D3
31
D4
30
D5
29
D6
28
D7
27
RD
5
WR
36
A0
9

A1
8
RESET
35
CS
6
PA0
4
PA1
3
PA2
2
PA3
1
PA4
40
PA5
39
PA6
38
PA7
37
PB0
18
PB1
19
PB2
20
PB3
21

PB4
22
PB5
23
PB6
24
PB7
25
PC0
14
PC1
15
PC2
16
PC3
17
PC4
13
PC5
12
PC6
11
PC7
10
U4
8255A
2
3
4
5

6
7
8
9
1
RP1
10k
VCC
2
3
4
5
6
7
8
1
RP2
10k
VCC

Sơ đồ kết nối 8051 với 8255A thông qua mạch chốt 74LS373 và giải mã 74LS138
4.3. PHỐI GHÉP VI ĐIỀU KHIỂN VỚI THẾ GIỚI THỰC 1: PHỐI
GHÉP 8051 VỚI MÀN HÌNH TINH THỂ LỎNG LCD, CHUYỂN ĐỔI
TƯƠNG TỰ – SỐ ADC VÀ CẢM BIẾN NHIỆT
4.3.1. PHỐI GHÉP VI XỬ LÝ VỚI MÀN HÌNH TINH THỂ LỎNG
LCD
Ngày nay trong lĩnh vực thông tin và giải trí, việc dùng màn hình ống tia ca
tốt truyền thống (CRT) đang dần được thay thế bằng việc sử dụng màn hình tinh
thể lỏng (LCD - Liquid Crystal Display). Vì LCD có nhiều ưu điểm vượt trội
như: Độ dày màn hình nhỏ hơn rất nhiều , Kích thước đa dạng từ loại màn hình nhỏ

tới màn hình cực lớn, Tiêu thụ ít năng lượng và không nguy hiểm bằng CRT.

LCD dùng trong thông tin giải trí
(Màn hình Tivi, máy vi tính)
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 205 -


LCD dùng trong truyền thông

(Màn hình điện thoại, hiển thị của hệ
thống chuyên dụng)
Ở phần này chúng ta chỉ xét tới LCD loại nhỏ và việc dùng LCD để hiển thị
của hệ thống chuyên dụng và đi nghiên cứu cách ghép nối LCD với 8051 và lập
trình.
4.3.1.1. Mô tả chân của LCD
LCD có tổng số 14 chân chia làm 3 nhóm (hình 4.3.1a):
Nhóm1:(3chân) Cấp nguồn VDD, VSS: cấp 5V, 0V
VEE: thay đổi điện áp để thay đổi độ tương phản.
Nhóm 2: (8 chân) Vào ra thông tin với VĐK: Từ chân D0-D7
Nhóm 3:(3 chân) Điều khiển việc vào ra thông tin: E, RS, R/W

E:(bật /tắt) (cho phép/ không cho phép trao đổi thông tin với
VĐK)
RS:(loại thông tin trao đổi)Thông tin trao đổi là lệnh điều
khiển hay là dữ liệu để hiển thị
- Vcc, Vss, VEE: Vcc và Vss là chân nguồn +5V và chân đất. Còn VEE
được dùng để điều khiển độ tương phản của LCD.
- RS (Register Select) – Chọn thanh ghi: Có hai thanh ghi rất quan trọng
bên trong CPU. Chân RS được dùng để chọn các thanh ghi này. Nếu RS
= 0 thì thanh ghi mã lệnh được chọn, cho phép người dùng gửi một lệnh
chẳng hạn như xoá màn hình, đưa con trỏ về đầu dòng, … Nếu RS = 1
thì thanh ghi dữ liệu được chọn và cho phép người dùng gửi dữ liệu cần
hiển thị lên LCD.
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 206 -


Hình 4.3.1a. Sơ đồ chân của LCD 14 chân
- R/W (Read/Write) – Chân đọc/ghi: cho phép người dùng đọc/ghi thông
tin từ/lên LCD. Nếu R/W = 1 thì đọc dữ liệu , nếu R/W = 0 thì ghi dữ
liệu
- E (Enable) – Chân cho phép: được sử dụng để chốt thông tin hiển thị có

trên chân dữ liệu. Khi dữ liệu được cấp đến chân dữ liệu thì một xung từ
mức cao xuống mức thấp được áp đến chân E để LCD chốt dữ liệu trên
chân dữ liệu. Xung này phải rộng tối thiểu 450ns.
- D0 – D7: Đây là các chân dữ liệu 8 bit, được dùng để gửi thông tin lên
LCD hoặc đọc nội dung của các thanh ghi trong LCD.
Để hiển thị chữ cái và con số mã ASCII của chúng được gửi đến chân
này khi bật RS = 1. Từ những đặc điểm và chức năng đã được đề cập ở trên ta
có thể đi tới việc hình thành việc ghép nối của LCD với vi điều khiển như sau:

4.3.1.2. Bảng lệnh của LCD
Cũng có các mã lệnh được gửi đến LCD để xoá màn hình hoặc đưa con
trỏ về đầu dòng hoặc nhấp nháy con trỏ, … Bảng 4.3.1b
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 207 -


Mã (Hex) Lệnh đến thanh ghi của LCD
1 Xoá màn hình hiển thị
2 Trở về đầu dòng
4 Dịch con trỏ sang trái
6 Dịch con trỏ sang phải

5 Dịch hiển thị sang phải
7 Dịch hiển thị sang trái
8 Tắt con trỏ, tắt hiển thị
A Tắt hiển thị, bật con trỏ
C Bật hiển thị, tắt con trỏ
E Bật hiển thị, nhấp nháy con trỏ
F Tắt con trỏ, nhấp nháy con trỏ
10 Dịch vị trí con trỏ sang trái
14 Dịch vị trí con trỏ sang phải
18 Dịch toàn bộ hiển thị sang trái
1C Dịch toàn bộ hiển thị sang phải
80 Đưacon trỏ về đầu dòng thứ nhất
C0 Đưa con trỏ về đầu dòng thứ hai
38 Hai dòng ma trận 5x7
Bảng 4.3.1b. Mã lệnh LCD
Bảng 5.6.1b được trích từ bảng 4.3.1c là bảng liệt kê lệnh chi tiết của
LCD
Lệnh
RS

R/W

DB7

DB6

DB5

DB4


DB3

DB2

DB1

DB0

Mô tả
Thời
gian thực
hiện
Xoá
màn
hình
0 0 0

0 0 0 0 0 0 1
Xoá toàn bộ màn hình
và đặt địa chỉ 0 của
DD RAM vào bộ đếm
địa chỉ
1.64 µs
Trở về
đầu
dòng
0 0 0

0 0 0 0 0 1 -
Đặt địa chỉ 0 của DD

RAM như bộ đếm địa
chỉ. Trả hiển thị dịch
về vị trí Nguồn DD
RAM không thay đổi
1.64 µs
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 208 -

Đặt
chế độ
truy
nhập
0 0 0

0 0 0 0 1
1
/
D

S
Đặt hướng chuyển dịch

con trỏ và xác định
dịch hiển thị các thao
tác này được thực hiện
khi đọc và ghi dữ liệu
40 µs
Điều
khiển
Bật/tắt
hiển thị

0 0 0

0 0 0 1 D

C

B
Đặt Bật/ tắt màn hình
(D) Bật/ tắt con trỏ (C)
và nhấp nháy ký tự ở
vị trí con trỏ (B)
40 µs
Dịch
hiển thị
và con
trỏ
0 0 0

0 0 1
S

/
C

R
/
L

- -
Dịch con trỏ và dịch
hiển thị mà không thay
đổi DD RAM
40 µs
Đặt
chức
năng
0 0 0

0 1
D
L

N

F

- -
Thiết lập độ dài dữ liệu
(DL) số dòng hiển thị
(L) và phòng ký tự (F)
40 µs

Đặt địa
chỉ
CGRA
M
0 0 0

1 AGC
Thiết lập địa chỉ C6
RAM dữ liệu CG
RAM được gửi đi và
nhận sau thiết lập này
40 µs
Thiết
lập địa
chỉ DD
RAM
0 0 1

ADD
Thiết lập địa chỉ DD
RAM dữ liệu DD
RAM được gửi và
nhận sau thiết lập này
40 µs
Cờ bận
đọc và
địa chỉ
0 1
B
F


ADD
Cờ bận đọc (BF) báo
hoạt động bên trong
đang được thực hiện và
đọc nội dung bộ đếm
địa chỉ
40 µs
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 209 -

Ghi dữ
liệu
CG
hoặc
DD
RAM
1 0 Ghi dữ liệu
Ghi dữ liệu vào DD
RAM hoặc CG RAM
40 µs

Đọc dữ
liệu
CG
hoặc
DD
RAM
1 1 Đọc dữ liệu
Đọc dữ liệu vào DD
RAM hoặc CG RAM
40 µs
Bảng 4.3.1c là bảng liệt kê lệnh chi tiết của LCD.
Ghi chú: Các ký hiệu viết tắt trong bảng là:
DD RAM: RAM dữ liệu hiển thị (Display Data RAM)
CG RAM: RAM máy phát ký tự (Character Generator RAM)
AGC: Địa chỉ của RAM máy phát ký tự.
ADD: Địa chỉ của RAM dữ liệu hiển thị phù hợp địa chỉ con
trỏ.
1/D = 1: Tăng 1/D = 0: Giảm
S = 1: Kết hợp dịch hiển thị
S/C = 1: Dịch hiển thị S/C = 0: Dịch con trỏ
R/L = 1: Dịch sang phải R/L = 0: Dịch sang trái
DL = 1: 8 bit DL = 0: 4 bit
N = 1: 2 dòng N = 0: 1 dòng
F = 1: Ma trận điểm 5x10 F = 0: Ma trận điểm 5x7
BF = 1: Bận BF = 0: có thể nhận lệnh
4.3.1.3. Lập trình gửi/nhận dữ liệu đến/từ LCD
Chúng ta có thể gửi mã lệnh hoặc dữ liệu đến LCD bằng cách gửi có trễ
(thời gian) hoặc gửi có kiểm tra cờ bận. Với phương pháp gửi kiểm tra cờ bận
(bit D7) trong trường hợp D7 = 1 (cờ bận bằng 1) có nghĩa là LCD đang bận
các công việc bên trong và không nhận bất kỳ thông tin mới nào, còn nếu D7 =

0 thì LCD sẵn sàng nhận thông tin mới. Trong mọi trường hợp cần kiểm tra cờ
bận trước khi ghi bất kỳ dữ liệu nào lên LCD.
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 210 -

 Gửi có trễ lệnh và gửi dữ liệu đến LCD
Để gửi bất kỳ một lệnh nào ở bảng 4.3.1b đến LCD, cần đưa chân RS =
0, còn để gửi dữ liệu thì đặt RS = 1. Sau đó gửi một sườn xung cao xuống thấp
đến chân E để cho phép chốt dữ liệu trong LCD. Với phương pháp này chúng ta
cần phải lưu ý rằng luôn phải đặt một độ trễ lớn trong quá trình xuất dữ liệu
hoặc lệnh ra LCD.
Ví dụ: Ghép nối 8051 với LCD như hình vẽ, hãy lập trình thực hiện công
việc sau:
- Ghi lệnh chọn LCD 2 dòng, ma trận 5x7.
- Hiển thị màn hình và con trỏ.
- Xoá LCD.
- Dịch con trỏ sang phải.
- Hiển thị liên tục dòng chữ “BM KY THUAT VDK !”
XTAL2
18
XTAL1

19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2

3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8

21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
D7
14
D6
13
D5
12
D4
11
D3
10
D2
9
D1
8
D0

7
E
6
RW
5
RS
4
VSS
1
VDD
2
VEE
3
LCD
LM032L
Vcc
XTAL
11.0592MHz
C1
33pF
C2
33pF
R2
0.5k
C3
10uF
RV1
10k

Giải:

; gọi độ thời gian trễ trước khi gửi dữ liệu/ lệnh kế
tiếp.
BM kỹ thuật Vi điều Khiển







ĐH Kỹ thuật công NghiệpThái Nguyên
Giáo Trình Hệ vi điều khiển Biên Soạn: Dương Quốc Hưng
- 211 -

; chân P1.0-P1.7 được nối tới chân dữ dữ liệu D0-D7 của
LCD.
; Chân P2.0 được nối tới chân RS của LCD.
; Chân P2.1 được nối tới chân R/W của LCD.
; Chân P2.2 được nối đến chân E của LCD.
ORG 0000H
STRING: DB 'BM KY THUAT VDK !'
ORG 1000H
LAP: MOV A, #38H ;LCD 2 dong, ma tran 5x7
ACALL COMMAND ;truyen lenh den LCD
ACALL DELAY ;tao tre cho LCD
MOV A, #0EH ;hien thi man hinh, con tro
ACALL COMMAND ;truyen lenh den LCD
ACALL DELAY ;tao tre cho LCD
MOV A, #01H ;xoa LCD
ACALL COMMAND ;truyen lenh den LCD

ACALL DELAY ;tao tre cho LCD
MOV A, #06H ;dich con tro sang phai
ACALL COMMAND ;truyen lenh den LCD
MOV DPTR, #0000H
HIEN: CLR A
MOVC A, @A+DPTR
ACALL DISPLAY
ACALL DELAY
INC DPTR
CJNE A, #'!', HIEN ;kiem tra xem da het chuoi ky
;tu?
SJMP LAP
COMMAND: ;ctc truyen lenh den LCD
ACALL DELAY
MOV P1, A ;sao thanh ghi A den cong P1
CLR P2.0 ;RS = 0 de gui lenh
CLR P2.1 ;R/W = 0 de ghi
SETB P2.2 ;dat E = 1 cho xung cao
CLR p2.2
RET ;ve chuong trinh chinh
DISPLAY: ;ctc hien thi
ACALL DELAY
MOV P1, A ;sao thanh ghi A den cong P1
SETB P2.0 ;RS = 1 de gui du lieu
CLR P2.1 ;R/W = 0 de ghi

×