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
754,5 KB
Nội dung
Vi điều khiển 8051 Một số tập giao diện với ngoại vi Mở rộng port xuất với mạch chốt 31 19 18 1 1 5 U E A /V P X1 X2 R ESET IN T IN T T0 T1 P P P P P P P P 1 1 P P P P P P P P 0 0 0 0 P P P P P P P P 2 2 2 2 R D W R PSEN A L E /P TXD R XD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 17 16 29 30 11 10 D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 11 CS-01 /WR D D D D D D D D Q Q Q Q Q Q Q Q 19 18 17 16 15 14 13 12 XUAT RA NGOAI VI 8031 U D D D D D D D D Q Q Q Q Q Q Q Q 1 1 1 1 C O C 74LS573 U 5A A B C G G 2B G 2A Y Y Y Y Y Y Y Y 74LS138 11 CS-02 C O C U A13 A14 A15 VCC D0 D1 D2 D3 D4 D5 D6 D7 74LS573 A13 A14 A15 U 1 1 1 2 CS-01 7402 /WR U 5B 7402 CS-02 XUAT RA NGOAI VI Mở rộng port xuất với mạch chốt • Đoạn chương trình sau xuất nội dung ô nhớ 30H RAM bên ngoại vi ghép với U2 xuất nội dung ô nhớ 31H RAM bên ngoại vi ghép với U3 MOV A, 30H MOV DPTR, #0C000H MOVX @DPTR, A MOV A, 31H MOV DPTR, #0E000H MOVX @DPTR, A Mở rộng port nhập Nhập từ ngoại vi U 31 19 18 1 1 5 E A /V P X1 X2 R ESET IN T IN T T0 T1 P P P P P P P P 1 1 1 1 P P P P P P P P 0 0 0 0 P P P P P P P P 2 2 2 2 R D W R PSEN A L E /P TXD R XD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 17 16 29 30 11 10 D0 D1 D2 D3 D4 D5 D6 D7 U D0 D1 D2 D3 D4 D5 D6 D7 19 CS-I1 /WR B B B B B B B B XUAT RA NGOAI VI 8031 19 A A A A A A A A B B B B B B B B 1 1 1 1 C D IR 74LS245 U 5A A B C G G 2B G 2A Y Y Y Y Y Y Y Y 74LS138 CS-I2 C D IR U A13 A14 A15 VCC U D0 D1 D2 D3 D4 D5 D6 D7 74LS245 A13 A14 A15 A A A A A A A A 18 17 16 15 14 13 12 11 1 1 1 1 /RD CS-I1 7432 U 5B 7432 CS-I2 XUAT RA NGOAI VI Mở rộng port nhập • Đoạn chương trình sau nhập liệu từ ngoại vi ghép với U2 cất vào ô nhớ 40H RAM bên nhập liệu từ ngoại vi ghép với U3 cất vào ô nhớ 41H RAM bên MOV DPTR, #8000H MOVX A, @DPTR MOV 40H, A MOV DPTR, #0A000H MOVX A, @DPTR MOV 41H, A Mở rộng port với PPI 8255 Byte thấp bus địa DATA BUS 31 19 18 1 1 5 U E A /V P X1 X2 R ESET IN T IN T T0 T1 P P P P P P P P 1 1 1 1 P P P P P P P P 0 P P P P P P P P 2 2 R D W R PSEN A L E /P TXD R XD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 17 16 29 30 11 10 D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 11 ALE /RD /WR ALE D D D D D D D D Q Q Q Q Q Q Q Q 1 1 1 1 XUAT RA NGOAI VI C O C 3 3 2 D0 D1 D2 D3 D4 D5 D6 D7 /RD /WR A0 A1 74LS573 A13 A14 A15 U U A13 A14 A15 VCC 8031 A B C G G 2B G 2A Y Y Y Y Y Y Y Y 74LS138 15 14 13 12 11 10 9 36 35 U D D D D D D D D R D W R A0 A1 R ESET C S 8255 P P P P P P P P A A A A A A A A P P P P P P P P B B B B B B B B P P P P P P P P C C C C C C C C 4 3 1 2 2 2 1 1 1 1 Mở rộng port với PPI 8255 • Port A: địa 6000H Port B: địa 6001H Port C: địa 6002H Thanh ghi điều khiển: địa 6003H • 8255A có chế độ hoạt động: chế độ 0, chế độ chế độ Để PPI hoạt động nhập/xuất, trước tiên ta phải khởi động để chọn chế độ xác định việc nhập/xuất cho port 8255A Đọan chương trình sau khởi động 8255A theo yêu cầu sau: • Port A xuất chế độ Port B nhập chế độ MOV DPTR, #6003H MOV A, #10100010B MOV @DPTR, A Mở rộng port với PPI 8255 • Đọan chương trình sau nhập liệu từ ngoại vi qua port A, ghi kết vào ô nhớ 30H RAM bên Lấy nội dung nhớ 31H RAM bên xuất ngoại vi qua port B port C Các port A, B, C hoạt động chế độ MOV DPTR, #6003H MOV A, #10010000B MOVX @DPTR, A MOV DPTR, #6000H MOVX A, @DPTR MOV 30H, A MOV A, 31H MOV DPTR, #6001H MOVX @DPTR, A MOV DPTR, #6002H MOVX @DPTR, A Mở rộng port với PPI 8255 DATA BUS U 31 19 18 1 1 5 U E A /V P X1 X2 R ESET IN T IN T T0 T1 P P P P P P P P 1 1 1 1 P P P P P P P P 0 0 0 0 P P P P P P P P 2 2 2 2 R D W R PSEN A L E /P TXD R XD 3 3 3 3 2 2 2 2 2 A8 A9 1 1 /RD /WR D0 D1 D2 D3 D4 D5 D6 D7 A13 A14 A15 3 3 2 D0 D1 D2 D3 D4 D5 D6 D7 /RD /WR A8 A9 36 35 D D D D D D D D R D W R A0 A1 R ESET C S ALE 8031 8255 U A13 A14 A15 VCC A B C G G 2B G 2A Y Y Y Y Y Y Y Y 74LS138 1 1 1 P P P P P P P P A A A A A A A A P P P P P P P P B B B B B B B B P P P P P P P P C C C C C C C C 4 3 1 2 2 2 1 1 1 1 Mở rộng port với PPI 8255 • Địa port A: 6000H Địa port B: 6100H Địa port C: 6200H Địa ghi điều khiển : 6300H Hiển thị số - phương pháp quét SETB DONVI CLR CHUC ACALL DELAY MOV A, 31H ANL A, #0FH ACALL BCDTO7SEG ACALL OUT SETB CHUC CLR TRAM ACALL DELAY MOV A, 31H SWAP A ANL A, #0FH ACALL BCDTO7SEG ACALL OUT SETB TRAM CLR NGAN ACALL DELAY SJMP AGAIN Hiển thị số - phương pháp quét BCDTO7SEG: MOV DPTR, #LED7SDEG_TABLE MOVC A, @A+DPTR RET OUT: MOV DPTR, #0E000H MOVX @DPTR, A RET DELAY: MOV TH0, #HIGH(−1000) MOV TL0, #LOW(−1000) SETB TR0 JNB TF0, $ CLR TR0 CLR TF0 RET END Giao diện với ADC Bắt đầu Không cho phép ngõ (OE = 0) Chọn kênh tương tự (xác lập địa CBA) Tạo xung ALE Tạo xung Start Chờ biến đổi xong (tạo trì hoãn 120 µs chờ EOC = 1) Cho phép ngõ (OE = 1) Đọc liệu Kết thúc Giao diện với ADC ANALOG 26 27 28 IN VCC 12 16 VCC CLK-AD 10 P3.4 U IN IN IN IN IN IN IN IN D D D D D D D D R EF + R EF - A0 A1 A2 C LK S TA R T ALE O E EO C 1 1 2 25 24 23 22 AD C 0809 CLK12 U 3A A C LR 74LS393 Q Q Q Q A B C D B0 B1 B2 B3 B4 B5 B6 B7 CLK-AD P3.0 P3.1 P3.2 P3.3 31 30p 19 12M 18 30p CLK12 P3.2 P3.3 P3.4 B0 B1 B2 B3 B4 B5 B6 B7 1 1 5 U E A /V P X1 X2 R ESET IN T IN T T0 T1 P P P P P P P P 1 1 1 1 P P P P P P P P 0 0 0 0 P P P P P P P P 2 2 2 2 R D W R PSEN A L E /P TXD R XD 8031 3 3 3 3 2 2 2 2 2 1 1 P3.1 P3.0 Giao diện với ADC ADC: CLR P3.0 CLR P3.1 CLR P3.2 CLR P3.3 SETB P3.3 CLR P3.3 JNB P3.4, $ MOV 40H, P1 RET ; chọn kênh ; tạo xung START ALE ; chờ EOC lên ; đọc ADC Giao diện với ADC ADC: CLR P3.0 CLR P3.1 CLR P3.2 CLR P3.3 SETB P3.3 CLR P3.3 ACALL DELAY120 MOV 40H, P1 RET DELAY120: PUSH 07H MOV R7, #60 DJNZ R7, $ POP 07H RET ; chọn kênh ; tạo xung START ALE ; chờ 120 µs ; đọc ADC ; cất nội dung R7 vào stack ; lặp lại 60 lần ; lệnh thực thi µs nên ta trì hỗn 120 µs Giao diện với ADC DATA BUS ANALOG 26 27 28 IN VCC 12 16 10 CLK-AD OE P1.3 U IN IN IN IN IN IN IN IN D D D D D D D D R EF+ R EF- A0 A1 A2 C LK S TAR T ALE O E EO C 17 14 15 18 19 20 21 25 24 23 22 D0 D1 D2 D3 D4 D5 D6 D7 31 30p 19 12M 30p P1.0 P1.1 P1.2 CLK12 A Q Q Q Q C LR A B C D 1 1 START P1.0 P1.1 P1.2 P1.3 CLK-AD U U 5A A B C G G 2B G 2A Y Y Y Y Y Y Y Y 74LS138 5 E A /V P X1 X2 R ESET IN T0 IN T1 T0 T1 P P P P P P P P 1 1 1 1 15 14 13 12 11 10 /WR /RD START OE 7402 U 5B 7402 P P P P P P P P 0 0 0 0 P P P P P P P P 2 2 2 2 R D W R PSEN A L E /P TXD R XD 8031 74LS393 A13 A14 A15 VCC CLK12 AD C 0809 U 3A 18 U 3 3 3 3 2 2 2 2 2 1 1 A13 A14 A15 /RD /WR Giao diện với ADC ADC: CLR P1.0 ; chọn kênh CLR P1.1 CLR P1.2 MOV DPTR, #4000H ; địa ADC MOVX @DPTR, A ; tạo xung START ALE (Y2 ; WR 0) JNB P1.3, $ ; chờ EOC lên MOVX A, @DPTR ; đọc ADC (Y2 RD 0) MOV 40H, A ; cất vào ô nhớ 40H RET Giao diện với ADC DATA BUS ANALOG 26 27 28 IN VCC 12 16 10 CLK-AD OE U IN IN IN IN IN IN IN IN D D D D D D D D R EF+ R EF- A0 A1 A2 C LK STAR T ALE O E EO C 1 1 2 D0 D1 D2 D3 D4 D5 D6 D7 25 24 23 22 19 12M START U 6A P1.0 P1.1 P1.2 P1.3 7404 A Q Q Q Q C LR A B C D CLK-AD U U 5A A B C G G 2B G 2A Y Y Y Y Y Y Y Y 74LS138 5 U E A /V P X1 X2 R ESET IN T IN T T0 T1 P P P P P P P P 1 1 1 1 1 /WR START OE /RD 7402 U 5B 7402 P P P P P P P P 0 0 0 0 P P P P P P P P 2 2 2 2 R D W R PSEN A L E /P TXD R XD 8031 74LS393 A13 A14 A15 VCC CLK12 1 1 U 3A 18 30p P1.0 P1.1 P1.2 AD C 0809 CLK12 31 30p 3 3 3 3 2 2 2 2 2 1 1 A13 A14 A15 /RD /WR Giao diện với ADC ORG 0000H LJMP MAIN ORG 0003H LJMP EXT0_ISR ORG 0030H MAIN: CLR P1.0 ; chọn kênh CLR P1.1 CLR P1.2 MOV DPTR, #4000H ; địa ADC MOVX @DPTR, A ; tạo xung START ALE (Y2 WR 0) SJMP $ ; chờ ngắt EXT0_ISR: MOV DPTR, #4000H ; địa ADC MOVX A, @DPTR ; đọc ADC (Y2 RD 0) MOV 40H, A ; cất vào ô nhớ 40H RETI END Giao diện với DAC DATABUS U 31 19 18 12 13 14 15 U E A /V P X1 X2 R ESET IN T0 IN T1 T0 T1 P P P P P P P P 1 1 P P P P P P P P 0 0 0 0 P P P P P P P P 2 2 2 2 3 3 3 3 2 2 2 2 2 1 1 R D W R PSEN A L E /P TXD R XD D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 CS 11 1 Q Q Q Q Q Q Q Q B0 B1 B2 B3 B4 B5 B6 B7 19 18 17 16 15 14 13 12 C O C 74LS573 A13 A14 A15 D D D D D D D D U A13 A14 A15 VCC /WR A B C G G 2B G 2A 8031 Y Y Y Y Y Y Y Y 1 1 1 U 4A /WR CS 7402 74LS138 14 A A A A A A A A IO U T IO U T C O MP -12V 16 0 u VR + VR - V- V+ 13 D AC 0808 0 VCC 10K 2K7 2K7 15 2K7 U 12 11 10 0 u 0 VCC -VCC + B0 B1 B2 B3 B4 B5 B6 B7 +12V LM 741 ANALOG OUT Giao diện với DAC IFS = 255 xI 256 RE F V I REF = REF R I I OUT = REF x (giátrị mãnhị phân ngõvào) 256 Vana log_ out = 2.7kΩ x I OUT VREF Vana log_ out = 2.7kΩ x x (giátrị mã8 bit ) 256 x 2.7kΩ V Vana log_ out = REF x (giátrị mã8 bit) Các dịng lệnh sau xuất 256 Vanalog_out điện áp V MOV DPTR, #8000H MOV A, #(255 x / 5) MOVX @DPTR, A Giao diện với bàn phím máy tính 5V L C D -H D 4 EN R S R /W VSS VD D VEE R D D D D D D D D B B B B B B B B 19 18 30pF 12M H z 31 0 3 0 6 P P P P P P P P 1 1 1 1 /A D /A D /A D /A D /A D XTA L1 XTA L2 R ST E A /V P P 30pF 5V 5V 10uF 100 R eset R R P P P2 P2 P2 P2 P2 P2 /A /A /A /A /A /A /A /A P 3 P /T XD P /IN T O P P /T O P P P PSEN A L E /P R O G 20 10k P P P P P P P P VC C 7 G N D 3 1 3 VC C 40 AT89C 51 2 2 2 2 1 1 3 3 29 30 K e y b o a rd Giao diện với bàn phím máy tính ... CS-02 XUAT RA NGOAI VI Mở rộng port xuất với mạch chốt • Đoạn chương trình sau xuất nội dung ô nhớ 30H RAM bên ngoại vi ghép với U2 xuất nội dung ô nhớ 31H RAM bên ngoại vi ghép với U3 MOV A, 30H... U 5B 7432 CS-I2 XUAT RA NGOAI VI Mở rộng port nhập • Đoạn chương trình sau nhập liệu từ ngoại vi ghép với U2 cất vào ô nhớ 40H RAM bên nhập liệu từ ngoại vi ghép với U3 cất vào ô nhớ 41H RAM bên... P3.1 P3.0 Giao diện với ADC ADC: CLR P3.0 CLR P3.1 CLR P3.2 CLR P3.3 SETB P3.3 CLR P3.3 JNB P3.4, $ MOV 40H, P1 RET ; chọn kênh ; tạo xung START ALE ; chờ EOC lên ; đọc ADC Giao diện với ADC ADC: