Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
80,54 KB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ **************** BÁO CÁO THÍ NGHIỆM MƠN : VI XỬ LÍ GVHD: Phạm Hữu Vũ NHÓM : L08 STT Họ tên MSSV Trương Văn Thịnh Nguyễn Thanh Hoàng Thạch 1713335 Thành phố Hồ Chí Minh, tháng năm 2019 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN THÍ NGHIỆM : 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 A,P1.0 MOV P3.0,A SJMP LOOP END THÍ NGHIỆM : Biên dịch thử nghiệm chương trình cho sẵn sau : ORG 2000H MAIN : CPL P3.0 JMP MAIN END Kiểm tra Biên dịch, thực thi kiểm tra hoạt động chương trình cách đo dạng sóng oscilloscope Câu hỏi Theo lý thuyết, dạng sóng tạo chân P3.0 nào? Vẽ dạng sóng đo oscilloscope so sánh với kết qua lý thuyết Tần số tối đa xung tuần hồn có chu kỳ nhiệm vụ 50% đạt bao nhiêu? THÍ NGHIỆM : Yêu cầu Viết chương trình tạo xung vng Khz, chu kỳ nhiệm vụ 50% P3.0 Code : ORG 2000H MOV TMOD,#01H LOOP: CPL P3.0 ACALL DELAY SJMP LOOP DELAY : MOV R0,#4 LOOP1: MOV R1,#250 DJNZ R1,$ DJNZ R0,LOOP1 RET END Câu hỏi Để tạo xung 1Khz, vòng trễ tạo Tính tốn xác dựa chương trình viết Vẽ lại dạng sóng đo oscilloscope Sai số nhỏ đạt so với yêu cầu bao nhiêu? THÍ NGHIỆM : Yêu cầu Viết chương trình Delay1sIns dùng chương trình để chớp/tắt LED đơn gắn vào P1.0 sau khoảng thời gian 1s CODE : ORG 2000H BACK: CPL P1.0 ACALL Delay1sIns SJMP BACK Delay1sIns : MOV R0,#8 LOOP2:MOV R1,#250 LOOP1:MOV R2,#250 DJNZ R2,$ DJNZ R1,LOOP1 DJNZ R0,LOOP2 RET END Câu hỏi Thời gian 1s tạo nào? Bằng cách tạo vòng lặp lệnh DJNZ THÍ NGHIỆM : Yêu cầu Viết chương trình tạo hiệu ứng quay LED: LED đơn BARLED1 sáng từ trái sang phải sau thời gian 1s lặp lại Sử dụng chương trình 1s viết CODE : ORG 2000H MOV A,#10000000B LOOP: MOV P1,A ACALL Delay1sIns RR A SJMP LOOP END 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? Trả lời : Led nối đến MSB port BÀI THÍ NGHIỆM HIỂN THỊ LED ĐOẠN THÍ NGHIỆM 1: Yêu cầu Viết chương trình DisplayLed0 hiển thị lên LED đoạn số giá trị chứa ghi R0 Viết chương trình hiển thị số lên LED đoạn số cách cho R0 gọi chương trình DisplayLed0 CODE : 1) DisplayLed0: MOV DPTR,#0000H MOV A,#0E0H ORL A,R0 MOVX @DPTR,A RET 2) ORG 2000H MOV R0,#9 ACALL DisplayLed0 END THÍ NGHIỆM 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 CODE : ORG 2000H MAIN MOV R0,#0 MOV R1,#10 LOOP: ACALL DisplayLed0 ACALL Delay1s INC R0 DJNZ R1,LOOP SJMP MAIN Delay1s: MOV R0,#8 LOOP2:MOV R1,#250 LOOP1:MOV R2,#250 DJNZ R2,$ DJNZ R1,LOOP1 DJNZ R0,LOOP2 RET END THÍ NGHIỆM : Yêu cầu Viết chương trình DisplayLED xuất giá trị chứa ghi R0 lên LED đoạn có số thứ tự chứa ghi R1 R0 nằm tầm từ 0-9 R1 tầm từ 0-3 Sau dùng chương trình viết chương trình xuất giá trị lên LED đoạn số CODE : ORG 2000H MAIN : MOV R0,#1 MOV R1,#3 ACALL DisplayLED SJMP MAIN DisplayLED: MOV DPTR,#0000H MOV A,#11110111B ;Gán giá trị đầu xoay Led cho A MOV B,R1 ;Gán số led cho B LOOP: RL A ; xoay phải A để có giá trị Led DJNZ B,LOOP ; Nếu B chưa đủ tiếp tục xoay Led ANL A,#0F0H ;Lấy bit đầu A PUSH ACC ; Cất bit đầu A MOV A,R0 ; gán giá trị xuất led cho A ANL A,#0FH : lấy bit cuối A MOV R0,A ; gán bit A cho R0 POP ACC ;lấy bit đầu A ORL A,R0 ;cộng A giữ giá trị chọn Led R0 giữ giá trị xuất led MOVX @DPTR,A ;xuất ngoại vi led RET END THÍ NGHIỆM 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 đoạn 1, sau 1s hiển thị số lên LED đoạn 2, sau 1s hiển thị số lên LED đoạn Quá trình lặp lặp lại Việc hiển thị sử dụng chương trình DisplayLED viết Giảm thời gian trễ xuống 100 ms Quan sát tượng Tính tốn thời gian trễ cho khơng cịn thấy LED nhấp nháy áp dụng vào chương trình Giảm thời gian trễ xuống (không sử dụng hàm delay) Quan sát tượng CODE : ORG 2000H MAIN : MOV R2,#3 MOV R0,#1 MOV R1,#1 LOOP: ACALL DisplayLED ACALL Delay1s INC R0 INC R1 DJNZ R2,LOOP SJMP MAIN Delay1s: MOV R0,#8 LOOP2:MOV R1,#250 LOOP1:MOV R2,#250 DJNZ R2,$ DJNZ R1,LOOP1 DJNZ R0,LOOP2 RET END _Khi Delay cịn 100ms : _Thời gian để led khơng nhấp nhấy áp vào chương trình : _Khi khơng Delay có tượng led sáng Câu hỏi Thời gian trễ để khơng cịn thấy LED nhấp nháy theo lý thuyết? Giải thích cách tính Khi giảm nhỏ thời gian trễ, tượng xảy gì? Giải thích Trả lời : BÀI THÍ NGHIỆM GIAO TIẾP LCD VÀ ADC THÍ NGHIỆM : Yêu cầu Download chương trình mẫu LCD.A51 trang web môn điện tử Biên dịch chạy thử chương trình Sửa chương trình để hiển thị tên sinh viên lên hàng đầu CODE : LCD_E BIT P3.4 LCD_RS BIT P3.5 LCDADDR EQU 6000H ORG 2000H MAIN: MOV DPTR, #LCDADDR ACALL CLEAR ACALL INIT_LCD ACALL DISPLAYSTRING SJMP $ INIT_LCD: LCD_E BIT P3.4 LCD_RS BIT P3.5 LCDADDR EQU 6000H ORG 2000H MAIN: MOV SCON,#52H MOV DPTR, #LCDADDR ACALL CLEAR ACALL INIT_LCD BACK: ACALL THU ACALL PHAT ACALL WRITETEXT SJMP BACK THU: JNB RI,$ MOV A,SBUF CLR RI RET PHAT: JNB TI,$ MOV SBUF,A CLR TI RET WRITETEXT: MOV DPTR, #LCDADDR SETB LCD_E SETB LCD_RS MOVX @DPTR, A CLR LCD_E ACALL WAIT_LCD RET WAIT_LCD: MOV R6,#10 DL1: MOV R7, #250 DJNZ R7, $ DJNZ R6,DL1 RET END THÍ NGHIỆM Yêu cầu Viết chương trình nhận ký tự từ máy tính gửi đến EME-MC8 thơng qua HyperTerminal (bằng cách gõ ký tự bàn phím chương trình HyperTerminal) hiển thị lên LCD 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 CODE : LCD_E BIT P3.4 LCD_RS BIT P3.5 LCDADDR EQU 6000H ORG 2000H MAIN: MOV SCON,#52H MOV DPTR, #LCDADDR ACALL CLEAR ACALL INIT_LCD BACK: ACALL THU ACALL PHAT ACALL WRITETEXT ACALL CHECK SJMP BACK CHECK: CJNE A,#47H,KT1 SJMP EXIT KT1: JC KT2 CJNE A,#91H,TT1 TT1: JNC EXIT ACALL WRITETEXT SJMP EXIT KT2: CJNE A,#27H,KT3 ACALL CLEAR SJMP EXIT KT3 :JNC EXIT CJNE A,#13H,KT4 ACALL HANG2 SJMP EXIT KT4 : JNC EXIT CJNE A,#8H,EXIT MOV A,#10H ACALL WRITECOM MOV A,#20H ACALL WRITETEXT MOV A,#10H ACALL WRITECOM EXIT : NOP RET HANG2: MOV A,#0C0H ACALL WRITECOM RET THU: JNB RI,$ MOV A,SBUF CLR RI RET PHAT: JNB TI,$ MOV SBUF,A CLR TI RET CLEAR: MOV A, #01H ACALL WRITECOM RET WRITECOM: MOV DPTR, #LCDADDR SETB LCD_E CLR LCD_RS MOVX @DPTR, A CLR LCD_E ACALL WAIT_LCD RET WRITETEXT: MOV DPTR, #LCDADDR SETB LCD_E SETB LCD_RS MOVX @DPTR, A CLR LCD_E ACALL WAIT_LCD RET WAIT_LCD: MOV R6,#10 DL1: MOV R7, #250 DJNZ R7, $ DJNZ R6,DL1 RET END BÀI THÍ NGHIỆM LẬP TRÌNH NGẮT THÍ NGHIỆM 1: u cầu