Tải bản đầy đủ (.docx) (56 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.03 MB, 56 trang )

BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
MỤC TIÊU
⮚ Nắm được cách sử dụng kit thí nghiệm, phần mềm lập trình.
⮚ Nắm được cách lập trình giao tiếp IO port.
⮚ Nắm được cách lập trình tạo thời gian trễ dùng các lệnh.
CHUẨN BỊ
⮚Đọc và làm bài thí nghiệm 0 tại nhà.
⮚Đọc bài chuẩn bị thí nghiệm 1 tại nhà.
⮚ Chuẩn bị cho thí nghiệm 1: Viết chương trình và mơ phỏng trên Proteus tất cả các
bài trong thí nghiệm 1 dựa trên bài chuẩn bị 1 (Prelab_1) và thí nghiệm 0.
⮚ Nộp tất cả các kết quả (bài thí nghiệm 0 và bài chuẩn bị thí nghiệm 1) cho GVHD
trước khi vào lớp.
Sinh viên không thực hiện hoặc nộp thiếu nếu khơng có lí do chính đáng sẽ khơng
được tham gia thí nghiệm và bị đánh vắng buổi đó. Mọi hình thức gian lận, sao
chép sẽ bị xử lý chính đáng.

Department of Electronics
Microprocessor Laboratory

Page | 1 


BÀI THÍ NGHIỆM 1
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:


ORG 2000H
LOOP: MOV C,P1.0
MOV P3.0,C
SJMP LOOP
END
⮚ Biên dịch và thực thi chương trình để kiểm tra kết quả thực hiện.
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ốiGround, trong khi đó Anode được nối với VCC nên LED sáng. LED nối
vớ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ải
thí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
Microprocessor Laboratory

Page | 2 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
THÍ NGHIỆM 2
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 con Delay1s.
DELAY1S:


SETB TR1

MOV TMOD,#10H

JNB TF1,$

MOV R0,#20

CLR TR1

LOOP2: MOV
50000)

TL1,#LOW(-

CLR TF1
DJNZ R0,LOOP2

MOV TH1,#HIGH(-50000)

RET

⮚ Dùng chương trình con đã viết để chớp/tắt LED đơn gắn vào P1.0 sau mỗi khoảng
thời gian 1s.
ORG 2000H

LOOP:

DELAY1S:


SETB TR1

CLR P1.0

MOV
TMOD,#10H

JNB TF1,$

ACALL
DELAY1S

MOV R0,#20

SETB P1.0

LOOP2: MOV

ACALL
DELAY1S

TL1,#LOW(50000)

SJMP LOOP

MOV
TH1,#HIGH(50000)

Department of Electronics
Microprocessor Laboratory


CLR TR1
CLR TF1
DJNZ R0,LOOP2
RET
END

Page | 3 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
⮚ Thay đổi chương trình con để tần số chớp tắt bây giờ là 1KHz.
ORG 2000H
DELAY1MS:
LOOP:
CLR P1.0
ACALL
DELAY1MS
SETB P1.0
ACALL
DELAY1MS

MOV
TMOD,#10H

MOV
TH1,#HIGH(1000)
SETB TR1
JNB TF1,$


MOV
TL1,#LOW(1000)

SJMP LOOP

CLR TR1
CLR TF1

RET
END

Kiểm tra:
⮚ Biên dịch, thực thi và kiểm tra chương trình bằng cách quan sát LED đơn.
Câu hỏi:
⮚ Thời gian 1s được tạo ra như thế nào? Tính tốn chính xác dựa trên chương trình
đã viết.
-

tạo vịng lặp nhảy tại chỗ

-

Với fosc = 12Mhz
tCLK(timer) = 1MC = 1μs
tDelay = 1s = 1000000MC

⮚ 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 sáng liên tục vì thời gian chớp tắt quá nhanh

Department of Electronics
Microprocessor Laboratory

Page | 4 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
⮚ Sinh viên thay đổi chương trình con như thế nào để được tần số chớp tắt là 1KHz?
f = 1Khz → T = 1ms → tDelay = 1ms = 1000MC
DELAY1MS:
MOV
TMOD,#10H

MOV

JNB TF1,$
TL1,#LOW(1000)
MOV
TH1,#HIGH(1000)

CLR TR1
CLR TF1

RET

SETB TR1


Department of Electronics
Microprocessor Laboratory

Page | 5 


BÀI THÍ NGHIỆM 1
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.
ORG 2000H
MAIN:
SETB P1.0
SETB P1.1
ACALL DELAY03S
CLR P1.1
ACALL DELAY02S
ACALL DELAY05S
CLR P1.0

LOOP: MOV
TL1,#LOW(-50000)

CLR P1.1
ACALL DELAY02S

SETB TR1
JNB TF1,$


DELAY03S:
MOV TMOD,#10H
MOV R0,#6

DJNZ R0,LOOP3
RET

CLR TR1
CLR TF1
DJNZ R0,LOOP
RET

DELAY05S:
MOV TMOD,#10H
MOV R0,#10
LOOP5: MOV
TL1,#LOW(-50000)

DELAY02S:
MOV TMOD,#10H

MOV TH1,#HIGH(50000)

MOV R0,#4

SETB TR1

ACALL DELAY05S
SJMP MAIN


CLR TF1

MOV TH1,#HIGH(50000)

SETB P1.1
ACALL DELAY03S

CLR TR1

JNB TF1,$
LOOP3: MOV
TL1,#LOW(-50000)
MOV TH1,#HIGH(50000)
SETB TR1

CLR TR1
CLR TF1
DJNZ R0,LOOP5
RET

JNB TF1,$
END

Department of Electronics
Microprocessor Laboratory

Page | 6 



BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED

Kiểm tra:
⮚ Biên dịch, thực thi và kiểm tra chương trình bằng cách sử dụng oscilloscope để
kiểm tra.
Câu hỏi:
⮚ 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 u cầu bài tốn, các vịng trễ được viết như thế nào?

Department of Electronics
Microprocessor Laboratory

Page | 7 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
THÍ NGHIỆM 4
Mục tiêu: Nắm được cách hiển thị bar LED và tạo hiệu ứng
Yêu cầu: Viết chương trình tạo hiệu ứng quay LED: các LED đơn trên BARLED1 sáng
lần lượt từ trái sang phải sau thời gian 1s và lặp lại. Sử dụng chương trình con Delay1s đã
viết ở trên.

Kiểm tra:
⮚ Biên dịch, thực thi và kiểm tra chương trình bằng cách quan sát hiệu ứng trên bar
led.
ORG 2000H


SETB P1.3

DELAY1S:

CLR P1.4

MOV TMOD,#10H

AGAIN:

ACALL DELAY1S

MOV R0,#20

CLR P1.0

SETB P1.4

ACALL DELAY1S

CLR P1.5

LOOP2: MOV
TL1,#LOW(50000)

SETB P1.0

ACALL DELAY1S


CLR P1.1

SETB P1.5

MOV TH1,#HIGH(50000)

ACALL DELAY1S

CLR P1.6

SETB TR1

SETB P1.1

ACALL DELAY1S

JNB TF1,$

CLR P1.2

SETB P1.6

CLR TR1

ACALL DELAY1S

CLR P1.7

CLR TF1


SETB P1.2

ACALL DELAY1S

DJNZ R0,LOOP2

CLR P1.3

SETB P1.7

RET

ACALL DELAY1S

SJMP AGAIN

END

Câu hỏi:
⮚ Led ngoài cùng bên trái kết nối đến MSB (most significant bit) hay LSB (less

Department of Electronics
Microprocessor Laboratory

Page | 8 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
significant bit) của port 1?

-

kết nối với MSB của port1

Department of Electronics
Microprocessor Laboratory

Page | 9 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
THÍ NGHIỆM 5
Mục tiêu: Nắm được cách thức giao tiếp với ngoại vi LED 7 đoạn
Yêu cầu:
⮚ Viết chương trình con DisplayLed hiển thị lên LED 7 đoạn số 0 giá trị chứa trong
thanh ghi R0
ORG 0000H

DISPLAY_LED:

MOV R0,#0000B

MOV DPTR, #0000H

MOV A,#11100000B

MOVX @DPTR,A

ADD A,R0


RET

LOOP: ACALL DISPLAY_LED

END

SJMP LOOP
⮚ 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 0000H

DISPLAY_LED:

MOV R0,#0000B

MOV DPTR, #0000H

MOV A,#11101001B

MOVX @DPTR,A

ADD A,R0

RET

LOOP: ACALL DISPLAY_LED

END


SJMP LOOP

Kiểm tra:
⮚ Biên dịch, thực thi và kiểm tra chương trình

Department of Electronics
Microprocessor Laboratory

Page | 10 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
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.
Hướng Dẫn:
Trong chương trình chính, đầu tiên cho thanh ghi R0 bằng 0. Sau đó vào vịng lặp gọi
chương trình con DisplayLed đã viết ở phần trước, tạo trễ 1s, tăng R0 lên 1 và lặp lại quá
trình. Nếu R0 lớn hơn 9 thì cho R0 bằng 0 trở lại.

Kiểm tra:
⮚ Biên dịch, thực thi và kiểm tra chương trình.
ORG 2000H

MOV A,R0

MAIN:


MOV DPTR,#0000H

MOV R0,#0

ANL A,#00001111B

LOOP: ACALL
DISPLAYLED

ORL A,#11100000B

ACALL DELAY1S
INC R0
CJNE R0,#10,LOOP
SJMP MAIN
DISPLAYLED:

MOVX @DPTR,A
RET
DELAY1S:
MOV TMOD,#10H
MOV R2,#20

LOOP2: MOV
TL1,#LOW(-50000)
MOV TH1,#HIGH(50000)
SETB TR1
JNB TF1,$
CLR TR1

CLR TF1
DJNZ R2,LOOP2
RET
END

Câu hỏi:
Department of Electronics
Microprocessor Laboratory

Page | 11 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
⮚ Vẽ lưu đồ giải thuật của chương trình.

Department of Electronics
Microprocessor Laboratory

Page | 12 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
THÍ NGHIỆM 7
Mục tiêu: Nắm được cách thức dùng chương trình con và giao tiếp LED 7 đoạn.
Yêu cầu:
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.
Hướng dẫn:
Để hiển thị lên 1 LED 7 đoạn ta phải ghi ra ngoại vi ở vùng nhớ 0000H-1FFFH một byte,
với 4 bit thấp chứa giá trị của giá trị cần hiển thị và 4 bit cao được dùng để chọn LED.
Trong 4 bit cao, bit nào bằng 0 thì LED 7 đoạn tương ứng sẽ được bật.
Đoạn chương trình sau tính tốn để xuất ra điều khiển LED dựa vào R0, R1
ORG 0000H

DISPLAYLED:

MAIN:

MOV DPTR,#0000H

MOV R0,#0001B

MOV A,#11101111B

MOVX @DPTR,A

MOV R1,#3

LOOP: RL A

RET

ACALL DISPLAYLED

DJNZ R1,LOOP


END

SJMP MAIN

ANL A,#11110000B

MOV

B,

R1

MOV

A,

#11110111B ;bit số 3 bằng 0,

ORL A,R0

;bốn bit cao bằng 1.
SHIFTLOOP:
RL

A

Department of Electronics
Microprocessor Laboratory


Page | 13 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
DJNZ

B,

SHIFTLOOP

ANL

A,

#0F0H

PUSH

ACC

MOV

A,

R0

ANL

A,


#0FH

MOV

R0,

A

POP

ACC

ORL

A,

R0

Kiểm tra:
⮚ Biên dịch, thực thi và kiểm tra chương trình
Câu hỏi:
⮚ Viết lại chương trình trên bằng phương pháp sử dụng bảng tra (Lookup table).

Department of Electronics
Microprocessor Laboratory

Page | 14 



BÀI THÍ NGHIỆM 1
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.

ORG 2000H

CJNE R0,#4,LOOP1

MOV R2,#20

MAIN:

SJMP MAIN

MOV R0,#1

DISPLAYLED:

LOOP2: MOV
TL1,#LOW(-50000)

MOV R1,#0


MOV DPTR,#0000H

ACALL DISPLAYLED

MOV A,#11101111B

ACALL DELAY1S

LOOP: RL A

LOOP1:

DJNZ R1,LOOP

INC R0

ANL A,#11110000B

MOV B,R0

ORL A,R0

MOV R1,B

MOVX @DPTR,A

DEC R1

RET


ACALL DISPLAYLED

DELAY1S:

ACALL DELAY1S

MOV TMOD,#10H

MOV TH1,#HIGH(50000)
SETB TR1
JNB TF1,$
CLR TR1
CLR TF1
DJNZ R2,LOOP2
RET

END

Giảm thời gian trễ xuống còn 100 ms. Quan sát hiện tượng.

Department of Electronics
Microprocessor Laboratory

Page | 15 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
ORG 2000H


MOV A,

MOV
DPTR,#0000H

#11110111B
SHIFTLOOP:

MOV P2,#0

MOVX
@DPTR,A

CLR P3.6

RL

A

DJNZ B,
LOOP: MOV R0,#1
MOV R1,#1

SHIFTLOOP

DELAY1S

PUSH

LOOP2: MOV

TL1,#LOW(50000)

MOV A,

MOV TH1,#HIGH(50000)

ANL A,

SETB TR1

R0

INC R0
#0FH

INC R1
CJNE R1,#5,AGAIN
SJMP

JNB TF1,$
MOV R0,

A
POP

LOOP

ACC
ORL A,


DisplayLED:

MOV TMOD,#10H
MOV R2,#2

ACC

ACALL

DELAY1S:

ANL A,
#0F0H

AGAIN: ACALL
DisplayLED

RET

CLR TR1
CLR TF1
DJNZ R2,LOOP2
RET

R0
MOV B,

R1
END
Tính tố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
ORG 2000H

LOOP:

AGAIN:

MOV P2,#0

MOV R0,#1

ACALL DisplayLED

CLR P3.6

MOV R1,#1

ACALL DELAY1S

Department of Electronics
Microprocessor Laboratory

Page | 16 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
INC R0

ANL A, #0F0H


MOV TMOD,#10H

INC R1

PUSH

LOOP2:

CJNE R1,#5,AGAIN
SJMP LOOP

ACC

MOV TL1,#LOW(5000)

MOV A, R0
ANL A, #0FH

MOV TH1,#HIGH(5000)

MOV B, R1

MOV R0, A

SETB TR1

MOV A, #11110111B

POP ACC


JNB TF1,$

ORL A, R0

CLR TR1

MOV DPTR,#0000H

CLR TF1

MOVX @DPTR,A

RET

RET

END

DisplayLED:

SHIFTLOOP:
RL

A

DJNZ B, SHIFTLOOP

DELAY1S:


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.
ORG 2000H

SJMP LOOP

MOV P2,#0

DisplayLED:

CLR P3.6

MOV B, R1

LOOP:

MOV A, #11110111B

MOV R0,#1
MOV R1,#1
AGAIN:

ANL A, #0FH
MOV R0, A

SHIFTLOOP:
RL

INC R0
INC R1
CJNE R1,#5,AGAIN


Department of Electronics
Microprocessor Laboratory

ORL A, R0
MOV DPTR,#0000H
MOVX @DPTR,A

A

RET

ACALL DisplayLED
ACALL DELAY1S

POP ACC

DJNZ B, SHIFTLOOP

DELAY1S:

ANL A, #0F0H

MOV TMOD,#10H

PUSH

LOOP2:

ACC


MOV TL1,#LOW(0)
MOV A, R0
Page | 17 


BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
MOV TH1,#HIGH(0)

CLR TR1

SETB TR1

CLR TF1

JNB TF1,$

RET

END

Kiểm tra:
⮚ Biên dịch, thực thi và kiểm tra chương trình
Câu hỏi:
⮚ Thời gian trễ để khơng cịn thấy LED nhấp nháy là bao nhiêu theo lý thuyết? Giải
thích cách tính.
-

Thời gian: 1/200 s


-

Giải thích : Để hiển thị các chữ số khác nhau lên các LED 7 đoạn, ta vận dụng
hiện tượng lưu ảnh của mắt. Tần số quét một khung hình (tức một vịng lập) tối
thiểu khoản 25 Hz. Để dễ tính tốn ta dùng tần số 50Hz, tức chu kì là 1/50 giây.
Trong 1/50 giây đó có 4 khối cần hiển thị thì độ trễ giữa các khối phải là 1/200
giây.

⮚ 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 : LED sáng hết 4 đoạn

-

Giải thích: vì thời gian chuyển tiếp giữa các đoạn quá nhỏ nên mắt người
không nhận ra được

Department of Electronics
Microprocessor Laboratory

Page | 18 


BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
MỤC TIÊU
⮚ Nắm được cách sử dụng kit thí nghiệm, phần mềm lập trình.
⮚ Nắm được cách giao tiếp LCD và ADC.

⮚ Nắm được cách lập trình timer.
CHUẨN BỊ
⮚Đọc bài chuẩn bị thí nghiệm 2 tại nhà.
⮚ Chuẩn bị cho thí nghiệm 2: Viết chương trình và mơ phỏng trên Proteus tất cả các
bài trong thí nghiệm 2 dựa trên bài chuẩn bị 2 và thí nghiệm 0.
⮚ Nộp tất cả các kết quả (bài chuẩn bị thí nghiệm 2) cho GVHD trước khi vào lớp.
Sinh viên không thực hiện hoặc nộp thiếu nếu khơng có lí do chính đáng sẽ khơng
được tham gia thí nghiệm và bị đánh vắng buổi đó.

Department of Electronics
Microprocessor Laboratory

Page | 19 


BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
THÍ NGHIỆM 1
Mục tiêu: Nắm được cách thức xuất giá trị lên LCD.
Yêu cầu:
⮚ Download chương trình mẫu LCD.A51 trên trang web bộ mơn điện tử hoặc trong
folder thí nghiệm của sinh viên.
⮚ 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.
Kiểm tra:
⮚ Kiểm tra kết quả thực hiện của chương trình.

Câu hỏi:
⮚ Giải thích ý nghĩa của các chương trình con trên project mẫu.
INIT_LCD: Chương trình con cấu hình LCD

CLEAR: Chương trình con xóa các kí tự trên LCD

Department of Electronics
Microprocessor Laboratory

Page | 20 


BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
WRITECOM:

Chương trình con xuất lệnh LCD

WRITETEXT: Chương trình con xuất ký tự LCD
DISPLAYSTRING: Chương trình con xuất dãy kí tự
WAIT_LCD: Chương trình con delay
MESSAGE:Chương trình con chứa dãy kí tự muốn xuất lên LCD

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

Department of Electronics
Microprocessor Laboratory

Page | 21 


BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
THÍ NGHIỆM 2

Mục tiêu: Nắm được giao tiếp cơ bản của LCD.
Yêu cầu:
⮚ 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.
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?

GOTOXY:

SJMP KT
DJNZ R0, HANG2

HANG1:

HANG2:

MOV A,#0BFH

MOV A,#7FH

ADD A,R1

ADD A,R1

LCALL WRITECOM


LCALL WRITECOM

KT:

RET

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

BIT

P3.3

Department of Electronics
Microprocessor Laboratory

LCD_RS

BIT

P3.5

LCDADDR EQU
6000H

Page | 22 


BÀI THÍ NGHIỆM 2

LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
ORG 2000H
MAIN:
MOV DPTR,
#LCDADDR
ACALL
CLEAR
ACALL
INIT_LCD
MOV R0,#1
MOV R1,#1
LCALL
GOTOXY
MOV
DPTR,#TEN
ACALL
DISPLAYSTRING
MOV R0,#2
MOV
DPTR,#NHOM
LCALL
CANGIUA
MOV A,R3
MOV R1,A

SJMP $
INIT_LCD:
MOV A, #38H
ACALL
WRITECOM


MOVX
@DPTR, A

MOV A, #06H

CLR
LCD_E

ACALL
WRITECOM
RET
CLEAR:
MOV A, #01H
ACALL
WRITECOM
RET
WRITECOM:
MOV DPTR,
#LCDADDR
SETB LCD_E
CLR
LCD_RS

CLR
LCD_E

Microprocessor Laboratory

SETB LCD_E


ACALL
WRITECOM

MOV
DPTR,#NHOM

Department of Electronics

MOV DPTR,
#LCDADDR
SETB LCD_RS

MOVX
@DPTR, A

DISPLAYSTRING

WRITETEXT:

MOV A, #0EH

LCALL
GOTOXY

ACALL

RET

ACALL

WAIT_LCD

ACALL
WAIT_LCD
RET
DISPLAYSTRING:
MOV
A,#0
LOOP:
MOV R2,DPH
MOV R4,DPL
MOV
R0,A
MOVC
A,@A+DPTR
JZ
EXIT
ACALL
WRITETEXT
MOV
A,R0
INC
Page | 23 

A


BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
MOV DPH,R2


CANGIUA: MOV A,#0

MOV DPL,R4

LAP:

SJMP LOOP

//
MOV
DPTR,#TINNHAN

EXIT:
GOTOXY:
DJNZ R0,

A,#0FH
ADD A,#1

MOVC
A,@A+DPTR

MOV

MOV

THOAT2

R3,A

RET
WAIT_LCD:

MOV
INC A

WRITECOM

MOV
SJMP KT

R4,A
THOAT2:

ADD A,R1

RET

MOV R7, #250
DJNZ R6,DL1
RET

MOV

TEN: DB
"LE
TRUONG GIANG",0

SUBB


NHOM:
"2011121",0

A,R4

WRITECOM

DL1:
DJNZ R7, $

SJMP LAP

MOV

LCALL

MOV R6,#10

A,R5

LCALL

KT:

ANL

JZ

ADD A,R1


HANG2:
A,#0BFH

MUL AB

R5,A

HANG2
HANG1:
A,#7FH

1

MOV

RET

MOV B,#-

A,#16
MOV B,#2
DIV AB

Department of Electronics
Microprocessor Laboratory

END

Page | 24 


DB


BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
THÍ NGHIỆM 3
Mục tiêu: Nắm được cách thức giao tiếp ADC.
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.
⮚ 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.
Kiểm tra:
⮚ Biên dịch và kiểm tra hoạt động của chương trình.
LCD_E

BIT

P3.3

LCD_RS

BIT

P3.5

LCDADDR EQU
6000H

ACALL

INIT_LCD

MOV

A,B

MOV
B,#10

ACALL

DIV

DISPLAYSTRING

AB

ADCADDR EQU
4000H

MOV
A,#0C0H

ADD
A,#30H

ORG 2000H

ACALL
WRITECOM


ACALL
WRITETEXT

POP
ACC

MOV

PUSH
ACC

MOV
B,#100

ACALL
WRITETEXT

MOV

DIV

MAIN:
ACALL
READADC

DPTR,#LCDADDR
ACALL
CLEAR


Department of Electronics
Microprocessor Laboratory

A,B

ADD
A,#30H

AB

ADD
A,#30H
ACALL
WRITETEXT

SJMP
MAIN

WRITECOM:

Page | 25 


×