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

Bài Bài giảng Kỹ thuật Vi xử lý - Chương 5

39 1,2K 4
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Giao tiếp
Trường học Trường Đại Học Điện Lực
Chuyên ngành Kỹ thuật Vi xử lý
Thể loại Bài giảng
Định dạng
Số trang 39
Dung lượng 672,04 KB

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

Nội dung

Là loại máy tính được thiết kế để giải các bài toán lớn với tốc độ rất nhanh -Nó làm việc với số liệu có độ dài từ 64 bit hoặc hơn và được trang bị bộ nhớ rất lớn, vì vậy kích thước lớn. -Chúng thường được dùng để điều khiển các hệ thống thiết bị dùng trong quân sự hoặc các hệ thống máy móc của chương trình nghiên cứu vũ trụ, để xử lý thông tin trong ngành ngân hàng, vv… Ví dụ : IBM 4381, Honeywell DSP8 Loại mạnh nhất trong các máy tính lớn gọi là siêu máy tính (supercomputer). Ví dụ : Y-MP/832 của Gray.

Trang 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

A1

D0

A1 A3 D6

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

D6

A10 A4

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

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

Trang 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 = 213 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

62256 (32K)

10 9 7 6 4 3 25 24 21 2 26 1

20

22 27

11 12 15 16 18 19

A0 A2 A3 A5 A6 A7 A9 A10 A12 A13 (CS2) A14 (NC)

CS

OE WE

D0 D2 D3 D5 D6 D7

6264 (8K)

A2 A1

A7

R2

100

D5 D0

A12

A0

A11

R4 10K

R5 10K

2 6 9 12 15 16 19

D0 D2 D3 D5 D6

OC G

Q0 Q2 Q3 Q5 Q6

PSEN

A8

NA

R3 10K

None

A10

/WR

D6 D7

20

27 1

11 13 15 17 18 19

A0 A2 A3 A5 A6 A8 A9 A10 A11 A12 A13 (NC)

CE OE/VPP

A14 (PGM) A15 (Vpp)

O0 O2 O3 O5 O6

18

9

12 13 14

1 2 4 5 7 8

39 37 36 34 33 32 21 22 24 25 27 28 17 16 29 11 10

EA/VP X1

X2

RESET

INT0 INT1 T0

P1.0 P1.2 P1.3 P1.5 P1.6

P0.0 P0.2 P0.3 P0.5 P0.6

P2.0 P2.2 P2.3 P2.4 P2.6 P2.7 RD WR PSEN ALE/P TXD RXD

D7

A14

2764 (8K)

NA 64K

* 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

Trang 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 = 213 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

A10 A2

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

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

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

A9

D7 D7

A12

A3 A0

Addr bus[A0 A15]

D2

A6

A8 D7

D6

A0

D0

D0 D2

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

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

A9

A7 Vcc

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

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

/WR /RD /PSEN

Chọn các EPROM/RAM khác

Trang 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 Y0 (0000H ÷ 1FFFH) và Y1 (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 (CSROM1: 0000H ÷ 7FFFH) A15 = 1: chọn ROM2 (CSROM2: 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)

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 CSRAM1 → A15 = 0 thì chọn RAM1, A14 nối với CSRAM2→ 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ớ:

Trang 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

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

A13 D4

/RD

A8 C2 30p

A6 A11

A2

D3 D5

A10

/CS1

D6

D0 D0

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

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

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

ROM 2732 có dung lượng 4KB = 212 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

- 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

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

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

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

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

+

C3

10u

D1 Addr bus[A0 A15]

A1

D0 A13

A7 A3

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

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

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

A8 A14

C1 30p

D6

/CS1

D7 D2

/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

Trang 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 là RD và 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ỉ

b/ Các chip nhớ đều là 1KB = 210 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)

- 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

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

Trang 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

/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 28 = 256 byte (0000H ÷ 00FFH) Suy ra bảng địa chỉ:

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

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

+ Chống dội phím bằng phần cứng:

SW

74HC14

470K R2 VCC +5V

4.7KR1

C1 0.1uF

Hình 5.14

Trang 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

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

Trang 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

+ 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

C

D

E

F P1.4

P1.5 P1.6 P1.7

P1.0 P1.1 P1.2 P1.3

Trang 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

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)

Giảm (đếm cột)

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

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

Trang 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

f g a

Trang 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

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

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

Trang 16

Hình 5.22 Bảng mã led 7 đoạn của các số hex từ 0 đến F

ƒ Dùng dẫn hướng (directive) DB (Define Byte) của trình dịch hợp ngữ để khai

báo bảng Bảng thường được đặt ở cuối chương trình

¾ Dạng khai báo: Label: DB Codes

Ví dụ: TABLE: DB 0C0H,0F9H,0A4H,99H,…

Chú ý: Khi xuống một dòng mới phải thêm một định nghĩa DB

bảng và đưa số thứ tự của phần tử cần truy xuất trong bảng vào thanh ghi

A, sau đó dùng lệnh tra bảng:

MOVC A,@A+DPTR ; lấy mã trong bảng vào thanh ghi A

Ví dụ 5.13: Để lấy phần tử thứ 2 trong bảng ta thực hiện như sau:

MOV DPTR,#TABLE MOV A,#2

MOVC A,@A+DPTR Chương trình:

ORG 0 LOOP:

Trang 17

c Giao tiếp với nhiều led 7 đoạn

Có 2 phương pháp được dùng khi giao tiếp vi điều khiển 8051 với nhiều led 7 đoạn: phương pháp chốt và phương pháp quét

* Hiển thị led bằng phương pháp chốt

- Dùng các IC chốt để chốt dữ liệu đưa ra led, mỗi led có một IC chốt riêng

- Dữ liệu từ 8051 sẽ được đưa đồng thời đến ngõ vào của tất cả các IC chốt Muốn dữ liệu đưa qua IC chốt nào ta đưa chân cho phép chốt (LE) của IC tương ứng lên mức cao, các IC còn lại có ngõ vào LE là mức logic thấp sẽ chốt dữ liệu (giữ nguyên giá trị trước đó ở ngõ ra)

Ví dụ 5.14: Cho mạch giao tiếp giữa 8051 và 4 led 7 đoạn theo phương pháp chốt như hình

5.23 Viết chương trình con hiển thị 4 số BCD không nén (unpacked BCD) có mã lưu trong 4

ô nhớ 33H, 32H, 31H và 30H lên 4 led tương ứng (led1, led2, led3 và led4)

Hình 5.23 Giao tiếp giữa 8051 và 4 led 7 đoạn theo phương pháp chốt

Giải:

Chương trình:

OUTLED:

CLR P3.0 CLR P3.1

Trang 18

CLR P3.2 CLR P3.3 MOV A,30H MOV DPTR,#TABLE_LED7 MOVC A,@A+DPTR

MOV P1,A SETB P3.0 MOV A,31H MOV DPTR,#TABLE_LED7 MOVC A,@A+DPTR

CLR P3.0 MOV P1,A SETB P3.1 MOV A,32H MOV DPTR,#TABLE_LED7 MOVC A,@A+DPTR

CLR P3.1 MOV P1,A SETB P3.2 MOV A,33H MOV DPTR,#TABLE_LED7 MOVC A,@A+DPTR

CLR P3.2 MOV P1,A SETB P3.3 RET

… TABLE_LED7:

DB 92H,82H,0F8H,80H,90H

* Hiển thị led bằng phương pháp quét

- Mắt người sẽ không phân biệt được sự hiện hữu và mất đi của một ảnh nếu tần suất xuất hiện của ảnh là 24 lần/s hay thời gian lặp lại của ảnh là 1/24 ≈ 40 ms, hiển thị led theo phương pháp quét sử dụng nguyên lý này

- Hiển thị led bằng phương pháp quét là phương pháp hiển thị mà tạo mỗi thời điểm dữ liệu được truyền đến tất cả các led nhưng chỉ có một led được cho phép hiển thị dữ liệu đó (đóng chuyển mạch tương ứng với led được chọn, hở chuyển mạch của các led khác)

- Vì tại mỗi thời điểm chỉ có một led hoạt động nên thời gian lặp lại dữ liệu trên led đó phải được tính toán cho phù hợp để đảm bảo hình ảnh của led hiển thị là liên tục đối với mắt người, không quá mờ hay nhấp nháy

Ví dụ 5.15: Cho mạch giao tiếp giữa 8051 và 4 led 7 đoạn theo phương pháp quét như hình

5.24 Viết chương trình con hiển thị 4 số BCD không nén (unpacked BCD) có mã lưu trong 4

ô nhớ 33H, 32H, 31H và 30H lên 4 led tương ứng (led1, led2, led3 và led4)

Giải:

Hướng dẫn: Để đóng chuyển mạch cho led, cấp mức logic 0 ở phía cực B của

transistor tương ứng (đóng vai trò như một chuyển mạch điện tử) Sau đó phải tạo trễ một khoảng thời gian để led đáp ứng sáng

Trang 19

Hình 5.24 Giao tiếp giữa 8051 và 4 led 7 đoạn theo phương pháp quét

Ngày đăng: 27/08/2013, 14:21

HÌNH ẢNH LIÊN QUAN

Hình 5.21: 8051 giao tiếp với led 7 đoạn qua IC đệm 74373. - Bài Bài giảng Kỹ thuật Vi xử lý - Chương 5
Hình 5.21 8051 giao tiếp với led 7 đoạn qua IC đệm 74373 (Trang 15)
Hình 5.20 8051 giao tiếp với IC 74247. - Bài Bài giảng Kỹ thuật Vi xử lý - Chương 5
Hình 5.20 8051 giao tiếp với IC 74247 (Trang 15)
Hình 5.22 Bảng mã led 7 đoạn của các số hex từ 0 đến F. - Bài Bài giảng Kỹ thuật Vi xử lý - Chương 5
Hình 5.22 Bảng mã led 7 đoạn của các số hex từ 0 đến F (Trang 16)
Hình 5.23 Giao tiếp giữa 8051 và 4 led 7 đoạn theo phương pháp chốt. - Bài Bài giảng Kỹ thuật Vi xử lý - Chương 5
Hình 5.23 Giao tiếp giữa 8051 và 4 led 7 đoạn theo phương pháp chốt (Trang 17)
Hình 5.24 Giao tiếp giữa 8051 và 4 led 7 đoạn theo phương pháp quét. - Bài Bài giảng Kỹ thuật Vi xử lý - Chương 5
Hình 5.24 Giao tiếp giữa 8051 và 4 led 7 đoạn theo phương pháp quét (Trang 19)
Bảng ký tự chuẩn của LCD (ROM CODE A00) - Bài Bài giảng Kỹ thuật Vi xử lý - Chương 5
Bảng k ý tự chuẩn của LCD (ROM CODE A00) (Trang 23)
Sơ đồ chân vi mạch: - Bài Bài giảng Kỹ thuật Vi xử lý - Chương 5
Sơ đồ ch ân vi mạch: (Trang 28)
Hình 5.34     Sơ đồ khối chức năng của 8255A: - Bài Bài giảng Kỹ thuật Vi xử lý - Chương 5
Hình 5.34 Sơ đồ khối chức năng của 8255A: (Trang 29)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w