1. Trang chủ
  2. » Luận Văn - Báo Cáo

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 273 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 557,63 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

MỤC TIÊU

 Nắm được cách giao tiếp ngoại vi ở dạng ánh xạ bộ nhớ.

 Nắm được cách giao tiếp LED 7 và quét LED 7 đoạn.

 Nắm được cách giao tiếp LED ma trận.

CHUẨN BỊ

 Đọc chương 4 và chương 12 của tài liệu hướng dẫn.

 Viết chương trình và mô phỏng các bài thí nghiệm trên Proteus dựa trên bài thí nghiệm 0.

Trang 2

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.

Kiểm tra:

 Biên dịch, thực thi và kiểm tra chương trình.

 Để giao tiếp với LED 7 đoạn, ta phải ghi ra ngoại vi ở vùng nhớ (giá trị nạp vào thanh ghi DPTR) bao nhiêu?

 Byte được ghi ra phải có định dạng như thế nào? Muốn hiển thị lên các LED còn lại, bit nào sẽ bằng 0?

BÁO CÁO:

1 Chương trình:

ORG 2000H ACALL DisplayLED SJMP $

DisplayLED:

MOV A, #11101001B MOV DPTR, #0000H MOVX @DPTR, A RET

END

Trang 3

2 Kết quả thí nghiệm

a Kết quả mô phỏng:

b Trả lời câu hỏi

1) Để giao tiếp với LED 7 đoạn, ta phải ghi ra ngoại vi ở vùng nhớ (giá trị nạp vào thanh

ghi DPTR) bao nhiêu?

Để giao tiếp với LED 7 đoạn, ta phải ghi vào vùng nhớ có giá trị 0000H- 1FFFH

2) Byte được ghi ra phải có định dạng như thế nào? Muốn hiển thị lên các LED còn lại,

bit nào sẽ bằng 0?

Byte ghi ra với 4 bit cao là tín hiệu chọn LED, theo thứ tự từ phải sang trái là LED 0 đến LED thứ 3, để cho phép 1 LED sáng thì ta cho giá trị tương ứng là 0, 4 bit sau là giá trị số BCD cần biểu diễn

Trang 4

THÍ NGHIỆM 2

Mục tiêu: Nắm được cách thức xuất giá trị lên LED 7 đoạn

Yêu cầu: Sửa lại chương trình con DisplayLED ở Thí nghiệm 1 (có thể tham khảo đoạn chương

trình ở dưới) để thực hiện 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 (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 xuất 1 giá trị bất kỳ lên LED 7 đoạn số 3

Đoạn chương trình tính toán để xuất ra điều khiển LED dựa vào R0, R1

Trang 5

 Giải thích ý nghĩa các lệnh của đoạn chương trình trong hướng dẫn.

 Viết lại chương trình DisplayLED sử dụng phương pháp tra bảng.

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

Trang 6

MOVX @DPTR, A RET

END

2 Kết quả thí nghiệm

a Kết quả mô phỏng:

b Trả lời câu hỏi

1) Giải thích ý nghĩa các lệnh của đoạn chương trình trong 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 1 để tạo số lần dịch

chuyển bit 0

MOV A, #11110111B ; tạo khung của 4 bit chọn LED

SHIFTLOOP:

RL A ; Thực hiện chuyển bit 0 sang trái 1 vị trí

DJNZ B, SHIFTLOOP ; Dời bit 0 sang trái n+1 vị trí (n là vị trí LED cần

Trang 7

ANL A, #0FH ; Giữ lại 4 bit thấp (mã BCD xuất lên LED) và xóa

4 bit cao

MOV R0, A ; Chuyển A vào R0

POP ACC ; Lấy 4 bit chọn LED từ stack

ORL A, R0 ; Thực hiện OR logic 4 bit cao (bit chọn LED) và

4 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

ACALL DisplayLED SJMP $

DisplayLED:

MOV DPTR, #TAB MOV A, R1

MOVC A, @A + DPTR ORL A, R0

MOV DPTR, #0 MOVX @DPTR, A RET

END

Trang 8

THÍ NGHIỆM 3

Mục tiêu: Kết hợp được các 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

HD: Viết chương trình Delay1sIns tạo trễ 1s như ở bài thí nghiệm 1 Trong chương trình chính,

đầu tiên cho thanh ghi R0 bằng 0, sau đó vào vòng lặp gọi chương trình con DisplayLED đã viết

ở phần trước, tạo trễ 1s, tăng R0 lên 1 và lặp lại quá trình Nếu R0 lớn hơn 9 thì cho R0 bằng 0 trở lại

Kiểm tra:

 Biên dịch, thực thi và kiểm tra chương trình.

 Để kiểm tra R0 lớn hơn 9 cần sử dụng lệnh nào? Vòng lặp nhảy như thế nào?

CJNE R0, #10, LOOP SJMP MAIN

DisplayLED:

MOV DPTR, #TAB MOV A, R1

Trang 9

MOVC A, @A + DPTR ORL A, R0

MOV DPTR, #0 MOVX @DPTR, A RET

Trang 11

b Trả lời câu hỏi

 Để kiểm tra R0 lớn hơn 9 cần sử dụng lệnh nào? Vòng lặp nhảy như thế nào?

Để kiểm tra R0 lớn hơn 9 cần sử dụng lệch CJNE R0, #10, LOOP

Vòng lặp nhảy theo thứ tự:

- Nếu R0 sau khi tăng 1 nhỏ hơn hoặc bằng 9, nhảy đến vị trí LOOP: gọi chương trình con xuất giá trị chứa trong R0 lên LED 0

- Nếu R0 sau khi tăng bằng 10 (lớn hơn 9), nhảy để vị trí MAIN: thực hiện xóa R0 về

0 và sau đó tiếp tục vòng lặp ở trên

Trang 12

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

Kiểm tra:

 Biên dịch, thực thi và kiểm tra chương trình

 Thời gian trễ để không còn thấy LED nhấp nháy là bao nhiêu theo lý thuyết? Giải thích cách tính

 Khi giảm rất nhỏ thời gian trễ, hiện tượng xảy ra là gì? Giải thích

ACALL Delay1sIns INC R0

Trang 13

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

Trang 14

 Thời gian trễ: 100ms

Trang 15

 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 là bao nhiêu theo lý thuyết? Giải thích

cách tính

Số khung hình mắt người có thể thấy trong 1 giây là 24 thời gian trễ giữa các khung

Trang 16

hình là

hay trong là trong

bốn số phải hiển thị trên LED Thời gian trễ giữa mỗi lần hiển thị là

Thời gian trễ để không còn thấy LED nhấp nháy là bao nhiêu theo lý thuyết là 0.0104s

2) Khi giảm rất nhỏ thời gian trễ, hiện tượng xảy ra là gì? Giải thích

Khi giảm rất nhỏ thời gian trễ, LED không còn sáng nữa Vì thời gian giữa mỗi lần hiển thị số lên LED rất 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 nữa

Trang 17

THÍ NGHIỆM 5

Mục tiêu: Nắm được 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 các LED ở vị trí bất kỳ của hàng y trên LED ma trận Giá trị

y được chứa trong thanh ghi

Kiểm tra:

 Biên dịch, thực thi và kiểm tra chương trình

 Để chốt hàng và chốt cột của LED ma trận, ta lần lượt phải ghi ra ngoại vi ở vùng nhớ (giá trị nạp vào thanh ghi DPTR) bao nhiêu?

 Để làm sáng LED ở vị trí bất kỳ thì dữ liệu xuất trên cột và hàng phải là mức cao hay thấp ?

Trang 19

b Trả lời câu hỏi

1) Để chốt hàng và chốt cột của LED ma trận, ta lần lượt phải ghi ra ngoại vi ở vùng nhớ (giá trị nạp vào thanh ghi DPTR) bao nhiêu?

Để chốt hàng và chốt cột của LED ma trận, ta lần lượt phải ghi ra ngoại vi ở vùng nhớ 8000h-9FFFh (DPTR = 8000H) và A000h-BFFFh (DPTR = A000H)

2) Để làm sáng LED ở vị trí bất kỳ thì dữ liệu xuất trên cột và hàng phải là mức cao hay thấp?

Để làm sáng LED ở vị trí bất kì thì dữ liệu xuất trên hàng phải là mức thấp và dữ liệu xuất trên cột là mức cao

Trang 20

THÍ NGHIỆM 6

Mục tiêu: Nắm được 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 các mã xuất theo 8 hàng của từng cột của 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, đầu tiên hiển thị 8 hàng của cột 1, sau đó delay 1ms rồi hiển thị 8 hàng của cột 2, sau đó delay 1ms rồi hiển thị 8 hàng của cột 3, … tương tự như vậy đến khi hiển thị xong 8 hàng của cột 8 thì quay lại hiển thị cột 1

Kiểm tra:

 Biên dịch, thực thi và kiểm tra chương trình

 Khi tăng hoặc giảm thời gian delay, hiển thị trên LED ma trận sẽ thay đổi như thế nào?

Trang 21

MOVC A, @A + DPTR MOV DPTR, #0A000H MOVX @DPTR, A POP ACC

INC R1 LCALL DL1ms CJNE R1, #8, LOOP SJMP MAIN

DJNZ R5, $ DJNZ R6, DL RET

CHAR_B: DB 0FFH, 0FFH, 0FFH, 93H, 6DH, 6DH, 6DH, 01H

END

2 Kết quả thí nghiệm

a Kết quả mô phỏng:

Trang 22

b Trả lời câu hỏi

 Khi tăng hoặc giảm thời gian delay, hiển thị trên LED ma trận sẽ thay đổi như thế nào?

Khi tăng hoặc giảm thời gian delay, hiển thị trên LED ma trận sẽ giảm hoặc tăng độ sáng tương ứng với thời gian delay nhỏ hơn 5ms

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

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w