ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ o0o Môn Vi xử lý Báo Cáo Thí Nghiệm 1 GVHD Th s Nguyễn Trung Hiếu Thành viên nhóm Trần Lê Minh Hoàng 2033530[.]
Trang 1ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
-o0o -Môn Vi xử lý Báo Cáo Thí Nghiệm 1
GVHD: Th.s Nguyễn Trung Hiếu
Thành viên nhóm:
- Trần Lê Minh Hoàng 2033530
- Nguyễn Minh Khánh 1932023
- Trịnh Nguyên Dũ 2148076
TP.Hồ Chí Minh, ngày 24 tháng 2, 2023
Trang 2BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN
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).
Trả lời:
ORG 0000H
mov P3,#000H
loop:
JB P1.0,SET1 JNB P1.0,SET0 SET1:
SETB P3.0 JMP LOOP SET0:
CLR P3.0 JMP LOOP END
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?
+ Khi nhấn nút tại P1.0 LED tại P1.0 sáng đồng thời truyền giá trị nút nhấn đến P3.0 LED tại P3.0 đồng thời sáng
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ó 2 bit được sử dụng là bit 0 và bit 1 tương ứng với 2 trạng thái của nút nhấn Nhấn xuống là bit 0 và nhả ra là bit 1
Trang 3THÍ NGHIỆM 2
Mục tiêu: Nắm được cách tạo trễ dùng vòng lặp lệnh.
Yêu cầu: Viết chương trình tạo xung vuông 1 Hz, chu kỳ nhiệm vụ 50% trên chân
P1.0
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.
Trả Lời:
ORG 0000H
LOOP:
CPL P1.0 MOV R0, #5 LOOP3:
MOV R2, #200 LOOP2:
MOV R1, #250 LOOP1:
DJNZ R1, LOOP1 DJNZ R2, LOOP2 DJNZ R0, LOOP3 JMP LOOP
END
Trang 4 Để tạo xung 1Hz, các vòng trễ 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.
+ Để tạo độ trễ cho sung ta sử dụng vòng lặp, bằng 3 vòng lặp lồng nhau = 2 x
250 x 200 x 5 thì sẽ tạo ra độ trễ bằng 500 000 chu kì máy = 0.5s ( do chu kì nhiệm vụ 50% trên P1.0 )
Sai số nhỏ nhất có thể đạt được so với yêu cầu là bao nhiêu?
Sai số nhỏ nhất có để đạt được là + 4 chu kì máy = 4us
Trang 5THÍ 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 con Delay1sIns và dùng chương trình con này để chớp/tắt
LED đơn gắn vào P1.0 sau mỗi khoảng thời gian 1s
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 Trả lời:
ORG 0000H
LOOP:
CPL P1.0 CALL Delay1sIns Delay1sIns:
MOV R0, #10 LOOP3:
MOV R2, #200 LOOP2:
MOV R1, #250 LOOP1:
DJNZ R1, LOOP1 DJNZ R2, LOOP2
DJNZ R0, LOOP3
Trang 6JMP LOOP
RET
END
Thời gian 1s được tạo ra như thế nào?
+ Để tạo độ trễ cho sung ta sử dụng vòng lặp, bằng 3 vòng lặp lồng nhau = 2 x 250
x 200 x 10 thì sẽ tạo ra độ trễ bằng 1000 000 chu kì máy = 1s
Bây giờ nếu một bạn sinh viên muốn viết chương trình con tạo trễ 2s thì phải sửa lại chương trình con đã viết như thế nào?
Thay thế câu lệnh MOV R0, #10 = MOV R0, #20
Trang 7THÍ NGHIỆM 4
Mục tiêu: Nắm được cách sử dụng chương trình con để tạo xung.
Yêu cầu: Viết chương trình tạo xung vuông 2Hz chu kỳ nhiệm vụ 70% tại chân P1.0 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 Trả lời:
ORG 0000H
LOOP:
SETB P1.0 CALL Delay1 CLR P1.0 CALL Delay2 JMP LOOP Delay1:
MOV R0, #4 LOOP3:
MOV R2, #175 LOOP2:
MOV R1, #250
Trang 8LOOP1:
DJNZ R1, LOOP1 DJNZ R2, LOOP2
DJNZ R0, LOOP3
RET
Delay2:
MOV R0, #2
LOOP6:
MOV R2, #150 LOOP5:
MOV R1, #250 LOOP4:
DJNZ R1, LOOP4 DJNZ R2, LOOP5
DJNZ R0, LOOP6
RET
END
Thời gian mức cao và mức thấp của xung lần lượt là bao nhiêu chu kỳ máy? (Lấy tần số của thạch anh xấp xỉ 12MHz) Giá trị nạp vào các thanh ghi là bao nhiêu?
F=2Hz T = 0.5s = 500 000 MCs
D =Ton T = 70% Ton 350 000 MCs = 2 x 250 x 175 x 4
T off= 2x250x150x2
Trang 9 Viết lại chương trình tạo xung vuông 2Hz với chu kỳ nhiệm vụ bây giờ là 80%?
+ D =T on
T = 80% T on =400 000 MCs = 2 x 200 x 100 x 10
+ T off=100 000 MCs=2x250x100x2
ORG 0000H
LOOP:
SETB P1.0
CALL Delay1
CLR P1.0
CALL Delay2
JMP LOOP
Delay1:
MOV R0, #10
LOOP3:
MOV R2, #100
LOOP2:
MOV R1, #200
LOOP1:
DJNZ R1, LOOP1
DJNZ R2, LOOP2
DJNZ R0, LOOP3
RET
Trang 10MOV R0, #2
LOOP6:
MOV R2, #100 LOOP5:
MOV R1, #250 LOOP4:
DJNZ R1, LOOP4 DJNZ R2, LOOP5
DJNZ R0, LOOP6
RET
END
Trang 11THÍ NGHIỆM 5
Mục tiêu: Nắm được cách tạo nhiều xung khác nhau trên 8051.
Yêu cầu: Viết chương trình tạo 2 xung vuông 0.5Hz và 1Hz với cùng chu kỳ nhiệm vụ
là 50% lần lượt trên chân P1.0 và P1.1
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 trên các LED đơn.
F1=0,5Hz T = 2s = 2 000 000 MCs
D =Ton T = 50% T1on= 1 000 000 MCs = 2 x 250 x 100 x 20 2
T 1 off= T1on=1 000 000 MCs = 2 x 250 x 100 x 20
F2=1Hz T2 = 1s = 1 000 000 MCs
D =Ton T = 50% T2on= 500 000 MCs = 2 x 250 x 100 x 10 2
T 2 off= T2on=500 000 MCs = 2 x 250 x 100 x 10
Trả lời :
ORG 0000H
LOOP:
SETB P1.0
SETB P1.1
Trang 12CALL Delay1
CLR P1.0
SETB P1.1
CALL Delay1
SETB P1.0
CLR P1.1
CALL Delay1
CLR P1.0
CLR P1.1
CALL Delay1
JMP LOOP
Delay1:
MOV R0, #5
LOOP6:
MOV R2, #100 LOOP5:
MOV R1, #250 LOOP4:
DJNZ R1, LOOP4 DJNZ R2, LOOP5
DJNZ R0, LOOP6
RET
END
Trang 13 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?
Chương trình con với độ trễ là 0.25s
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ại thời gian độ trễ đầu tiên P1.0 = 1, P1.1 = 1
Tại độ trễ thứ 2 P1.0 =0; P1.1 =1
Tại độ trễ thứ 3 P1.0 = 1; P1.1 = 0
Tại độ trễ thứ 4 P1.0 = 0; P1.1 = 0
Trang 14THÍ NGHIỆM 6
Mục tiêu: Hiểu được cách hiển thị trên và tạo hiệu ứng trên bar LED.
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
Delay1sIns đã 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.
Trả lời:
ORG 0000H
LOOP:
MOV P1, #0FFH CLR P1.0
CALL Delay1
SETB P1.0 CLR P1.1 CALL Delay1
SETB P1.1
Trang 15CLR P1.2 CALL Delay1
SETB P1.2 CLR P1.3 CALL Delay1
SETB P1.3 CLR P1.4 CALL Delay1
SETB P1.4 CLR P1.5 CALL Delay1
SETB P1.5 CLR P1.6 CALL Delay1
SETB P1.6 CLR P1.7 CALL Delay1
Trang 16JMP LOOP Delay1:
MOV R0, #10 LOOP6:
MOV R2, #200 LOOP5:
MOV R1, #250 LOOP4:
DJNZ R1, LOOP4 DJNZ R2, LOOP5
DJNZ R0, LOOP6 RET
END
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?
ĐA: MSB (most significant bit)