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

Báo cáo thí nghiệm vi xử lý

30 17 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 đề Báo Cáo Thí Nghiệm Vi Xử Lý
Tác giả Từ Vương Diễm Mai, Nguyễn Minh Long, Phạm Minh Khôi
Người hướng dẫn Nguyễn Khắc Phương Tuấn
Trường học Trường Đại Học Bách Khoa Tp Hcm
Chuyên ngành Khoa Điện – Điện Tử
Thể loại báo cáo
Năm xuất bản 2019
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 30
Dung lượng 178,51 KB

Cấu trúc

  • CHƯƠNG 1. LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN (4)
    • 1.1 THÍ NGHIỆM 1 (4)
    • 1.2 THÍ NGHIỆM 2 (4)
    • 1.3 THÍ NGHIỆM 3 (5)
    • 1.4 THÍ NGHIỆM 4 (5)
  • CHƯƠNG 2. HIỂN THỊ LED 7 ĐOẠN (6)
    • 2.1 THÍ NGHIỆM 1 (6)
    • 2.2 THÍ NGHIỆM 2 (7)
    • 2.3 THÍ NGHIỆM 3 (8)
    • 2.4 THÍ NGHIỆM 4 (9)
  • CHƯƠNG 3. GIAO TIẾP LCD VÀ ADC (11)
    • 3.1 THÍ NGHIỆM 1 (11)
    • 3.2 THÍ NGHIỆM 2 (12)
    • 3.3 THÍ NGHIỆM 3, 4 (14)
  • CHƯƠNG 4. LẬP TRÌNH GIAO TIẾP TIMER VÀ SERIAL PORT (18)
    • 4.1 THÍ NGHIỆM 1 (18)
    • 4.2 THÍ NGHIỆM 2 (18)
    • 4.3 THÍ NGHIỆM 3 (19)
    • 4.4 THÍ NGHIỆM 4 (20)
  • CHƯƠNG 5. LẬP TRÌNH NGẮT (24)
    • 5.1 THÍ NGHIỆM 1 (0)
    • 5.2 THÍ NGHIỆM 2 (0)
    • 5.3 THÍ NGHIỆM 3 (0)
    • 5.4 THÍ NGHIỆM 4 (0)

Nội dung

LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN 1.1 THÍ NGHIỆM .3 1.2 THÍ NGHIỆM .3 1.3 THÍ NGHIỆM .4 1.4 THÍ NGHIỆM .5 CHƯƠNG HIỂN THỊ LED ĐOẠN 2.1 THÍ NGHIỆM .6 2.2 THÍ NGHIỆM .7 2.3 THÍ NGHIỆM .8 2.4 THÍ NGHIỆM .8 CHƯƠNG GIAO TIẾP LCD VÀ ADC 10 3.1 THÍ NGHIỆM .10 3.2 THÍ NGHIỆM .11 3.3 THÍ NGHIỆM 3, 13 CHƯƠNG LẬP TRÌNH GIAO TIẾP TIMER VÀ SERIAL PORT 17 4.1 THÍ NGHIỆM .17 4.2 THÍ NGHIỆM .17 4.3 THÍ NGHIỆM .18 4.4 THÍ NGHIỆM .19 CHƯƠNG LẬP TRÌNH NGẮT .23 5.1 THÍ NGHIỆM .23 5.2 THÍ NGHIỆM .24 5.3 THÍ NGHIỆM .25 5.4 THÍ NGHIỆM .27 CHƯƠNG LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN 1.1 THÍ NGHIỆM 1.1.1 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

LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN

THÍ NGHIỆM 1

Viết chương trình để liên tục đọc trạng thái của nút nhấn kết nối với P1.0 và hiển thị kết quả trên đèn LED nối tại chân P3.0 (bit thứ 0 của đèn LED thanh BL202).

ORG 2000H %% bắt đầu chương trình tại địa chỉa 2000H

LOOP: %% khởi tạo vòng lặp

SETB P1.0 %% set chân P1.0, khi nhấn nút nó trả về 0

MOV C, P1.0 %% đọc giá trị chân P1.0 vào bit carry

MOV P3.0,C %% đọc giá trị cờ carry xuất ra P3.0

SJMP LOOP %% nhảy về vòng lặp

THÍ NGHIỆM 2

Viết chương trình tạo xung vuông 1 Hz, chu kỳ nhiệm vụ 50% trên P1.0.

ACALL DELAY05MS %% gọi chương trình con delay 0.5ms

SJMP CONT %% nhảy về cont

DELAY05MS: %% chương trình con delay 0.5ms

MOV R7,#230 %% move R7 giá giá trị 230

DJNZ R7,LOOP %% giảm R7 xuống 1 nếu chưa về 0 quay trở lại vòng lặp RET

Vòng trễ được tạo ra với thời gian trễ 0.5ms Mỗi vòng lặp DJNZ có thời gian thực thi là 2 chu kỳ máy, và mỗi chu kỳ máy tương đương với 12 chu kỳ thạch anh Đặt n là số lần lặp, ta có công thức: 0.5(10^-3) = 2n.Tmáy = 2n.12Txtal Từ đó, n được tính toán là n ≈ 0.4, do đó ta chọn n ≈ 0.

THÍ NGHIỆM 3

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.

LOOP: %% bắt đầu vòng lặp

ACALL DELAY1SINS %% gọi chương trình con delay1sins

SJMP LOOP %% nhảy về vòng lặp

DJNZ R5,LOOP3 %% nếu R5 chưa bằng 0 quay về vòng lặp 3

DJNZ R6,LOOP2 %% nếu R6 chưa bằng 0 quay về vòng lặp 2

DJNZ R7,LOOP1 %% nếu R7 chưa bằng 0 quay về vòng lặp 1

THÍ NGHIỆM 4

Chương trình tạo hiệu ứng quay LED sẽ làm cho các LED đơn trên BARLED1 sáng lần lượt từ trái sang phải trong khoảng thời gian 1 giây và lặp lại liên tục Để thực hiện điều này, chúng ta sẽ sử dụng chương trình con đã được viết trước đó với thời gian 1 giây.

ACALL DELAY1SINS %%gọi lại chương trình con delay1sins

CPL P1.6 ACALL DELAY1SINS CPL P1.6

CPL P1.7 ACALL DELAY1SINS CPL P1.7

SJMP LOOP %% nhảy về lại vòng lặp

DELAY1SINS: %% chương trình con delay1sins

DJNZ R5,LOOP3 DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET

HIỂN THỊ LED 7 ĐOẠN

THÍ NGHIỆM 1

Viết chương trình con DisplayLed0 hiển thị lên LED 7 đoạn số 0 giá trị chứa trong thanh ghi R0.

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 9 và gọi chương trình con DisplayLed0.

Viết chương trình con DisplayLed0 hiển thị lên LED 7 đoạn số 0 giá trị chứa trong thanh ghi R0.

DISPLAYLED0: %%chương trình con displayled0

MOV A,R0 %% đưa giá trị R0 vào thanh ghi A

ADD A,#0E0H %% cộng E0H với R0 ( E: cho dẫn led0, R0: số BCD)

MOV DPTR,#0000H %% trỏ DPTR đến địa chỉ IC 573 của led 7 đoạn

MOVX @DPTR,A %% ghi giá trị ra IC 573

RET %% kết thúc chương trình con

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

9 và gọi chương trình con DisplayLed0.

ACALL DISPLAYLED0 %% gọi chương trình con displayled0

THÍ NGHIỆM 2

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.

MOV R0,#0 %% hiện số 0 đầu tiên

LOOP: %% khởi tạo vòng lặp

ACALL DISPLAYLED0 %% gọi chương trình con displayled0 INC R0 %% tăng R0 lên 1 đơn vị

ACALL DELAY1S %% gọi chương trình con delay1s

CJNE R0,#10,LOOP %%R0 khác 10 thì quay lại loop để hiện thị số tiếp theo

SJMP LOOP %% quay lại vòng lặp để tiếp tục

DISPLAYLED0: %% chương trình con displayled0

DELAY1S: %% chương trình con delay1s

MOV TMOD, #01H %%cài đặt timer0 mode 1 (16 bit) MOV TH0,#HIGH(-50000) %%đặt timer0 đến tới 50000MC

SETB TR0 %%cho chạy timer0 JNB TF0,$ %%chờ cho timer0 tràn

CLR TF0 %%xóa cờ báo tràn CLR TR0 %%dừng timer0 DJNZ R7,TIMELOOP %%lặp lại 20 lần 0.05s cho đủ 1s

RET %%kết thúc chương trình con

THÍ NGHIỆM 3

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.

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.

MOV R1,#03 ;R1 chứa vị trí led

MOV R0,#07 ;R0 chứa giá trị led

TABLE: DB 0E0H,0D0H,0B0H,70H ;bảng giá trị chọn led

THÍ NGHIỆM 4

Chương trình sẽ hiển thị số 1 trên LED 7 đoạn 0, sau đó chuyển sang số 2 trên LED 7 đoạn 1 sau 1 giây, tiếp theo là số 3 trên LED 7 đoạn 2 sau 1 giây, và cuối cùng là số 4 trên LED 7 đoạn 3 sau 1 giây Quá trình này sẽ lặp lại liên tục Việc hiển thị được thực hiện thông qua chương trình con DisplayLED đã được viết trước đó.

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.

MOV R0,#01H ACALL XUAT ACALL DL SJMP MAIN

;chương trình xuất giá trị chứa trong R0 và vị trí led chứa trong R1 XUAT:

MOV A,R1 MOV DPTR,#TABLE MOVC A,@A+DPTR ORL A,R0

MOV DPTR,#0MOVX @DPTR,ARET

; chương trình tạo trễ quét led

CLR TF1 CLR TR1 RET

- Khi giảm thời gian delay còn 100ms, các LED 7 đoạn chớp tắt nhanh hơn.

- Khi loại bỏ hàm delay, các LED 7 đoạn không quan sát được led sáng.

GIAO TIẾP LCD VÀ ADC

THÍ NGHIỆM 1

Download chương trình mẫu LCD.A51 trên trang web bộ môn điện tử. 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.

CLR EN LCALL DL5MS RET

SETB EN SETB RS MOVX @DPTR,A CLR EN

MOV TMOD,#10H MOV TL1,#LOW(-5000) MOV TH1,#HIGH(-5000) SETB TR1

CLR TF1CLR TR1RET

TABLE: DB "HUYNH THANH SANG",0

THÍ NGHIỆM 2

Viết thêm chương trình con CLRSCREEN để xóa màn hình LCD.

Viết thêm chương trình con GOTOXY để di chuyển con trỏ của LCD đến hàng x, cột y, với X chứa trong R0 và Y chứa trong R1.

Sửa chương trình ở thí nghiệm 1 để hiển thị thêm số nhóm ở hàng thứ 2.

MOV A, #01H ;đặt giá trị cho A ứng với lệnh xóa màn hình trong LCD LCALL NHAPLENH ;gửi lệnh tới LCD

Viết thêm chương trình con GOTOXY để di chuyển con trỏ của LCD đến hàng x, cột y, với X chứa trong R0 và Y chứa trong R1

PUSH ACC ;cất dữ liệu đang chứa trong A

MOV A,R0 ;chọn hàng hiển thị trên LCD

ORL A,R1 ;chọn cột hiển thị trên LCD

LCALL NHAPLENH POP ACC ;lấy lại dữ liệu đang chứa trong A

Sửa chương trình ở thí nghiệm 1 để hiển thị thêm số nhóm ở hàng thứ 2

; xuất chuỗi tổ hàng R0 cột R1

MOV DPTR,#TABLE1 ;xuất chuỗi tổ

POP ACC INC A SJMP LAP1 KETTHUC:

SETB EN CLR RS MOVX @DPTR,A CLR EN

SETB EN SETB RS MOVX @DPTR,A CLR EN

MOV TMOD,#10HMOV TL1,#LOW(-5000)MOV TH1,#HIGH(-5000)SETB TR1

PUSH ACC MOV A,R0 MOV DPTR,#TB MOVC A,@A+DPTR ORL A,R1

TABLE: DB " VI XU LY ",0TABLE1: DB "NHOM: 09",0END

THÍ NGHIỆM 3, 4

Viết chương trình con READADC thực hiện đọc giá trị của kênh 0 và trả về giá trị trong R0.

Viết chương trình hiển thị giá trị của kênh 0 của ADC lên LCD dùng chương trình con READADC đã viết.

Viết chương trình con CALADC tính toán giá trị điện áp thực tế đặt vào kênh 0 ADC từ giá trị đo được của ADC.

Chương trình có giá trị vào chứa trong R0 (là kết quả của chương trình con READADC)

Giá trị trả về chứa trong R0 và R1, R0 chứa giá trị nguyên và R1 chứa giá trị thập phân.

Hiển thị giá trị đo được lên LCD theo cấu trúc: "Voltage: x.xx V" với x.xx là giá trị điện áp đo được, với hai số sau dấu chấm.

MOV DPTR,#4000H ;tao xung start

ACALL DELAY120US ;thoi gian de ADC tinh gia tri

MOVX A,@DPTR ; ket qua sau khi ADC tinh duoc chuyen vao A

CLR RS MOVX @DPTR,A CLR EN

MOV TMOD,#01H MOV TL0,#LOW(-5000) MOV TH0,#HIGH(-5000) SETB TR0

CLR TR0 CLR TF0 RET

MOV A,#01H LCALL NHAPLENH MOV A,#0EH

ADD A,#48 ;ma ASCII gia tri dien ap phan nguyen

MUL AB ; phan du nhan voi 10

MOV R4,B ; trong so cao chuyen vao R4, neu gia tri vuot qua 255 thi B co gtri 1

51 nen so du lon nhat la 500 CJNE R4,#1,TIEP1 DIV AB ; neu so du lon hon 255

ADD A,#5 ; cong them vao A gia tri 255:51=5

DIV AB ; phan du nho hon 255

MOV A,#8AH ACALL NHAPLENH MOV A,R4

ADD A,#48 ACALL XUAT1KYTU RET

MOV A,R3 MOV DPTR,#TABLE MOVC A,@A+DPTR

JZ EXITACALL XUAT1KYTU

LẬP TRÌNH GIAO TIẾP TIMER VÀ SERIAL PORT

THÍ NGHIỆM 1

Viết chương trình tạo sóng vuông 1 Hz trên chân P1.0 sử dụng timer 0 ở chế độ 1.

LOOP: %% bắt đầu vòng lặp

ACALL DELAY05MS %%gọi lại ct con

SJMP LOOP %% nhảy lại vòng lặp

DELAY05MS: %% ct con delay 0.5ms

MOV TMOD,#01H %% cài đặt timer ở chế độ 1

MOV TH0,#HIGH(-461) %%nạp giá trị 461 MC cho timer (MC=1.0851us)

SETB TR0 %% cho timer0 chạy

JNB TF0,$ %% chờ đến khi timer0 tràn

CLR TF0 %% xóa cờ ngắt

THÍ NGHIỆM 2

Viết chương trình tạo sóng vuông 1 Hz trên chân P1.0 sử dụng timer 0 ở chế độ 2.

MOV TMOD,#02H %%khai báo timer0 mode 2

MOV TH0,#-46 %% nạp giá trị 46MC cho timer0

LOOP: %% khởi tạo vòng lặp

JNB TF0,$ %% chờ cho timer 0 tràn

CLR TF0 %% xóa cờ ngắt timer

SJMP LOOP %% nhảy lại vòng lặp

THÍ NGHIỆM 3

Viết chương trình phát chuỗi ký tự “Hello, world” lên máy tính thông qua HyperTerminal với tốc độ baud 19200 bps mỗi khi SW 310 (gắn vào P1.0) được nhấn.

MOV TMOD,#20H ;cài đặt port nối tiếp vào tốc độ baud

JB P1.0,$ ;chờ phím được nhấn

LCALL DL100MS ; chống rung phím

JNB P1.0,$ ;chờ phím được nhả

JZ LAP LCALL XUAT SJMP TTUC

; xuất ra port nt XUAT:

CLR TI MOV SBUF,A RET

MOV TMOD,#01HMOV TL0,#LOW(-50000)MOV TH0,#HIGH(-50000)SETB TR0

; -TABLE: DB "HELLO,WORLD",0END

THÍ NGHIỆM 4

Chương trình nhận ký tự từ máy tính gửi đến EME-MC8 qua HyperTerminal bằng cách nhập ký tự trên bàn phím, sau đó hiển thị các ký tự này lên màn hình LCD.

Nếu ký tự là chữ thì hiển thị lên LCD; Enter thì xuống hàng; ESC thì xóa màn hình LCD; Backspace thì xóa ký tự bên trái dấu nháy.

CLR F0 ;bien trang thai hang(enter)

CJNE A,#08H,OUT1 LCALL XOAKYTU OUT1:

DEC R1 ; chuyển con trỏ vị trí về vị trí trước

JB F0,H1 ; kiểm tra hàng hiện tại của con trỏ

MOV A,#0FEH ;thay ký tự hiện tại bằng ký tự trắng

DEC R1 ; vì con trỏ tự động tăng lên 1 nên phải giảm vị trí đi 1

;kiểm tra mã ASCII của phím enter

CPL F0 ; đảo cờ vị trí hàng con trỏ

JB F0,HANG1 ;kiem tra vi tri con tro

MOV R0,#01 ;cho con tro len hang tren MOV R1,#00 LCALL GOTOXY OUT4:

CJNE A,#27H,OUT3 ; ktra mã ASCII của phím ESC

MOV A,#01H LCALL NHAPLENH MOV R1,#0 ; khoi dong lai bộ đếm vị trí cột của con trỏ tên LCD RET

CJNE A,#30H,$+3 ; chỉ nhận ký tự mã ASCII trong khoảng hiển thị được

JNB RI,$ ; nhận ký tự từ port nối tiếp

SETB EN SETB RS MOVX @DPTR,A CLR EN

MOV TMOD,#10H MOV TL1,#LOW(-5000) MOV TH1,#HIGH(-5000) SETB TR1

CLR TF1 CLR TR1 RET

MOV A,#01H LCALL NHAPLENH MOV A,#0EH

LẬP TRÌNH NGẮT

Ngày đăng: 02/06/2022, 11:15

TỪ KHÓA LIÊN QUAN

w