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ử Lý 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: Họ và Tên MSSV Huỳnh Minh Trí 2012279 Trần Ngọc Phương Linh 1913962 Ngưu Tuấn Giang 1913192 Nguyễn Văn Cao Minh 1914172 TIEU LUAN MOI download : skknchat123@gmail.com moi nhat MỤC LỤC BÀI THÍ NGHIỆM 1. 11 BÀI THÍ NGHIỆM 2.31 BÀI THÍ NGHIỆM 3. 48 Department of Electronics Page | 0 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm 1 Mục tiêu: Nắm được cách thức điều khiển trực tiếp ngoại vi thông qua các port I/O của 8051.
Yêu cầu: Viết chương trình thực hiện việc đọc liên tục trạng thái của nút nhấn được nối đến P1.0 và hiển thị ra led được nối tại chân P3. Code: ORG 2000H LOOP: MOV C, P1.0, C SJMP LOOP END Kiểm tra: Biên dịch và thực thi chương trình để kiểm tra kết quả thực hiện. - Kết quả thực hiện: Khi nhấn Switch nối với P1.0, đèn của Port 1. Câu hỏi: Thử giải thích tại sao có đến 2 led cùng bị tác động khi nhấn hoặc thả nút? - Giải thích: Khi nhấn Switch nối với Port 1.0 thì Cathode của LED nối với P1.0 được nối Ground, trong khi đó Anode được nối với VCC nên LED sáng.
LED nối với P3.0 sáng là do chương trình trên đã được nạp vào vi xử lý. Tổng kết xem các bit nào của 2 port có thể được dùng trong thí nghiệm trên và giải thích tại sao? Các bit từ 0 đến 7 của 2 port có thể được dùng vì đây là các cổng nhập xuất nhập 8 bit tính từ bit 0 đến 7. Department of Electronics Page | 1 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm 2 Mục tiêu: Nắm được cách viết chương trình con để tạo trễ Yêu cầu: Viết chương trình con 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 con đã viết để chớp/tắt LED đơn gắn vào P1.0 sau mỗi khoảng thời gian 1s.
Code: ORG 2000H LAP: CPL P1.0 LCALL Delay1sIns SJMP LAP Delay1sIns: MOV R5, #8 L1: MOV R6, #250 L2: MOV R7, #250 DJNZ R7, $ DJNZ R6, L2 Department of Electronics Page | 4 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BÀI THÍ NGHIỆM 1 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 con để tần số chớp tắt bây giờ là 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 và kiểm tra chương trình bằng cách quan sát LED đơn. Câu hỏi: Thời gian 1s được tạo ra như thế nào? Tính toán chính xác dựa trên chương trình đã viết. Sai số nhỏ nhất có thể đạt được so với yêu cầu là bao nhiêu? Khi tần số chớp tắt là 1Khz, cho biết hiện tượng trên LED? - LED chớp nháy rất nhanh và hầu như không thể nhận biết hiện tượng chớp nháy.
Sinh viên thay đổi chương trình con như thế nào để được tần số chớp tắt là 1KHz? - Tần số chớp tắt fled = 1 KHz => Tled = 1/1000 = 10-3 s Tạo chương trình tạo trễ 10-3/2=0.0005s Department of Electronics Page | 3 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm 3 Mục tiêu: Nắm được cách viết chương trình con để tạo trễ Yêu cầu: Viết chương trình tạo 2 xung vuông 0.5Hz (chu kỳ nhiệm vụ 50%) và 1Hz (chu kỳ nhiệm vụ là 30%) lần lượt trên chân P1. 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 Page | 4 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BÀI THÍ NGHIỆM 1 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 và kiểm tra chương trình bằng cách sử dụng oscilloscope để kiểm tra. Câu hỏi: Vẽ giản đồ của 2 xung? Các chương trình con viết với thời gian trễ là bao nhiêu? Tại mỗi thời gian tạo trễ, các chân P1.1 xuất tín hiệu như thế nào? Để tạo các xung thỏa yêu cầu bài toán, các vòng trễ được viết như thế nào? - Xung 0.5 Hz có chu kỳ là 2 s; nhiệm vụ 50% nên thời gian xung ở mức 1 = thời gian ở mức 0 = 1 s. Sử dụng 1 lệnh DJNZ mất 2MCs = 2 * 12/11.
- Xung 1 Hz có chu kỳ là 1 s; nhiệm vụ 30% nên thời gian xung ở mức 1 = 0.3s => Lặp 138250 lần = thời gian xung ở mức 0 = 0. Department of Electronics Page | 5 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm 4 Mục tiêu: Nắm được cách hiển thị bar LED và tạo hiệu ứng Yêu cầu: Viết chương trình tạo hiệu ứng quay LED: các LED đơn trên BARLED1 sáng lần lượt từ trái sang phải sau thời gian 1s và lặp lại. Sử dụng chương trình con Delay1s đã viết ở trên. Code: ORG 2000H MOV A, #01111111b LAP: MOV P1, A LCALL Delay1sIns RR 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 và kiểm tra chương trình bằng cách quan sát hiệu ứng trên bar led.
Department of Electronics Page | 6 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Câu hỏi: Led ngoài cùng bên trái kết nối đến MSB (most significant bit) hay LSB (less significant bit) của port 1? - LED ngoài cùng bên trái kết nối với MSB của port 1 Thí nghiệm 5 Mục tiêu: Nắm được cách thức giao tiếp với ngoại vi LED 7 đoạn Yêu cầu: Viết chương trình con DisplayLed hiển thị lên LED 7 đoạn số 0 giá trị chứa trong thanh ghi R0 DislayLed: MOV A, #0E0H ADD A, R0 MOV DPTR, #0000H MOVX @DPTR, A RET Viết chương trình chính hiển thị số 9 lên LED 7 đoạn số 0 bằng cách cho R0 bằng 9 và gọi chương trình con DisplayLed. ORG 2000H Main: MOV R0, #9 LCALL DislayLed DislayLed: MOV A, #0E0H ADD A, R0 MOV DPTR, #0000H Department of Electronics Page | 7 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED MOVX @DPTR, A RET END Thí nghiệm 6 Mục tiêu: Kết hợp được các chương trình con: chương trình con tạo trễ và chương trình con hiển thị LED 7 đoạn. Yêu cầu: Viết chương trình hiển thị lên LED 7 đoạn số 0 các con số từ 0 đến 9 sau các khoảng thời gian 1s sử dụng 2 chương trình con ở Thí nghiệm 2 và Thí nghiệm 5. 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 Page | 8 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED LOOP1: MOV R6, #250 LOOP2: MOV R5, #250 DJNZ R5, $ DJNZ R6, LOOP2 DJNZ R7, LOOP1 END Kiểm tra: Biên dịch, thực thi và kiểm tra chương trình.
Câu hỏi: Vẽ lưu đồ giải thuật của chương trình. Thí nghiệm 7 Mục tiêu: Nắm được cách thức dùng chương trình con và giao tiếp LED 7 đoạn. Yêu cầu: Viết chương trình con DisplayLED xuất giá trị chứa trong thanh ghi R0 lên LED 7 đoạn có số thứ tự chứa trong thanh ghi R1. Trong đó: R0 nằm trong tầm từ 0-9 và R1 trong tầm từ 0-3.
Sau đó dùng chương trình con này viết chương trình chính xuất giá trị 1 lên LED 7 đoạn số 3. Department of Electronics Page | 9 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED DisplayLED: MOV B, R1 ;Đưa nội dung trong R1 vào B INC B ;Tăng giá trị B lên 1 MOV A, #11110111B ;bit số 3 bằng 0, bốn bit cao bằng 1 SHIFTLOOP: RL A ;Xoay trái A DJNZ B, SHIFTLOOP ;Giảm B đi 1, nếu khác 0 thì quay lại nhãn SHIFTLOOP ANL A, #0F0H ;Nếu B giảm đến 0 thì giữ lại 4 bit cao của A PUSH ACC ;Cất Acc vào StackPointer MOV A, R0 ;Đưa nội dung R0 vào A ANL A, #0FH ;Giữ lại 4 bit thấp của A MOV R0, A ;Đua nội dung của A vào R0 POP ACC ;Lấy lại A từ StackPointer ORL A, R0 ;Cộng A với R0, rồi lưu vào A RET Kiểm tra: Biên dịch, thực thi và kiểm tra chương trình Câu hỏi: Viết lại chương trình trên bằng phương pháp sử dụng bảng tra (Lookup table). DisplayLED: MOV DPTR,#TABLE MOV A,R1 MOVC A,@A+DPTR ADD A,R0 MOV DPTR, #0000H MOVX @DPTR, A RET TABLE: DB 0E0H, 0D0H, 0B0H,70H Department of Electronics Page | 10 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.com moi nhat BÀI THÍ NGHIỆM 1 LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Thí nghiệm 8 Mục tiêu: Nắm được phương pháp quét LED 7 đoạn. Yêu cầu: Viết chương trình hiển thị số 1 lên LED7 đoạn 0, sau đó 1s hiển thị số 2 lên LED 7 đoạn 1, sau đó 1s hiển thị số 3 lên LED 7 đoạn 2, sau đó 1s hiển thị số 4 lên LED 7 đoạn 3.
Quá trình này lặp đi lặp lại. Việc hiển thị này sử dụng chương trình con DisplayLED đã viết ở trên. Giảm thời gian trễ xuống còn 100 ms. Quan sát hiện tượng.
Tính toán thời gian trễ sao cho không còn thấy LED nhấp nháy và áp dụng vào chương trình Giảm thời gian trễ xuống bằng 0 (không sử dụng hàm delay). Quan sát hiện tượng. ORG 0000H MAIN: MOV R1,#0 MOV R0,#1 LOOP: LCALL DisplayLED LCALL Delay1s INC R1 INC R0 CJNE R1,#4,LOOP SJMP MAIN DisplayLED: MOV DPTR,#TABLE MOV A,R1 Department of Electronics Page | 11 Microprocessor Laboratory TIEU LUAN MOI download : skknchat123@gmail.