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