Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 39 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
39
Dung lượng
672,04 KB
Nội dung
Bài giảng VI XỬ LÝ Chương 5: Giao tiếp http://www.ebook.edu.vn 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 http://www.ebook.edu.vn 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 http://www.ebook.edu.vn 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 http://www.ebook.edu.vn 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 http://www.ebook.edu.vn 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 http://www.ebook.edu.vn 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 http://www.ebook.edu.vn 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ỉ 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 http://www.ebook.edu.vn 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 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 Bài giảng VI XỬ LÝ Chương 5: Giao tiếp http://www.ebook.edu.vn 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 http://www.ebook.edu.vn 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 [...]... 17 74HC573 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 2 3 4 5 6 7 8 9 D0 D1 D2 D3 D4 D5 D6 D7 LE OE 11 1 L3 74HC573 19 18 17 16 15 14 13 12 a b c d e f g dp Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 2 3 4 5 6 7 8 9 D0 D1 D2 D3 D4 D5 D6 D7 LE OE 1 2 3 4 L1 L2 L3 L4 L2 11 1 74HC573 19 18 17 16 15 14 13 12 a b c d e f g dp 1 2 3 4 5 6 7 8 D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7... http://www.ebook.edu.vn 28 Bài giảng VI XỬ LÝ Chương 5: Giao tiếp 34 33 32 31 30 29 28 27 9 8 35 5 36 6 D0 D1 D2 D3 D4 D5 D6 D7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 A0 A1 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 RESET RD WR CS PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 4 3 2 1 40 39 38 37 18 19 20 21 22 23 24 25 14 15 16 17 13 12 11 10 8 255 Sơ đồ khối chức năng của 8 255 A: Hình 5. 34 Nhóm A port A Điều khiển nhóm A D0 ÷D7 Đệm bus... chuyển đổi được đưa vào chân VIN(+) + VCC: chân nguồn +5V Chân này cũng được sử dụng như là một điện áp tham chiếu khi chân Vref/2 hở (không kết nối) + Vref/2: ngõ vào điện áp chuẩn cho phép chỉnh thang đo Vref/2 (V) Không kết nối 2.0 1 .5 1.28 Vin (V) 0 đến 5 0 đến 4 0 đến 3 0 đến 2 .56 Độ phân giải (mV) 5/ 256 = 19 .53 4/ 256 = 15. 62 3/ 256 = 11.71 2 .56 / 256 = 10 + D0 – D7: 8 bit dữ liệu số ngõ ra Đây là các... D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 2 3 4 5 6 7 8 9 11 1 L1 D0 D1 D2 D3 D4 D5 D6 D7 74HC573 LE OE Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 19 18 17 16 15 14 13 12 a b c d e f g dp 19 18 17 16 15 14 13 12 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 2 3 4 5 6 7 8 9 D0 D1 D2 D3 D4 D5 D6 D7 P1.0 LED4 ca ca LED3 ca ca LED2 ca ca LED1 Bài giảng VI XỬ LÝ Chương 5: Giao tiếp CLR CLR MOV MOV MOVC MOV SETB MOV MOV... PB7 PC0 ÷ PC3 Hình 5. 35 Điều khiển hoạt động của PPI 8 255 A: - Để xác lập chế độ hoạt động của PPI 8 255 A, phải ghi giá trò từ điều khiển (control word) vào thanh ghi điều khiển (control register) http://www.ebook.edu.vn 29 Bài giảng VI XỬ LÝ D7 1 Chương 5: Giao tiếp - Có 2 loại từ điều khiển cho PPI 8 255 A: Từ điều khiển đònh nghóa cấu hình cho các port PA, PB, PC Cách xác lập: D6 D5 D4 D3 D2 D1 Chọn... http://www.ebook.edu.vn ORG 0 MOV A,P2 ANL A,#0FH MOV P1,A 14 Bài giảng VI XỬ LÝ Chương 5: Giao tiếp +5V D0 D1 D2 D3 P2.0 P2.1 P2.2 P2.3 P2.4 P2 .5 P2.6 P2.7 7 1 2 6 P1.0 P1.1 P1.2 P1.3 P1.4 P1 .5 P1.6 P1.7 3 5 A B C D E F G D0 D1 D2 D3 LT RBI BI/RBO a b c d e f g 13 12 11 10 9 15 14 4 330x7 dp 74247 8 051 SJMP LOOP END Hình 5. 20 8 051 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... tiếp nhập cơ bản - Thường sử dụng các bộ đệm 3 trạng thái như hình vẽ sau: 1 VCC 10k x 8 9 8 7 6 5 4 3 2 ĐẾN BUS DỮ LIỆU 8 051 2 4 6 8 11 13 15 17 SW DIP-8 0 /CS 1 19 /RD A1 A2 A3 A4 A5 A6 A7 A8 1OE 2OE Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 18 16 14 12 9 7 5 3 D0 D1 D2 D3 D4 D5 D6 D7 1 2 3 4 5 6 7 8 CON8 74LS244 Hình 5. 32 - Kết nối như trên cho phép vi xử lý đọc nội dung của 8 SW được nối vào bus dữ liệu khi tín... http://www.ebook.edu.vn 27 Bài giảng VI XỬ LÝ Chương 5: Giao tiếp Giao tiếp xuất cơ bản - Thường sử dụng các mạch chốt như hình vẽ (dùng IC chốt là 74374) VCC TỪ BUS DỮ LIỆU 8 051 1 2 3 4 5 6 7 8 /CS /WR D0 D1 D2 D3 D4 D5 D6 D7 3 4 7 8 13 14 17 18 CON8 11 1 D0 D1 D2 D3 D4 D5 D6 D7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 2 5 6 9 12 15 16 19 CLK OE 74LS374 0 Hình 5. 33 - Các ngõ vào mạch chốt được lấy từ bus dữ liệu (từ... sơ đồ khối: 26 27 28 1 2 3 4 5 12 16 10 25 24 23 22 9 6 11 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 D0 D1 D2 D3 D4 D5 D6 D7 REF+ REF- EOC CLK A0 A1 A2 ALE OE START VCC ADC0809 Hình 5. 38 Hình 5. 39 http://www.ebook.edu.vn 34 17 14 15 8 18 19 20 21 7 Bài giảng VI XỬ LÝ Chương 5: Giao tiếp - Khả năng: + Giao tiếp dễ dàng với tất cả các bộ vi xử lý + Hoạt động với thang đo tỷ lệ với 5VDC hoặc điện áp chuẩn có thể... giải mã Ví dụ 5. 12: Cho giao tiếp giữa 8 051 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 +5V D0 D1 D2 D3 P2.0 P2.1 P2.2 P2.3 P2.4 P2 .5 P2.6 P2.7 3 4 7 8 13 14 17 18 P1.0 P1.1 P1.2 P1.3 P1.4 P1 .5 P1.6 P1.7 +5V 11 1 D1 D2 D3 D4 D5 D6 D7 D8 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 a b . Bài giảng VI XỬ LÝ Chương 5: Giao tiếp http://www.ebook.edu.vn 1 CHƯƠNG 5: GIAO TIẾP I. GIAO TIẾP BỘ NHỚ NGOÀI Họ VĐK 8 051 có một lượng ROM nội on-chip 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 8 051 31 19 18 9 12 13 14 15 1 2 3 4 5 6