1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

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

19 203 2

Đ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 19
Dung lượng 53,4 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ÀI TN 3 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... MOV TH0,#HIGH-50000SETB TR0 JNB TF0,$

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ

- -Môn thí nghiệm VI XỬ LÝ BÁO CÁO BÀI TN3

TP HCM, ngày 08 tháng 04 năm 2020

Giảng viên : Võ Thị Thu Hồng

Sinh viên thực hiện:

Trang 2

BÀI TN 3 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

ORG 2000H

RS BIT P3.5

EN BIT P3.3

MAIN:

LCALL INIT

MOV A,#0

LAP1: PUSH ACC

MOV DPTR,#TABLE

MOVC A,@A + DPTR

JZ TIEP

LCALL OUT

POP ACC

INC A

SJMP LAP1

TIEP: MOV A,#0C0H

LCALL NHAPLENH

MOV A,#0

LAP2: PUSH ACC

MOV DPTR,#TABLE1

MOV A,@A+DPTR

JZ EXIT

LCALL OUT

POP ACC

INC A

SJMP LAP2

EXIT: SJMP $

; -NHAPLENH:

MOV DPTR,#8000H

CLR EN

SETB EN

CLR RS

MOVX @DPTR,A

CLR EN

Trang 3

LCALL DELAY5MS

RET

; -OUT:

MOV DPTR,#8000H

CLR EN

SETB EN

SETB RS

MOVX @DPTR,A

CLR EN

LCALL DELAY5MS

RET

; -DELAYL5MS:

MOV TMOD,#10H

MOV TL1,#LOW(-5000)

MOV TH1,#HIGH(-5000)

SETB TR1

JNB TF1,$

CLR TF1

CLR TR1

RET

; -INIT:

MOV A,#01H

LCALL NHAPLENH

MOV A,#0EH

LCALL NHAPLENH

MOV A,#02H

LCALL NHAPLENH

MOV A,#06H

LCALL NHAPLENH

MOV A,#38H

LCALL NHAPLENH

RET

TABLE: DB "DO TUAN HAO",0 ; ky tu 0 de bao ket thuc chuoi ky tu TABLE1: DB "NGUYEN MY HANG",0

END

THÍ NGHIỆM 2: Viết thêm chương trình con CLRSCREEN để xóa màn hình LCD

CLEAR:

Trang 4

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

RET

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

GOTOXY:

CLR A

MOV DPTR,#TABLE

MOVC A,@A+DPTR

LCALL NHAPLENH

TABLE: DB 80H,0C0H

RET

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

ORG 2000H

RS BIT P3.5

EN BIT P3.3

MAIN:

LCALL INIT

MOV A,#0

LAP1: PUSH ACC

MOV DPTR,#TABLE

MOVC A,@A + DPTR

JZ TIEP

LCALL OUT

POP ACC

INC A

SJMP LAP1

TIEP: MOV A,#0C0H

LCALL NHAPLENH

MOV A,#0

LAP2: PUSH ACC

MOV DPTR,#TABLE1

MOV A,@A+DPTR

JZ EXIT

LCALL OUT

POP ACC

Trang 5

INC A

SJMP LAP2

EXIT: SJMP $

; -NHAPLENH:

MOV DPTR,#8000H CLR EN

SETB EN

CLR RS

MOVX @DPTR,A

CLR EN

LCALL DELAY5MS RET

; -OUT:

MOV DPTR,#8000H CLR EN

SETB EN

SETB RS

MOVX @DPTR,A

CLR EN

LCALL DELAY5MS RET

; -DELAYL5MS:

MOV TMOD,#10H

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

JNB TF1,$

CLR TF1

CLR TR1

RET

; -INIT:

MOV A,#01H

LCALL NHAPLENH MOV A,#0EH

LCALL NHAPLENH MOV A,#02H

LCALL NHAPLENH MOV A,#06H

Trang 6

LCALL NHAPLENH

MOV A,#38H

LCALL NHAPLENH

RET

; -GOTOXY:

PUSH ACC

MOV A,R0

MOV DPTR,#TB

MOVC A,@A+DPTR

ORL A,R1

LCALL NHAPLENH

POP ACC

TB: DB 80H,0C0H

RET

TABLE: DB "DO TUAN HAO",0 ; ky tu 0 de bao ket thuc chuoi ky tu

TABLE1: DB "NGUYEN MY HANG",0

END

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

RS BIT P3.5

EN BIT P3.4

ORG 2000H

MAIN:

LCALL KHOIDONGLCD

LCALL HIENTHI

LAP:

MOV DPTR,#4000H

MOVX @DPTR,A

ACALL DELAY120US

MOVX A,@DPTR

MOV R5,A

ACALL CALADC

SJMP LAP

; -DELAY120US:

MOV R1,#60

DJNZ R1,$

Trang 7

; -NHAPLENH:

MOV DPTR,#6000H

CLR EN

SETB EN

CLR RS

MOVX @DPTR,A

CLR EN

LCALL DL5MS

RET

; -DL5MS:

MOV TMOD,#01H

MOV TL0,#LOW(-5000)

MOV TH0,#HIGH(-5000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

RET

; -KHOIDONGLCD:

MOV A,#01H

LCALL NHAPLENH

MOV A,#0EH

LCALL NHAPLENH

MOV A,#02H

LCALL NHAPLENH

MOV A,#06H

LCALL NHAPLENH

MOV A,#38H

LCALL NHAPLENH

RET

; -XUAT1KYTU:

MOV DPTR,#6000H

CLR EN

SETB EN

SETB RS

MOVX @DPTR,A

Trang 8

CLR EN

LCALL DL5MS

RET

; -CALADC:

MOV A,#88H

LCALL NHAPLENH

MOV A,R5

MOV B,#51

DIV AB

ADD A,#48

ACALL XUAT1KYTU

MOV A,#10

MUL AB

MOV R4,B

MOV B,#51

CJNE R4,#1,TIEP1

DIV AB

ADD A,#5

MOV R4,A

SJMP TIEP2

TIEP1:

DIV AB

MOV R4,A

TIEP2:

MOV A,#8AH

ACALL NHAPLENH

MOV A,R4

ADD A,#48

ACALL XUAT1KYTU

RET

; -HIENTHI:

MOV A,#80H

ACALL NHAPLENH

MOV R3,#0

LOOP:

MOV A,R3

MOV DPTR,#TABLE

MOVC A,@A+DPTR

JZ EXIT

ACALL XUAT1KYTU

Trang 9

INC R3

SJMP LOOP

EXIT:

RET

TABLE: DB "VOLT: , V",0 END

Trang 10

BÀI TN 4 GIAO TIẾP TIMER VÀ SERIAL PORT

THÍ NGHIỆM 1

Code:

TF EQU -991

ORG 2000H

MOV TH1,#HIGH (TF)

MOV TL1,#LOW (TF)

SETB TR1

JNB TF1,$

CLR TR1

CLR TF1

CPL P1.0

SJMP LOOP

END

_Dạng sóng có thể bị sai số, để hạn chế sai số, ta nên tính toán giá trị nạp vào TH0 và TL0 bằng tần số xtal của mạch

THÍ NGHIỆM 2

ORG 2000H

MOV TMOD,#02H

MOV TL0,#-250

MOV TH0,#-250

SETB TR0

HAO: MOV R7,#16

LOOP: MOV R6,#250

LAP:

JNB TF0,$

CLR TF0

DJNZ R6,LAP

DJNZ R7,LOOP

Trang 11

CPL P1.0

SJMP HAO

END

- Ở chế độ 2, độ trễ gây ra do các câu lệnh đảo giá trị bit gây sai số cho dạng sóng ngõ ra Tuy nhiên sai số là không lớn

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 pbs mỗi khi SW 310 (gắn vào P1.0) được nhấn

ORG 2000H

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

MOV TH1,#-3

SETB TR1

MOV SCON,#42H

MOV PCON,#80H

LAP:

MOV R7,#0

MOV DPTR,#TABLE

TTUC:

JB P1.0,$

LCALL DL100MS

JNB P1.0,$

MOV A,R7

INC R7

MOVC A,@A+DPTR

JZ LAP

LCALL XUAT

SJMP TTUC

; -XUAT:

JNB TI,$

CLR TI

MOV SBUF,A

RET

; -DL100MS:

MOV R4,#2

LAP1:

MOV TMOD,#01H

MOV TL0,#LOW(-50000)

Trang 12

MOV TH0,#HIGH(-50000)

SETB TR0

JNB TF0,$

CLR TF0

CLR TR0

DJNZ R4,LAP1

RET

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

END

THÍ NGHIỆM 4:

_Viết chương trình nhận các ký tự từ máy tính gửi đến EME-MC8 thông qua HyperTerminal (bằng cách gõ các ký tự trên bàn phím khi đang ở trong chương trình HyperTerminal) và hiển thị

lên LCD như sau: 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.

ORG 2000H

RS BIT P3.5

EN BIT P3.4

MOV TMOD,#20H

MOV TH1,#-3

MOV SCON,#50H

MOV PCON,#80H

SETB TR1

CLR F0 ;bien trang thai hang(enter)

LCALL KHOIDONGLCD

MAIN:

LCALL INCHAR LCALL KTRACHAR LCALL KTRAENTER LCALL KTRAESC LCALL KTRABACK SJMP MAIN

; -KTRABACK:

CJNE A,#08H,OUT1

LCALL XOAKYTU

OUT1:

Trang 13

; -XOAKYTU:

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 R0,#00H

SJMP GOTO

H1: MOV R0,#01H

GOTO:

LCALL GOTOXY

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

LCALL XUAT1KYTU

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

RET

; -KTRAENTER:

CJNE A,#13H,OUT2 ;kiểm tra mã ASCII của phím enter

LCALL CHUYENHANG

OUT2:

RET

; -CHUYENHANG:

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

JB F0,HANG1 ;kiem tra vi tri con tro

LCALL KHOIDONGLCD

MOV R1,#0

SJMP OUT4

HANG1:

MOV R0,#01 ;cho con tro len hang tren

MOV R1,#00

LCALL GOTOXY

OUT4:

RET

Trang 14

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

LCALL CLRLCD

OUT3:

RET

; -CLRLCD:

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

; -KTRACHAR:

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

JC THOAT

CJNE A,#7FH,$+3

JNC THOAT

CLR C

LCALL XUAT1KYTU

THOAT:

RET

; -INCHAR:

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

MOV A,SBUF RET

; -NHAPLENH:

MOV DPTR,#6000H

CLR EN

SETB EN

CLR RS

MOVX @DPTR,A

CLR EN

LCALL DL5MS

RET

Trang 15

; -XUAT1KYTU:

MOV DPTR,#6000H

CLR EN

SETB EN

SETB RS

MOVX @DPTR,A

CLR EN

LCALL DL5MS

INC R1

RET

; -DL5MS:

MOV TMOD,#10H

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

JNB TF1,$

CLR TF1

CLR TR1

RET

; -KHOIDONGLCD:

MOV A,#01H

LCALL NHAPLENH

MOV A,#0EH

LCALL NHAPLENH

MOV A,#02H

LCALL NHAPLENH

MOV A,#06H

LCALL NHAPLENH

MOV A,#38H

LCALL NHAPLENH

RET

; -GOTOXY:

PUSH ACC

MOV A,R0

Trang 16

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

LCALL NHAPLENH POP ACC

TABLE: DB 80H,0C0H

RET

END

Trang 17

BÀI THÍ NGHIỆM 5 LẬP TRÌNH NGẮT

1 Thí nghiệm 1: Tạo xung cho chân P1.0 dùng ngắt timer.

Code:

ORG 2000H

LJMP MAIN

ORG 200BH

TO_ISR: CLR TR0

MOV TL0,#LOW(-65000)

MOV TH0,#HIGH(-65000)

SETB TR0

CPL P1.0

RETI

ORG 2030H

MAIN: MOV TMOD,#01H

SETB TF0

MOV IE,#82H

SJMP $

END

2 Thí nghiệm 2: Tạo hai xung đồng thời có cki khác nhau

Code:

ORG 0000H LJMP MAIN ORG 000BH LJMP T0_ISR ORG 001BH LJMP T1_ISR ORG 0030H MAIN: MOV TMOD,#11H

SETB TF0 SETB TF1 SETB EA SETB ET0 SJMP $ T0_ISR: SETB ET1

CLR TR0 JNB P1.0,SKIP CLR ET1 SKIP:

MOV TL0,#LOW(-65000) MOV TH0,#HIGH(-65000) SETB TR0

CPL P1.0 RETI T1_ISR: CLR TR1

Trang 18

MOV TL1,#LOW(-250)

MOV TH1,#HIGH(-250)

SETB TR1

CPL P1.1

RETI

END

3 Thí nghiệm 3: Ngắt ngoài P3.2 (INT0\) (đếm số lần bấm nút)

Code:

ORG 2000H

LJMP MAIN

ORG 2003H

LJMP EX0_ISR

ORG 2030H

MAIN: MOV R0,#0

SETB EA

SETB EX0

SETB IT0

SJMP $

; -EX0_ISR: CLR EX0

INC R0

MOV P1,R0

LCALL DELAY

SETB EX0

RETI

; -DELAY:

MOV R5,#8

LAP1: MOV R7,#250

LAP: MOV R6,#250

DJNZ R6,$

DJNZ R7,LAP

DJNZ R5,LAP1

RET

END

4 Thí nghiệm 4:Truyền nối tiếp dùng ngắt serial port truyền 8 bit,9600 baud,

XTAL:11,0592Hz các số từ 0-> 9.

Code:

ORG 2000H

LJMP MAIN

ORG 2023H

LJMP SP_ISR

ORG 2030H

MAIN: MOV TMOD,#20H

MOV TH1,#-3

MOV TL1,#-3

SETB TR1

Trang 19

MOV SCON,#42H MOV A,#30H MOV IE,#90H SJMP $

SP_ISR: CJNE A,#3AH,SKIP

SJMP KT

SKIP: MOV SBUF,A

INC A

CLR TI

RETI

KT:

END

Ngày đăng: 19/11/2020, 16:46

TỪ KHÓA LIÊN QUAN

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

w