YOMEDIA
ADSENSE
BÀI 8 GHÉP NỐI VÀ TRAO ĐỔI DỮ LIỆU TRONG HỆ VI XỬ LÝ
1.237
lượt xem 104
download
lượt xem 104
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
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ớ.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: BÀI 8 GHÉP NỐI VÀ TRAO ĐỔI DỮ LIỆU TRONG HỆ VI XỬ LÝ
- 1 BÀI 8: 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 FFFFh FFFFh ngoµi c h ip ngoµi c h ip 1000h 0FFFh Tr ª n c h ip 0000h 0000h ea = g n d ea = v cc Hình 4.2.1a. Bộ nhớ ROM trên chip và ngoài chip Cổng P0 và P2 4.1.1.2. 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ữ 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
- 2 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. Chân RD và WR 4.1.1.4. 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. VCC VCC U 65 U 66 40 20 D0 D7 A D 0 A 0 2 1 3 9 3 2 P 2 .0 /A 8 P 0 .0 /A D 0 D 0 Q 0 A 1 VCC VCC 2 2 3 8 A D 1 4 5 P 2 .1 /A 9 P 0 .1 /A D 1 D 1 Q 1 A D 2 A 2 2 3 3 7 7 6 P 2 .2 /A 1 0 P 0 .2 /A D 2 D 2 Q 2 A 3 2 4 3 6 A D 3 8 9 P 2 .3 /A 1 1 P 0 .3 /A D 3 D 3 Q 3 A 4 2 5 3 5 A D 4 1 3 1 2 P 2 .4 /A 1 2 P 0 .4 /A D 4 D 4 Q 4 A 5 2 6 3 4 A D 5 1 4 1 5 P 2 .5 /A 1 3 P 0 .5 /A D 5 D 5 Q 5 A 6 2 7 3 3 A D 6 1 7 1 6 P 2 .6 /A 1 4 P 0 .6 /A D 6 D 6 Q 6 A D 7 A 7 2 8 3 2 1 8 1 9 P 2 .7 /A 1 5 P 0 .7 /A D 7 D 7 Q 7 1 1 0 11 1 P 1 .0 P 3 .0 /R XD LE OE 2 1 1 10 P 1 .1 P 3 .1 /T XD GND 3 1 2 P 1 .2 P 3 .2 /IN T 0 4 1 3 74LS373 P 1 .3 P 3 .3 /IN T 1 5 1 4 P 1 .4 P 3 .4 /T 0 6 1 5 P 1 .5 P 3 .5 /T 1 7 1 6 P 1 .6 P 3 .6 /W R 8 1 7 P 1 .7 P 3 .7 /R D ALE 19 30 X1 ALE 18 29 X2 PSEN 31 EA 9 RST GND 8051 20 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. 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:
- 3 IC nhớ 2764 (8Kx8) có 13 chân địa chỉ từ A0 – A12 (Vì 1K = 2 10 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à 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: VCC VCC VCC U 65 U 66 U 69 40 20 28 A D 0 A 8 A D 0 A 0 A 0 A D 0 39 21 3 2 10 11 P 0 .0 /A D 0 P 2 .0 /A 8 D 0 Q 0 A 0 O 0 A D 1 A 9 A D 1 A 1 A 1 A D 1 38 22 4 5 9 12 VCC VCC VCC P 0 .1 /A D 1 P 2 .1 /A 9 D 1 Q 1 A 1 O 1 A D 2 A 10 A D 2 A 2 A 2 A D 2 37 23 7 6 8 13 P 0 .2 /A D 2 P 2 .2 /A 1 0 D 2 Q 2 A 2 O 2 A D 3 A 11 A D 3 A 3 A 3 A D 3 36 24 8 9 7 15 P 0 .3 /A D 3 P 2 .3 /A 1 1 D 3 Q 3 A 3 O 3 A D 4 A 12 A D 4 A 4 A 4 A D 4 35 25 13 12 6 16 P 0 .4 /A D 4 P 2 .4 /A 1 2 D 4 Q 4 A 4 O 4 A D 5 A 13 A D 5 A 5 A 5 A D 5 34 26 14 15 5 17 P 0 .5 /A D 5 P 2 .5 /A 1 3 D 5 Q 5 A 5 O 5 A D 6 A 14 A D 6 A 6 A 6 A D 6 33 27 17 16 4 18 P 0 .6 /A D 6 P 2 .6 /A 1 4 D 6 Q 6 A 6 O 6 A D 7 A 15 A D 7 A 7 A 7 A D 7 32 28 18 19 3 19 P 0 .7 /A D 7 P 2 .7 /A 1 5 D 7 Q 7 A 7 O 7 A 8 25 A 8 ALE 11 A 9 1 10 24 P 1 .0 P 3 .0 /R XD LE A 9 A 10 2 11 1 21 GND P 1 .1 P 3 .1 /T XD OE A 10 A 11 3 12 23 P 1 .2 P 3 .2 /IN T 0 A 11 A 12 4 13 74LS373 2 P 1 .3 P 3 .3 /IN T 1 A 12 5 14 10 P 1 .4 P 3 .4 /T 0 C5 PSEN 6 15 22 P 1 .5 P 3 .5 /T 1 OE 7 16 27 P 1 .6 P 3 .6 /W R PGM 8 17 20 P 1 .7 P 3 .7/R D CE 33p ALE 19 30 1 GND X1 ALE VPP PSEN 1 1 .0 5 9 2 M H z 18 29 X2 PSEN C6 2764 31 14 EA 9 RST 33p VCC GND 8051 20 SW 1 C4 10u R3 D1 R 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) để 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
- 4 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. VCC VCC VCC U1 U2 U7 40 28 20 A D 0 A 8 A D 0 A 0 A 0 A D 0 39 21 3 2 10 11 P 0 .0 /A D 0 P 2 .0 /A 8 D 0 Q 0 A 0 O 0 A D 1 A 9 A D 1 A 1 A 1 A D 1 38 22 4 5 9 12 VCC VCC VCC P 0 .1 /A D 1 P 2 .1 /A 9 D 1 Q 1 A 1 O 1 A D 2 A 10 A D 2 A 2 A 2 A D 2 37 23 7 6 8 13 P 0 .2 /A D 2 P 2 .2 /A 1 0 D 2 Q 2 A 2 O 2 A D 3 A 11 A D 3 A 3 A 3 A D 3 36 24 8 9 7 15 P 0 .3 /A D 3 P 2 .3 /A 1 1 D 3 Q 3 A 3 O 3 A D 4 A 12 A D 4 A 4 A 4 A D 4 35 25 13 12 6 16 P 0 .4 /A D 4 P 2 .4 /A 1 2 D 4 Q 4 A 4 O 4 A D 5 A 13 A D 5 A 5 A 5 A D 5 34 26 14 15 5 17 P 0 .5 /A D 5 P 2 .5 /A 1 3 D 5 Q 5 A 5 O 5 A D 6 A 14 A D 6 A 6 A 6 A D 6 33 27 17 16 4 18 P 0 .6 /A D 6 P 2 .6 /A 1 4 D 6 Q 6 A 6 O 6 A D 7 A 15 A D 7 A 7 A 7 A D 7 32 28 18 19 3 19 P 0 .7 /A D 7 P 2 .7 /A 1 5 D 7 Q 7 A 7 O 7 A 8 25 A 8 ALE 11 A 9 1 10 24 P 1 .0 P 3 .0 /R XD LE A 9 A 10 2 11 1 10 21 P 1 .1 P 3 .1/TXD OE GND A 10 A 11 3 12 23 P 1 .2 P 3 .2 /IN T 0 A 11 A 12 4 13 74LS373 2 P 1 .3 P 3 .3 /IN T 1 A 12 5 14 P 1 .4 P 3 .4 /T 0 C5 RD 6 15 22 P 1 .5 P 3 .5 /T 1 OE 7 16 27 P 1 .6 P 3 .6 /W R PGM RD 8 17 20 P 1 .7 P 3 .7 /R D CE 33p ALE GND Y1 19 30 1 X1 ALE VPP 18 29 X2 PSEN C6 1 1.0 5 9 2 VCC 31 2764 14 EA 9 RST 33p VCC GND U3 A13 2 1 NOT U6 8051 U4 2 20 A14 2 SW 1 1 3 1 C4 NOT 4 10u U5 A15 2 1 NAND1 NOT R3 D1 R Sơ đồ kết nối 8051 với ROM dữ liệu 8Kx8
- 5 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. VCC VCC VCC U1 U2 U7 40 20 28 A D 0 A 8 A D 0 A 0 A 0 A D 0 39 21 3 2 10 11 P 0 .0 /A D 0 P 2 .0 /A 8 D 0 Q 0 A 0 D 0 A D 1 A 9 A D 1 A 1 A 1 A D 1 38 22 4 5 9 12 VCC VCC VCC P 0 .1 /A D 1 P 2 .1 /A 9 D 1 Q 1 A 1 D 1 A D 2 A 10 A D 2 A 2 A 2 A D 2 37 23 7 6 8 13 P 0 .2 /A D 2 P 2 .2 /A 1 0 D 2 Q 2 A 2 D 2 A D 3 A 11 A D 3 A 3 A 3 A D 3 36 24 8 9 7 15 P 0 .3 /A D 3 P 2 .3 /A 1 1 D 3 Q 3 A 3 D 3 A D 4 A 12 A D 4 A 4 A 4 A D 4 35 25 13 12 6 16 P 0 .4 /A D 4 P 2 .4 /A 1 2 D 4 Q 4 A 4 D 4 A D 5 A 13 A D 5 A 5 A 5 A D 5 34 26 14 15 5 17 P 0 .5 /A D 5 P 2 .5 /A 1 3 D 5 Q 5 A 5 D 5 A D 6 A 14 A D 6 A 6 A 6 A D 6 33 27 17 16 4 18 P 0 .6 /A D 6 P 2 .6 /A 1 4 D 6 Q 6 A 6 D 6 A D 7 A 15 A D 7 A 7 A 7 A D 7 32 28 18 19 3 19 P 0 .7 /A D 7 P 2 .7 /A 1 5 D 7 Q 7 A 7 D 7 A 8 25 A 8 ALE 11 A 9 1 10 24 P 1 .0 P 3 .0 /R XD LE A 9 A 10 2 11 1 10 21 P 1 .1 P 3 .1 /T XD OE GND A 10 A 11 3 12 23 P 1 .2 P 3 .2 /IN T 0 A 11 A 12 4 13 74LS373 2 P 1 .3 P 3 .3 /IN T 1 A 12 5 14 P 1 .4 P 3 .4 /T 0 C5 RD 6 15 22 P 1 .5 P 3 .5 /T 1 O E WR WR 7 16 27 P 1 .6 P 3 .6 /W R W E RD 8 17 20 P 1 .7 P 3 .7 /R D C S1 GND 33p 26 C S2 A LE Y1 19 30 X1 ALE 18 29 6264 X2 PSEN C6 1 1 .0 5 9 2 VCC 14 VCC 31 EA 9 RST 33p VCC GND U3 A13 2 1 NOT U6 8051 U4 2 20 A14 2 SW 1 1 3 1 C4 NOT 4 10u U5 A15 2 1 NAND1 NOT R3 D1 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:
- 6 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. Tín hiệu Đặc tính Loại bộ nhớ Vùng địa chỉ chọn chip truy xuất Dung lượng EPROM 27128 0000H - 3FFFH CS0 PSEN 16Kx8 EPROM 27128 4000H - 7FFFH CS1 PSEN 16Kx8 HM6264B 8000H - 9FFFH RD, WR CS2 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.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 = 2 10 byte=> - 8KB= 23.210 = 213 byte. Bảng phân chia vùng nhớ được xác định như sau: A A A A A A A A A A A A A A A A Địa IC chỉ 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IC1 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IC2 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IC3 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 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
- 7 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. Sơ đồ kết nối như sau: VC C VCC VCC VC C VCC U 65 U 66 U 71 U 71 40 20 28 28 28 U 70 AD 0 A8 AD 0 A0 A0 D 0 A0 D 0 A0 AD 0 39 21 3 2 10 11 10 11 10 11 P 0 .0 /A D 0 P 2 .0 /A 8 D 0 Q 0 A0 D 0 A0 D 0 A0 D 0 AD 1 A9 AD 1 A1 A1 D 1 A1 D 1 A1 AD 1 38 22 4 5 9 12 9 12 9 12 VCC VCC VCC VCC VCC P 0 .1 /A D 1 P 2 .1 /A 9 D 1 Q 1 A1 D 1 A1 D 1 A1 D 1 AD 2 A10 AD 2 A2 A2 D 2 A2 D 2 A2 AD 2 37 23 7 6 8 13 8 13 8 13 P 0 .2 /A D 2 P 2 .2 /A 1 0 D 2 Q 2 A2 D 2 A2 D 2 A2 D 2 AD 3 A11 AD 3 A3 A3 D 3 A3 D 3 A3 AD 3 36 24 8 9 7 15 7 15 7 15 P 0 .3 /A D 3 P 2 .3 /A 1 1 D 3 Q 3 A3 D 3 A3 D 3 A3 D 3 AD 4 A12 AD 4 A4 A4 D 4 A4 D 4 A4 AD 4 35 25 13 12 6 16 6 16 6 16 P 0 .4 /A D 4 P 2 .4 /A 1 2 D 4 Q 4 A4 D 4 A4 D 4 A4 D 4 AD 5 A13 AD 5 A5 A5 D 5 A5 D 5 A5 AD 5 34 26 14 15 5 17 5 17 5 17 P 0 .5 /A D 5 P 2 .5 /A 1 3 D 5 Q 5 A5 D 5 A5 D 5 A5 D 5 AD 6 A14 AD 6 A6 A6 D 6 A6 D 6 A6 AD 6 33 27 17 16 4 18 4 18 4 18 P 0 .6 /A D 6 P 2 .6 /A 1 4 D 6 Q 6 A6 D 6 A6 D 6 A6 D 6 AD 7 A15 AD 7 A7 A7 D 7 A7 D 7 A7 AD 7 32 28 18 19 3 19 3 19 3 19 P 0 .7 /A D 7 P 2 .7 /A 1 5 D 7 Q 7 A7 D 7 A7 D 7 A7 D 7 A8 A8 A8 25 25 25 A8 A8 A8 ALE 11 A9 A9 A9 1 10 24 24 24 P 1 .0 P 3 .0 /R XD LE A9 A9 A9 A10 A10 A10 2 11 1 10 21 21 21 P 1 .1 P 3 .1 /TXD OE GND A10 A10 A10 A11 A11 A11 3 12 23 23 23 P 1 .2 P 3 .2 /IN T 0 A11 A11 A11 A12 A12 A12 4 13 74LS373 2 2 2 P 1 .3 P 3 .3 /IN T 1 A12 A12 A12 A13 A13 5 14 VCC 26 26 P 1 .4 P 3 .4 /T 0 A13 A13 C5 R D 22 6 15 P 1 .5 P 3 .5 /T 1 OE WR PSEN W R 27 PSEN 7 16 22 22 P 1 .6 P 3 .6 /W R OE WE OE RD Y 2 20 8 17 27 27 P 1 .7 P 3 .7 /R D PGM CS1 PGM 20 Y0 Y1 33p U 67 20 26 20 GND CE CS2 CE ALE A8 A8 Y1 19 30 2 18 X1 ALE A0 B0 PSEN A9 A9 1 1 .0 5 9 2 18 29 3 17 1 14 VC C H M 6264B 1 14 VCC X2 PSEN A1 B1 VPP GND VPP GND C6 A10 A10 4 16 14 A2 B2 A11 A11 31 5 15 27128 27128 EA A3 B3 A12 A12 9 6 14 VCC RST A4 B4 A13 A13 33p VC C 7 13 A5 B5 A14 A14 8 12 U 72 GND A6 B6 16 A15 A15 9 11 A7 B7 A14 Y0 1 15 A Y 0 A15 Y1 8051 1 2 14 VCC 20 VCC D IR B Y 1 Y2 SW 1 19 10 3 13 G GND C Y 2 C4 12 Y 3 10u 74LS245 6 11 G1 Y 4 VCC 4 10 G 2A Y 5 5 9 G 2B Y 6 7 GND Y 7 R3 74LS138 D1 R 8 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ợ). GHÉP NỐI SONG SONG VÀ LẬP TRÌNH 4.2. TỔNG QUAN 4.2.1. 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.
- 8 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. GHÉP NỐI 8051 VỚI 8255A 4.2.2. Chức năng các chân của 8255A 4.2.2.1. 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 và 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 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ở.
- 9 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à A1 A2 chọn cổng Chọn cổng A0 A1 CS Cổng A 0 0 0 Cổng B 0 0 1 Cổng C 0 1 0 Thanh ghi điều khiển 0 1 1 8255 không được chọn 1 x x Sau đây là bảng phối hợp các chân CS , A, 1 A2, RD và 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 Chức năng A0 A1 CS WR RD Cổng A → Bus dữ liệu 0 0 0 0 1 Cổng B→ Bus dữ liệu 0 0 1 0 1 Cổng C→ Bus dữ liệu 0 1 0 0 1 Bus dữ liệu → Cổng A 0 0 0 1 0 Bus dữ liệu → Cổng B 0 0 1 1 0 Bus dữ liệu → Cổng C 0 1 0 1 0 Ghi vào từ điều khiển 0 1 1 1 0 Đường dẫn dữ liệu ở trạng thái điện trở cao 1 x x x x Đường dẫn dữ liệu ở trạng thái điện trở cao 0 x x 1 1
- 10 D7 D0 PA 1 PA PA3 40 RD PB 4 8255 2 PA2 39 PA PA 3 38 5 PA1 WR PC 4 6 37 PA PA0 A0 7 5 36 WR P1.4 A1 6 RESE 35 P1.5 TTTT 7 D 34 GND DTT 0 8 8 33 A1 CS RESET 2 1 9 D A0 32 5 2D 10 31 PC 5 3 D 11 7 PC6 30 A 4 D PC5 12 29 5D 13 PC4 28 6 D 14 27 PC0 7 VCC PC1 15 26 PB PC 16 25 7 2 PB PC 17 24 6 PB 3 23 18 PB0 5 PB 22 PB1 19 4 PB PB 20 21 3 2 Hình 4.1.1a. Sơ đồ chân của 8255A Điều Cửa khiển A nhóm (8) A Đệm dữ liệu Cửa C nửa cao (4) Điều Cửa C khiển nửa thấp nhóm (4) B Logic điều khiển đọc Cửa B ghi (8) Hình 4.1.1b.. Sơ đồ khối của 8255A Chọn chế độ của 8255A 4.2.2.2. 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. Chế độ 0: Vào/ra thông thường
- 11 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). Group A Group B D7 D6 D5 D4 D3 D2 D1 D0 Mode Port C (Lowe Port A Selcction PC3 – PC0) 1 = Input 1 = I/O Mode 0 = Mode 0 1 = Input 0 = Output 0 = BSR 1 = Mode 1 0 = Output Mode Port C (Upper Mode Selection PC7 - PC4) 00 = Mode 0 Port B 1 = Input 01 = Mode 1 1 = Input 0 = Output 1x = Mode2 0 = Output Hình 5.4.2b. Từ điều khiển cấu hình của 8255A.
- 12 D7 D6 D5 D4 D3 D2 D1 D0 0 x x x Bit Select S/R BSR Not Used. 000= Bit0 100=Bit4 Set=1 Mode Generally = 0. 001 = Bit1 101=Bit5 Reset=0 010 = Bit2 110=Bit6 011 = Bit3 111=Bit7 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: Địa chỉ A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 =4000H x 1 x x x x x x x x x x x x 0 0 (PA) =4001H x 1 x x x x x x x x x x x x 0 1 (PB) =4002H x 1 x x x x x x x x x x x x 1 0 (PC) =4003H x 1 x x x x x x x x x x x x 1 1 (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 MOV DPTR, #4003H ;nap d/c cong cua thanh
- 13 ;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 RD P3.7 WR P3.6 A14 CS WR RD P2.7 8051 PA ALE 8255 L A PB AD7 E A1 P0.7 A1 DQ PC A0 74LS373 P0.0 AD0 D7 A0 D0 OC D7 D0 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: Đ/c cổng, CR A7 A6 A5 A4 A3 A2 A1 A0 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)
- 14 x x 1 x x x 1 1 = 23H (CR) RD P3.7 WR P3.6 A7 WR RD CS 8051 PA A2 8255 PB ALE LE A AD7 A1 PC P0.7 DQ A1 L PCU A0 74LS373 P0.0 D7 D0 RES AD0 A0 OC D7 D0 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) 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)
- 15 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: A2 A0 A A3 B A1 7 C A4 8255A 4 Y2 L A5 G 2A S A6 CS G 2B 1 A7 G1 3 8 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% D0 D7 WR WR 8255 RD RD A0 A0 PCi A2 Mạch A1 A7 giảI mã A7 CS 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 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
- 16 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 C1 U1 D[0..7] 19 XTAL1 AD[0..7] 33pF A[8..15] 11.0592MHz A[8..15] 18 C2 U2 U3 U4 XTAL2 ALE D0 3 2 A0 A2 1 15 Y0 D0 4 PA0 30 34 ALE D0 Q0 A Y0 D0 PA0 D1 4 5 A1 A3 2 14 Y1 D1 3 PA1 31 33 VCC EA D1 Q1 B Y1 D1 PA1 D2 7 6 A2 A4 3 13 Y2 D2 2 PA2 9 29 32 33pF RST PSEN D2 Q2 C Y2 D2 PA2 D3 8 9 A3 12 Y3 D3 1 PA3 31 D3 Q3 Y3 D3 PA3 D4 13 12 A4 11 Y4 D4 40 PA4 30 VCC D4 Q4 Y4 D4 PA4 D5 14 15 A5 A5 6 10 Y5 D5 39 PA5 29 D5 Q5 E1 Y5 D5 PA5 10 P3.0 D6 17 16 A6 A6 4 9 Y6 D6 38 PA6 1 28 P1.0 P3.0/RXD D6 Q6 E2 Y6 D6 PA6 C3 11 P3.1 D7 18 19 A7 A7 5 7 Y7 D7 37 PA7 2 27 P1.1 P3.1/TXD D7 Q7 E3 Y7 D7 PA7 12 P3.2 3 P1.2 P3.2/INT0 13 P3.3 RD 18 PB0 4 1 5 74LS138 100uF P1.3 P3.3/INT1 OE RD PB0 14 P3.4 ALE WR 36 19 PB1 5 11 P1.4 P3.4/T0 LE WR PB1 15 P3.5 A0 20 PB2 6 9 P1.5 P3.5/T1 A0 PB2 16 WR A1 21 PB3 7 8 74LS373 P1.6 P3.6/WR A1 PB3 17 RD 22 PB4 PB6 8 35 P1.7 P3.7/RD RESET PB4 23 PB5 PB5 VCC PB5 R1 Y0 24 PB6 PB4 6 AT89C51 RP1 CS PB6 25 PB7 PB3 0.5k PB7 PB2 1 14 PC0 PB1 PC0 D0 15 PC1 PB0 2 PC1 D1 16 PC2 3 PC2 D2 17 PC3 4 PC3 D3 13 PC4 5 PC4 D4 12 PC5 6 PC5 D5 11 PC6 7 PC6 D6 10 PC7 8 PC7 D7 9 10k 8255A 8 7 6 5 4 3 2 1 RP2 10k Sơ đồ kết nối 8051 với 8255A thông qua mạch chốt 74LS373 và giải mã 74LS138
- 17 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) 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. Mô tả chân của LCD 4.3.1.1. LCD có tổng số 14 chân chia làm 3 nhóm (hình 4.3.1a): (3chân) Cấp nguồn VDD, VSS: cấp 5V, 0V Nhóm1: 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 (3 chân) Điều khiển việc vào ra thông tin: E, RS, R/W Nhóm 3: E:(bật /tắt) (cho phép/ không cho phép trao đổi thông tin với VĐK)
- 18 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. 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:
- 19 Bảng lệnh của LCD 4.3.1.2. 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 Lệnh đến thanh ghi của LCD Mã (Hex) Xoá màn hình hiển thị 1 Trở về đầu dòng 2 Dịch con trỏ sang trái 4 Dịch con trỏ sang phải 6 Dịch hiển thị sang phải 5 Dịch hiển thị sang trái 7 Tắt con trỏ, tắt hiển thị 8 Tắt hiển thị, bật con trỏ A Bật hiển thị, tắt con trỏ C Bật hiển thị, nhấp nháy con trỏ E Tắt con trỏ, nhấp nháy con trỏ F Dịch vị trí con trỏ sang trái 10 Dịch vị trí con trỏ sang phải 14 Dịch toàn bộ hiển thị sang trái 18 Dịch toàn bộ hiển thị sang phải 1C Đưacon trỏ về đầu dòng thứ 80 nhất Đưa con trỏ về đầu dòng thứ hai C0 Hai dòng ma trận 5x7 38 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 Thời R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 RS Lệnh Mô tả gian thực hiện
- 20 Xoá toàn bộ màn hình Xoá và đặt địa chỉ 0 của 1.64 µs màn 0000 000001 DD RAM vào bộ đếm hình địa chỉ Đặt địa chỉ 0 của DD Trở về RAM như bộ đếm địa 1.64 µs đầu chỉ. Trả hiển thị dịch 0000 00001- về vị trí Nguồn DD dòng RAM không thay đổi Đặt hướng chuyển Đặ t dịch con trỏ và xác 1 chế độ định dịch hiển thị các 40 µs 0000 0001/S thao tác này được thực truy D nhập hiện khi đọc và ghi dữ liệu Điều Đặt Bật/ tắt màn hình khiển (D) Bật/ tắt con trỏ 40 µs Bật/tắt 0 0 0 0 0 0 1 DCB (C) và nhấp nháy ký tự hiển ở vị trí con trỏ (B) thị Dịch SR Dịch con trỏ và dịch hiển 01//- 40 µs hiển thị mà không thay 0000 - thị và đổi DD RAM CL con trỏ Thiết lập độ dài dữ Đặ t liệu (DL) số dòng D 40 µs chức 0000 1 NF- - hiển thị (L) và phòng L năng ký tự (F) Đặ t Thiết lập địa chỉ C6 địa chỉ RAM dữ liệu CG 40 µs 0001 AGC RAM được gửi đi và CGRA nhận sau thiết lập này M Thiết Thiết lập địa chỉ DD lập địa RAM dữ liệu DD 40 µs 001 ADD chỉ DD RAM được gửi và nhận sau thiết lập này RAM
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn