1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Kỹ thuật vi xử lý - Chương 4 docx

58 310 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 1,05 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.. MỘT SỐ CHÂN CỦA 8051 PHỤC VỤ CHO GHÉP NỐI VỚI

Trang 1

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

Ở 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

Hình 4.2.1a Bộ nhớ ROM trên chip và ngoài chip

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

Trang 2

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ữ 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

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

1 11

2 5 6 9 12 15 16 19

10

D0 D1 D2 D3 D4 D5 D6 D7 OE LE

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

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

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

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

Trang 3

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 = 210 byte=>

8KB= 23.210 = 213 byte nên nó có 13 chân địa chỉ) Số ô nhớ mà IC này tạo ra là

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

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

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

VPP CE

AD6

AD0 A9

U65

8051

29 30

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

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

AD1 AD1

AD2

AD5

C4 10u

A12 A11

VCC

AD4 A2

A9 A12

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

D0 D1 D2 D3 D4 D5 D6 D7

OE LE

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

A8 AD5

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 216 = 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)

Trang 4

để báo rằng dữ liệu được đặ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

Trang 5

R3 R

AD1 A1

A6

A9 U1

8051

29 30

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

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

1 2

A5 AD1

A12 A6

C6

33p

A14 A11

A7

U4 NOT

1 2

A4

U6

NAND1

1 2

3 4

A15

AD0

AD3

A4 AD4

A12 AD3

D1

U2

74LS373

3 4 7 8 13 14 17 18

1 11

2 5 6 9 12 15 16 19

10

D0 D1 D2 D3 D4 D5 D6 D7

OE LE

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

GND

AD2 AD4

AD2

A14

A1

U3 NOT

1 2

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

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

Sơ đồ kết nối 8051 với ROM dữ liệu 8Kx8

Chương trình được viết như sau:

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

Trang 6

A10 AD0

U5 NOT

1 2

A3

RD

AD1

AD2 AD2

C4 10u

A4

VCC

A2 AD3

AD1

AD5

RD

AD7 A6

A13 U1

8051

29 30

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

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

10

D0 D1 D2 D3 D4 D5 D6 D7

OE LE

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7

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

3 4

U3 NOT

1 2

1 2

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:

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

Trang 7

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 =

24.210 = 214 byte

- IC này có thể địa chỉ được 214 byte = 214 ô 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 =

3

A 1

2

A 1

1

A 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 IC2

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

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

Trang 8

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

A10

A3

VCC

D0 A0

A7 ALE

Y2 WR

6 5

A C Y0 Y2 Y4 Y6

1

11 13 16 18

14 20

22

A0 A2 A4 A6 A8 A10 A12

VPP

D0 D2 D4 D6

GND CE

OE PGM

D1

A13

A8 A3

A11 A8

SW1

Y1

AD1 A4

11 13 16 18

22 20

A0 A2 A4 A6 A8 A10 A12

D0 D2 D4 D6

9

39 37 35 33

1 3 5 7

21 23 25 27

10 12 14 16

PSEN ALE

RST

P0.0/AD0 P0.2/AD2 P0.4/AD4 P0.6/AD6 P1.0 P1.2 P1.4 P1.6

P2.0/A8 P2.2/A10 P2.4/A12 P2.6/A14 P3.0/RXD P3.1/TXD P3.2/INT0 P3.4/T0 P3.6/WR P3.7/RD

U66

74LS373

3 7 13 17

1 11

2 6 12 16

10

D0 D2 D4 D6

OE LE

Q0 Q2 Q4 Q6

A10 A12

U71

27128

10 9 7 5 3 25 21 2 26

1

11 13 16 18

14 20

22

A0 A2 A4 A6 A8 A10 A12

VPP

D0 D2 D4 D6

GND CE

OE PGM VCC

A10 A1

A12 A9

D7 A2

19 1

18 16 14 12

10

A0 A2 A4 A6

G DIR

B0 B2 B4 B6

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

Trang 9

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 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

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 RDvà 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, WRcủ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

Trang 10

- 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 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)

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

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

Trang 11

Hỡnh 4.1.1a Sơ đồ chõn của 8255A

Hỡnh 4.1.1b Sơ đồ khối của 8255A

PA PA PA W RESE TTTT D

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

WR

RD

Đệm dữ

liệu

Logic

đ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)

Trang 12

Các cổng của 8255A có thể được lập trình theo một trong các chế độ dưới

đây

 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)

Trang 13

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:

Port A

1 = Input

0 = Output

Port C (Upper PC7 - PC4)

1 = Input

0 = Output

Mode Selcction

Trang 14

c) Viết chương trình để gửi 55H và AAH đến cổng ra một cách liên tục

dieu khien

Hình 5.4.2d: Nối ghép 8051 với 8255A cho ví dụ 2

A0 D7

D0 A14

Trang 15

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ừ

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

8051

AD7 P0.0

L

RES

A2 A7

PCU

Trang 16

BPORT EQU 21H ;dia chi cong B

Đố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

A2 A3 A4 A5 A6

A0 A1

A

B

C A 2 G B 2

Mạch giảI mã

A2

A7

D0 D7

Trang 17

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

;khien

b) Sử dụng PC2 để tạo xung vuông liên tục với độ dày xung là 50%

;thanh ghi dieu khien

ACALL DELAY ;thoi gian giu cham

ACALL DELAY ;thoi gian giu cham

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

Trang 18

SJMP SANGLED ;lap lai chu ky ban dau

WR RD

D1 D3

D5 P3.0 D7 P3.1

ALE P3.4

A0 A2 A1 A3 A2 A4 A3

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

D0

D2

D4 D6

PB0

PB2

PB4 PB6

PC0

PC3

PC5 PC7

PB0 PB3 PB5

PC2 PB2

P3.2

P3.5

PA0

PA7 PA5 PA3 PA1 XTAL2

P3.7/RD 17P3.6/WR 16P3.5/T1 15

AD[0 7]

A[8 15]

ALE 30

EA 31PSEN 29

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 15Y1 14Y2 13Y3 12Y4 11Y5 10Y6 9Y7 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 4PA1 3PA2 2PA3 1PA4 40PA5 39PA6 38PA7 37

PB0 18PB1 19PB2 20PB3 21PB4 22PB5 23PB6 24PB7 25PC0 14PC1 15PC2 16PC3 17PC4 13PC5 12PC6 11PC7 10

U4

8255A

2

4 6

8

1

RP1

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

Trang 19

LCD dùng trong thông tin giải trí (Màn hình Tivi, máy vi tính)

LCD dùng trong lĩnh vực điều khiển

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

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

Trang 20

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

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:

Trang 21

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

1.64 µs

Trang 22

về vị trí Nguồn DD RAM không thay đổi

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

C

R/

L

- -

Dịch con trỏ và dịch hiển thị mà không thay đổi DD RAM

40 µs

Trang 23

1 0 Ghi dữ liệu Ghi dữ liệu vào DD

RAM hoặc CG RAM 40 µs

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ỏ

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

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

Trang 24

 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ị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 39P0.1/AD1 38P0.2/AD2 37P0.3/AD3 36P0.4/AD4 35P0.5/AD5 34P0.6/AD6 33P0.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 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13P3.4/T0 14P3.7/RD 17P3.6/WR 16P3.5/T1 15P2.7/A15 28

P2.0/A8 21P2.1/A9 22P2.2/A10 23P2.3/A11 24P2.4/A12 25P2.5/A13 26P2.6/A14 27

Giải:

; gọi độ thời gian trễ trước khi gửi dữ liệu/ lệnh kế

tiếp

Trang 25

; 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

ACALL DELAY

Trang 26

SETB P2.2 ;dat E = 1 cho xung cao

RET

END

Kết quả mô phỏng chương trình trên phần mềm Proteus như sau:

 Gửi mã lệnh hoặc dữ liệu đến LCD có kiểm tra cờ ngắt

Ví dụ 1: Làm lại ví dụ trên nhưng trong chương trình chúng ta không dùng phương pháp tạo trễ mà liên tục kiểm tra cờ bận trước khi gửi lệnh/dữ

liệu tới LCD

Chương trình được viết như sau:

; Kiểm tra cờ bận trước khi gửi dữ liệu, lệnh ra LCD

; Đặt P1 là cổng dữ liệu

; Đặt P2.0 nối tới cổng RS

; Đặt P2.1 nối tới chân R/W

; Đặt P2.2 nối tới chân E

Trang 27

ACALL COMMAND ;truyen lenh den LCD

RET

END

Trang 28

Ví dụ 2: Hãy ghép nối 8255A với 8051 với địa chỉ cổng cơ sở là 20h

Viết chương trình hiển thị liên tục dòng chữ

“ GHEP NOI 8255A…!

WR RD

D1

D3

D5 P3.0 D7 P3.1

ALE P3.4

A0 A2 A1 A3 A2 A4 A3

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

P3.2

P3.5

XTAL2 18

XTAL1 19

RST 9

P3.0/RXD 10P3.1/TXD 11P3.2/INT0 12P3.3/INT1 13P3.4/T0 14

P3.7/RD 17P3.6/WR 16P3.5/T1 15

AD[0 7]

A[8 15]

ALE 30

EA 31PSEN 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

OE 1 LE 11 U2

74LS373

A 1 B 2 C 3

E1 6 E2 4 E3 5

Y0 15Y1 14Y2 13Y3 12Y4 11Y5 10Y6 9Y7 7U3

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 4PA1 3PA2 2PA3 1PA4 40PA5 39PA6 38PA7 37

PB0 18PB1 19PB2 20PB3 21PB4 22PB5 23PB6 24PB7 25

PC0 14PC1 15PC2 16PC3 17PC4 13PC5 12PC6 11PC7 10U4

10k VCC

R2 5k VCC

Ghép nối 8051 với 8255A và LCD LM032L, mô phỏng kết qủa trên Proteus

ORG 0000H

KHIEN

Trang 29

MOV A, #01H ;xoa LCD

Ngày đăng: 06/08/2014, 01:20

HÌNH ẢNH LIÊN QUAN

Sơ đồ kết nối như sau: - Kỹ thuật vi xử lý - Chương 4 docx
Sơ đồ k ết nối như sau: (Trang 3)
Sơ đồ kết nối vi điều khiển 8051 với bộ nhớ RAM dữ liệu 6264 - Kỹ thuật vi xử lý - Chương 4 docx
Sơ đồ k ết nối vi điều khiển 8051 với bộ nhớ RAM dữ liệu 6264 (Trang 6)
Bảng phân chia vùng nhớ được xác định như sau: - Kỹ thuật vi xử lý - Chương 4 docx
Bảng ph ân chia vùng nhớ được xác định như sau: (Trang 7)
Sơ đồ kết nối như sau: - Kỹ thuật vi xử lý - Chương 4 docx
Sơ đồ k ết nối như sau: (Trang 8)
Bảng 5.4.2b. Các lệnh chọn cổng và thanh ghi của 8255 - Kỹ thuật vi xử lý - Chương 4 docx
Bảng 5.4.2b. Các lệnh chọn cổng và thanh ghi của 8255 (Trang 10)
Hình 4.1.1a. Sơ đồ chân của 8255A - Kỹ thuật vi xử lý - Chương 4 docx
Hình 4.1.1a. Sơ đồ chân của 8255A (Trang 11)
Hình 5.4.2c. Từ điều khiển lập/xoá các bit PCi của 8255A. - Kỹ thuật vi xử lý - Chương 4 docx
Hình 5.4.2c. Từ điều khiển lập/xoá các bit PCi của 8255A (Trang 13)
Hình 5.4.2d: Nối ghép 8051 với 8255A cho ví dụ 2 - Kỹ thuật vi xử lý - Chương 4 docx
Hình 5.4.2d Nối ghép 8051 với 8255A cho ví dụ 2 (Trang 14)
Hình 5.4.2e: Nối ghép 8051 với 8255A cho ví dụ 3 - Kỹ thuật vi xử lý - Chương 4 docx
Hình 5.4.2e Nối ghép 8051 với 8255A cho ví dụ 3 (Trang 15)
Sơ đồ kết nối 8051 với 8255A thông qua mạch chốt 74LS373 và giải mã  74LS138 - Kỹ thuật vi xử lý - Chương 4 docx
Sơ đồ k ết nối 8051 với 8255A thông qua mạch chốt 74LS373 và giải mã 74LS138 (Trang 18)
4.3.1.2. Bảng lệnh của LCD - Kỹ thuật vi xử lý - Chương 4 docx
4.3.1.2. Bảng lệnh của LCD (Trang 21)
Bảng 4.3.1b. Mã lệnh LCD - Kỹ thuật vi xử lý - Chương 4 docx
Bảng 4.3.1b. Mã lệnh LCD (Trang 21)
Bảng 4.3.1c là bảng liệt kê lệnh chi tiết của LCD. - Kỹ thuật vi xử lý - Chương 4 docx
Bảng 4.3.1c là bảng liệt kê lệnh chi tiết của LCD (Trang 23)
Sơ đồ chân của ADC8084 - Kỹ thuật vi xử lý - Chương 4 docx
Sơ đồ ch ân của ADC8084 (Trang 32)
Hình 5.6.2d. Nối ghép ADC0804 với 8051 sử dụng nguồn đồng hồ sẵn có. - Kỹ thuật vi xử lý - Chương 4 docx
Hình 5.6.2d. Nối ghép ADC0804 với 8051 sử dụng nguồn đồng hồ sẵn có (Trang 34)

TỪ KHÓA LIÊN QUAN