BÁO cáo THỰC HÀNH bộ môn vi xử ly bài THÍ NGHIỆM 1 lập TRÌNH GIAO TIẾP nút NHẤN đơn và LED

51 6 0
BÁO cáo THỰC HÀNH bộ môn vi xử ly  bài THÍ NGHIỆM 1 lập TRÌNH GIAO TIẾP nút NHẤN đơn và LED

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH  BÁO CÁO THỰC HÀNH Bợ mơn: Vi Xử Ly Giảng viên hướng dẫn: Trịnh Vũ Đăng Nguyên LỚP DT01 - HK 213 NGÀY NỘP: Thành viên: Huỳnh Minh Tri Trần Ngọc Phương Linh Ngưu Tuấn Giang Nguyễn Văn Cao Minh MỤC LỤC BÀÀ̀I THÍ NGHIỆM .1 Thií́ nghiệm Thií́ nghiệm Thií́ nghiệm Thií́ nghiệm Thií́ nghiệm Thií́ nghiệm Thií́ nghiệm Thií́ nghiệm 11 BÀÀ̀I THÍ NGHIỆM 14 Thií́ nghiệm 14 Thií́ nghiệm 17 Thií́ nghiệm 20 Thií́ nghiệm 24 Thií́ nghiệm 29 Thií́ nghiệm 31 BÀÀ̀I THÍ NGHIỆM 32 Thií́ nghiệm 32 Thií́ nghiệm 33 Thií́ nghiệm 36 Thií́ nghiệm 40 Thií́ nghiệm 41 Thií́ nghiệm 45 Thií́ nghiệm 48 Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm Mục tiêu: Nắm cách thức điều khiển trực tiếp ngoại vi thông qua port I/O 8051 Yêu cầu: Viết chương trình thực việc đọọ̣c liên tục trạng thái nút nhấí́n nối đến P1.0 hiển thị led nối chân P3.0 (bit thứ led BL202) Code: ORG 2000H LOOP: MOV C, P1.0 MOV P3.0, C SJMP LOOP END Kiểm tra:  Biên dịch thực thi chương trình để kiểm tra kết thực - Kết thực hiện: Khi nhấí́n Switch nối với P1.0, đèn Port 1.0 3.0 sáng Câu hỏi:  Thử giải thií́ch có đến led bị tác động nhấí́n thả nút? - Giải thií́ch: Khi nhấí́n Switch nối với Port 1.0 Cathode LED nối với P1.0 nối Ground, Anode nối với VCC nên LED sáng LED nối với P3.0 sáng chương trình nạp vào vi xử lý  Tổng kết xem bit port dùng thií́ nghiệm giải thií́ch sao? Các bit từ đến port dùng cổng nhập xuấí́t nhập bit tií́nh từ bit đến Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm Mục tiêu: Nắm cách viết chương trình để tạo trễễ Yêu cầu:  Viết chương trình Delay1s Code: Delay1s: MOV R5, #8 Loop1: MOV R6, #250 Loop2: MOV R7, #250 DJNZ R7, $ DJNZ R6, Loop2 DJNZ R5, Loop1 RET  Dùng chương trình viết để chớp/tắt LED đơn gắn vào P1.0 sau khoảng thời gian 1s Code: ORG 2000H LAP: SJMP Delay Microprocessor Laboratory BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED DJNZ R5, L1 RET END  Thay đổi chương trình để tầầ̀n số chớp tắt 1KHz Code: Delay: MOV R5, #2 LOOP: MOV R6, 250 DJNZ R6, $ DJNZ R5, LOOP RET Kiểm tra:  Biên dịch, thực thi kiểm tra chương trình cách quan sát LED đơn Câu hỏi:  Thời gian 1s tạo nào? Tií́nh tốn chií́nh xác dựa chương trình viết  Sai số nhỏ nhấí́t đạt so với yêu cầầ̀u bao nhiêu?  Khi tầầ̀n số chớp tắt 1Khz, cho biết tượng LED? - LED chớp nháy rấí́t nhanh hầầ̀u nhận biết tượng chớp nháy  Sinh viên thay đổi chương trình để tầầ̀n số chớp tắt 1KHz? - Tầầ̀n số chớp tắt fled = KHz => Tled = 1/1000 = 10-3 s  Tạo chương trình tạo trễễ 10-3/2=0.0005s Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm Mục tiêu: Nắm cách viết chương trình để tạo trễễ u cầu: Viết chương trình tạo xung vng 0.5Hz (chu kỳầ̀ nhiệm vụ 50%) 1Hz (chu kỳầ̀ nhiệm vụ 30%) lầầ̀n lượt chân P1.0 P1.1 Code: ORG 2000H LOOP1: CPL P1.0 ACALL DelayP1-0 SJMP LOOP1 LOOP2: SETB P1.1 ACALL DelayP1-1muccao CLR P1.1 ACALL DelayP1-1mucthap SJMP LOOP2 END DelayP1-0: MOV R5, #11 L1: MOV R6, #200 L2: MOV R7, #209 DJNZ R7, $ DJNZ R6, L2 DJNZ R5, L1 RET DelayP1-1mucthap: MOV R5, #5 L1: MOV R6, #255 L2: MOV R7, #254 DJNZ R7, $ Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED DJNZ R6, L2 DJNZ R5, L1 RET DelayP1-1muccao: MOV R5, #3 L1: MOV R6, #220 L2: MOV R7, #210 DJNZ R7, $ DJNZ R6, L2 DJNZ R5, L1 RET Kiểm tra:  Biên dịch, thực thi kiểm tra chương trình cách sử dụng oscilloscope để kiểm tra Câu hỏi:  Vẽ giản đồ xung? Các chương trình viết với thời gian trễễ bao nhiêu?  Tại thời gian tạo trễễ, chân P1.0 P1.1 xuấí́t tií́n hiệu nào?  Để tạo xung thỏa u cầầ̀u tốn, vịng trễễ viết nào? - Xung 0.5 Hz có chu kỳầ̀ s; nhiệm vụ 50% nên thời gian xung mức = thời gian mức = s Sử dụng lệnh DJNZ mấí́t 2MCs = * 12/11.0592=2.17 µs => Lặp lại 106/2.17=460830 lầầ̀n = 209*200*11 - Xung Hz có chu kỳầ̀ s; nhiệm vụ 30% nên thời gian xung mức = 0.3s => Lặp 138250 lầầ̀n = thời gian xung mức = 0.7s => Lặp 322580 lầầ̀n = 254*255*5 Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm Mục tiêu: Nắm cách hiển thị bar LED tạo hiệu ứng Yêu cầu: Viết chương trình tạo hiệu ứng quay LED: LED đơn BARLED1 sáng lầầ̀n lượt từ trái sang phải sau thời gian 1s lặp lại Sử dụng chương trình Delay1s viết Code: ORG 2000H MOV A, #01111111b LAP: MOV P1, A LCALL Delay1sIns AR A SJMP LAP Delay1sIns: MOV R5, #8 L1: MOV R6, #250 L2: MOV R7, #250 DJNZ R7, $ DJNZ R6, L2 DJNZ R5, L1 RET END Kiểm tra:  Biên dịch, thực thi kiểm tra chương trình cách quan sát hiệu ứng bar led Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Câu hỏi:  Led bên trái kết nối đến MSB (most significant bit) hay LSB (less significant bit) port 1? - LED bên trái kết nối với MSB port Thí nghiệm Mục tiêu: Nắm cách thức giao tiếp với ngoại vi LED đoạn Yêu cầu:  Viết chương trình DisplayLed hiển thị lên LED đoạn số giá trị chứa ghi R0 DislayLed: MOV A, #0E0H ADD A, R0 MOV DPTR, #0000H MOVX @DPTR, A RET  Viết chương trình chií́nh hiển thị số lên LED đoạn số cách cho R0 gọọ̣i chương trình DisplayLed ORG 2000H Main: MOV R0, #9 LCALL DislayLed DislayLed: MOV A, ADD A, MOV DPTR, #0000H Department of Electronics Microprocessor Laboratory BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED MOVX @DPTR, A RET END Thí nghiệm Mục tiêu: Kết hợp chương trình con: chương trình tạo trễễ chương trình hiển thị LED đoạn Yêu cầu: Viết chương trình hiển thị lên LED đoạn số số từ đến sau khoảng thời gian 1s sử dụng chương trình Thií́ nghiệm Thií́ nghiệm ORG 2000H MAIN: MOV R0, #0 LOOP: LCALL DislayLed Delay1s INC R0 CJNE R0, #10, LOOP SJMP MAIN DislayLed: MOV A, #0E0H ADD A, R0 MOV DPTR, #000H MOVX @DPTR, A RET Delay1s: MOV R7, #8 Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT CLEAR: MOV INIT: MOV WRITECOM: WRITETEXT: WAIT_LCD: L1: Department of Electronics Microprocessor Laboratory BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT END POP RET Thí nghiệm Mục tiêu: Nắm cách thức điều khiển serial port Yêu cầu: Viết chương trình nhận ký tự từ máy tií́nh gửi đến EME-MC8 thơng qua cương trình Hercules (bằng cách gõ ký tự bàn phií́m chương trình Hercules) hiển thị lên LCD theo nguyên tắc sau: - Nếu ký tự chữ hiển thị lên LCD - Enter xuống hàng - ESC xóa hình LCD - Backspace xóa ký tự bên trái dấí́u nháy Kiểm tra:  Biên dịch kiểm tra hoạt động chương trình Báo cáo:  Đoạn chương trình thực yêu cầầ̀u thií́ nghiệm cho: LCD_E LCD_RS LCD_ADDR EQU 6000H ORG 2000H MAIN: Department of Electronics Microprocessor Laboratory BIT P3.3 BIT P3.5 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT MOV MOV MOV ORL SETB ACALL ACALL LAP: ACALL PUSH ACALL POP ACALL SJMP XU_LY: CJNE JC CJNE JC CJNE JC CJNE JNC NEXT: ACALL SJMP TT: CJNE MOV ACALL MOV ACALL MOV ACALL Department of Electronics Microprocessor Laboratory BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT SJMP TT1: CJNE JB MOV SETB SJMP TT2: CJNE ACALL SJMP DONG1: MOV CLR TIEP: ACALL KT: RET NHAN: JNB CLR MOV RET PHAT: JNB CLR MOV RET CLEAR: MOV ACALL RET INIT: MOV Department of Electronics Microprocessor Laboratory BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT WRITECOM: WRITETEXT: WAIT_LCD: L1: END Department of Electronics Microprocessor Laboratory BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT Thí nghiệm Mục tiêu: Nắm cách sử dụng ngắt serial port Yêu cầu: Viết chương trình làm song song công việc sau: - Nhận byte từ máy tií́nh x́í́t ngược lại (echo) lên hình Hercules - Bật LED gắn vào P1.1 SW 317 (gắn vào P1.0) nhấí́n, tắt LED phií́m nhả Hướng dẫn:  Sử dụng ngắt serial port, ngắt lả ngắt thu (cờ RI 1) xóa RI, đọọ̣c SBUF ghi trở lại vào SBUF Nếu TI xóa TI  Tác vụ đọọ̣c Switch hiển thị LED viết chương trình chií́nh Kiểm tra:  Biên dịch kiểm tra hoạt động chương trình ORG 0000H JMP MAIN ORG 0023H JMP SPI_ISR MAIN: MOV SCON, #52H MOV TMOD, #20H ORL PCON, #80H MOV TH1, #-3 MOV TL1, TH1 SETB TR1 Department of Electronics Microprocessor Laboratory Page | 40 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT MOV IE, #90H AG: MOV C, P1.0 MOV P1.1, C JMP AG ;====================== SPI_ISR: JB RI, NEXT CLR TI JMP EXIT NEXT: CLR RI MOV A, SBUF MOV SBUF, A EXIT: RETI END Thí nghiệm Mục tiêu: Nắm cách sử dụng ngắt timer Yêu cầu: Viết chương trình hiển thị lên LED đoạn số có chữ số, ký số chứa nhớ 20H, 21H, 22H 23H Ơ nhớ 20H chứa số hàng nghìn Báo cáo:  Đoạn chương trình thực u cầầ̀u thií́ nghiệm cho: ORG ORG JMP MAIN 000BH JMP T0_ISR Department of Electronics Microprocessor Laboratory BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT ORG 000BH JMP T0_ISR MAIN: MOV TMOD, #01H MOV 20H, MOV 21H, MOV 22H, MOV 23H, MOV R1, #4 MOV R0, #20H MOV R2, 20H SETB ET0 SETB EA SETB TF0 JMP $ ;================== T0_ISR: CALL DisplayLED DJNZ R1, MOV R1, #4 MOV R0, #20H MOV R2, 20H JMP EXIT NEXT: INC R0 MOV 02H, EXIT: CLR TR0 MOV TH0, MOV TL0, SETB TR0 RETI Department of Electronics Microprocessor Laboratory BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT DisplayLED: ;HIEN THI GIA TRI CUA R2 TAI LED THU R1(4, 3, 2, 1) MOV B, R1 MOV A, #11110111B SHIFTLOOP: RL A DJNZ B, SHIFTLOOP ANL A, #0F0H PUSH ACC MOV A, R2 ANL A, #0FH MOV R2, A POP ACC ORL A, R2 MOV DPTR, #0 MOVX @DPTR, A RET END Thí nghiệm Mục tiêu: Vận dụng ngắt timer để lập trình u cầu: Viết chương trình đếm số lầầ̀n nhấí́n phií́m SW317, hiển thị lên LED đoạn Báo cáo:  Đoạn chương trình thực u cầầ̀u thií́ nghiệm cho: ORG JMP MAIN ORG 000BH JMP T0_ISR MAIN: MOV 20H, #0 Department of Electronics Microprocessor Laboratory Page | 43 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT LOOP: MOV 21H, #0 MOV 22H, #0 MOV 23H, #0 MOV TMOD, #01H MOV R1, #4 MOV R0, #20H MOV R2, 20H SETB ET0 SETB EA SETB TF0 MOV R7, #50 AG: JB P1.0, LOOP DJNZ R7, AG INC 23H MOV A, 23H CJNE A, #10, NEXT MOV 23H, #0 INC 22H MOV A, 22H NEXT: NEXT1: NEXT2: CJNE A, #10, NEXT1 MOV 22H, #0 INC 21H MOV A, 21H CJNE A, #10, NEXT2 MOV 21H, #0 INC 20H JNB P1.0, $ JMP LOOP ;================== Department of Electronics Microprocessor Laboratory Page | 44 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT T0_ISR: CALL DisplayLED DJNZ R1, NXT MOV R1, #4 MOV R0, #20H MOV R2, 20H JMP EXIT NXT: EXIT: INC R0 MOV 02H, @R0 CLR TR0 MOV TH0, #HIGH(-10000) MOV TL0, #LOW(-10000) SETB TR0 RETI DisplayLED: ;HIEN THI GIA TRI CUA R2 TAI LED THU R1(4, 3, 2, 1) MOV MOV SHIFTLOOP: RL DJNZ ANL PUSH MOV ANL MOV POP ORL MOV DPTR, #0 MOVX @DPTR, A RET END Department of Electronics Microprocessor Laboratory BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT Thí nghiệm Mục tiêu: Vận dụng ngắt timer để lập trình Yêu cầu: Viết chương trình thực đồng hồ bấí́m giây, hiển thị lên LED đoạn Hai LED thể số giây, LED thể phầầ̀n trăm giây - Khi SW310 nhấí́n, đồng hồ reset - Khi SW 311 nhấí́n, đồng hồ bắt đầầ̀u chạy - Khi SW 312 nhấí́n, đồng hồ dừng lại Báo cáo:  Đoạn chương trình thực yêu cầầ̀u thií́ nghiệm cho: ORG JMP MAIN ORG 000BH JMP T0_ISR ORG 001BH JMP T1_ISR MAIN: MOV 20H, #0 MOV 21H, #0 MOV 22H, #0 MOV 23H, #0 MOV TMOD, #11H MOV R1, #4 MOV R0, #20H MOV R2, 20H SETB ET0 SETB ET1 Department of Electronics Microprocessor Laboratory Page | 46 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT LOOP: SETB EA SETB TF0 MOV A, P1 ANL A, #07H CJNE A, #07H, SW JMP LOOP SW: CJNE A, #06H, SW1 JMP MAIN ;RESET SW1: CJNE A, #05H, SW2 SETB TR1 JMP LOOP SW2: CJNE A, #03H, LOOP CLR TR1 JMP LOOP ;================== T0_ISR: CALL DisplayLED DJNZ R1, NXT MOV R1, #4 MOV R0, #20H MOV R2, 20H JMP EXIT NXT: INC R0 MOV 02H, @R0 EXIT: CLR TR0 MOV TH0, #HIGH(-10000) MOV TL0, #LOW(-10000) Department of Electronics Microprocessor Laboratory Page | 47 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT SETB TR0 RETI ;=============================== T1_ISR: INC 23H MOV A, 23H CJNE A, #10, NEXT MOV 23H, #0 INC 22H MOV A, 22H NEXT: CJNE A, #10, NEXT1 MOV 22H, #0 INC 21H MOV A, 21H NEXT1: CJNE A, #10, NEXT2 MOV 21H, #0 INC 20H NEXT2: CLR TR1 MOV TH1, #HIGH(-10000) MOV TL1, #LOW(-10000) SETB TR1 RETI ;======================= DisplayLED: ;HIEN THI GIA TRI CUA R2 TAI LED THU R1(4, 3, 2, 1) MOV MOV SHIFTLOOP: RL DJNZ Department of Electronics Microprocessor Laboratory BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT ANL PUSH MOV ANL MOV POP ORL MOV DPTR, #0 MOVX @DPTR, A RET END Department of Electronics Microprocessor Laboratory Page | 49 ... Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm Mục tiêu: Nắm cách hiển thị bar LED tạo hiệu ứng Yêu cầu: Vi? ??t chương trình tạo hiệu ứng quay LED: LED đơn BARLED1 sáng... Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm Mục tiêu: Nắm cách vi? ??t chương trình để tạo trễễ Yêu cầu:  Vi? ??t chương trình Delay1s Code: Delay1s: MOV R5, #8 Loop1: MOV... Laboratory BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm Mục tiêu:  Nắm phương pháp quét LED đoạn Yêu cầu: Vi? ??t chương trình hiển thị số lên LED7 đoạn 0, sau 1s hiển thị số lên LED

Ngày đăng: 28/11/2022, 17:35

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan