1. Trang chủ
  2. » Tất cả

BÁO cáo THỰC HÀNH bộ môn vi xử ly bài THÍ NGHIỆM 1 lập TRÌNH GIAO TIẾP nút NHẤN đơn và LED

51 14 0
Tài liệu đã được kiểm tra trùng lặp

Đ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ả Huỳnh Minh Trí, Trần Ngọc Phương Linh, Ngưu Tuấn Giang, Nguyễn Văn Cao Minh
Người hướng dẫn Trịnh Vũ Đăng Nguyên, Giảng viên
Trường học Trường Đại học Bách Khoa - Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Kỹ thuật Điện tử
Thể loại Báo cáo thực hành
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 51
Dung lượng 411,49 KB

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

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ỰC HÀNH Bộ môn Vi Xử Lý Giảng viên hướng dẫn Trịnh Vũ Đăng Nguyên L P Ớ DT01 HK 213 NGÀY N P Ộ Thành viên Họ và[.]

Trang 2

Thí nghiệm 1 1

Thí nghiệm 2 2

Thí nghiệm 3 4

Thí nghiệm 4 6

Thí nghiệm 5 7

Thí nghiệm 6 8

Thí nghiệm 7 9

Thí nghiệm 8 11

BÀI THÍ NGHIỆM 2 14

Thí nghiệm 1 14

Thí nghiệm 2 17

Thí nghiệm 3 20

Thí nghiệm 4 24

Thí nghiệm 5 29

Thí nghiệm 6 31

BÀI THÍ NGHIỆM 3 32

Thí nghiệm 1 32

Thí nghiệm 2 33

Thí nghiệm 3 36

Thí nghiệm 4 40

Thí nghiệm 5 41

Thí nghiệm 6 45

Thí nghiệm 7 48

Department of Electronics Page | 0

Microprocessor Laboratory

Trang 3

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

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).

Kiểm tra:

 Biên dịch và thực thi chương trình để kiểm tra kết quả thực hiện

- Kết quả thực hiện: Khi nhấn Switch nối với P1.0, đèn của Port 1.0 và 3.0 đều sáng

Câu hỏi:

 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?

- Giải thích: Khi nhấn Switch nối với Port 1.0 thì Cathode của LED nối với P1.0được nối Ground, trong khi đó Anode được nối với VCC nên LED sáng LED nốivới P3.0 sáng là do chương trình trên đã được nạp vào vi xử lý

 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ảithích tại sao?

Các bit từ 0 đến 7 của 2 port có thể được dùng vì đây là các cổng nhập xuất nhập 8 bit tính từ bit 0 đến 7

Department of Electronics Page | 1

Microprocessor Laboratory

Trang 4

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

MOV R5, #8

L1: MOV R6, #250

L2: MOV R7, #250

DJNZ R7, $ DJNZ R6, L2

Department of Electronics Page | 4

Microprocessor Laboratory

Trang 5

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

 Sai số nhỏ nhất có thể đạt được so với yêu cầu là bao nhiêu?

 Khi tần số chớp tắt là 1Khz, cho biết hiện tượng trên LED?

- LED chớp nháy rất nhanh và hầu như không thể nhận biết hiện tượng chớp nháy

 Sinh viên thay đổi chương trình con như thế nào để được tần số chớp tắt là 1KHz?

- Tần số chớp tắt fled = 1 KHz => Tled = 1/1000 = 10-3 s

 Tạo chương trình tạo trễ 10-3/2=0.0005s

Department of Electronics Page | 3

Microprocessor Laboratory

Trang 6

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

Thí 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 tạo 2 xung vuông 0.5Hz (chu kỳ nhiệm vụ 50%) và 1Hz (chu

kỳ nhiệm vụ là 30%) lần lượt trên chân P1.0 và P1.1

SETB P1.1

ACALL DelayP1-1muccao CLR P1.1

ACALL DelayP1-1mucthap

SJMP LOOP2END

DelayP1-0: MOV R5, #11

L1: MOV R6, #200

L2: MOV R7, #209

DJNZ R7, $ DJNZ R6, L2 DJNZ R5, L1

Trang 7

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

DJNZ R6, L2 DJNZ R5, L1

 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?

 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ạo các xung thỏa yêu cầu bài toán, các vòng trễ được viết như thế nào?

- Xung 0.5 Hz có chu kỳ là 2 s; nhiệm vụ 50% nên thời gian xung ở mức 1 = thờigian ở mức 0 = 1 s Sử dụng 1 lệnh DJNZ mất 2MCs = 2 * 12/11.0592=2.17 µs =>

Lặp lại 106/2.17=460830 lần = 209*200*11

- Xung 1 Hz có chu kỳ là 1 s; nhiệm vụ 30% nên thời gian xung ở mức 1 = 0.3s =>

Lặp 138250 lần = thời gian xung ở mức 0 = 0.7s => Lặp 322580 lần = 254*255*5

Department of Electronics Page | 5

Microprocessor Laboratory

Trang 8

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

RR A SJMP LAPDelay1sIns:

MOV R5, #8

L1: MOV R6, #250

L2: MOV R7, #250

DJNZ R7, $ DJNZ R6, L2 DJNZ R5, L1

Trang 9

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

MOVX @DPTR, A

RET

 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 DisplayLed

ORG 2000H

Main:

MOV R0, #9

LCALL DislayLedDislayLed:

Trang 10

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

MOVX @DPTR, A

RET

END

Thí nghiệm 6

Mục tiêu: Kết hợp được các chương trình con: chương trình con tạo trễ và chương trình

con hiển thị LED 7 đoạn

Yêu cầu: 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 sử dụng 2 chương trình con ở Thí nghiệm 2 và Thí nghiệm 5

DislayLed:

MOV A, #0E0H

ADD A, R0 MOV DPTR, #000H

Trang 11

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

LOOP1: MOV R6, #250

LOOP2: MOV R5, #250

DJNZ R5, $ DJNZ R6, LOOP2 DJNZ R7, LOOP1 END

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 Trong đó:

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

Department of Electronics Page | 9

Microprocessor Laboratory

Trang 12

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

DisplayLED:

MOV B, R1 ;Đưa nội dung trong R1 vào B

INC B ;Tăng giá trị B lên 1

MOV A, #11110111B ;bit số 3 bằng 0, bốn bit cao bằng 1

PUSH ACC ;Cất Acc vào StackPointer

MOV A, R0 ;Đưa nội dung R0 vào A

ANL A, #0FH ;Giữ lại 4 bit thấp của A

MOV R0, A ;Đua nội dung của A vào R0

POP ACC ;Lấy lại A từ StackPointer

ORL A, R0 ;Cộng A với R0, rồi lưu vào A

ADD A,R0 MOV DPTR, #0000H

Trang 13

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

Thí nghiệm 8

Mục tiêu:

 Nắm được phương pháp quét LED 7 đoạn

Yêu cầu:

Viết chương trình hiển thị số 1 lên LED7 đoạn 0, sau đó 1s hiển thị số 2 lên LED 7 đoạn

1, sau đó 1s hiển thị số 3 lên LED 7 đoạn 2, sau đó 1s hiển thị số 4 lên LED 7 đoạn 3 Quátrình này lặp đi lặp lại Việc hiển thị này sử dụng chương trình con DisplayLED đã viết ởtrên

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ươngtrì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

INC R0 CJNE R1,#4,LOOP SJMP MAIN

DisplayLED:

MOV DPTR,#TABLE MOV A,R1

Department of Electronics Page | 11

Microprocessor Laboratory

Trang 14

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

MOVC A,@A+DPTR

ADD A,R0 MOVX @DPTR, A

Department of Electronics Page | 12

Microprocessor Laboratory

T

Trang 15

LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

Ta thấy, khoảng cách giữa 2 lần LED X sáng/tắt là 4T Mà theo lý thuyết, nếu số lần LEDsáng tắt lớn hơn 24 lần trong 1 giây thì mắt người coi như LED sáng liên tục Suy ra, thờigian trễ lớn nhất cần tìm là: 1s=24*4T  T= 10 416 µs= 9600 MCs

 Khi giảm rất nhỏ thời gian trễ, hiện tượng xảy ra là gì? Giải thích

- Hiện tượng: Không thấy LED 7 đoạn sáng

- Giải thích: Tần số chớp tắt quá nhanh, mắt người không nhìn được

Department of Electronics Page | 13

Microprocessor Laboratory

Trang 16

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

 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

SJMP $INIT_LCD:

MOV A, #38H

ACALL WRITECOM MOV A, #0EH

ACALL WRITECOM MOV A, #06H

Trang 17

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

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

Trang 18

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

+ 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

 Trình bày lưu đồ giải thuật giao tiếp LCD

Department of Electronics Page | 16

Microprocessor Laboratory

Trang 19

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

BACK:

ADD A, R1 ACALL WRITECOM RET

HANG2:

MOV A, #0C0HSJMP BACK

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

Department of Electronics Page | 17

Microprocessor Laboratory

Trang 20

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

ACALL INIT_LCD

ACALL DISPLAYSTRING

MOV R0,#2ACALL GOTOXY

MOV A,#16ACALL LOOP

SJMP $INIT_LCD:

MOV A, #38HACALL WRITECOM

MOV A, #0EHACALL WRITECOM

MOV A, #06HACALL WRITECOM

RET

CLEAR:

MOV A, #01HACALL WRITECOM

RET

WRITECOM:

MOV DPTR, #LCDADDRSETB LCD_E

Trang 21

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

RET

DISPLAYSTRING:

MOV A,#0 LOOP:

MOV DPTR, #MESSAGEMOV R0,A

DJNZ R6,DL1

RET

GOTOXY:

CJNE R0,#1,HANG2 MOV A,#80H

BACK:

ADD A,R1 ACALL WRITECOM RET

HANG2:

MOV A,#0C0HSJMP BACK

MESSAGE:

DB "TRAN_LE_KHUONG",0,"NHOM5",0 END

Department of Electronics Page | 19

Microprocessor Laboratory

Trang 22

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

Kiểm tra:

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

Câu hỏi:

 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?

 Thực hiện canh giữa hàng 2 của LCD Cho biết cách làm?

Trang 23

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

ADD A, #30H

ACALL WRITETEXT MOV A, R1

ADD A, #30H

ACALL WRITETEXT MOV A, R0

ADD A, #30H

ACALL WRITETEXT

SJMP MAIN1INIT_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

Trang 24

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

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

READADC:

MOV DPTR, #4000H

MOVX @DPTR, A ACALL DELAY_ADC MOVX A, @DPTR

Trang 25

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

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

 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

Department of Electronics Page | 253

Microprocessor Laboratory

Trang 26

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

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, khackhac:

JC NEXT INC R2NEXT:

MOV A, R1 MOV B, #10

Department of Electronics Page | 264

Microprocessor Laboratory

Trang 27

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

MUL AB ADD A, R2 MOV B, #2

MUL AB MOV R1, A

MOV R1, #0

ACALL GOTOXY MOV R2, #0

RETURN:

MOV A, R2 ACALL DISPLAYSTRING2 INC R2

CJNE R2, #8, RETURN

Department of Electronics Page | 275

Microprocessor Laboratory

Trang 28

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

MOV R0, #1

MOV R1, #12

ACALL GOTOXY MOV A, #19

ACALL DISPLAYSTRING2MAIN1:

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

SJMP MAIN1INIT_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

Department of Electronics Page | 286

Microprocessor Laboratory

Trang 29

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

RET

WRITETEXT:

MOV DPTR, #LCDADDR

SETB LCD_E SETB LCD_RS MOVX @DPTR, A CLR LCD_E ACALL WAIT_LCD

RET

MESSAGE: DB "Voltage 0123456789V"

Department of Electronics Page | 297

Microprocessor Laboratory

Trang 30

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

READADC:

MOV DPTR, #4000H

MOV A, #00H

MOVX @DPTR, A ACALL DELAY_ADC MOVX A, @DPTR

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

Department of Electronics Page | 308

Microprocessor Laboratory

Trang 31

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

MOV B, #51

DIV AB MOV R2, A MOV A, #5

MUL AB MOV B, #51

DIV AB CJNE A, #5, khackhac:

JC NEXT INC R2NEXT:

MOV A, R1 MOV B, #10

MUL AB ADD A, R2 MOV B, #2

MUL AB MOV R1, A

Trang 32

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

MOV TH0, #HIGH(-65535) SETB TR0

JNB TF0, $ CLR TF0 DJNZ R7, LOOP2 CPL P1.0

SJMP LOOP1 END

JNB TF0, $ CLR TF0 DJNZ R6 , LOOP2 DJNZ R7 ,LOOP3 CPL P1

Department of Electronics Page | 30

Microprocessor Laboratory

Trang 33

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER

SJMP LOOP1 END

 Trong chương trình của sinh viên, khi sử dụng mode 1, sóng vuông 1 Hz có bị sai

số không? Để hạn chế sai số ta phải nạp các giá trị vào timer như thế nào?

- Dạng sóng đã bị sai số Vì sai số gây ra là bởi thời gian thực hiện các câu lệnh

phần mềm, tức là tốn thêm xx chu kỳ máy, nên ta không sử dụng công thức tínhgiá trị nạp cho timer được

JNB TF0, $ CLR TF0 DJNZ R6, LOOP2 DJNZ R7, LOOP3 CPL P1.0

SJMP LOOP1 END

Department of Electronics Page | 31

Microprocessor Laboratory

Trang 34

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

MOV R3,50

X: JB P1.0, LOOP ; CHONG RUNG PHIM

DJNZ R3, X ACALL STRING ACALL DELAY1S SJMP LOOPPHAT:

JNB TI, $ CLR TI

MOV SBUF, A

Department of Electronics Page | 32

Microprocessor Laboratory

Trang 35

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

MOVC A, @A+DPTR

JZ KT ACALL PHAT

INC R0 AJMP LAPDELAY1S:

MOV R7, #8

L1: MOV R6, #250

L2: MOV R5, #250

DJNZ R5, $ DJNZ R6, L2 DJNZ R7, L1 RET

Kí tự nhận được sẽ hiện thị lên LCD tại vị trí cột 0 hàng 0 và đồng thời phát trở lại SRP

Department of Electronics Page | 33

Microprocessor Laboratory

Ngày đăng: 27/11/2022, 20:13

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w