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

Giáo tiếp_chương 5

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 (672.04 KB, 39 trang )

Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

1
CHƯƠNG 5: GIAO TIẾP

I. GIAO TIẾP BỘ NHỚ NGOÀI
Họ VĐK 8051 có một lượng ROM nội on-chip. Đối với những thiết kế hệ thống tương đối
nhỏ, lượng ROM on-chip của nó là đủ để chứa chương trình thực thi. Tuy nhiên, đối với những
thiết kế hệ thống lớn, mã chương trình thực thi có thể vượt quá dung lượng ROM on-chip hoặc
dữ liệu cần lưu trữ tương đối nhiều, do đó cần phải mở rộng bộ nhớ cho hệ thống bằng cách sử
dụng thêm ROM ngoài hoặc RAM ngoài.
Như đã biết ở chương 2, khi giao tiếp bộ nhớ ngoài, port 0 là dồn kênh của bus dữ liệu và
byte thấp của bus đòa chỉ, còn port 2 là byte cao của bus đòa chỉ. Như vậy, cần có một IC chốt
bên ngoài được nối với port 0 để giữ byte đòa chỉ thấp khi giao tiếp với bộ nhớ ngoài. Byte đòa
chỉ thấp được chốt vào IC ngoài bằng xung ALE từ vi điều khiển 8051. Sau đó, port 0 trở thành
bus dữ liệu hai chiều trong suốt giai đoạn đọc hay ghi của chu kì máy.
* Quy tắc chung về thiết kế mạch giao tiếp bộ nhớ với MCS-51
1. Lập bảng bộ nhớ
- Lập bảng bộ nhớ cho hệ thống và các ứng dụng phụ thuộc.
- Đối với MCS-51, nên tách riêng 64K bộ nhớ chương trình và 64K bộ nhớ dữ liệu.
- Để sử dụng những đòa chỉ trên 64K thì sử dụng thêm các bit từ những cổng I/O
không sử dụng để làm các đường đòa chỉ cao.
2. Chọn linh kiện bộ nhớ thích hợp.
3. Sử dụng mạch giải mã đòa chỉ (nếu cần) để tạo các tín hiệu chọn chip cho bộ nhớ.
4. Sử dụng đường /PSEN cho bộ nhớ chương trình hoặc các đường /RD, /WR cho bộ nhớ
dữ liệu để truy xuất đến các chân đọc/ghi bộ nhớ.
5. Chân /EA = VCC nếu sử dụng ROM nội hoặc /EA = 1 nếu sử dụng ROM ngoài.
A11
A9
D3
A8


A6
A9
A12
A2
A10
D2
A7
D4
A1
D0
A1
A3
D6
A7
A7
VCC
A0
D0
D3
PSEN
D6
D1
A11
XTAL
12MHz
D2
R2
100
74LS373
3

4
7
8
13
14
17
18
1
11
2
5
6
9
12
15
16
19
D0
D1
D2
D3
D4
D5
D6
D7
OC
G
Q0
Q1
Q2

Q3
Q4
Q5
Q6
Q7
A2
A15
D3
D1
A8
A6
C2 30p
A9
A8
8031
31
19
18
9
12
13
14
15
1
2
3
4
5
6
7

8
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
17
16
29
30
11
10
EA/VP
X1
X2
RESET
INT0
INT1
T0

T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P
TXD

RXD
+
C3
10u
R1
8.2K
Addr bus[A0..A15]
A0
D0
D1
D6
A10
A4
A5
A12
D5
D4
A4
VCC
A12
D7
D6
A3
C1 30p
A5
D0
2764
10
9
8

7
6
5
4
3
25
24
21
23
2
20
22
27
1
11
12
13
15
16
17
18
19
A0
A1
A2
A3
A4
A5
A6
A7

A8
A9
A10
A11
A12
CE
OE
PGM
VPP
O0
O1
O2
O3
O4
O5
O6
O7
D5
A1
D7
/RD
/RD
Data bus[D0..D7]
A10
Vcc
/WR
A14
A5
D2
A3

SW1
D5
A6
A2
/WR
D1
A13
A0
D4
A4D4
A11
D7
D5
Vcc
D2
PSEN
D3
6264
10
9
8
7
6
5
4
3
25
24
21
23

2
11
12
13
15
16
17
18
19
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
OE
WE
CS1
CS2
D7

Hình 5.1
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

2
Ví dụ 5.1: Thiết kế kit 8031 với 1 ROM 2764 (chứa chương trình), 1 RAM 6264 (chứa dữ
liệu).
Giải:
ROM 2764 và RAM 6264 đều có dung lượng 8KB.
Ta có: 8KB = 2
13
byte → mỗi chip có 13 đường đòa chỉ vào A0 ÷ A12.
Sơ đồ mạch kết nối hình 5.1
Có thể thiết kế mạch giao tiếp với 1 EPROM và 1 RAM tổng quát bằng cách dùng các cầu
nối (jumper) và điện trở kéo lên phù hợp như trên hình 5.2. Trong sơ đồ này, người sử dụng có
thể chọn dung lượng bộ nhớ cần thiết bằng cách thiết lập các jumper để nối các chân đòa chỉ
thích hợp từ bus đòa chỉù vào chip nhớ. Bảng thiết lập jumper tương ứng cho các dung lượng
EPROM và RAM khác nhau cũng được cho trên hình.

D3
A2

A9
8K
D5
RAM
/RD
D5
62256 (32K)
10
9
8
7
6
5
4
3
25
24
21
23
2
26
1
20
22
27
11
12
13
15
16

17
18
19
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13 (CS2)
A14 (NC)
CS
OE
WE
D0
D1
D2
D3
D4
D5
D6
D7
A5

D1
A4
D4
A6
A9
A8
A15
/RD
D3
A2
D2
A9
Data bus[D0..D7]
6264 (8K)
A2
A1
JP1
JP5
J1 J2
Vcc
A8
A15
VCC
A7
R2
100
D5
D0
A12
A0

A11
R4
10K
R5
10K
Jumper Table
J1
D6
74LS373
3
4
7
8
13
14
17
18
1
11
2
5
6
9
12
15
16
19
D0
D1
D2

D3
D4
D5
D6
D7
OC
G
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
PSEN
A8
NA
R3
10K
D1
Vcc
D2
PSEN
27128 (16K)
C1 30p
A10
A3
D4
None

A10
/WR
D6
D7
JP3
VCC
A0
SW1
A3
R1
8.2K
A5
D4
D6
D3
None
A12
D0
D0
A13
A7
D2
A11
EPROM
D1
A7
A11
XTAL
12MHz
D0

27512 (64K)
10
9
8
7
6
5
4
3
25
24
21
23
2
26
20
22
27
1
11
12
13
15
16
17
18
19
A0
A1
A2

A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13 (NC)
CE
OE/VPP
A14 (PGM)
A15 (Vpp)
O0
O1
O2
O3
O4
O5
O6
O7
+
C3
10u
A3
A14
8031
31

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

28
17
16
29
30
11
10
EA/VP
X1
X2
RESET
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6

P0.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P
TXD
RXD
32K
A6
D3
J4 J5
JP4
/WR
D1
J1 J2 J3
D2
A1
A14
A5
JP2
A10
D5

A12
A13
A0
A13
16K
27256 (32K)
D4
A1
D7
C2 30p
D7
A14
2764 (8K)
NA64K
D6
A6
A4
D7
Addr bus[A0..A15]
Memory Size
A4

Hình 5.2
* Giải mã đòa chỉ
- Trong trường hợp cần phải giao tiếp nhiều ROM và/hoặc nhiều RAM, do các chip cùng
nối vào bus dữ liệu của vi điều khiển nên cần có mạch giải mã để đảm bảo tại mỗi thời
điểm chỉ có một chip được chọn nối với bus dữ liệu, các chip khác xem như hở mạch (trở
kháng cao).
- Một ví dụ về giải mã đòa chỉ được cho ở hình 5.3.






Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

3
Hình 5.3
Ví dụ 5.2: Thiết kế kit 8031 với 2 ROM 2764.
Giải:
Cách 1: dùng bộ giải mã 3 → 8
- ROM 2764 có dung lượng 8KB, tương ứng với 13 đường đòa chỉ.
- Chọn phân vùng 8KB = 2
13
byte → đưa 13 đường đòa chỉ thấp A0 ÷ A12 đến các
đường đòa chỉ tương ứng của 2 ROM 2764. 3 đường đòa chỉ còn lại là A13, A14, A15
được đưa đến bộ giải mã 3 → 8.
VCC
D3
+
C3
10u
A8
A13
A10
A2
C2 30p
D0
/CS1
A2

D1
D4
A6
8031
31
19
18
9
12
13
14
15
1
2
3
4
5
6
7
8
39
38
37
36
35
34
33
32
21
22

23
24
25
26
27
28
17
16
29
30
11
10
EA/VP
X1
X2
RESET
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P0.0
P0.1

P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P
TXD
RXD
D6
A15
A5
D1
/CS0
A3D3
A14
74HC138
15
14

13
12
11
10
9
7
1
2
3
5
4
6
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
A
B
C
G2B
G2A
G1
D4
D6
D1
D3

A7
R2
100
D4
/CS0
Vcc
D2
A6
XTAL
12MHz
A12
2764
10
9
8
7
6
5
4
3
25
24
21
23
2
20
22
27
1
11

12
13
15
16
17
18
19
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
CE
OE
PGM
VPP
O0
O1
O2
O3
O4
O5

O6
O7
D5 D5
A9
D7D7
A12
A3
A0
Addr bus[A0..A15]
D2
A6
A8
D7
D6
A0
D0
D0
D2
D7
A10
D6
2764
10
9
8
7
6
5
4
3

25
24
21
23
2
20
22
27
1
11
12
13
15
16
17
18
19
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12

CE
OE
PGM
VPP
O0
O1
O2
O3
O4
O5
O6
O7
/CS1
VCC
R1
8.2K
A4
A1
A0
74LS373
3
4
7
8
13
14
17
18
1
11

2
5
6
9
12
15
16
19
D0
D1
D2
D3
D4
D5
D6
D7
OC
G
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
A11
D0
Data bus[D0..D7]
A3

A4
D4
D5
A7
A5
D5
D1
A1
A9
A7
Vcc
A11
/WR
D2
VCC
A9
SW1
A5
A13
PSEN
A4
A10
A14
/RD
A12
PSEN
A2
A11
PSEN
D3

A15
A1
C1 30p
A8

Hình 5.4

Mạch giải mã đòa chỉ
Bus dữ liệu
Bus đòa chỉ
A0-A12
D0-D7
A0-A12
2764
EPROM
(8KB)
CS
OE
D0-D7
A0-A12
6264
RAM
(8KB)
WR
CS
OE
A14
74LS138
A
B

C
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
G1
G2A
G2B
CS
A15
VCC
A13
0
A0-A12
CS
CSCS
/WR
/RD/PSEN
Chọn các
EPROM/RAM
khác
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

4
- Giả sử dùng bộ giải mã 3 → 8 là IC 74138. 8 ngõ ra của IC cho phép chọn 8 vùng
nhớ tương ứng, mỗi vùng 8KB. Chọn 2 ngõ ra của 74138 nối đến ngõ vào chọn chip

(
CS
) của 2 ROM. Ở đây, có thể chọn
0
Y
(0000H ÷ 1FFFH) và
1
Y
(2000H ÷
3FFFH).
Lưu ý: Nếu là ROM chứa chương trình thì đòa chỉ bắt đầu phải là 0000H vì trong
8031/8051, thanh ghi PC sẽ chứa giá trò 0000H ngay sau khi khởi động.
- Sơ đồ mạch kết nối (giả sử các ROM dùng chứa chương trình) như ở hình 5.4.
- Nếu dùng ROM chứa dữ liệu thì chân /OE của ROM được nối với tín hiệu /RD.
Cách 2: Nếu dùng ROM chứa dữ liệu thì có thể thiết kế như sau:
Do chỉ có 2 chip nhớ ngoài nên có thể chỉ thực hiện mạch giải mã 1 → 2. Mạch này
có thể đơn giản như sau:
Hình 5.5
A15 = 0: chọn ROM1 (
1
CS
ROM
: 0000H ÷ 7FFFH)
A15 = 1: chọn ROM2 (
2
CS
ROM
: 8000H ÷ FFFFH)
Vùng đòa chỉ ứng với mỗi chân chọn chip sẽ là 32KB → mỗi ROM sẽ có 4 vùng đòa
chỉ 8KB:


Chip
Vùng
ROM 1 (A15 = 0) ROM 2 (A15 = 1)
1 0000H ÷ 1FFFH 8000H ÷ 9FFFH
2 2000H ÷ 3FFFH A000H ÷ BFFFH
3 4000H ÷ 5FFFH C000H ÷ DFFFH
4 6000H ÷ 7FFFH E000H ÷ FFFFH
Lưu ý: Khi viết chương trình nên chọn sử dụng duy nhất 1 trong 4 vùng đòa chỉ trên cho
mỗi ROM để tiện cho việc kiểm soát chương trình.
Ví dụ 5.3: Thiết kế kit 8051 với 2 RAM 6264 (chứa dữ liệu).
Giải:
Cách 1: Giải mã đòa chỉ dùng bộ giải mã 3 → 8
- Thực hiện mạch giải mã đòa chỉ tương tự ví dụ 5.2.
- Sơ đồ mạch kết nối như hình 5.6.
Cách 2: Nếu kit chỉ có 2 chip nhớ ngoài, có thể thực hiện giải mã đơn giản như sau:
- A0 ÷ A12 đưa đến các chân đòa chỉ tương ứng trên 2 RAM.
- A15 nối với
1
CS
RAM
→ A15 = 0 thì chọn RAM1, A14 nối với
2
CS
RAM
→ A14 = 0 thì
chọn RAM2.
Với cách này ta không cần thêm IC cho mạch giải mã đòa chỉ, tuy nhiên khi viết chương
trình, phải đảm bảo chỉ có 1 chip RAM được chọn tại mỗi thời điểm, tức là A15 = 0 thì
A14 = 1 và ngược lại.

- Bảng đòa chỉ bộ nhớ:
Chip A15 A14 A13 A12 …… A0 Đòa chỉ (HEX)
RAM 1 0 1 0 x …… x 4000H ÷ 5FFFH
RAM 1 0 1 1 x …… x 6000H ÷ 7FFFH
RAM 2 1 0 0 x …… x 8000H ÷ 9FFFH
RAM 2 1 0 1 x …… x A000H ÷ BFFFH
7404
A15
1
CS
ROM
2
CS
ROM
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

5
Nhận xét: Do đường đòa chỉ A13 không được kết nối nên có thể chọn giá trò là 0 hay 1.
Vì thế mỗi chip RAM sẽ có 2 vùng đòa chỉ 8KB tương ứng với giá trò 0 và 1 của A13.
A4
A9
A1
Vcc
A5
A6
/WR
/RD
A15
A12
/CS1

A0
A0
A12
D2
D5
A4
A14
A9
D2
Vcc
D3
6264
10
9
8
7
6
5
4
3
25
24
21
23
2
11
12
13
15
16

17
18
19
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
OE
WE

CS1
CS2
D7
+
C3
10u
A2
D4
C1 30p
A1
A13
D4
/RD
A8
C2 30p
A6
A11
A11
A8
D7
A10
A14
/CS0
D2
VCC
D1
D1
A2
D3
D5

A10
/CS1
D6
D0D0
D5
A7
A3
D4
74HC138
15
14
13
12
11
10
9
7
1
2
3
5
4
6
Y0
Y1
Y2
Y3
Y4
Y5
Y6

Y7
A
B
C
G2B
G2A
G1
D0
6264
10
9
8
7
6
5
4
3
25
24
21
23
2
11
12
13
15
16
17
18
19

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
OE
WE
CS1
CS2
D1

D4A4
D7
A7
8051
31
19
18
9
12
13
14
15
1
2
3
4
5
6
7
8
39
38
37
36
35
34
33
32
21
22

23
24
25
26
27
28
17
16
29
30
11
10
EA/VP
X1
X2
RESET
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P0.0
P0.1

P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P
TXD
RXD
A7
D7
XTAL
12MHz
A9
D6
A5
A15
A11
A1

A3
A0
74LS373
3
4
7
8
13
14
17
18
1
11
2
5
6
9
12
15
16
19
D0
D1
D2
D3
D4
D5
D6
D7
OC

G
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
/WR
A3
A2
A12
R1
8.2K
D6
Vcc
Data bus[D0..D7]
SW1
D6
A5
D3
A10
A8
A13 /CS0
VCC
/RD
D3
Vcc
D1

D2
R2
100
Addr bus[A0..A15]
D5
A6
/WR
D0

Hình 5.6
Ví dụ 5.4: Thiết kế mạch giải mã đòa chỉ cho kit 8031 với 1 ROM 2764 và 2 ROM 2732.
Giải:
Vì không yêu cầu đòa chỉ cụ thể nên vùng đòa chỉ của các chip nhớ là tùy người thiết kế.
ROM 2764 có dung lượng 8KB = 2
13
byte → có 13 đường đòa chỉ vào từ A0 ÷ A12.
ROM 2732 có dung lượng 4KB = 2
12
byte → có 12 đường đòa chỉ vào từ A0 ÷ A11.
Cách 1: Chọn phân vùng 8KB
- Đưa các đường đòa chỉ A0 ÷ A12 đến ROM 2764 và các đường đòa chỉ A0 ÷ A11
đến mỗi ROM 2732. 3 đường đòa chỉ cao A13, A14, A15 được đưa đến bộ giải mã 3→
8 (ở đây dùng IC 74138).
- Mạch giải mã đòa chỉ và bảng đòa chỉ tương ứng:
VCC
/CS2
74HC138
15
14
13

12
11
10
9
7
1
2
3
5
4
6
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
A
B
C
G2B
G2A
G1
A13 /CS0
A15
/CS1A14
Chip
Vùng đòa chỉ Chân chọn chip

ROM 2764 0000H ÷ 1FFFH
CS0

ROM 2732 – 1
2000H ÷ 2FFFH
3000H ÷ 3FFFH
CS1

ROM 2732 – 2
4000H ÷ 4FFFH
5000H ÷ 5FFFH
CS2


Hình 5.7
- Như vậy mỗi chip ROM 2732 sẽ có 2 vùng đòa chỉ 4KB tương ứng.
Cách 2: Chọn phân vùng 4KB
- Các đường đòa chỉ A0 ÷ A11 đưa đến các chân đòa chỉ tương ứng trên các chip ROM
2732 và A0 ÷ A12 đưa đến chip ROM 2764. Các đường đòa chỉ A12 ÷ A15 đưa đến
bộ giải mã 4 → 16 (giả sử dùng 74154). Như vậy, sẽ có 16 vùng, mỗi vùng 4KB.
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

6
- Tín hiệu chọn chip ROM 2764 có thể tạo ra bằng cách AND hai ngõ ra của 74154.
- Mạch giải mã đòa chỉ có thể thực hiện như sau:
/CS2
A14 /CS1
A13
74154
1

2
3
4
5
6
7
8
9
10
11
13
14
15
16
17
23
22
21
20
18
19
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8

Y9
Y10
Y11
Y12
Y13
Y14
Y15
A
B
C
D
G1
G2
7408
1
2
3
A12
/CS0
A15

Hình 5.8
- Các chân Y4 ÷ Y15 được dự trữ.
- Bảng phân vùng đòa chỉ:
Chip Vùng đòa chỉ Chân chọn chip
ROM 2764 0000H ÷ 1FFFH
CS0

ROM 2732 – 1 2000H ÷ 2FFFH
CS1


ROM 2732 – 2 3000H ÷ 3FFFH
CS2

Ví dụ 5.5: Thiết kế kit 8051 với 1 ROM 2764 (dữ liệu), 1 RAM 6264 và một thiết bò xuất (ví
dụ là IC 74373).
D5
A6
/CS0
A0
D3
D0
D5
R2
100
A8
D7
XTAL
12MHz
CON8
1
2
3
4
5
6
7
8
A9
A12

A13
D3
6264
10
9
8
7
6
5
4
3
25
24
21
23
2
11
12
13
15
16
17
18
19
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
OE
WE
CS1
CS2
74HC138
15
14
13
12
11
10

9
7
1
2
3
5
4
6
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
A
B
C
G2B
G2A
G1
D3
A4
A1
A2
A11
VCC
/CS1
D3

A12
A0
D4
7402
2
3
1
Data bus[D0..D7]
A2
D6
/WR
A15
SW1
+
C3
10u
D1
Addr bus[A0..A15]
A1
D0
A13
A7
A3
D1
D7
A15
D0
R1
8.2K
D6

VCC
D0
8 ngõ ra
Vcc
A6
A5
A7
D4
A14
A11
D2
D7
D1
A4
D3
D2
D6
/WR
A5
Vcc
2764
10
9
8
7
6
5
4
3
25

24
21
23
2
20
22
27
1
11
12
13
15
16
17
18
19
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
CE

OE
PGM
VPP
O0
O1
O2
O3
O4
O5
O6
O7
D5
A10
A7
VCC
74LS373
3
4
7
8
13
14
17
18
1
11
2
5
6
9

12
15
16
19
D0
D1
D2
D3
D4
D5
D6
D7
OC
G
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
/CS0
A10
A10
VCC
A0
A3
/RD
D2

A6
D2
D5
8051
31
19
18
9
12
13
14
15
1
2
3
4
5
6
7
8
39
38
37
36
35
34
33
32
21
22

23
24
25
26
27
28
17
16
29
30
11
10
EA/VP
X1
X2
RESET
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P0.0
P0.1

P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P
TXD
RXD
D0
D6
A11
A4
D1
D4
A8
A14
C1 30p
D6

/CS1
D7
D2
A1
D4
D4
A9
A2
A3
C2 30p
A8
A12
D7
A9
/RD
D5
D1
74LS373
3
4
7
8
13
14
17
18
1
11
2
5

6
9
12
15
16
19
D0
D1
D2
D3
D4
D5
D6
D7
OC
G
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
/WR
A5

Hình 5.9
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp


7
Giải:
- Do 8031/8051 chỉ cung cấp 2 đường điều khiển đọc và ghi chung cho cả bộ nhớ và I/O

RD

WR
nên ở đây sẽ giải mã đòa chỉ cho I/O theo phương pháp ánh xạ bộ nhớ
(xem I/O như là bộ nhớ ngoài).
- Sơ đồ mạch kết nối như hình 5.9.
- Bảng phân vùng đòa chỉ:
Chip Vùng đòa chỉ
ROM 2764 0000H ÷ 1FFFH
RAM 6264 2000H ÷ 3FFFH
I/O 4000H ÷ 5FFFH
Ví dụ 5.6

:
a/ Hãy vẽ bảng đòa chỉ (bảng phân vùng đòa chỉ) bộ nhớ cho 4 chip RAM, mỗi chip 1K,
biết đòa chỉ bắt đầu là 2000H.
b/ Hãy thiết kế mạch giải mã đòa chỉ cho 4 chip RAM trên theo bảng đòa chỉ ở câu a (chỉ
dùng 1 IC 74138).
Giải:
a/ Vì đòa chỉ bắt đầu theo yêu cầu là 2000H nên bảng phân vùng đòa chỉ cho 4 chip RAM
trên là:
Chip RAM Vùng đòa chỉ
0 2000H ÷ 23FFH
1 2400H ÷ 27FFH
2 2800H ÷ 2BFFH
3 2C00H ÷ 2FFFH


b/ Các chip nhớ đều là 1KB = 2
10
byte → chọn phân vùng 1KB.
- Các đường đòa chỉ A0 ÷ A9 nối đến các chân đòa chỉ tương ứng trên mỗi chip nhớ.
Các đường đòa chỉ A10 ÷ A15 đưa đến mạch giải mã đòa chỉ (IC 74138).
- Bảng đòa chỉ:

Chip RAM A15 A14 A13 A12 A11 A10 A9 …… A0 Đòa chỉ HEX
0 0 0 1 0 0 0 x …… x 2000H ÷ 23FFH
1 0 0 1 0 0 1 x …… x 2400H ÷ 27FFH
2 0 0 1 0 1 0 x …… x 2800H ÷ 2BFFH
3 0 0 1 0 1 1 x …… x 2C00H ÷ 2FFFH
Nhận xét:
- Các bit A15 A14 A13 A12 luôn bằng 0010 do đòa chỉ các chip đều có số HEX bắt
đầu là 2.
- Mỗi chip được chọn tương ứng với 1 tổ hợp của A11 và A10.
→ mạch giải mã đòa chỉ có thể thực hiện như sau:
A10
/CS3
/CS3
A12
A13
A11 /CS1
74HC138
15
14
13
12
11

10
9
7
1
2
3
5
4
6
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
A
B
C
G2B
G2A
G1
/CS0
A14
A15

Hình 5.10
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp


8
Ví dụ 5.7: Hãy xác đònh khoảng đòa chỉ của các ngõ ra 74138 cho mạch giải mã đòa chỉ sau.
/CS6
A11
A14
A10
/CS1
A12
/CS7
/CS0
A9
/CS4
/CS3
A15
A8
/CS5
A13
/CS2
74LS138
1
2
3
15
14
13
12
11
10
9
7

6
4
5
A
B
C
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
G1
G2A
G2B

Hình 5.11
Giải:
- Để 74138 hoạt động thì các chân cho phép phải ở mức tích cực, tức là:
G1 = 1

A11 = 1
G2A
=
G2B
= 0

A12 = A13 = A14 = A15 = 1

- Các đường A8, A9, A10 nối vào các chân điều khiển A, B, C nên các phân vùng bộ
nhớ được quy đònh bởi 8 đường đòa chỉ (A0 ÷ A7) có dung lượng 2
8
= 256 byte (0000H ÷
00FFH). Suy ra bảng đòa chỉ:
A15 A14 A13 A12 A11 A10 A9 A8 A7 …… A0 Đòa chỉ HEX Chip
1 1 1 1 1 0 0 0 x …… x F800H ÷ F8FFH /CS0
1 1 1 1 1 0 0 1 x …… x F900H ÷ F9FFH /CS1
1 1 1 1 1 0 1 0 x …… x FA00H ÷ FAFFH /CS2
1 1 1 1 1 0 1 1 x …… x FB00H ÷ FBFFH /CS3
1 1 1 1 1 1 0 0 x …… x FC00H ÷ FCFFH /CS4
1 1 1 1 1 1 0 1 x …… x FD00H ÷ ĐFFH /CS5
1 1 1 1 1 1 1 0 x …… x FE00H ÷ FEFFH /CS6
1 1 1 1 1 1 1 1 x …… x FF00H ÷ FFFFH /CS7
Vi điều khiển 8031/8051 có khả năng truy xuất trực tiếp 64Kbyte bộ nhớ chương trình
ngoài (0000H – FFFFH với
PSEN
) và 64Kbyte bộ nhớ dữ liệu ngoài (0000H – FFFFH với
RD


WR
). Trong hầu hết các ứng dụng, lượng bộ nhớ này là thích hợp. Tuy nhiên, trong một vài
ứng dụng có thể cần không gian bộ nhớ lớn hơn. Một phương pháp hiệu quả có thể dùng để
tăng thêm không gian bộ nhớ dữ liệu cho hệ thống được gọi là “chọn bank” (bank selection).
Phương pháp này tương tự như cách đònh đòa chỉ không gian 64Kbyte bộ nhớ ngoài nhưng thêm
vào mạch logic bổ sung để mở rộng số thiết bò nhớ có thể được chọn.

Hình 5.12
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp


9
Hình 5.12 trình bày một sơ đồ mạch mở rộng không gian bộ nhớ dữ liệu ngoài cho hệ thống.
Trong sơ đồ này, vùng đòa chỉ 8000H – FFFFH được thiết kế dùng cách chọn bank để mở rộng
vùng này từ 32Kbyte thành 160Kbyte với 5 SRAM 32Kbyte. Để thực hiện chọn bank cho 5 thiết
bò này, 5 ngõ ra port (P1.0 – P1.4) được dùng để chọn từng khối 32Kbyte. Đường đòa chỉ A15
kết hợp với từng chân chọn khối bằng các cổng NAND riêng biệt. Bằng cách thiết lập một trong
những chân chọn khối này ở mức logic cao và các chân còn lại ở mức logic thấp, một trong các
thiết bò nhớ sẽ được kích hoạt khi 8051/8031 truy xuất bộ nhớ ngoài trong khoảng đòa chỉ 8000H
– FFFFH.

II. GIAO TIẾP PHÍM ĐƠN VÀ BÀN PHÍM
Hầu hết các thiết kế với VĐK đều có sử dụng các công tắc hoặc các nút nhấn để cho phép
người sử dụng điều khiển các mạch bên trong. Việc điều khiển có thể là bật công tắc để khởi
động một hoạt động nào đó, hay nhấn một nút nhấn để chọn một tùy chọn, hoặc nhập một số
hay ký tự nào đó cho chương trình sử dụng. Đối với các tác vụ đơn giản ta có thể sử dụng các
công tắc bật, trượt hoặc nút nhấn/nhả. Với các tác vụ yêu cầu dữ liệu phức tạp hơn, ta có thể sử
dụng một dãy các phím nhấn được kết nối theo dạng ma trận, với mỗi phím biểu diễn cho một
số hay một ký tự nào đó.
1. Phím đơn (switch)
- Có thể có nhiều dạng và thường được kết nối với các cổng vào.
1: nhả
0: nhấn
VCC +5V
SW
port
pin
10K

SW

1: mở
0: đóng
VCC +5V
port
pin
10K

1: mở
0: đóng
SW
Có điện trở
kéo lên bên trong
port
pin

port
pin
VCC +5V
1: đóng
0: mở
SW
470

Hình 5.13
- Việc đọc một phím đơn là tương đối đơn giản vì chỉ có một trong hai giá trò là 0 hay 1.
Tuy nhiên, trong quá trình đọc trạng thái của phím cần phải lưu ý đến hiện tượng dội
phím hay nảy phím (do kết cấu cơ khí của phím nhấn) và phải có biện pháp chống dội
bằng phần cứng hoặc phần mềm.
+ Chống dội phím bằng phần cứng:
SW

74HC14
1 2
470KR2
VCC +5V
4.7K
R1
C1
0.1uF

Hình 5.14
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

10
+ Chống dội phím bằng phần mềm: do kết cấu cơ khí của phím nhấn, nên khi nhấn
phím hay bật công tắc thường xảy ra hiện tượng dội phím hay rung phím với thời gian
ở tầm ms. Để chống dội khi đọc trạng thái của phím nhấn, ta có thể tạo trễ một
khoảng thời gian khoảng 10ms, sau đó ta lại đọc trạng thái của phím.
Ví dụ 5.8: Viết chương trình nhận giá trò từ phím nhấn B1 (được nối với P1.0, mức 0 là phím
nhấn, mức 1 là phím không nhấn). Mỗi lần nhấn phím thì dòch trái LED đơn (dãy 8 LED đơn
được nối với P2, mức 0 thì LED sáng, mức 1 thì LED tắt). Chương trình có chống rung phím
bằng phần mềm.
Lưu đồ:

Chương trình:
ORG 0
MOV A,#0FEH
WAIT: MOV P2,A
JB P1.0,$
ACALL DELAY10MS
JNB P1.0,$

ACALL DELAY10MS
RL A
SJMP WAIT
DELAY10MS:
MOV R7,#25
AGAIN: MOV R6,#200
DJNZ R6,$
DJNZ R7,AGAIN
RET
END
N
Y
N
Y
BEGIN
Phím nhấn?
Nạp giá trò đầu cho
thanh ghi A
Xuất (A) ra Port 2
Xoay trái (A)
DELAY10 ms
Phím nhả?
DELAY10 ms
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

11
2. Bàn phím (Keypad)
- Có nhiều loại bàn phím, tuy nhiên có thể phân làm hai loại chính. Thứ nhất là loại bàn
phím có các chân nối riêng cho mỗi phím nhấn và một chân chung cho tất cả các phím,
đối với loại bàn phím này ta có thể kết nối như một dãy các phím đơn riêng với mỗi

phím có một điện trở kéo lên riêng (DIP switch). Loại thứ hai là bàn phím ma trận, với
các phím nhấn được bố trí theo các hàng và cột. Khi một phím được nhấn thì chân hàng
và cột tương ứng tại vò trí của phím được nối với nhau. Khi phím không được nhấn thì
chân hàng và cột tương ứng với phím đó là hở mạch.
Ví dụ 5.9: Kết nối DIP switch với port 1

Hình 5.15
Ví dụ 5.10: Kết nối bàn phím ma trận 4x4 (bàn phím Hex) với port 1:
Hình 5.16
+ Để xác đònh phím nào được nhấn thì ta phải xác đònh phím được nhấn thuộc hàng và
cột nào, hay ta xác đònh mã tương ứng của phím được nhấn. Việc xác đònh mã phím nhấn
có thể thực hiện bằng phần cứng hoặc phần mềm.
+ Xác đònh mã phím nhấn bằng phần cứng: ta sử dụng các loại IC mã hóa phím nhấn,
chẳng hạn như 74C922.
+ Xác đònh mã phím nhấn bằng phần mềm:
C1
C2
C3
C4
H1
H2
H3
H4
4
5
6
7
8
9
A

B
0
1
2
3
C
D
E
F
P1.4
P1.5
P1.6
P1.7
P1.0
P1.1
P1.2
P1.3
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

12
 Các phím nhấn trên ma trận bàn phím được bố trí tại giao điểm giữa hàng và cột,
khi nhấn phím thì hàng và cột tương ứng sẽ được nối với nhau.
 Muốn xác đònh phím nhấn ta tiến hành quét bàn phím. Ở đây ta thực hiện quét
từng hàng. Trước tiên ta cho hàng 1 ở mức logic 0, các hàng và cột khác ở mức
logic 1, sau đó ta đọc giá trò hàng và cột vào thông qua port 1.
 Nếu có 1 cột ở mức logic 0 tức là phím nhấn tương ứng với cột đó và hàng đang
quét đã được nhấn. Từ vò trí của hàng và cột ta sẽ đổi ra mã phím quy ước.
 Nếu không có cột nào ở mức logic 0, ta tiến hành quét hàng kế tiếp và thực hiện
tương tự trên. Việc quét hàng được thực hiện tối đa 4 lần tương ứng với 4 hàng.
 Chương trình con quét phím SCAN_KEY xác đònh phím nào được nhấn, cờ F0 = 1

báo hiệu phím được nhấn, mã phím nhấn cất trong thanh ghi A.
Y
Y
N
N
1
SCAN_KEY
Mã quét hàng = 11111110 B
Nạp (đếm hàng) = 4
Xuất (mã quét hàng)
ra port 1
Đọc giá trò hàng và
cột ở port 1 vào A
Xoá các bit hàng [4 bit thấp]
Giữ lại các bit cột [4 bit cao]
Quay trái (mã quét hàng)
[quét hàng kế]
Giảm (đếm hàng)
Xoá (Cờ)
Có phím ấn?
[có bit cột nào = 0]
(đếm hàng) = 0
2
Y
Y
N
N
1
Xác đònh hàng có phím nhấn
(hàng) = 4 - (đếm hàng)

(Mã phím) = (hàng)
Chuyển mã cột về 4 bit thấp
Giảm (đếm cột)
Đặt (Cờ) = 1
(C) = 0
(đếm cột) = 0
(đếm cột) = 4
Quay phải (A) qua cờ C [để
xác đònh vò trí của cột = 0]
(Mã phím) = (hàng) + số cột
[số cột = 4]
Cất mã phím vào A
RET
2
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

13
Mã 8051: (Chương trình sử dụng cờ đặt trạng thái có phím được nhấn là cờ F0)
SCAN_KEY:
MOV R1,#0FEH
MOV R6,#4
LOOP1:
MOV P1,R1
MOV A,P1
ANL A,#0F0H
CJNE A,#0F0H,GET_CODE
XCH A,R1
RL A
XCH A,R1
DJNZ R6,LOOP1

CLR F0
SJMP EXIT
GET_CODE:
PUSH ACC
MOV A,#4
CLR C
SUBB A,R6
MOV R5,A
POP ACC
SWAP A
MOV R4,#4
LOOP2:
RRC A
JNC SET_FLAG
XCH A,R5
ADD A,#4
XCH A,R5
DJNZ R4,LOOP2
SET_FLAG:
SETB F0
MOV A,R5
EXIT:
RET

III. GIAO TIẾP BỘ HIỂN THỊ
1. Giao tiếp với LED đơn

VCC +5V
port
pin

470

VCC +5V
port
pin

port
pin

a) Tốt b) Kém c) Kém
Hình 5.17
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

14
- Thông thường người ta lái LED theo kiểu hút dòng, nghóa là dòng LED sáng có chiều đi
từ ngoài vào cổng I/O.
- Có thể tăng dòng bằng cách sử dụng thêm các bộ đệm nối với các chân port.
2. Giao tiếp LED 7 đoạn
a. Giới thiệu về led 7 đoạn
- Led 7 đoạn là một khối hiển thò thường bao gồm 8 led đơn với 7 led tương ứng với 7
đoạn từ a đến g và 1 led tương ứng với dấu chấm dp.
Hình 5.18 Led 7 đoạn
- Các led có một chân được nối chung với nhau, tùy theo chân nối chung là anode hay
cathode mà người ta phân ra làm 2 loại: anod chung (common anode) và cathode chung
(common cathode).
(common cathode) ck
f
g
a
c

f
b
d
(common anode) ca
a
g
d
c
b
dp
e
dp
e

Hình 5.19 Led 7 đoạn loại anode chung và cathode chung
b. Giao tiếp với một led 7 đoạn
* Dùng IC giải mã

- Phương pháp này sử dụng một IC làm nhiệm vụ giải mã từ BCD sang mã led 7
đoạn. Một số loại IC giải mã thường dùng là: 7447 hay 74247 (đối với loại anode
chung) hay 4511 (đối với loại cathode chung).
- Để hiển thò một số lên led 7 đoạn, vi điều khiển phải cung cấp mã BCD đến ngõ
vào của IC giải mã.
Ví dụ 5.11: Cho giao tiếp giữa 8051 và IC giải mã 27247 như hình 3. Viết chương trình đọc
mã BCD nhập từ dip-switch nối với port 2 và hiển thò số tương ứng lên led 7 đoạn.
Giải:
Chương trình:
ORG 0
LOOP: MOV A,P2
ANL A,#0FH

MOV P1,A
dp
b
c
d
e
f
g
a
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp

15
SJMP LOOP
END
Hình 5.20 8051 giao tiếp với IC 74247.

* Giải mã bằng phần mềm
- Phương pháp này dùng lập trình bằng phần mềm để giải mã từ BCD sang mã
led 7 đoạn thay thế cho IC giải mã.
Ví dụ 5.12: Cho giao tiếp giữa 8051 với led 7 đoạn như hình 4 (qua IC đệm 74373 để tăng
khả năng cấp dòng cho led). Viết chương trình đọc mã BCD nhập từ dip-switch nối với port
2 và hiển thò số tương ứng lên led 7 đoạn.
Hình 5.21: 8051 giao tiếp với led 7 đoạn qua IC đệm 74373.
Giải:
Hướng dẫn:
Để LED 7 đoạn hiển thò đúng giá trò mong muốn, cần phải đưa dữ liệu đến led
theo mã LED 7 đoạn (tương ứng với các đoạn cần sáng). Do đó, ta phải chuyển
đổi dữ liệu cần xuất (thường là số HEX hay BCD) sang mã LED 7 đoạn, thông
thường dùng phương pháp tra bảng.
 Tóm tắt phương pháp tra bảng:

 Thành lập một bảng giá trò chứa các mã theo thứ tự mong muốn.
Ví dụ: Lập bảng mã 7 đoạn của các số HEX từ 0 đến F (với LED Anode chung, để
một đoạn LED nào sáng phải cung cấp mức logic thấp đến vò trí đoạn tương ứng).

P1.0
P1.3
P1.4
P1.5
P1.6
P1.1
P1.2
P1.7
8051
P2.0
P2.3
P2.4
P2.5
P2.6
P2.1
P2.2
P2.7
D0
D1
D2
D3
74247
7
1
2
6

4
5
3
13
12
11
10
9
15
14
D0
D1
D2
D3
BI/RBO
RBI
LT
A
B
C
D
E
F
G
a
b
e
f
d
c

g
+5V
330x7
dp
f
74HC373
1
11
2
5
6
9
12
15
16
19
3
4
7
8
13
14
17
18
OE
LE
Q1
Q2
Q3
Q4

Q5
Q6
Q7
Q8
D1
D2
D3
D4
D5
D6
D7
D8
b
d
+5V
c
e
a
g
330x7
P1.0
P1.3
P1.4
P1.5
P1.6
P1.1
P1.2
P1.7
8051
P2.0

P2.3
P2.4
P2.5
P2.6
P2.1
P2.2
P2.7
D0
D1
D2
D3
+5V
dp

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×