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

Báo cáo thí nghiệm vi xử lý bài 3

15 12 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ý Bài 3
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Điện Tử
Thể loại Báo cáo thí nghiệm
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 15
Dung lượng 134,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

THÍ NGHIỆM 1Yêu cầu 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 CODE: LCD

Trang 1

THÍ NGHIỆM 1

Yêu cầu

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

CODE:

LCD_E BIT P3.4

LCD_RS BIT P3.5

LCDADDREQU 6000H

ORG 0000H

MAIN:

MOV @R0, 30H

MOV DPTR, #LCDADDR

ACALL CLEAR

ACALL INIT_LCD

ACALL DISPLAYSTRING

SJMP $

INIT_LCD:

MOV A, #38H

ACALL WRITECOM

MOV A, #0EH

ACALL WRITECOM

MOV A, #06H

ACALL WRITECOM

RET

CLEAR:

Trang 2

MOV A, #01H

ACALL WRITECOM

RET

WRITECOM:

MOV DPTR, #LCDADDR

SETB LCD_E

CLR LCD_RS

MOVX @DPTR, A

CLR LCD_E

ACALL WAIT_LCD

RET

WRITETEXT:

MOV DPTR, #LCDADDR

SETB LCD_E

SETB LCD_RS

MOVX @DPTR, A

CLR LCD_E

ACALL WAIT_LCD

RET

DISPLAYSTRING:

MOV A,#0

LOOP:

MOV DPTR, #MESSAGE

MOV R0,A

MOVC A,@A+DPTR

JZ EXIT

ACALL WRITETEXT

MOV A,R0

DJNZ B, LOOP

EXIT:

RET

Trang 3

MOV R6,#10

DL1:

MOV R7, #250

DJNZ R7, $

DJNZ R6,DL1

RET

MESSAGE:

DB "NHAN_LONG_NGHIA",0

END

KẾT QUẢ:

Kiểm tra

Giải thích ý nghĩa và cách sử dụng các chương trình con trên project mẫu

- Giải thích:

+ Chương trình con INITLCD: có nhiệm vụ khởi động module LCD

+ Chương trình con WRITECOM : có nhiệm vụ ghi 1 byte lệnh đến LCD

+ Chương trình con WAIT_LCD: sử dụng chương trình con tạo trễ để chờ module hoàn thành lệnh hiện thời

+ Chương trình con DISPLAYSTRING: Chọn ký tự cần hiển thị

+ Chương trình con WRITETEXT: Xuất ra LCD

Trang 4

THÍ NGHIỆM 2

Yêu cầu

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

CODE1:

CLEAR:

MOV A, #01H ; CLR

ACALL WRITECOM

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

CODE2:

GOTOXY:

CJNE R0,#1,HANG2

MOV A,#80H

BACK:

ADD A,R1

ACALL WRITECOM

RET

HANG2:

MOV A,#0C0H

SJMP BACK

Trang 5

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

CODE3:

MAIN:

MOV R0,#2

ACALL GOTOXY

MOV A,#16

INIT_LCD:

RET

CLEAR:

RET

WRITECOM:

Trang 6

SETB LCD_E

RET

WRITETEXT:

RET

DISPLAYSTRING:

LOOP:

EXIT:

RET

WAIT_LCD:

DL1:

RET

Trang 7

CJNE R0,#1,HANG2

MOV A,#80H

BACK:

ADD A,R1

ACALL WRITECOM

RET

HANG2:

MOV A,#0C0H

SJMP BACK

MESSAGE:

DB "NHAN_LONG_NGHIA",0,"NHOM4",0

END

Kiểm tra

Kiểm tra kết quả chương trình.

Trang 8

THÍ NGHIỆM 3

Yêu cầu

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

CODE 1:

READADC:

MOV DPTR, #4000H

MOVX @DPTR, A

ACALL DELAY_ADC

MOVX A, @DPTR

MOV R0,A

RET

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

CODE 2:

LCD_E BIT P3.4

LCD_RS BIT P3.5

LCDADDR EQU 6000H

ORG 0000H

MAIN:

MOV @R0, 30H

MOV DPTR, #LCDADDR

MAIN1:

ACALL CLEAR

ACALL INIT_LCD

ACALL READADC

ACALL DISPLAYADC

MOV A,R2

ADD A,#30H

ACALL WRITETEXT

MOV A,R1

ADD A,#30H

Trang 9

ACALL WRITETEXT

MOV A,R0

ADD A,#30H

ACALL WRITETEXT

SJMP MAIN1

INIT_LCD:

MOV A, #38H; 8bit 2dong 5x7

ACALL WRITECOM

MOV A, #0CH; onLCD Cursor_mod

ACALL WRITECOM

MOV A, #06H ; cho hien thi them cac ky tu sau;

ACALL WRITECOM

MOV A,#0C0H

ACALL WRITECOM

RET

CLEAR:

MOV A, #01H; CLR

ACALL WRITECOM

RET

WRITECOM:

MOV DPTR, #LCDADDR

SETB LCD_E

CLR LCD_RS

MOVX @DPTR, A

CLR LCD_E

ACALL WAIT_LCD

RET

WRITETEXT:

MOV DPTR, #LCDADDR

SETB LCD_E

SETB LCD_RS

MOVX @DPTR, A

CLR LCD_E

ACALL WAIT_LCD

RET

WAIT_LCD:

MOV R6,#10

DL1:

MOV R7, #250

DJNZ R7, $

DJNZ R6,DL1

RET

READADC:

MOV DPTR, #4000H

MOVX @DPTR, A

ACALL DELAY_ADC

MOVX A, @DPTR

MOV R0,A

Trang 10

DELAY_ADC:

MOV R4, #100

DJNZ R4, $

RET

DISPLAYADC:

MOV A,R0

MOV B,#10

DIV AB

MOV R0, B

MOV B,#10

DIV AB

MOV R1, B

MOV B,#10

DIV AB

MOV R2, B

RET

END

Kiểm tra

Giá trị này có phải giá trị thực của điện áp đặt vào kênh 0 hay không?

- Giá trị này không phải trị thực điện áp đặt vào kênh 0 Vì ADC0809 sử dụng 8 bit, từ 0

 255 để hiển thị giá trị áp từ 0  5V.

Để hiển thị giá trị thực tế của mức điện áp đặt vào kênh 0 ta phải làm như thế nào?

- Ta phải thực hiện phép toán: (Giá trị hiển thị*5)/255 = Giá trị hiển thị / 51

Trang 11

THÍ NGHIỆM 4

Yêu cầu

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.

CODE:

CALADC:

MOV A,R0

MOV B,#51

DIV AB

MOV R0,A

MOV A,#5

MUL AB

MOV B,#51

DIV AB

MOV R1,A

MOV A,#5

MUL AB

MOV B,#51

DIV AB

MOV R2,A

MOV A,#5

MUL AB

MOV B,#51

DIV AB

CJNE A,#5,khac

khac:

JC NEXT

INC R2

NEXT:

MOV A,R1

MOV B,#10

MUL AB

ADD A,R2

MOV B,#2

MUL AB

MOV R1,A

RET

Trang 12

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.

LCD_E BIT P3.4

LCD_RS BIT P3.5

LCDADDR EQU 6000H

ORG 0000H

MAIN:

MOV @R0, 30H

MOV DPTR, #LCDADDR

ACALL CLEAR

ACALL INIT_LCD

MOV R0,#1

MOV R1,#0

ACALL GOTOXY

MOV R2,#0

RETURN:

MOV A,R2

ACALL DISPLAYSTRING2

INC R2

CJNE R2,#8,RETURN

MOV R0,#1

MOV R1,#12

ACALL GOTOXY

MOV A,#19

ACALL DISPLAYSTRING2

MAIN1:

MOV R0,#1

MOV R1,#8

ACALL GOTOXY

ACALL READADC

ACALL CALADC

MOV A,R0

ADD A,#9

ACALL DISPLAYSTRING2

MOV A,#8

ACALL DISPLAYSTRING2

MOV A,R1

MOV B,#10

DIV AB

ADD A,#9

ACALL DISPLAYSTRING2

MOV A,B

ADD A,#9

ACALL DISPLAYSTRING2

Trang 13

SJMP MAIN1

INIT_LCD:

MOV A, #38H; 8bit 2dong 5x7

ACALL WRITECOM

MOV A, #0CH; onLCD Cursor_mod

ACALL WRITECOM

MOV A, #06H ; cho hien thi them cac ky tu sau;

ACALL WRITECOM

MOV A,#0C0H

ACALL WRITECOM

RET

CLEAR:

MOV A, #01H; CLR

ACALL WRITECOM

RET

WRITECOM:

MOV DPTR, #LCDADDR

SETB LCD_E

CLR LCD_RS

MOVX @DPTR, A

CLR LCD_E

ACALL WAIT_LCD

RET

WRITETEXT:

MOV DPTR, #LCDADDR

SETB LCD_E

SETB LCD_RS

MOVX @DPTR, A

CLR LCD_E

ACALL WAIT_LCD

RET

DISPLAYSTRING2:

MOV DPTR,#MESSAGE

MOVC A,@A+DPTR

ACALL WRITETEXT

RET

WAIT_LCD:

MOV R6,#10

DL1:

MOV R7, #250

DJNZ R7, $

DJNZ R6,DL1

RET

MESSAGE: DB "Voltage 0123456789V"

READADC:

MOV DPTR, #4000H

Trang 14

MOV A,#00H

MOVX @DPTR, A

ACALL DELAY_ADC

MOVX A, @DPTR

MOV R0,A

RET

DELAY_ADC:

MOV R4, #100

DJNZ R4, $

RET

GOTOXY:

CJNE R0,#1,HANG2

MOV A,#80H

BACK:

ADD A,R1

ACALL WRITECOM

RET

HANG2:

MOV A,#0C0H

SJMP BACK

CALADC:

MOV A,R0

MOV B,#51

DIV AB

MOV R0,A

MOV A,#5

MUL AB

MOV B,#51

DIV AB

MOV R1,A

MOV A,#5

MUL AB

MOV B,#51

DIV AB

MOV R2,A

MOV A,#5

MUL AB

MOV B,#51

DIV AB

CJNE A,#5,khac

khac:

JC NEXT

INC R2

NEXT:

MOV A,R1

MOV B,#10

MUL AB

Trang 15

ADD A,R2

MOV B,#2

MUL AB

MOV R1,A

RET

END

Kiểm tra

Biên dịch và kiểm tra hoạt động của chương trình, so sánh giá trị hiển thị với giá trị đo được dùng VOM

Ngày đăng: 18/08/2022, 16:13

TỪ KHÓA LIÊN QUAN

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

w