Tải bản đầy đủ (.docx) (80 trang)

báo cáo thí nghiệm VXL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.63 MB, 80 trang )

BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
MỤC TIÊU
 Nắm được cách sử dụng kit thí nghiệm, phần mềm lập trình.
 Nắm được cách lập trình giao tiếp IO port.
 Nắm được cách lập trình tạo thời gian trễ dùng các lệnh.
CHUẨN BỊ
 Đọc và làm bài thí nghiệm 0 tại nhà.
 Đọc bài chuẩn bị thí nghiệm 1 tại nhà.
 Chuẩn bị cho thí nghiệm 1: Viết chương trình và mơ phỏng trên Proteus tất cả các bài
trong thí nghiệm 1 dựa trên bài chuẩn bị 1 (Prelab_1) và thí nghiệm 0.
 Nộp tất cả các kết quả (bài thí nghiệm 0 và bài chuẩn bị thí nghiệm 1) cho GVHD
trước khi vào lớp.
Sinh viên khơng thực hiện hoặc nộp thiếu nếu khơng có lí do chính đáng sẽ khơng
được tham gia thí nghiệm và bị đánh vắng buổi đó. Mọi hình thức gian lận, sao
chép sẽ bị xử lý chính đáng.

Department of Electronics
Microprocessor Laboratory

Page | 1


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.0 (bit thứ 0 của led thanh BL202).
Kiểm tra:


ORG 2000H
LOOP: MOV C,P1.0
MOV P3.0,C
SJMP LOOP
END
 Biên dịch và thực thi chương trình để kiểm tra kết quả thực hiện.
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?
o 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ốiGround, 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
Microprocessor Laboratory

Page | 2


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.


DELAY_1s:
MOV R5, #8
LP1:

MOV R6, #250

LP2:

MOV R7, #250
DJNZ R7, $
DJNZ R6, LP2
DJNZ R5, LP1
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.
ORG

2000H

LOOP: CPL P1.0
ACALL DELAY_1s
SJMP LOOP
DELAY_1s:
MOV R5, #8

Department of Electronics
Microprocessor Laboratory

Page | 3



BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
LP1:

MOV R6, #250

LP2:

MOV R7, #250
DJNZ R7, $
DJNZ R6, LP2
DJNZ R5, LP1
RET

END

 Thay đổi chương trình con để tần số chớp tắt bây giờ là 1KHz.
ORG

2000H

LOOP: CPL P1.0
ACALL DELAY_500us
SJMP LOOP
DELAY_500us:
LP1:

MOV R5, #250

DJNZ R5, LP1
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 LED đơn.
Câu hỏi:
 Thời gian 1s được tạo ra như thế nào? Tính tốn chính xác dựa trên chương trình
đã viết.
-

tạo vịng lặp nhảy tại chỗ

Department of Electronics
Microprocessor Laboratory

Page | 4


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
-

Với fosc = 12Mhz
tCLK(timer) = 1MC = 1μs
tDelay = 1s = 1000000MC

 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 sáng liên tục vì thời gian chớp tắt quá nhanh
 Sinh viên thay đổi chương trình con như thế nào để được tần số chớp tắt là 1KHz?
f = 1Khz → T = 1ms → tDelay = 1ms = 1000MC
DELAY_500us:
LP1:

MOV R5, #250
DJNZ R5, LP1
RET

END

Department of Electronics
Microprocessor Laboratory

Page | 5


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.0 và P1.1.
ORG 2000H
MAIN:
SETB P1.0
SETB P1.1
ACALL DELAY03S

CLR P1.1
ACALL DELAY02S
ACALL DELAY05S
CLR P1.0
SETB P1.1
ACALL DELAY03S
CLR P1.1
ACALL DELAY02S
ACALL DELAY05S
SJMP MAIN

DELAY03S:
MOV R5, #3
LP1:

MOV R6, #200

LP2:

MOV R7, #250
DJNZ R7, $
DJNZ R6, LP2

Department of Electronics
Microprocessor Laboratory

Page | 6


BÀI THÍ NGHIỆM 1

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
DJNZ R5, LP1
RET
DELAY02S:
MOV R5, #2
LP1:

MOV R6, #200

LP2:

MOV R7, #250
DJNZ R7, $
DJNZ R6, LP2
DJNZ R5, LP1
RET

DELAY05S:
MOV R5, #5
LP1:

MOV R6, #200

LP2:

MOV R7, #250
DJNZ R7, $
DJNZ R6, LP2
DJNZ R5, LP1
RET


END

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?

Department of Electronics
Microprocessor Laboratory

Page | 7


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

Các chương trình con viết với thời gian trễ là 0.3s, 0.2s, 0.5s

 Tại mỗi thời gian tạo trễ, các chân P1.0 và 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?

Department of Electronics
Microprocessor Laboratory

Page | 8



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.

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.
ORG 2000H
LOOP: MOV A,#0FFh
MOV R1,#8
PHASE:
MOV P1,A
CLR C
RLC A
ACALL DELAY_1s
DJNZ R1,PHASE
SJMP LOOP
DELAY_1s:
MOV R5, #8
LP1:

MOV R6, #250

LP2:

MOV R7, #250

DJNZ R7, $
DJNZ R6, LP2
DJNZ R5, LP1

Department of Electronics
Microprocessor Laboratory

Page | 9


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
RET
END

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?
-

kết nối với MSB của port1

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
ORG 0000H
MOV R0,#0000B
MOV A,#11100000B

ADD A,R0
LOOP: ACALL DISPLAY_LED
SJMP LOOP
DISPLAY_LED:
MOV DPTR, #0000H
MOVX @DPTR,A
RET
END
 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

Department of Electronics
Microprocessor Laboratory

Page | 10


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
9 và gọi chương trình con DisplayLed.

ORG 2000H
MOV R0,#9
CALL DisplayLed
LOOP:
SJMP LOOP
DisplayLed:
MOV DPTR, #0000H
MOV A, #11100000B
ADD A, R0
MOVX @DPTR,A

RET
END

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

Department of Electronics
Microprocessor Laboratory

Page | 11


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
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.
Hướng Dẫn:
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.
ORG 2000h
NN: MOV R0,#0
TT:


CALL DisplayLed
CALL DELAY_1s
INC R0

CJNE R0,#10,TT
JMP NN
DisplayLed:
MOV DPTR, #0000H
MOV A, #11100000B
ADD A, R0
MOVX @DPTR,A
RET
DELAY_1s:

Department of Electronics
Microprocessor Laboratory

Page | 12


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
MOV R5, #8
LP1:

MOV R6, #250

LP2:

MOV R7, #250

DJNZ R7, $
DJNZ R6, LP2
DJNZ R5, LP1
RET

END

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.
Hướng dẫn:
Để hiển thị lên 1 LED 7 đoạn ta phải ghi ra ngoại vi ở vùng nhớ 0000H-1FFFH một byte,
với 4 bit thấp chứa giá trị của giá trị cần hiển thị và 4 bit cao được dùng để chọn LED.
Trong 4 bit cao, bit nào bằng 0 thì LED 7 đoạn tương ứng sẽ được bật.
Đoạn chương trình sau tính tốn để xuất ra điều khiển LED dựa vào R0, R1

Department of Electronics
Microprocessor Laboratory

Page | 13



BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

MOV

B,

R1

MOV

A,

#11110111B ;bit số 3 bằng 0,

;bốn bit cao bằng 1.
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

ORG 2000H
MOV R0,#1
MOV R1,#3
CALL DisplayLED
LOOP:
SJMP LOOP
DisplayLED:
MOV B, R1
INC B
MOV A, #11110111B

Department of Electronics
Microprocessor Laboratory

Page | 14


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
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,#0000H
MOVX @DPTR,A
RET
END

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

Department of Electronics
Microprocessor Laboratory

Page | 15


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.

ORG 2000H
NN:

MOV R0,#1
MOV R1,#0

TT:

CALL DisplayLED
CALL DELAY_1s
INC R0
INC R1
CJNE R0,#5,TT
JMP NN

DisplayLED:
MOV B, R1
INC B
MOV A, #11110111B
SHIFTLOOP:

RL

A

DJNZ B, SHIFTLOOP
ANL A, #0F0H

Department of Electronics
Microprocessor Laboratory

Page | 16


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
PUSH ACC
MOV A, R0
ANL A, #0FH
MOV R0, A
POP

ACC

ORL

A, R0

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

DELAY_1s:
MOV R5, #8
LP1:

MOV R6, #250

LP2:

MOV R7, #250
DJNZ R7, $
DJNZ R6, LP2
DJNZ R5, LP1
RET

END

Giảm thời gian trễ xuống còn 100 ms. Quan sát hiện tượng.
ORG 2000H
NN:

MOV R0,#1
MOV R1,#0

TT:

CALL DisplayLED
CALL DELAY_100ms

Department of Electronics
Microprocessor Laboratory


Page | 17


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
INC R0
INC R1
CJNE R0,#5,TT
JMP NN
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,#0000H
MOVX @DPTR,A
RET
DELAY_100ms:
MOV R5, #2
LP1:

MOV R6, #100

LP2:

MOV R7, #250
DJNZ R7, $

Department of Electronics
Microprocessor Laboratory

Page | 18


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
DJNZ R6, LP2
DJNZ R5, LP1
RET
END


Tính tố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
ORG 2000H
NN:

MOV R0,#1
MOV R1,#0

TT:

CALL DisplayLED
CALL DELAY_5ms
INC R0
INC R1
CJNE R0,#5,TT
JMP NN

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

Department of Electronics
Microprocessor Laboratory

Page | 19


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
MOV R0, A
POP

ACC

ORL

A, R0

MOV DPTR,#0000H
MOVX @DPTR,A
RET
DELAY_5ms:
MOV R5, #5
LP1:

MOV R6, #20

LP2:


MOV R7, #25
DJNZ R7, $
DJNZ R6, LP2
DJNZ R5, LP1
RET

END

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 2000H
NN:

MOV R0,#1
MOV R1,#0

TT:

CALL DisplayLED
INC R0
INC R1
CJNE R0,#5,TT
JMP NN

DisplayLED:

Department of Electronics
Microprocessor Laboratory

Page | 20



BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
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,#0000H
MOVX @DPTR,A
RET
END


Kiểm tra:
 Biên dịch, thực thi và kiểm tra chương trình
Câu hỏi:
⮚ 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.
-

Thời gian: 1/200 s

-

Giải thích :Để hiển thị các chữ số khác nhau lên các LED 7 đoạn, ta vận dụng hiện
tượng lưu ảnh của mắt. Tần số quét một khung hình (tức một vịng lập) tối thiểu
khoản 25 Hz. Để dễ tính tốn ta dùng tần số 50Hz, tức chu kì là 1/50 giây. Trong

Department of Electronics
Microprocessor Laboratory

Page | 21


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
1/50 giây đó có 4 khối cần hiển thị thì độ trễ giữa các khối phải là 1/200 giây.
⮚ Khi giảm rất nhỏ thời gian trễ, hiện tượng xảy ra là gì? Giải thích
-

Hiện tượng : LED sáng hết 4 đoạn

-


Giải thích: vì thời gian chuyển tiếp giữa các đoạn quá nhỏ nên mắt người
không nhận ra được

Department of Electronics
Microprocessor Laboratory

Page | 22


BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
MỤC TIÊU
⮚ Nắm được cách sử dụng kit thí nghiệm, phần mềm lập trình.
⮚ Nắm được cách giao tiếp LCD và ADC.
⮚ Nắm được cách lập trình timer.
CHUẨN BỊ
⮚Đọc bài chuẩn bị thí nghiệm 2 tại nhà.
⮚ Chuẩn bị cho thí nghiệm 2: Viết chương trình và mơ phỏng trên Proteus tất cả các
bài trong thí nghiệm 2 dựa trên bài chuẩn bị 2 và thí nghiệm 0.
⮚ Nộp tất cả các kết quả (bài chuẩn bị thí nghiệm 2) cho GVHD trước khi vào lớp.
Sinh viên không thực hiện hoặc nộp thiếu nếu khơng có lí do chính đáng sẽ khơng
được tham gia thí nghiệm và bị đánh vắng buổi đó.

Department of Electronics
Microprocessor Laboratory

Page | 23



BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
THÍ NGHIỆM 1
Mục tiêu: Nắm được cách thức xuất giá trị lên LCD.
Yêu cầu:
 Download chương trình mẫu LCD.A51 trên trang web bộ mơn điện tử hoặc trong
folder thí nghiệm của sinh viên.
 Biên dịch và 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.
Kiểm tra:
 Kiểm tra kết quả thực hiện của chương trình.

Câu hỏi:
 Giải thích ý nghĩa của các chương trình con trên project mẫu.
INIT_LCD: Chương trình con cấu hình LCD
CLEAR: Chương trình con xóa các kí tự trên LCD
Department of Electronics
Microprocessor Laboratory

Page | 24


BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
WRITECOM:

Chương trình con xuất lệnh LCD

WRITETEXT: Chương trình con xuất ký tự LCD
DISPLAYSTRING: Chương trình con xuất dãy kí tự

WAIT_LCD: Chương trình con delay
MESSAGE:Chương trình con chứa dãy kí tự muốn xuất lên LCD

 Trình bày lưu đồ giải thuật giao tiếp LCD.

Department of Electronics
Microprocessor Laboratory

Page | 25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×