Thí nghiệm Vi xử lý 2: Lập trình hiển thị LED 7 đoạn và giao tiếp LED ma trận

22 262 1
Thí nghiệm Vi xử lý 2: Lập trình hiển thị LED 7 đoạn và giao tiếp LED ma trận

Đ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

Báo cáo thí nghiệm Vi xử lý Đại học Bách Khoa Đại học Quốc Gia thành phố Hồ Chí Minh.Bài thí nghiệm 2: Lập trình hiển thị LED 7 đoạn và giao tiếp LED ma trận.Thí nghiệm 1: Mục tiêu: Nắm được cách thức hiển thị LED 7 đoạn.Yêu cầu: Viết chương trình con DisplayLED xuất giá trị 9 lên LED 7 đoạn thứ 0. Sau đó, dùng chương trình con này viết chương trình xuất giá trị 9 lên LED 7 đoạn số 0.

BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN MỤC TIÊU  Nắm cách giao tiếp ngoại vi dạng ánh xạ nhớ.  Nắm cách giao tiếp LED quét LED đoạn.  Nắm cách giao tiếp LED ma trận. CHUẨN BỊ  Đọc chương chương 12 tài liệu hướng dẫn.  Viết chương trình mơ thí nghiệm Proteus dựa thí nghiệm 0. TN Vi xử lý BM Điện tử Page | BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN THÍ NGHIỆM Mục tiêu: Nắm cách thức hiển thị LED đoạn Yêu cầu:  Viết chương trình DisplayLED xuất giá trị lên LED đoạn thứ 0.  Sau đó, dùng chương trình viết chương trình xuất giá trị lên LED đoạn số 0. Kiểm tra:  Biên dịch, thực thi kiểm tra chương trình.  Để giao tiếp với LED đoạn, ta phải ghi ngoại vi vùng nhớ (giá trị nạp vào ghi DPTR) bao nhiêu?  Byte ghi phải có định dạng nào? Muốn hiển thị lên LED lại, bit 0? BÁO CÁO: Chương trình: ORG 2000H ACALL DisplayLED SJMP $ DisplayLED: MOV A, #11101001B MOV DPTR, #0000H MOVX @DPTR, A RET END TN Vi xử lý BM Điện tử Page | BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN Kết thí nghiệm a Kết mơ phỏng: b Trả lời câu hỏi 1) Để giao tiếp với LED đoạn, ta phải ghi ngoại vi vùng nhớ (giá trị nạp vào ghi DPTR) bao nhiêu? Để giao tiếp với LED đoạn, ta phải ghi vào vùng nhớ có giá trị 0000H- 1FFFH 2) Byte ghi phải có định dạng nào? Muốn hiển thị lên LED lại, bit 0? Byte ghi với bit cao tín hiệu chọn LED, theo thứ tự từ phải sang trái LED đến LED thứ 3, phép LED sáng ta cho giá trị tương ứng 0, bit sau giá trị số BCD cần biểu diễn TN Vi xử lý BM Điện tử Page | BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN THÍ NGHIỆM Mục tiêu: Nắm cách thức xuất giá trị lên LED đoạn u cầu: Sửa lại chương trình DisplayLED Thí nghiệm (có thể tham khảo đoạn chương trình dưới) để thực 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ố Đoạn chương trình tính tốn để xuất điều khiển LED dựa vào R0, R1 MOV B, R1 MOV A, #11110111B ;bit số 0, bốn bit cao SHIFTLOOP: RL A DJNZ B, SHIFTLOOP ANL A, #0F0H PUSH ACC MOV A, R0 ANL A, #0FH MOV R0, A POP ACC ORL A, R0 Kiểm tra:  Biên dịch, thực thi kiểm tra chương trình. TN Vi xử lý BM Điện tử Page | BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN  Giải thích ý nghĩa lệnh đoạn chương trình hướng dẫn.  Viết lại chương trình DisplayLED sử dụng phương pháp tra bảng. BÁO CÁO: Chương trình: ORG 2000H MOV R1, #3 ; Hiển thị Led MOV R0, #5 ; Hiển thị số ACALL DisplayLED SJMP $ DisplayLED: MOV B, R1 INC B MOV A, #11110111B SHIFTLOOP: RL A DJNZ B, SHIFTLOOP ANL A, #0F0H PUSH ACC MOV A, R0 ANL A, #0FH MOV R0, A POP ACC ORL A, R0 MOV DPTR, #0 TN Vi xử lý BM Điện tử Page | BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN MOVX @DPTR, A RET END Kết thí nghiệm a Kết mô phỏng: b Trả lời câu hỏi 1) Giải thích ý nghĩa lệnh đoạn chương trình hướng dẫn MOV B, R1 ; chuyển vị trí LED cần hiển thị vào B INC B ; (bổ sung) tăng B lên để tạo số lần dịch chuyển bit MOV A, #11110111B ; tạo khung bit chọn LED SHIFTLOOP: TN Vi xử lý RL A ; Thực chuyển bit sang trái vị trí DJNZ B, SHIFTLOOP ; Dời bit sang trái n+1 vị trí (n vị trí LED cần hiển thị) ANL A, #0F0H ; Giữ lại bit cao (bit chọn LED) xóa bit cao PUSH ACC ; Cất bit chọn LED vào stack MOV A, R0 ; chuyển số BCD vào A BM Điện tử Page | BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN ANL A, #0FH ; Giữ lại bit thấp (mã BCD xuất lên LED) xóa bit cao MOV R0, A ; Chuyển A vào R0 POP ACC ; Lấy bit chọn LED từ stack ORL A, R0 ; Thực OR logic bit cao (bit chọn LED) bit thấp (mã BCD xuất lên LED ) 2) Viết lại chương trình DisplayLED sử dụng phương pháp tra bảng ORG 2000H MOV R1, #3 ; Hiển thị Led MOV R0, #9 ; Hiển thị số ACALL DisplayLED SJMP $ DisplayLED: MOV DPTR, #TAB MOV A, R1 MOVC A, @A + DPTR ORL A, R0 MOV DPTR, #0 MOVX @DPTR, A RET TAB: DB 0E0H, 0D0H, 0B0H, 70H END TN Vi xử lý BM Điện tử Page | BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN THÍ NGHIỆM Mục tiêu: Kết hợp 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 HD: Viết chương trình Delay1sIns tạo trễ 1s thí nghiệm Trong chương trình chính, cho ghi R0 0, sau vào vịng lặp gọi chương trình DisplayLED viết phần trước, tạo trễ 1s, tăng R0 lên lặp lại trình Nếu R0 lớn cho R0 trở lại Kiểm tra:  Biên dịch, thực thi kiểm tra chương trình.  Để kiểm tra R0 lớn cần sử dụng lệnh nào? Vòng lặp nhảy nào? BÁO CÁO: Chương trình: ORG 2000H MOV R1, #0 MAIN: MOV R0, #0 LOOP: ACALL DisplayLED ACALL Delay1sIns INC R0 CJNE R0, #10, LOOP SJMP MAIN DisplayLED: MOV DPTR, #TAB MOV A, R1 TN Vi xử lý BM Điện tử Page | BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN MOVC A, @A + DPTR ORL A, R0 MOV DPTR, #0 MOVX @DPTR, A RET Delay1sIns: ; f = 11.0592 MHz MOV R7, #8 DL2: MOV R6, #240 DL1: MOV R5, #240 DJNZ R5, $ DJNZ R6, DL1 DJNZ R7, DL2 RET TAB: DB 0E0H, 0D0H, 0B0H, 70H END Kết thí nghiệm a Kết mô phỏng: Z TN Vi xử lý BM Điện tử Page | BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN TN Vi xử lý BM Điện tử Page | 10 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN b Trả lời câu hỏi  Để kiểm tra R0 lớn cần sử dụng lệnh nào? Vòng lặp nhảy nào? Để kiểm tra R0 lớn cần sử dụng lệch CJNE R0, #10, LOOP Vòng lặp nhảy theo thứ tự: - Nếu R0 sau tăng nhỏ 9, nhảy đến vị trí LOOP: gọi chương trình xuất giá trị chứa R0 lên LED - Nếu R0 sau tăng 10 (lớn 9), nhảy để vị trí MAIN: thực xóa R0 sau tiếp tục vòng lặp TN Vi xử lý BM Điện tử Page | 11 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN THÍ NGHIỆM Mục tiêu: Nắm phương pháp quét LED đoạn Yêu cầu:  Đầu tiên, viết chương trình hiển thị số lên LED đ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 Kiểm tra:  Biên dịch, thực thi kiểm tra chương trình  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 BÁO CÁO: Chương trình: ORG 2000H MAIN: MOV R0, #1 MOV R1, #0 LOOP: ACALL DisplayLED ACALL Delay1sIns INC R0 TN Vi xử lý BM Điện tử Page | 12 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN INC R1 CJNE R1, #4, LOOP SJMP MAIN DisplayLED: MOV DPTR, #TAB MOV A, R1 MOVC A, @A + DPTR ORL A, R0 MOV DPTR, #0 MOVX @DPTR, A RET Delay1sIns: ; f = 11.0592 MHz MOV R7, #8 DL2: MOV R6, #240 DL1: MOV R5, #240 DJNZ R5, $ DJNZ R6, DL1 DJNZ R7, DL2 RET TAB: DB 0E0H, 0D0H, 0B0H, 70H END Kết thí nghiệm a Kết mơ phỏng:  Thời gian trễ: 1s TN Vi xử lý BM Điện tử Page | 13 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN  Thời gian trễ: 100ms TN Vi xử lý BM Điện tử Page | 14 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN  Thời gian trễ: 0.005s  Thời gian trễ: 0s b Trả lời câu hỏi 1) 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 Số khung hình mắt người thấy giây 24 TN Vi xử lý BM Điện tử thời gian trễ khung Page | 15 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN hình hay trong lần hiển thị bốn số phải hiển thị LED Thời gian trễ Thời gian trễ để khơng cịn thấy LED nhấp nháy theo lý thuyết 0.0104s 2) Khi giảm nhỏ thời gian trễ, tượng xảy gì? Giải thích Khi giảm nhỏ thời gian trễ, LED khơng cịn sáng Vì thời gian lần hiển thị số lên LED nhỏ làm cho LED không đủ thời gian để làm sáng đèn nên ta không thấy LED sáng TN Vi xử lý BM Điện tử Page | 16 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN THÍ NGHIỆM Mục tiêu: Nắm phương pháp giao tiếp LED ma trận Yêu cầu: Viết chương trình làm sáng LED vị trí hàng y LED ma trận Giá trị y chứa ghi Kiểm tra:  Biên dịch, thực thi kiểm tra chương trình  Để chốt hàng chốt cột LED ma trận, ta phải ghi ngoại vi vùng nhớ (giá trị nạp vào ghi DPTR) bao nhiêu?  Để làm sáng LED vị trí liệu xuất cột hàng phải mức cao hay thấp ? BÁO CÁO: Chương trình: ORG 2000H MOV R1, #3 ; Hàng cần hiển thị (0-7) Define_ROW: INC R1 MOV A, #01111111B ROLL: RL A DJNZ R1, ROLL MOV R1, A DisplayROW: MOV A, #10000000B LOOP: MOV DPTR, #8000H MOVX @DPTR, A RR A TN Vi xử lý BM Điện tử Page | 17 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN PUSH ACC MOV A, R1 MOV DPTR, #0A000H MOVX @DPTR, A POP ACC ACALL DL1ms SJMP LOOP DL1ms: MOV R6, #4 DL: MOV R5, #230 ; f = 11.0592 MHz DJNZ R5, $ DJNZ R6, DL RET END Kết thí nghiệm a Kết mô phỏng: TN Vi xử lý BM Điện tử Page | 18 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN b Trả lời câu hỏi 1) Để chốt hàng chốt cột LED ma trận, ta phải ghi ngoại vi vùng nhớ (giá trị nạp vào ghi DPTR) bao nhiêu? Để chốt hàng chốt cột LED ma trận, ta phải ghi ngoại vi vùng nhớ 8000h-9FFFh (DPTR = 8000H) A000h-BFFFh (DPTR = A000H) 2) Để làm sáng LED vị trí liệu xuất cột hàng phải mức cao hay thấp? Để làm sáng LED vị trí liệu xuất hàng phải mức thấp liệu xuất cột mức cao TN Vi xử lý BM Điện tử Page | 19 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN THÍ NGHIỆM Mục tiêu: Nắm phương pháp quét LED ma trận Yêu cầu: Viết chương trình làm hiển thị chữ B lên LED ma trận HD: - Viết mã xuất theo hàng cột chữ B cần hiển thị - Viết chương trình tạo delay 1ms có tên Delay1ms - Quy trình quét LED ma trận, hiển thị hàng cột 1, sau delay 1ms hiển thị hàng cột 2, sau delay 1ms hiển thị hàng cột 3, … tương tự đến hiển thị xong hàng cột quay lại hiển thị cột Kiểm tra:  Biên dịch, thực thi kiểm tra chương trình  Khi tăng giảm thời gian delay, hiển thị LED ma trận thay đổi nào? BÁO CÁO: Chương trình: ORG 2000H MOV A, #10000000B MAIN: MOV R1, #0 LOOP: MOV DPTR, #8000H MOVX @DPTR, A RR A PUSH ACC MOV A, R1 MOV DPTR, #CHAR_B TN Vi xử lý BM Điện tử Page | 20 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN MOVC A, @A + DPTR MOV DPTR, #0A000H MOVX @DPTR, A POP ACC INC R1 LCALL DL1ms CJNE R1, #8, LOOP SJMP MAIN DL1ms: MOV R6, #4 DL: MOV R5, #230 ; f = 11.0592 MHz DJNZ R5, $ DJNZ R6, DL RET CHAR_B: DB 0FFH, 0FFH, 0FFH, 93H, 6DH, 6DH, 6DH, 01H END Kết thí nghiệm a Kết mô phỏng: TN Vi xử lý BM Điện tử Page | 21 BÀI THÍ NGHIỆM LẬP TRÌNH HIỂN THỊ LED ĐOẠN VÀ GIAO TIẾP LED MA TRẬN b Trả lời câu hỏi  Khi tăng giảm thời gian delay, hiển thị LED ma trận thay đổi nào? Khi tăng giảm thời gian delay, hiển thị LED ma trận giảm tăng độ sáng tương ứng với thời gian delay nhỏ 5ms TN Vi xử lý BM Điện tử Page | 22

Ngày đăng: 20/09/2021, 11:33

Mục lục

  • THÍ NGHIỆM 1

    • Yêu cầu:

    • THÍ NGHIỆM 3

      • Kiểm tra:

      • THÍ NGHIỆM 4

        • Yêu cầu:

        • THÍ NGHIỆM 5

          • Kiểm tra:

          • THÍ NGHIỆM 6

            • HD:

              • Kiểm tra:

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

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

Tài liệu liên quan