1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO THÍ NGHIỆM VI XỬ LÝ

76 6 0

Đ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

Tiêu đề Lập Trình Giao Tiếp Nút Nhấn Đơn Và LED
Tác giả Lại Nguyễn Duy, Nguyễn Xuân Hoàng Tuấn, Hoàng Tuấn Kiệt
Trường học Trường Đại học Bách Khoa Đại học Quốc gia TP Hồ Chí Minh
Chuyên ngành Vi xử lý
Thể loại Báo cáo thí nghiệm
Năm xuất bản 2022
Thành phố TP.Hồ Chí Minh
Định dạng
Số trang 76
Dung lượng 4,43 MB

Nội dung

TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH  BÁO CÁO THÍ NGHIỆM VI XỬ LÝ LỚP: DT03 – HK213 Thực bởi: STT HỌ VÀ TÊN MSSV Lại Nguyễn Duy 2010999 Nguyễn Xuân Hoàng Tuấn 2012351 Hoàng Tuấn Kiệt 2010363 TP.HỒ CHÍ MINH, NĂM 2022 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED MỤC TIÊU ➢ Nắm cách sử dụng kit thí nghiệm, phần mềm lập trình ➢ Nắm cách lập trình giao tiếp IO port ➢ Nắm cách lập trình tạo thời gian trễ dùng lệnh CHUẨN BỊ ➢ Đọc làm thí nghiệm nhà ➢ Đọc chuẩn bị thí nghiệm nhà ➢ Chuẩn bị cho thí nghiệm 1: Viết chương trình mơ Proteus tất thí nghiệm dựa chuẩn bị (Prelab_1) thí nghiệm ➢ Nộp tất kết (bài thí nghiệm chuẩn bị thí nghiệm 1) cho GVHD trước vào lớp Sinh viên không thực nộp thiếu khơng có lí đáng khơng tham gia thí nghiệm bị đánh vắng buổi Mọi hình thức gian lận, chép bị xử lý đáng Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED THÍ NGHIỆM Mục tiêu: Nắm cách thức điều khiển trực tiếp ngoại vi thông qua port I/O 8051 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) ORG 2000H LOOP: MOV C,P1.0 MOV P3.0,C SJMP LOOP END Kiểm tra: ➢ Biên dịch thực thi chương trình để kiểm tra kết thực Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Câu hỏi: ➢ Thử giải thích có đến led bị tác động nhấn thả nút? Khi nhấn nút, led nối với chân P1.0 led nối với chân P3.0 sáng; thả nút tắt Vì tác động lệnh: MOV C,P1.0; MOV P3.0,C ➢ Tổng kết xem bit port dùng thí nghiệm giải thích sao? Ta sử dụng bit từ P1.0 đến P1.7 tương tự với Port Nhưng không nên sử dụng Port chân Port sử dụng với chức đặc biệt sau: Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED THÍ NGHIỆM Mục tiêu: Nắm cách viết chương trình để tạo trễ Yêu cầu: ➢ Viết chương trình Delay1s ➢ Dùng chương trình viết để chớp/tắt LED đơn gắn vào P1.0 sau khoảng thời gian 1s ➢ Thay đổi chương trình để tần số chớp tắt 1KHz • Chương trình con: Delay1s: MOV R5,#8 LP1: MOV R6,#250 LP2: MOV R7,#250 DJNZ R7,$ DJNZ R6,LP2 DJNZ R5,LP1 RET • Chương trình chớp/tắt LED đơn gắn vào P1.0 sau khoảng thời gian 1s: ORG 2000H LOOP: CPL P1.0 ACALL Delay1s SJMP LOOP Delay1s: MOV R5,#8 LP1: MOV R6,#250 LP2: MOV R7,#250 DJNZ R7,$ DJNZ R6,LP2 Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED DJNZ R5,LP1 RET END • Thay đổi chương trình để tần số chớp tắt 1KHz ORG 2000H LOOP: CPL P1.0 ACALL Delay1ms SJMP LOOP DELAY1ms: LP: MOV R5, #2 MOV R6, #250 DJNZ R6, $ DJNZ R5, LP RET END Kiểm tra: ➢ Biên dịch, thực thi kiểm tra chương trình cách quan sát LED đơn thời gian chớp tắt 1s.mp4 tần số chớp tắt 1KHz.mp4 Câu hỏi: ➢ Thời gian 1s tạo nào? Tính tốn xác dựa chương trình viết 1s = 2*MC*(Giá trị nạp), MC 1𝜇(𝑠) => Giá trị cần nạp 500000 Giới hạn ghi bit, lưu giá trị tối đa 255 nên ta phải chia nhỏ: 500000=250*250*8 => Chọn R5=8; R6=250; R7=250 ➢ Sai số nhỏ đạt so với yêu cầu bao nhiêu? Cơng thức tính xác Time delay với vòng lặp sau: Time delay = 2*k*m*n +(3*m+3)*k+3 (MC) với k, m, n 8, 250, 250 → Time delay = 1.006027(s) Sai số xấp xỉ 0.006207(s) Department of Electronics Microprocessor Laboratory Page | ➢ Khi tần số chớp tắt 1Khz, cho biết tượng LED? LED chớp tắt gần liên tục (chu kì 1Khz hay 500𝜇(𝑠)) ➢ Sinh viên thay đổi chương trình để tần số chớp tắt 1KHz? Với tần số chớp tắt 1Khz => Chu kì 1000 𝜇(𝑠)(500 𝜇(𝑠) tín hiệu mức cao 500 𝜇(𝑠) ) tín hiệu mức thấp Do đó, thời gian trễ Time delay = 500 𝜇(𝑠) với công thức ta tính giá trị cần nạp 250 Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED THÍ NGHIỆM Mục tiêu: Nắm cách viết chương trình để tạo trễ Yêu cầu: Viết chương trình tạo xung vng 0.5Hz (chu kỳ nhiệm vụ 50%) 1Hz (chu kỳ nhiệm vụ 30%) chân P1.0 P1.1 ORG LOOP: 2000H CPL P1.0 CPL P1.1 ACALL DELAY300ms CPL P1.1 ACALL DELAY700ms SJMP LOOP DELAY300ms: MOV R5, #3 LP1: MOV R6, #200 LP2: MOV R7, #250 DJNZ R7, $ DJNZ R6, LP2 DJNZ R5, LP1 RET DELAY700ms: MOV R5, #7 LP3: MOV R6, #200 LP4: MOV R7, #250 DJNZ R7, $ DJNZ R6, LP4 DJNZ R5, LP3 RET END Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED Kiểm tra: ➢ Biên dịch, thực thi kiểm tra chương trình cách sử dụng oscilloscope để kiểm tra chương trình tạo xung vuông 0.5Hz 1Hz.mp4 Câu hỏi: ➢ Vẽ giản đồ xung? Các chương trình viết với thời gian trễ bao nhiêu? Các chương trình viết với thời gian trễ 0.3s 0.7s ➢ Tại thời gian tạo trễ, chân P1.0 P1.1 xuất tín hiệu nào? Tại 0.3s đầu, ta đảo bit chân P1.1, 0.7s sau ta tiếp tục đảo bị chân P1.1 ta tạo xung 1Hz với chu kì nhiệm vụ 30% Sau đồng thời đảo bit chân P1.0, ta có xung 0.5Hz với chu kì nhiệm vụ 50% chân P1.0 ➢ Để tạo xung thỏa u cầu tốn, vịng trễ viết nào? Vòng trễ viết sau: Department of Electronics Microprocessor Laboratory Page | BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT THÍ NGHIỆM Mục tiêu: Nắm cách sử dụng ngắt serial port Yêu cầu: Viết chương trình làm song song công việc sau: - Nhận byte từ máy tính xuất ngược lại (echo) lên hình Hercules - Bật LED gắn vào P1.1 SW 317 (gắn vào P1.0) nhấn, tắt LED phím nhả Hướng dẫn: ➢ Sử dụng ngắt serial port, ngắt lả ngắt thu (cờ RI 1) xóa RI, đọc SBUF ghi trở lại vào SBUF Nếu TI xóa TI ➢ Tác vụ đọc Switch hiển thị LED viết chương trình ORG 0000H LJMP MAIN ORG 0023H LJMP ISR_SERIAL MAIN: MOV TMOD,#20H MOV TH1,#-3 SETB TR1 MOV SCON,#01010010B MOV PCON,#80H MOV IE,#10010000B CHECK: JB P1.0,TAT CLR P1.1 SJMP CHECK TAT: SETB P1.1 SJMP CHECK Department of Electronics Microprocessor Laboratory Page | ISR_SERIAL: JNB RI,NEXT CLR RI MOV A,SBUF MOV SBUF,A SJMP OUT NEXT: CLR TI OUT: RETI END Kiểm tra: ➢ Biên dịch kiểm tra hoạt động chương trình lab3 tn4.mkv Department of Electronics Microprocessor Laboratory Page | 10 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT THÍ NGHIỆM Mục tiêu: Nắm cách sử dụng ngắt timer Yêu cầu: Viết chương trình hiển thị lên LED đoạn số có chữ số, ký số chứa ô nhớ 20H, 21H, 22H 23H Ô nhớ 20H chứa số hàng nghìn Hướng dẫn: ➢ Ở Lab ta viết chương trình DisplayLED hiển thị giá trị chứa R0, với số thứ tự LED chứa R1 Đồng thời, ta nắm cách quét LED cách cho LED sáng sau khoảng thời gian trễ ➢ Ở thí nghiệm này, LED đoạn quét sử dụng ngắt timer Để đạt tần số quét 25 Hz, LED sáng thời gian 10 ms ➢ Các bước tiến hành: - Cấu hình timer chế độ 1, thời gian tràn 10 ms - Cho phép ngắt timer 0, cho timer chạy - Sử dụng ghi R1 để xác định LED cần bật Ban đầu R1 0, R1 tăng lên sau lần bật LED để chuyển sang LED Khi R1 3, R3 quay lại - Chương trình DisplayLED chứa giá trị hiển thị R0 Giá trị byte ô nhớ 20H, 21H, 22H 23H, tương ứng giá trị R1 (0-3) - Khi timer tràn, chương trình phục vụ ngắt ta cấu hình lại timer, hiển thị giá trị led đoạn tương ứng, cập nhật giá trị R1 để đến LED (Lưu đồ giải thuật thể trang kế) ORG 0000H LJMP MAIN ORG 000BH LJMP ISR_T0 ORG 0030H Department of Electronics Microprocessor Laboratory Page | 10 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT MAIN: MOV 20H,#1 MOV 21H,#2 MOV 22H,#3 MOV 23H,#4 MOV TMOD,#01H SETB TF0 MOV R7,#0 MOV IE,#82H SJMP $ ISR_T0: CJNE R7,#0,NEXT1 MOV R1,23H SJMP TT NEXT1: CJNE R7,#1,NEXT2 MOV R1,22H SJMP TT NEXT2: CJNE R7,#2,NEXT3 MOV R1,21H SJMP TT NEXT3: MOV R1,20H TT: LCALL DISPLAYLED INC R7 CJNE R7,#4,RUN MOV R7,#0 RUN: CLR TR0 Department of Electronics Microprocessor Laboratory Page | 11 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT MOV TH0,#HIGH(-9216) MOV TL0,#LOW(-9216) SETB TR0 RETI DISPLAYLED: MOV A,R7 MOV DPTR,#TABLE MOVC A,@A+DPTR ADD A,R1 MOV DPTR,#0000H MOVX @DPTR,A RET TABLE: DB 0E0H,0D0H,0B0H,070H END Department of Electronics Microprocessor Laboratory Page | 12 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT Kiểm tra: ➢ Biên dịch kiểm tra hoạt động chương trình Department of Electronics Microprocessor Laboratory Page | 11 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT START Dừng timer, xóa cờ ngắt, đặt lại giá trị timer, cho phép timer chạy Dừng timer, xóa cờ ngắt, đặt lại giá trị timer, cho phép timer chạy Lấy giá trị hiển thị LED vào R0 Hiển thị LED tương ứng END Department of Electronics Microprocessor Laboratory Page | 12 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT THÍ NGHIỆM Mục tiêu: Vận dụng ngắt timer để lập trình Yêu cầu: Viết chương trình đếm số lần nhấn phím SW317, hiển thị lên LED đoạn Hướng dẫn: ➢ Kiểm tra nút nhấn, nút nhấn nhấn, giá trị cập nhật vào ô nhớ 20H, 21H, 22H 23H Ô nhớ 20H chứa số hàng nghìn Việc đếm số lần nhấn phím thực chương trình ➢ LED đoạn quét thí nghiệm dùng ngắt timer Kiểm tra: ➢ Biên dịch kiểm tra hoạt động chương trình ORG 0000H LJMP MAIN ORG 000BH LJMP ISR_T0 ORG 0030H MAIN: MOV TMOD,#01H SETB TF0 MOV R7,#0 MOV IE,#82H MOV 23H,#0 MOV 22H,#0 MOV 21H,#0 MOV 20H,#0 LAP: JB P1.0,TIEP INC 23H MOV R2,23H Department of Electronics Microprocessor Laboratory Page | 13 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT CJNE R2,#10,TIEP MOV 23H,#0 INC 22H MOV R2,22H CJNE R2,#10,TIEP MOV 23H,#0 MOV 22H,#0 INC 21H MOV R2,21H CJNE R2,#10,TIEP MOV 23H,#0 MOV 22H,#0 MOV 21H,#0 INC 20H TIEP: MOV R5,#4 LP2:MOV R4,#200 LP1:MOV R6,#250 DJNZ R6,$ DJNZ R4,LP1 DJNZ R5,LP2 SJMP LAP ISR_T0: CJNE R7,#0,NEXT1 MOV R1,23H SJMP TT NEXT1: CJNE R7,#1,NEXT2 MOV R1,22H SJMP TT NEXT2: Department of Electronics Microprocessor Laboratory Page | 14 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT CJNE R7,#2,NEXT3 MOV R1,21H SJMP TT NEXT3: MOV R1,20H TT: LCALL DISPLAYLED INC R7 CJNE R7,#4,RUN MOV R7,#0 RUN: CLR TR0 MOV TH0,#HIGH(-9216) MOV TL0,#LOW(-9216) SETB TR0 RETI DISPLAYLED: MOV A,R7 MOV DPTR,#TABLE MOVC A,@A+DPTR ADD A,R1 MOV DPTR,#0000H MOVX @DPTR,A RET TABLE: DB 0E0H,0D0H,0B0H,070H END Department of Electronics Microprocessor Laboratory Page | 15 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT lab3 tn6.mkv Department of Electronics Microprocessor Laboratory Page | 15 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT THÍ NGHIỆM Mục tiêu: Vận dụng ngắt timer để lập trình Yêu cầu: Viết chương trình thực đồng hồ bấm giây, hiển thị lên LED đoạn Hai LED thể số giây, LED thể phần trăm giây - Khi SW310 nhấn, đồng hồ reset - Khi SW 311 nhấn, đồng hồ bắt đầu chạy - Khi SW 312 nhấn, đồng hồ dừng lại Hướng dẫn: ➢ LED đoạn quét thí nghiệm dùng ngắt timer ➢ Khi đồng hồ chạy, giá trị thời gian cập nhật dùng ngắt timer Giá trị cập nhật vào ô nhớ 20H, 21H, 22H 23H ➢ Việc kiểm tra nhấn phím SW310, SW311, SW312 xử lý chương trình Kiểm tra: ➢ Biên dịch kiểm tra hoạt động chương trình ORG 0000H LJMP MAIN ORG 000BH LJMP ISR_T0 ORG 0030H MAIN: MOV TMOD,#01H SETB TF0 MOV R7,#0 MOV IE,#82H RE: MOV 23H,#0 Department of Electronics Microprocessor Laboratory Page | 19 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT MOV 22H,#0 MOV 21H,#0 MOV 20H,#0 START: JNB P1.2,RE JB P1.0,START LAP: JNB P1.2,RE JB P1.1,LA SJMP START LA: INC 23H MOV R2,23H CJNE R2,#10,TIEP MOV 23H,#0 INC 22H MOV R2,22H CJNE R2,#10,TIEP MOV 23H,#0 MOV 22H,#0 INC 21H MOV R2,21H CJNE R2,#10,TIEP MOV 23H,#0 MOV 22H,#0 MOV 21H,#0 INC 20H TIEP: MOV R5,#20 L:MOV R4,#250 DJNZ R4,$ Department of Electronics Microprocessor Laboratory Page | 20 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT DJNZ R5,L SJMP LAP ISR_T0: CJNE R7,#0,NEXT1 MOV R1,23H SJMP TT NEXT1: CJNE R7,#1,NEXT2 MOV R1,22H SJMP TT NEXT2: CJNE R7,#2,NEXT3 MOV R1,21H SJMP TT NEXT3: MOV R1,20H TT: LCALL DISPLAYLED INC R7 CJNE R7,#4,RUN MOV R7,#0 RUN: CLR TR0 MOV TH0,#HIGH(-9216) MOV TL0,#LOW(-9216) SETB TR0 RETI DISPLAYLED: MOV A,R7 MOV DPTR,#TABLE MOVC A,@A+DPTR Department of Electronics Microprocessor Laboratory Page | 21 BÀI THÍ NGHIỆM LẬP TRÌNH GIAO TIẾP SERIAL PORT VÀ INTERRUPT ADD A,R1 MOV DPTR,#0000H MOVX @DPTR,A RET TABLE: DB 0E0H,0D0H,0B0H,070H END lab3 tn7.mkv Department of Electronics Microprocessor Laboratory Page | 22

Ngày đăng: 29/11/2022, 23:17

HÌNH ẢNH LIÊN QUAN

➢ Viết lại chương trình trên bằng phương pháp sử dụng bảng tra (Lookup table). - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
i ết lại chương trình trên bằng phương pháp sử dụng bảng tra (Lookup table) (Trang 21)
BÀI THÍ NGHIỆM 1 - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
1 (Trang 21)
➢ Viết thêm chương trình con CLRSCREEN để xóa màn hình LCD. - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
i ết thêm chương trình con CLRSCREEN để xóa màn hình LCD (Trang 31)
➢ Cho biết mã lệnh dùng để xóa màn hình, dịch con trỏ đến vị trí thứ 1 của hàng 1 và vị trí thứ 1 của hàng 2 của LCD?  - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
ho biết mã lệnh dùng để xóa màn hình, dịch con trỏ đến vị trí thứ 1 của hàng 1 và vị trí thứ 1 của hàng 2 của LCD? (Trang 35)
- Nhận 1 byte từ máy tính và xuất ngược lại (echo) lên màn hình Hercules. - BÁO CÁO THÍ NGHIỆM VI XỬ LÝ
h ận 1 byte từ máy tính và xuất ngược lại (echo) lên màn hình Hercules (Trang 62)

TỪ KHÓA LIÊN QUAN

w