MẠCH ĐIỆN GIAO TIẾP VÙNG ĐỊA CHỈ RAM NGOẠI TỪ 0000H ĐẾN FFFFH PHÂN CHIA BỘ NHỚ NHƯ SAU:... Vậy ta dùng đường địa chỉ A13 để điều khiển chip select phân biệt 2 IC nhớ.. VI ĐIỀU KHIỂN
Trang 1………… o0o…………
Vi điều khiển giao tiếp với bộ nhớ ngoại vi IC ngoại vi
Trang 2VI ĐIỀU KHIỂN GIAO TIẾP VỚI BỘ NHỚ NGOẠI VÀ IC NGOẠI VI
BÀI SỐ 1: YÊU CẦU: MỞ RỘNG BỘ NHỚ NGOẠI
VI ĐIỀU KHIỂN 89S52 KẾT NỐI VỚI 32KB BỘ NHỚ RAM DÙNG 1 IC 62256 CĨ DUNG LƯỢNG 32 KBYTE – LÀM BỘ NHỚ DỮ LIỆU
MẠCH ĐIỆN GIAO TIẾP
VĐK CĨ THỂ KẾT NỐI VỚI 64KBYTE BN DỮ LIỆU VÀ 64KBYTE BN CHTR
VỚI RAM ĐÃ KẾT NỐI THÌ ĐỊA CHỈ CÓ THỂ TRUY XUẤT TỪ 0000H ĐẾN 7FFFH
LỆNH ĐỂ TRUY XUẤT BN NGOẠI:
ĐỂ TRUY XUẤT DỮ LIỆU CỦA BỘ NHỚ NGOẠI – VỚI ĐỊA CHỈ 16 BIT:
VÍ DỤ GHI DL VÀO Ô NHỚ CÓ ĐỊA CHỈ 1000H
Trang 3TIEPTUC: JNB RI,$ ;DU LIEU TU HE THONG KHAC
BÀI SỐ 2: YÊU CẦU: MỞ RỘNG BỘ NHỚ NGOẠI
VDK 89S52 KẾT NỐI VỚI 64KB BỘ NHỚ RAM DÙNG 2 IC 62256 CĨ DUNG LƯỢNG 32 KBYTE – LÀM BỘ NHỚ DỮ LIỆU
MẠCH ĐIỆN GIAO TIẾP
VÙNG ĐỊA CHỈ RAM NGOẠI TỪ 0000H ĐẾN FFFFH
PHÂN CHIA BỘ NHỚ NHƯ SAU:
0000H
RAM2 62256 32KBYTE
RAM1 62256 32KBYTE
7FFFH 8000H FFFFH
RAM1 VỚI A15=0 0000H=0000 0000 0000 0000B; 7FFFH=0111 1111 1111 1111B
RAM2 VỚI A15=1 8000H=1000 0000 0000 0000B; FFFFH=1111 1111 1111 1111B
Trang 4GHI DỮ LIỆU VÀO BỘ NHỚ NGOẠI CỦA IC RAM 62256 THỨ 1:
Trang 5BÀI SỐ 3: YÊU CẦU: MỞ RỘNG BỘ NHỚ NGOẠI
VDK 89S52 KẾT NỐI VỚI 1 IC NHỚ EPROM 2764 VÀ 1 IC NHỚ RAM 6264 CĨ DUNG LƯỢNG 8 KBYTE CHO 1 IC – LÀM BỘ NHỚ DỮ LIỆU
MẠCH ĐIỆN GIAO TIẾP
VÙNG ĐỊA CHỈ RAM NGOẠI TỪ 0000H ĐẾN FFFFH
PHÂN CHIA BỘ NHỚ NHƯ SAU:
Trang 6Trong bảng địa chỉ bộ nhớ bắt đầu là IC nhớ 2764 có 13 đường địa chỉ A[12÷0] nên trong bảng địa chỉ thì ô nhớ có địa chỉ bắt đầu tương ứng với 13 đường địa chỉ A[12÷0] đều bằng 0 Ô nhớ cuối cùng có địa chỉ tương ứng với 13 đường địa chỉ A[12÷0] đều bằng 1 Địa chỉ tính theo số hex của 8Kbyte EPROM là [0000H÷1FFFH] Tiếp theo là bộ nhớ RAM 6264 cũng có 13 đường địa chỉ A[12÷0] nên trong bảng địa chỉ thì ô nhớ có địa chỉ bắt đầu tương ứng với 13 đường địa chỉ A[12÷0] đều bằng 0 Ô nhớ cuối cùng có địa chỉ tương ứng với 13 đường địa chỉ A[12÷0] đều bằng 1 Địa chỉ tính theo số hex của 8Kbyte RAM là [2000H÷3FFFH]
Để phân biệt 2 bộ nhớ này độc lập với nhau thì phải dùng các đường địa chỉ còn lại từ A[13÷15] Trong bài này sử dụng đường địa chỉ A13: khi A13 = 0 thì cho phép bộ nhớ EPROM, RAM sẽ bị cấm hay cách ly – trở kháng cao, khi A13 = 1 thì cho phép bộ nhớ RAM, EPROM sẽ bị cách ly Vậy ta dùng đường địa chỉ A13 để điều khiển chip select phân biệt 2 IC nhớ
Sơ đồ nguyên lý của hệ thống như hình 6-40
Hình 6-40a Sơ đồ nguyên lý của khối vđk và IC chốt
Trong hệ thống sử dụng vđk và IC chốt 74573 để tách địa chỉ và dữ liệu, kết quả được 8 đường dữ liệu
D[7:0] và 16 đường địa chỉ A[15:0], các đường điều khiển RD , WR
Eprom 2764 và RAM 6264 có 13 đường địa chỉ A[12:0] được kết nối với 13 đường địa chỉ A[12÷0] của vđk,
8 đường dữ liệu D[7:0] của bộ nhớ được kết nối với 8 đường dữ liệu của vđk, chân điều khiển đọc OE được kết nối với chân RD của vi xử lý, chân điều khiển ghi WR của SRAM 6264 được kết nối với WR của vi xử lý
Do IC ram 6264 có 2 chip select: một tích cực mức thấp và 1 tích cực mức cao nên ta có thể bỏ cổng NOT và điều khiển chip select tích cực mức cao – tiết kiệm được cổng NOT
Trang 7BÀI SỐ 4: YÊU CẦU: MỞ RỘNG BỘ NHỚ NGOẠI
VDK 89S52 KẾT NỐI VỚI 4 IC NHỚ EPROM 2764 VÀ 4 IC NHỚ RAM 6264 CĨ DUNG LƯỢNG 8 KBYTE CHO 1 IC – LÀM BỘ NHỚ DỮ LIỆU
MẠCH ĐIỆN GIAO TIẾP
VÙNG ĐỊA CHỈ RAM NGOẠI TỪ 0000H ĐẾN FFFFH
PHÂN CHIA BỘ NHỚ NHƯ SAU:
Hệ thống sử dụng vđk 89S52 có 16 đường địa chỉ nên có thể giao tiếp với 64Kbyte bộ nhớ Trong hệ thống này sử dụng 8×8Kbyte = 64Kbyte là sử dụng hết
Lập bảng địa chỉ bộ nhớ của VĐK như sau:
Trang 8Bảng 6-20 Bảng địa chỉ bộ nhớ
Để phân biệt 8 bộ nhớ độc lập với nhau thì phải dùng các đường địa chỉ còn lại từ A[13÷15] Ba đường địa chỉ phân biệt 8 bộ nhớ thì phải dùng mạch giải mã 3 đường sang 8 đường sử dụng IC giải mã 74LS138
Sơ đồ nguyên lý của hệ thống như hình 6-40
Trang 9Hình 6-40a Sơ đồ nguyên lý của khối vđk và IC chốt
BÀI SỐ 5: YÊU CẦU: MỞ RỘNG BỘ NHỚ NGOẠI
VDK 89S52 KẾT NỐI VỚI 32KB BỘ NHỚ RAM DÙNG 4 IC 6264 CĨ DUNG LƯỢNG 8 KBYTE/1 IC
MẠCH ĐIỆN GIAO TIẾP
VÙNG ĐỊA CHỈ RAM NGOẠI TỪ 0000H ĐẾN FFFFH
TA CÓ BẢNG ĐỒ BỘ NHỚ NHƯ SAU:
Trang 10BÀI SỐ 6: YÊU CẦU: MỞ RỘNG NGOẠI VI
VDK 89S52 KẾT NỐI VỚI 1 IC NGOẠI VI 8255
MẠCH ĐIỆN GIAO TIẾP
VÙNG ĐỊA CHỈ RAM NGOẠI TỪ 0000H ĐẾN FFFFH – CÓ 65536 Ô NHỚ BYTE
TA XEM IC NGOẠI VI 8255 LÀ 1 BỘ NHỚ CÓ 2 ĐƯỜNG ĐỊA CHỈ – TƯƠNG ĐƯƠNG 4 Ô NHỚ – KẾT NỐI NHƯ BỘ NHỚ
Hình 6-xx Sơ đồ giao tiếp vđk với 1 IC PPI 8255
Trang 11BÀI SỐ 7: YÊU CẦU: MỞ RỘNG NGOẠI VI
VDK 89S52 KẾT NỐI VỚI 1 IC NGOẠI VI 8255, DÙNG 3 PORT ĐIỀU KHIỂN 3 LED 7 ĐOẠN, VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN 3 LED 7 ĐOẠN SÁNG SỐ 0, 1, 2
SƠ ĐỒ MẠCH:
Hình 6-xx Sơ đồ giao tiếp vđk với IC PPI 8255 đk 3 led 7 đoạn
GHI DỮ LIỆU VÀO BỘ NHỚ NGOẠI CÓ ĐỊA CHỈ 8 BIT:
Chương trình:
Trang 12
MOV A,#0A4H ;ma so 2
BÀI SỐ 8: YÊU CẦU: MỞ RỘNG NGOẠI VI
VDK 89S52 KẾT NỐI VỚI 1 IC NGOẠI VI 8255, DÙNG PORTA ĐIỀU KHIỂN 1 LED 7 ĐOẠN VÀ PORTC GIAO TIẾP VỚI 3 PHÍM, VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN NHẤN PHÍM START THÌ LED SÁNG SỐ 1, STOP THÌ LED SÁNG SỐ 0, NHẤN INV THÌ LED TẮT
Sơ đồ mạch:
PORT A LÀ OUTPUT, PORTC LÀ INPUT
Chương trình:
Trang 13
MOVX A,@R0 ;đọc portc MOV A,P2
BÀI SỐ 9: YÊU CẦU: MỞ RỘNG NGOẠI VI
VDK 89S52 KẾT NỐI VỚI 4 IC NGOẠI VI 8255 ĐỂ ĐƯỢC THÊM 12 PORT
Trang 16Hình 6-xx Sơ đồ giao tiếp vđk với 1 IC PPI 8255
BÀI SỐ 10: YÊU CẦU: MỞ RỘNG NGOẠI VI
VDK 89S52 KẾT NỐI VỚI 4 IC NHỚ RAM 6264 – TỔNG CỘNG 32 KBYTE VÀ 4 IC NGOẠI VI 8255 ĐỂ ĐƯỢC THÊM 12 PORT – 96IO
PHÂN TÍCH YÊU CẦU:
4 IC NHỚ RAM 6264 CÓ TỔNG CỘNG LÀ 32 KBYTE, 4 IC NGOẠI VI 8255 CÓ TỔNG CỘNG LÀ 16 Ô NHỚ – TỔNG SỐ LINH KIỆN LÀ 8 GỒM 4 IC NHỚ VÀ 4 IC NGOẠI VI
ĐỂ ĐƠN GIẢN – TIẾT KIỆM THÌ TA XEM MỖI IC NGOẠI VI 8255 NHƯ LÀ 1 BỘ NHỚ CÓ DUNG LƯỢNG 8KBYTE NHƯ IC NHỚ 6264 TA THIẾT LẬP BẢNG ĐỒ NHỚ NHƯ SAU:
Trang 17Ta xét bảng đồ chi tiết của 8255-1
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Trang 19Ta xem IC ngoại vi 8255 là 1 bộ nhớ có 2 đường địa chỉ – tương đương 4 ô nhớ – kết nối như bộ nhớ
4 IC 8255 sẽ dùng 16 ô nhớ, lập bảng địa chỉ bộ nhớ của VĐK như sau:
Chương trình:
VÍ DỤ GHI DL 35H VÀO Ô NHỚ RAM NGOẠI CÓ ĐỊA CHỈ 3000H CỦA IC 10
Trang 20MOV P1,A ;GỞI RA PORT 1
BÀI SỐ 11: YÊU CẦU: MỞ RỘNG NGOẠI VI
VDK 89S52 KẾT NỐI VỚI 4 IC NHỚ RAM 6264 – TỔNG CỘNG 32 KBYTE VÀ 8 IC NGOẠI VI 8255 ĐỂ ĐƯỢC THÊM 12 PORT – 96IO
Phân tích yêu cầu:
4 IC nhớ ram 6264 có tổng cộng là 32 kbyte, 8 IC ngoại vi có tổng cộng là 32 ô nhớ – tổng số linh kiện là
12 gồm 4 IC nhớ và 8 IC ngoại vi
Để thiết kế thì ta xem 8 IC ngoại vi 8255 như là 1 IC nhớ 6264 Vậy ta có tổng cộng là 5 IC nhớ
Ta thiết lập bảng đồ nhớ như sau:
Trong vùng nhớ của 8 IC 8255 ta lại phân chia nhỏ hơn cho từng IC 8255,
Ta có bảng đồ chi tiết của 8 IC 8255 như sau:
Trang 23VI ĐIỀU KHIỂN 89S52 GIAO TIẾP VỚI 8 LED 7 ĐOẠN VÀ 64 PHÍM THEO PHƯƠNG PHÁP QUÉT – PORT0 ĐIỀU KHIỂN CÁC ĐOẠN, PORT1 ĐIỀU KHIỂN QUÉT TRANSISTOR ĐỂ CẤP DÒNG CHO LED VÀ QUÉT PHÍM, PORT2 LÀM DỮ LIỆU CHO 8 HÀNG
Trang 25Các đường SL dùng để quét phím và quét hiển thị
Trang 26Sử dụng 4 đường SL để quét 16 led 7 đoạn nhưng chỉ dùng 8 đường để quét phím
Trang 27IC 8279 có 1 đường địa chỉ A0 có chức năng lựa chọn như sau:
- A0 = 0: IC 8279 xem dữ liệu từ vi xử lý gởi đến là dữ liệu để hiển thị
- A0 = 1: IC 8279 xem dữ liệu từ vi xử lý gởi đến là lệnh để điều khiển 8279
Từ điều khiển như hình 6-31:
Hình 6-31 Từ điều khiển keyboard/Display mode set của IC 8279
Trong đó 2 bit DD dùng để thiết lập Mode hiển thị, 3 bit KKK dùng để thiết lập Mode quét bàn phím
Chức năng của 2 bit DD:
00 hiển thị 8 ký tự – lối vào trái
01 hiển thị 16 ký tự – lối vào trái
10 hiển thị 8 ký tự – lối vào phải
11 hiển thị 16 ký tự – lối vào phải
Trang 28Bảng 6-18 Các mod hiển thị khác nhau của 8279
Chức năng của 3 bit KKK:
000 encode scan keyboard – 2 key lockout
001 decode scan keyboard – 2 key lockout
010 encode scan keyboard – N key rollover
011 decode scan keyboard – N key rollover
100 encode scan sensor matrix
101 decode scan sensor matrix
110 strobe input, encode display scan
111 strobe input, decode display scan Bảng 6-19 Các mode quét ma trận phím khác nhau của 8279
Nếu các ứng dụng lớn dùng nhiều phím và nhiều led thì các đường tín hiệu SL2-SL0 xuất tín hiệu dạng mã hóa (encode) – khi đó phải dùng thêm IC giải mã để được nhiều ngõ ra:
Trang 30Khi có phím bị nhấn, IC 8279 sẽ tự động chống dội sau 10,3 ms và kiểm tra lại một lần nữa để xem phím đó có bị nhấn hay không, nếu còn thì IC 8279 sẽ thiết lập mã cho phím này và lưu trữ mã của phím vào bộ nhớ RAM bên trong Sau đó sẽ báo cho vi xử lý biết đã có một phím tác động và yêu cầu vi xử lý nhận mã của phím này bằng cách tác động đến tín hiệu ngắt IRQ Tín hiệu IRQ được kết nối đến một ngõ vào ngắt của vi xử lý và chương trình phục vụ cho ngắt này là chương trình ngắt phím Nhiệm vụ của vi xử lý là đọc mã của phím bị nhấn vào để xử lý và Reset ngắt của IC 8279 để chuẩn bị cho phím tiếp theo
Khung mã dữ liệu của phím bị nhấn như hình 6-39:
Hình 6-39 Cấu trúc mã phím của IC 8279
MÃ PHÍM CHI TIẾT CHO TỪNG PHÍM – KHÔNG NHẤN SHIFT VÀ CNTL
Trang 32Nếu không sử dụng phím tổ hợp thì 2 ngõ vào CNTL và SHIFT của IC 8279 phải nối mass (0V) – khi đó 2 bit CNTL và SHIFT trong khung mã phím sẽ bằng 0
Khi nhấn 1 phím thì IC 8279 sẽ biết được phím nhấn tương ứng với trạng thái quét nào của 3 bit SL[2÷0] và chính là 3 bit “SCAN”, phím nhấn trên sẽ làm thay đổi trạng thái 1 trong 8 đường RL qua mã hoá 8 sang 3 sẽ tạo
ra mã nhị phân 3 bit chính là 3 bit “RETURN” trong khung mã dữ liệu
Nếu không dùng phím CNTL và SHIFT thì tổ hợp 6 bit sẽ tương ứng với 64 phím khác nhau tương ứng với số hex [00H÷3FH], khi nhấn thêm phím tổ hợp gồm phím SHIFT và 1 trong 64 phím thì sẽ có 64 mã khác tương ứng với số hex [40H÷7FH], khi nhấn thêm phím tổ hợp gồm phím CNTL và 1 trong 64 phím thì sẽ có 64 mã khác tương ứng với số hex [80H÷BFH], cuối cùng khi nhấn thêm phím tổ hợp gồm phím CNTL + SHIFT và 1 trong 64 phím thì sẽ có 64 mã khác tương ứng với số hex [C0H÷FFH] Vậy tổng cộng có tất cả 256 tổ hợp phím
MÃ PHÍM CHI TIẾT CHO TỪNG – TỔ HỢP PHÍM: NHẤN SHIFT VÀ 1 PHÍM
Trang 37RET