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à Tên
Huỳnh Minh Trí
Trần Ngọc Phương Linh
Ngưu Tuấn Giang
Nguyễn Văn Cao Minh
MSSV
2012279
1913962
1913192
1914172
TIEU LUAN MOI download : moi nhat
MỤC LỤC
BÀI THÍ NGHIỆM 1.......................................................................................................1
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
TIEU LUAN MOI download : moi nhat
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).
Code:
ORG 2000H
LOOP:
MOV C, P1.0
MOV P3.0, C
SJMP LOOP
END
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ố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
Page | 1
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
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.
Code:
Delay1s:
MOV R5, #8
Loop1: MOV R6, #250
Loop2: MOV R7, #250
DJNZ R7, $
DJNZ R6, Loop2
DJNZ R5, Loop1
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.
Code:
ORG 2000H
LAP:
CPL P1.0
LCALL Delay1sIns
SJMP LAP
Delay1sIns:
MOV R5, #8
L1: MOV R6, #250
L2: MOV R7, #250
DJNZ R7, $
DJNZ R6, L2
Department of Electronics
Page | 4
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
DJNZ R5, L1
RET
END
Thay đổi chương trình con để tần số chớp tắt bây giờ là 1KHz.
Code:
Delay: MOV R5, #2
LOOP:
MOV R6, 250
DJNZ R6, $
DJNZ R5, LOOP
RET
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.
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
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
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.
Code:
ORG 2000H
LOOP1:
CPL P1.0
ACALL DelayP1-0
SJMP LOOP1
LOOP2:
SETB P1.1
ACALL DelayP1-1muccao
CLR P1.1
ACALL DelayP1-1mucthap
SJMP LOOP2
END
DelayP1-0:
MOV R5, #11
L1: MOV R6, #200
L2: MOV R7, #209
DJNZ R7, $
DJNZ R6, L2
DJNZ R5, L1
RET
DelayP1-1mucthap:
MOV R5, #5
L1: MOV R6, #255
L2: MOV R7, #254
DJNZ R7, $
Department of Electronics
Page | 4
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
DJNZ R6, L2
DJNZ R5, L1
RET
DelayP1-1muccao:
MOV R5, #3
L1: MOV R6, #220
L2: MOV R7, #210
DJNZ R7, $
DJNZ R6, L2
DJNZ R5, L1
RET
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?
-
Xung 0.5 Hz có chu kỳ là 2 s; nhiệm vụ 50% nên thời gian xung ở mức 1 = thời
gian ở 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
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
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.
Code:
ORG 2000H
MOV A, #01111111b
LAP:
MOV P1, A
LCALL Delay1sIns
RR A
SJMP LAP
Delay1sIns:
MOV R5, #8
L1: MOV R6, #250
L2: MOV R7, #250
DJNZ R7, $
DJNZ R6, L2
DJNZ R5, L1
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 hiệu ứng trên bar
led.
Department of Electronics
Page | 6
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
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
significant bit) của port 1?
-
LED ngoài cùng bên trái kết nối với MSB của port 1
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
DislayLed:
MOV A, #0E0H
ADD A, R0
MOV DPTR, #0000H
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 DislayLed
DislayLed:
MOV A, #0E0H
ADD A, R0
MOV DPTR, #0000H
Department of Electronics
Page | 7
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 1
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.
ORG 2000H
MAIN: MOV R0, #0
LOOP: LCALL DislayLed
Delay1s
INC R0
CJNE R0, #10, LOOP
SJMP MAIN
DislayLed:
MOV A, #0E0H
ADD A, R0
MOV DPTR, #000H
MOVX @DPTR, A
RET
Delay1s: MOV R7, #8
Department of Electronics
Page | 8
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 1
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
Kiểm tra:
Biên dịch, thực thi và kiểm tra chương trình.
Câu hỏi:
Vẽ lưu đồ giải thuật của chương trình.
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.
Department of Electronics
Page | 9
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 1
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
SHIFTLOOP:
RL A ;Xoay trái A
DJNZ B, SHIFTLOOP ;Giảm B đi 1, nếu khác 0 thì quay lại
nhãn SHIFTLOOP
ANL A, #0F0H ;Nếu B giảm đến 0 thì giữ lại 4 bit cao của
A
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
RET
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).
DisplayLED:
MOV DPTR,#TABLE
MOV A,R1
MOVC A,@A+DPTR
ADD A,R0
MOV DPTR, #0000H
MOVX @DPTR, A
RET
TABLE: DB 0E0H, 0D0H, 0B0H,70H
Department of Electronics
Page | 10
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
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.
Giảm thời gian trễ xuống cịn 100 ms. Quan sát hiện tượng.
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
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 0000H
MAIN:
MOV R1,#0
MOV R0,#1
LOOP:
LCALL DisplayLED
LCALL Delay1s
INC R1
INC R0
CJNE R1,#4,LOOP
SJMP MAIN
DisplayLED:
MOV DPTR,#TABLE
MOV A,R1
Department of Electronics
Page | 11
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 1
LẬP TRÌNH GIAO TIẾP NÚT NHẤN ĐƠN VÀ LED
MOVC A,@A+DPTR
ADD A,R0
MOVX @DPTR, A
RET
Delay1s:
MOV R7,#8
LAP2: MOV R6,#240
LAP1: MOV R5,#240
DJNZ R5, $
DJNZ R6, LAP1
DJNZ R7, LAP2
RET
TABLE: DB 0E0H, 0D0H, 0B0H,70H
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.
-
Cách tính: Với tần số thạch anh sử dụng là 11.0592 MHz , ta có:
1 MC= 12/ 11.0592 MHz= 1.085 µs
Xét sơ đồ sau:
T
LED 0
T
LED 1
T
LED 2
LED 3
T
Department of Electronics
Page | 12
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 1
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 LED
sá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ời
gian 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 q nhanh, mắt người khơng nhìn được
Department of Electronics
Page | 13
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
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.
LCD_E BIT
LCD_RS BIT
LCDADDR EQU
ORG 0000H
MAIN:
MOV
MOV
ACALL
ACALL
ACALL
SJMP $
INIT_LCD:
MOV
ACALL
MOV
ACALL
MOV
ACALL
RET
CLEAR:
MOV
ACALL
P3.4
P3.5
6000H
@R0, 30H
DPTR, #LCDADDR
CLEAR
INIT_LCD
DISPLAYSTRING
A, #38H
WRITECOM
A, #0EH
WRITECOM
A, #06H
WRITECOM
A, #01H
WRITECOM
Department of Electronics
Page | 14
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 2
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
JZ EXIT
ACALL WRITETEXT
MOV A,R0
INC A
DJNZ B, LOOP
EXIT:
RET
WAIT_LCD:
MOV R6,#10
DL1:
MOV R7, #250
Department of Electronics
Page | 15
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
DJNZ R7, $
DJNZ R6,DL1
RET
MESSAGE:
DB "TRAN_LE_KHUONG",0
END
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.
-
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
hồ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
Trình bày lưu đồ giải thuật giao tiếp LCD.
Department of Electronics
Page | 16
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
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.
CLEAR:
MOV A, #01H
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.
GOTOXY:
CJNE R0, #1, HANG2
MOV A, #80H
BACK:
ADD A, R1
ACALL WRITECOM
RET
HANG2:
MOV A, #0C0H
SJMP BACK
Sửa chương trình ở thí nghiệm 1 để hiển thị thêm số nhóm ở hàng thứ 2.
LCD_E BIT P3.4
LCD_RS BIT P3.5
LCDADDR EQU 6000H
ORG 2000H
MAIN:
MOV @R0, 30H
MOV DPTR, #LCDADDR
ACALL CLEAR
Department of Electronics
Page | 17
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
ACALL INIT_LCD
ACALL DISPLAYSTRING
MOV R0,#2
ACALL GOTOXY
MOV A,#16
ACALL LOOP
SJMP $
INIT_LCD:
MOV A, #38H
ACALL WRITECOM
MOV A, #0EH
ACALL WRITECOM
MOV A, #06H
ACALL WRITECOM
RET
CLEAR:
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
Department of Electronics
Page | 18
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
RET
DISPLAYSTRING:
MOV A,#0
LOOP:
MOV DPTR, #MESSAGE
MOV R0,A
MOVC A,@A+DPTR
JZ EXIT
ACALL WRITETEXT
MOV A,R0
INC A
DJNZ B, LOOP
EXIT:
RET
WAIT_LCD:
MOV R6,#10
DL1:
MOV R7, #250
DJNZ R7, $
DJNZ R6,DL1
RET
GOTOXY:
CJNE R0,#1,HANG2
MOV A,#80H
BACK:
ADD A,R1
ACALL WRITECOM
RET
HANG2:
MOV A,#0C0H
SJMP BACK
MESSAGE:
DB "TRAN_LE_KHUONG",0,"NHOM5",0
END
Department of Electronics
Page | 19
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 2
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?
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.
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.
LCD_E BIT P3.4
LCD_RS BIT P3.5
LCDADDR EQU 6000H
ORG 2000H
Department of Electronics
Page | 20
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
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
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:
Department of Electronics
Page | 231
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 2
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
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
RET
DELAY_ADC:
MOV R4, #100
DJNZ R4, $
RET
DISPLAYADC:
Department of Electronics
Page | 242
Microprocessor Laboratory
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED
BÀI THÍ NGHIỆM 2
LẬP TRÌNH GIAO TIẾP LCD, ADC VÀ TIMER
RET
END
MOV
MOV
DIV
MOV
MOV
DIV
MOV
MOV
DIV
MOV
A, R0
B, #10
AB
R0, B
B, #10
AB
R1, B
B, #10
AB
R2, B
Kiểm tra:
Biên dịch và kiểm tra hoạt động của chương trình.
Câu hỏi:
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
TIEU LUAN MOI download : moi nhat
BAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LEDBAO.cao.THUC.HANH.bo.mon.vi.xu.ly.bai.THI.NGHIEM.1.lap.TRINH.GIAO.TIEP.nut.NHAN.don.va.LED