THÍ NGHIỆM 1
Mục tiêu
 Nắm được cách thức hiển thị LED 7 đoạn
Yêu cầu
 Viết chương trình con DisplayLed0 hiển thị lên LED 7 đoạn số 0 : giá trị chứa trong thanh ghi R0
MOV A,R0
ADD A,#0E0H
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 DisplayLed0.
ORG 2000H
MAIN:
MOV R0,#09H
ACALL DisplayLed0
JMP MAIN
DisplayLed0:
MOV A, R0
ORL A, #0E0H
MOV DPTR, #0000H
MOVX @DPTR, A
RET
END
Kiểm tra
 Biên dịch, thực thi và kiểm tra chương trình
                
              
                                            
                                
            
                       
            
                 8 trang
8 trang | 
Chia sẻ: thanhle95 | Lượt xem: 1162 | Lượt tải: 1 
              
            Bạn đang xem nội dung tài liệu Bài thí nghiệm 2: Hiển thị led 7 đoạn, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
MỤC TIÊU:
Nắm được cách giao tiếp ngoại vi ở dạng ánh xạ bộ nhớ, giao tiếp LED 7 đoạn.
CHUẨN BỊ:
Đọc chương 2 và chương 4 của tài liệu hướng dẫn
Viết chương trình và mô phỏng các bài thí nghiệm
THÍ NGHIỆM 1
Mục tiêu
Nắm được cách thức hiển thị LED 7 đoạn
Yêu cầu
Viết chương trình con DisplayLed0 hiển thị lên LED 7 đoạn số 0 : giá trị chứa trong thanh ghi R0
MOV A,R0
ADD A,#0E0H
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 DisplayLed0.
ORG 2000H
MAIN:
MOV R0,#09H
ACALL DisplayLed0
JMP MAIN
DisplayLed0:
MOV A, R0
ORL A, #0E0H
MOV DPTR, #0000H
MOVX @DPTR, A
RET
END
Kiểm tra
Biên dịch, thực thi và kiểm tra chương trình
THÍ NGHIỆM 2
Mục tiêu
Kết hợp được các chương trình con, hiển thị LED 7 đoạn sử dụng các lệnh để tạo delay
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
HD:
Viết chương trình Delay1sTimer tạo trễ 1 s dùng các lệnh.
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 DisplayLed0 đã 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.
ORG 2000H
MAIN: 
MOV R0,#00H
LOOP:
CALL LED0
CALL DELAY1S
INC R0
CJNE R0, #0AH, LOOP
LED0:
MOV A, R0
ORL A, 0E0H
MOV DPTR, #0000H
MOVX @DPTR,A
RET
DELAY1S:
MOV R7,#14H
DELAY:
MOV TMOD,#01H
MOV TH0, #HIGH(-50000)
MOV TL0, #LOW(-50000)
SETB TR0
JNB TF0,$
CLR TF0
CLR TR0
DJNZ R7, DELAY
RET
END
Kiểm tra
Biên dịch, thực thi và kiểm tra chương trình
THÍ NGHIỆM 3
Mục tiêu
Nắm được cách thức dùng chương trình con có truyền tham số để điều khiển ngoại vi
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.
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.
ORG 2000H
MAIN:
	MOV R1,#0EH
	MOV R0,#01H
	CALL CTCON
	SJMP MAIN
CTCON:
	MOV A,R1
	ANL A,#0FH
	SWAP A
	MOV B,R0
	ANL B,#0FH
	ADD A,B
 MOV DPTR,#0000H
	MOVX @DPTR,A
	RET
END
HD:
Để 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 toán để xuất ra điều khiển LED dựa vào R0, R1
	MOV	B, 	R1
	MOV	A,	#11110111B	;bit số 3 bằng 0, bốn bit cao bằng 1.	
SHIFTLOOP:
	RL	A
	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
	Giải thích ý nghĩa các lệnh của đoạn chương trình trong hướng dẫn.
THÍ NGHIỆM 5
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ươ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 2000H
MAIN:
	MOV R0,#00H
LOOP:
	CALL LED0
	CALL DELAY1S
	INC R0
	CALL LED1
	CALL DELAY1S
	INC R0
	CALL LED2
	CALL DELAY1S
	INC R0
	CALL LED3
	CALL DELAY1S
	CJNE R0,#04H,MAIN	
LED0:
	MOV A,R0
	ORL A,#0E0H
	MOV DPTR,#0000H
	MOVX @DPTR,A
RET
LED1:
	MOV A,R0
	ORL A,#0D0H
	MOV DPTR,#0000H
	MOVX @DPTR,A
RET
LED2:
	MOV A,R0
	ORL A,#0B0H
	MOV DPTR,#0000H
	MOVX @DPTR,A
RET
LED3:
	MOV A,R0
	ORL A,#70H
	MOV DPTR,#0000H
	MOVX @DPTR,A
RET
DELAY1S:
	MOV R7, #14H
	DELAY:
	MOV TMOD, #01H
	MOV TH0, #HIGH(-50000)
	MOV TL0, #LOW(-50000)
	SETB TR0
	JNB TF0,$
	CLR TF0
	CLR TR0
	DJNZ R7,DELAY
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.
Khi giảm rất nhỏ thời gian trễ, hiện tượng xảy ra là gì? Giải thích