Tải bản đầy đủ (.pdf) (140 trang)

vi xử lý hệ thống điều khiển led 7 đoạn

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 (1.98 MB, 140 trang )



KHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆP




T
T
À
À
I
I


L
L
I
I


U
U


H
H
Ư
Ư



N
N
G
G


D
D


N
N


T
T
H
H
Í
Í


N
N
G
G
H
H
I

I


M
M


-
-


T
T
H
H


C
C


H
H
À
À
N
N
H
H



















B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
Giáo trình thực hành vi xử lý. 2 Biên soạn: Phạm Quang Trí

A. MỤC ðÍCH:

• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi ñiều khiển và sử dụng mô
hình thí nghiệm ñể kiểm chứng.
• ðiều khiển thiết bị ngoại vi bằng các port của vi ñiều khiển.
• ðiều khiển việc hiển thị bằng cách sử dụng LED 7 ñoạn theo nhiều phương pháp khác nhau.
• ðiều khiển việc hiển thị các thông tin và số liệu bằng cách sử dụng các bộ hiển thị dùng LED 7 ñoạn.

B. YÊU CẦU:


• Nắm vững tập lệnh của vi ñiều khiển MCS-51.
• Biết cách viết các chương trình ñiều khiển LED 7 ñoạn ở chế ñộ:
o Không ña hợp và ngõ vào dữ liệu kiểu BCD.
o Không ña hợp và ngõ vào dữ liệu kiểu 7 ñoạn.
o ða hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải ña hợp bên ngoài/giải ña hợp bằng phần
mềm).
o ða hợp và ngõ vào dữ liệu kiểu 7 ñoạn (không dùng vi mạch giải ña hợp bên ngoài/giải ña hợp bằng
phần mềm).
o ða hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải ña hợp bên ngoài/giải ña hợp bằng phần cứng).
o ða hợp và ngõ vào dữ liệu kiểu 7 ñoạn (dùng vi mạch giải ña hợp bên ngoài/giải ña hợp bằng phần
cứng).
• Nắm ñược sơ ñồ và nguyên lý hoạt ñộng của khối LED 7 ñoạn trên mô hình thí nghiệm.
• Nắm ñược sơ ñồ và nguyên lý ñiều khiển LED 7 ñoạn theo phương pháp:
o Không ña hợp và ngõ vào dữ liệu kiểu BCD.
o Không ña hợp và ngõ vào dữ liệu kiểu 7 ñoạn.
o ða hợp và ngõ vào dữ liệu kiểu BCD (không dùng vi mạch giải ña hợp bên ngoài/giải ña hợp bằng phần
mềm).
o ða hợp và ngõ vào dữ liệu kiểu 7 ñoạn (không dùng vi mạch giải ña hợp bên ngoài/giải ña hợp bằng
phần mềm).
o ða hợp và ngõ vào dữ liệu kiểu BCD (dùng vi mạch giải ña hợp bên ngoài/giải ña hợp bằng phần cứng).
o ða hợp và ngõ vào dữ liệu kiểu 7 ñoạn (dùng vi mạch giải ña hợp bên ngoài/giải ña hợp bằng phần
cứng).
• Biết cách viết các chương trình ñiều khiển ñể hiển thị các thông tin và số liệu trên các bộ hiển thị dùng
LED 7 ñoạn.

B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp khơng đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 1: Chương trình điều khiển hiển thị số 7 trên LED4 (LED4 được nối với Port0).
Giáo trình thực hành vi xử lý. 3 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:

1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối cơng tắc và gạt tất cả
các cơng tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J14 (7SEG OUT 1) ở khối giải mã với J8 (7SEG4 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J16 (BCD IN 1-2) ở khối giải mã.
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn.

1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
AD1
AD2
AD3

A
B
C
D
E
F
G
A
B
C
D
E
F
G
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38

P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10

P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27

U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN LED 7 ĐOẠN
(CẤU HÌNH KHÔNG ĐA HP, NGÕ VÀO BCD)
A
7
QA
13
B
1
QB
12

C
2
QC
11
D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
U2
74LS47
LED4
+5V
R11
56
R12
56
R13
56

R14
56
R15
56
R16
56
R17
56
C3
10uF
R1
10k
+5V

B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu BCD)
Bài 1: Chương trình ñiều khiển hiển thị số 7 trên LED4 (LED4 ñược nối với Port0).
Giáo trình thực hành vi xử lý. 4 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.

;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI SO 7 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H

MOV P0,#07H ;XUAT HIEN THI
SJMP $


END
1.4 Lưu chương trình và biên dịch chương trình.
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.6 Gắn chip vi ñiều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt ñộng.
1.7 Nạp chương trình vào vi ñiều khiển.
1.8 Sử dụng vi ñiều khiển vừa nạp gắn vào socket tương ứng trên khối vi ñiều khiển.
1.9 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt ñộng, nếu kết quả hoạt ñộng không ñúng yêu
cầu của ñề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 ñến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)
B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu BCD)
Bài 2: Chương trình ñiều khiển hiển thị ñếm số BCD từ 0 lên 9 trên LED4 (LED4 ñược nối với Port0).
Giáo trình thực hành vi xử lý. 5 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 1.
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.
• Cách 1:

XUẤT SỐ 0 RA PORT
(P0) = 00H
BEGIN
GỌI CTC TẠO TRỄ
DELAY500MS

XUẤT SỐ 1 RA PORT
(P0) = 01H
GỌI CTC TẠO TRỄ
DELAY500MS
B2.1
NB
XUẤT SỐ 2 RA PORT
(P0) = 02H
GỌI CTC TẠO TRỄ
DELAY500MS
XUẤT SỐ 3 RA PORT
(P0) = 03H
GỌI CTC TẠO TRỄ
DELAY500MS
XUẤT SỐ 4 RA PORT
(P0) = 04H
GỌI CTC TẠO TRỄ
DELAY500MS
XUẤT SỐ 6 RA PORT
(P0) = 06H
GỌI CTC TẠO TRỄ
DELAY500MS
XUẤT SỐ 7 RA PORT
(P0) = 07H
GỌI CTC TẠO TRỄ
DELAY500MS
XUẤT SỐ 8 RA PORT
(P0) = 08H
GỌI CTC TẠO TRỄ
DELAY500MS

XUẤT SỐ 9 RA PORT
(P0) = 09H
GỌI CTC TẠO TRỄ
DELAY500MS
MAIN:
XUẤT SỐ 5 RA PORT
(P0) = 05H
GỌI CTC TẠO TRỄ
DELAY500MS
DELAY500MS
(XEM CTC NÀY TẠI VÍ DỤ A1)

;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H
MAIN:

MOV P0,#00H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#01H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#02H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#03H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#04H ;XUAT HIEN THI

LCALL DELAY500MS
MOV P0,#05H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#06H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#07H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#08H ;XUAT HIEN THI
LCALL DELAY500MS
MOV P0,#09H ;XUAT HIEN THI
LCALL DELAY500MS
SJMP MAIN
;****************************************************
B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu BCD)
Bài 2: Chương trình ñiều khiển hiển thị ñếm số BCD từ 0 lên 9 trên LED4 (LED4 ñược nối với Port0).
Giáo trình thực hành vi xử lý. 6 Biên soạn: Phạm Quang Trí
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0


JNB TF0,$

CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H
RET

END
• Cách 2:

;***************************************************
;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H
MAIN:

MOV A,#00H ;GIA TRI BAT DAU
LOOP:

MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS
INC A ;TANG GIA TRI

CJNE A,#10,LOOP ;GIA TRI KET THUC + 1
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H
RET

END
1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.

2 Bài tập:
• Bài 1:
Hãy viết chương trình ñiều khiển hiển thị số 3 trên LED1.
• Bài 2: Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 0 lên 5 trên LED2.
B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu BCD)
Bài 2: Chương trình ñiều khiển hiển thị ñếm số BCD từ 0 lên 9 trên LED4 (LED4 ñược nối với Port0).
Giáo trình thực hành vi xử lý. 7 Biên soạn: Phạm Quang Trí
• Bài 3: Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 5 xuống 0 trên LED2.
• Bài 4:
Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay ñổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 5:
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp khơng đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 3: Chương trình điều khiển hiển thị số 35 trên hai LED (LED5 và LED4 được nối với Port0).
Giáo trình thực hành vi xử lý. 8 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối cơng tắc và gạt tất cả
các cơng tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J14 (7SEG OUT 1) ở khối giải mã với J8 (7SEG4 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J17 (7SEG OUT 2) ở khối giải mã với J7 (7SEG5 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J16 (BCD IN 1-2) ở khối giải mã.
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn.
BCD IN

1-2
POWER
7 SEG
OUT 1
7 SEG
OUT 2
BCD IN
3-4
7 SEG
OUT 3
7 SEG
OUT 4
DEC.
2-4
DEC.
3-8
DEC. OUT
DEC.
2-4
DEC.
OUT
DEC.
OUT
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
3 3
8


1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD4
AD5
AD6
AD7
A1
B1
C1
D1
E1
F1
G1
A1
B1

C1
D1
E1
F1
G1
AD0
AD1
AD2
AD3
A2
B2
C2
D2
E2
F2
G2
A2
B2
C2
D2
E2
F2
G2
XTAL2
18
XTAL1
19
ALE
30
EA

31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4

5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10

23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN LED 7 ĐOẠN

(CẤU HÌNH KHÔNG ĐA HP, NGÕ VÀO BCD)
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
U2

74LS47
LED5
+5V
R11
56
R12
56
R13
56
R14
56
R15
56
R16
56
R17
56
A
7
QA
13
B
1
QB
12
C
2
QC
11
D

6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
U3
74LS47
R2
56
R3
56
R4
56
R5
56
R6
56
R7
56
R8

56
LED4
+5V
C3
10uF
R1
10k
+5V

B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu BCD)
Bài 3: Chương trình ñiều khiển hiển thị số 35 trên hai LED (LED5 và LED4 ñược nối với Port0).
Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.

;***************************************************

;CHUONG TRINH DIEU KHIEN HIEN THI SO 35 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H

MOV P0,#35H ;XUAT HIEN THI
SJMP $

END

1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.

2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)

B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu BCD)
Bài 4: Chương trình ñiều khiển hiển thị ñếm số BCD từ 00 lên 99 trên hai LED (LED5 và LED4 ñược nối với
Port0).
Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 3.
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 3.
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.

;***************************************************

;CHUONG TRINH DIEU KHIEN HIEN THI 00 -> 99 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H
MAIN:

MOV A,#00H ;GIA TRI BAT DAU
LOOP:

MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS


ADD A,#1 ;TANG GIA TRI
DA A
CJNE A,#00H,LOOP ;GIA TRI KET THUC + 1

SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H


RET

END

1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1:
Hãy viết chương trình ñiều khiển hiển thị số 53 trên hai LED.
• Bài 2:
Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3:
Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 59 xuống 00 trên hai LED.
• Bài 4: Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 00 lên 23 trên hai LED.
• Bài 5: Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 23 xuống 00 trên hai LED.
B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu BCD)
Bài 4: Chương trình ñiều khiển hiển thị ñếm số BCD từ 00 lên 99 trên hai LED (LED5 và LED4 ñược nối với
Port0).
Giáo trình thực hành vi xử lý. 11 Biên soạn: Phạm Quang Trí
• Bài 6: Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay ñổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7:
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
• ðể giãm giá trị trong thanh ghi A xuống một ñơn vị (theo kiểu BCD) ta có thể dùng tổ hợp lệnh sau:
ADD A,#99H ;GIAM GIA TRI / (A) = (A) – 1
CJNE A,#0FFH,ERROR ;KIEM TRA LOI 66H -> 65H
SETB C ;XU LY LOI (CHO CY = 1)


ERROR:
DA A

• Khi sử dụng tổ hợp lệnh giãm như trên cần phải lưu ý rằng:
o Nếu giá trị BCD kết thúc khác 00H (Ví dụ: XXH → 82H) thì so sánh với giá trị kết thúc – 1 (Ví
dụ trước: so sánh với 81H).
o Nếu giá trị BCD kết thúc bằng 00H (Ví dụ: XXH → 00H) thì so sánh với giá trị F0H (Ví dụ
trước: so sánh với F0H).




B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 đoạn được thiết kế theo phương pháp khơng đa hợp và ngõ vào dữ liệu kiểu BCD)
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED5 và LED4 được nối với Port1, LED7 và
LED6 được nối với Port0).
Giáo trình thực hành vi xử lý. 12 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối cơng tắc và gạt tất cả
các cơng tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J14 (7SEG OUT 1) ở khối giải mã với J8 (7SEG4 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J17 (7SEG OUT 2) ở khối giải mã với J7 (7SEG5 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J19 (7SEG OUT 3) ở khối giải mã với J6 (7SEG6 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J21 (7SEG OUT 4) ở khối giải mã với J5 (7SEG7 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J16 (BCD IN 1-2) ở khối giải mã.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J20 (BCD IN 3-4) ở khối giải mã.
• Dùng hai dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn và J36 (POWER) ở khối giải mã với nguồn
+5V ở khối nguồn.


1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
AD1
AD2
AD3
A1
B1
C1
D1
E1
F1
G1
AD4

AD5
AD6
AD7
A2
B2
C2
D2
E2
F2
G2
A2
B2
C2
D2
E2
F2
G2
A3
B3
C3
D3
E3
F3
G3
A4
B4
C4
D4
E4
F4

G4
A3
B3
C3
D3
E3
F3
G3
A4
B4
C4
D4
E4
F4
G4
P1.0
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6

P1.7
G1
F1
E1
D1
C1
B1
A1
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35

P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13

P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p

X1
12MHz
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN LED 7 ĐOẠN
(CẤU HÌNH KHÔNG ĐA HP, NGÕ VÀO BCD)
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6

QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
U2
74LS47
LED4
+5V
R11
56
R12
56
R13
56
R14
56
R15
56
R16
56

R17
56
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14

U3
74LS47
R2
56
R3
56
R4
56
R5
56
R6
56
R7
56
R8
56
LED5
+5V
A
7
QA
13
B
1
QB
12
C
2
QC
11

D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
U4
74LS47
R9
56
R10
56
R18
56
R19
56
R20
56
R21
56

R22
56
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14

U5
74LS47
R23
56
R24
56
R25
56
R26
56
R27
56
R28
56
R29
56
LED6
+5V
LED7
+5V
C3
10uF
R1
10k
+5V

B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu BCD)
Bài 5: Chương trình ñiều khiển hiển thị số 1234 trên bốn LED (LED5 và LED4 ñược nối với Port1, LED7 và
LED6 ñược nối với Port0).

Giáo trình thực hành vi xử lý. 13 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.

;***************************************************

;CHUONG TRINH DIEU KHIEN HIEN THI SO 1234 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0, PORT1.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H

MOV P0,#34H ;XUAT HIEN THI
MOV P1,#12H ;XUAT HIEN THI
SJMP $

END
1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 6)

B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu BCD)
Bài 6: Chương trình ñiều khiển hiển thị ñếm số BCD từ 0000 ñến 9999 trên bốn LED (LED5 và LED4 ñược nối
với Port1, LED7 và LED6 ñược nối với Port0).
Giáo trình thực hành vi xử lý. 14 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 5.
1.2 Sơ ñồ nguyên lý của hệ thống:

• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 5.
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.
NẠP GIÁ TRỊ BẮT ðẦU
(R0) = 00H - CHỤC/ðƠN VỊ
(R1) = 00H - NGÀN/TRĂM
BEGIN
GỌI CTC TẠO TRỄ
DELAY500MS
B6
NB
MAIN:
LOOP:
TĂNG GIÁ TRỊ CỦA DỮ LIỆU
(TĂNG THEO KIỂU DEC)
ADD / DA - (R0) - CHỤC/ðƠN VỊ
GIÁ TRỊ ≠ 00H (100H)
(CHƯA ðẾM XONG; ≤99)
ð
S
XUẤT DỮ LIỆU RA PORT
(P0) = (R0) - CHỤC/ðƠN VỊ
(P1) = (R1) - NGÀN/TRĂM
TĂNG GIÁ TRỊ CỦA DỮ LIỆU
(TĂNG THEO KIỂU DEC)
ADD / DA - (R1) - NGÀN/TRĂM
GIÁ TRỊ ≠ 00H (100H)
(CHƯA ðẾM XONG; ≤99)
ð
S


;***************************************************

;CHUONG TRINH DIEU KHIEN HIEN THI 0000 -> 9999 TREN LED 7 DOAN
;***************************************************
;KET NOI: 4 LED -> PORT0, PORT1.
;CHE DO: NON-MULTI, BCD IN, CA
;***************************************************
ORG 00H
MAIN:

MOV R0,#00H ;GIA TRI BAT DAU
MOV R1,#00H
LOOP:

MOV P0,R0 ;XUAT HIEN THI
MOV P1,R1
LCALL DELAY500MS

MOV A,R0
ADD A,#1 ;TANG GIA TRI (CHUC - DON VI)
DA A
MOV R0,A

CJNE A,#00H,LOOP ;KIEM TRA GIA TRI > 99 (GIA TRI KET THUC + 1)
MOV A,R1
ADD A,#1 ;TANG GIA TRI (TRAM - NGAN)
DA A
MOV R1,A

CJNE A,#00H,LOOP ;KIEM TRA GIA TRI > 99 (GIA TRI KET THUC + 1)

SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu BCD)
Bài 6: Chương trình ñiều khiển hiển thị ñếm số BCD từ 0000 ñến 9999 trên bốn LED (LED5 và LED4 ñược nối
với Port1, LED7 và LED6 ñược nối với Port0).
Giáo trình thực hành vi xử lý. 15 Biên soạn: Phạm Quang Trí
SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H

RET


END
1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1:
Hãy viết chương trình ñiều khiển hiển thị số 5678 trên bốn LED.
• Bài 2:
Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 0000 lên 5999 trên bốn LED.
• Bài 3:
Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 5999 xuống 0000 trên bốn LED.
• Bài 4:
Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 0000 lên 1234 trên bốn LED.
• Bài 5:
Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 1234 xuống 0000 trên bốn LED.
• Bài 6:
Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay ñổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7:
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
• ðể giãm giá trị trong thanh ghi A xuống một ñơn vị (theo kiểu BCD) ta có thể dùng tổ hợp lệnh sau:
ADD A,#99H ;GIAM GIA TRI / (A) = (A) – 1
CJNE A,#0FFH,ERROR ;KIEM TRA LOI 66H -> 65H
SETB C ;XU LY LOI (CHO CY = 1)

ERROR:
DA A

• Khi sử dụng tổ hợp lệnh giãm như trên cần phải lưu ý rằng:
o Nếu giá trị BCD kết thúc khác 00H (Ví dụ: XXH → 82H) thì so sánh với giá trị kết thúc – 1 (Ví

dụ trước: so sánh với 81H).
o Nếu giá trị BCD kết thúc bằng 00H (Ví dụ: XXH → 00H) thì so sánh với giá trị F9H (Ví dụ
trước: so sánh với F9H).
• Khi số ñếm ñược chứa trong nhiều thanh ghi khác nhau (như bài tập trên thì có 2 thanh ghi chứa giá trị
hàng ngàn/trăm và hàng chục/ñơn vị) thì ta cần phải nạp lại giá trị ban ñầu (0 cho trường hợp tăng và 9
cho trường hợp giãm) của thanh ghi chứa hàng thấp (Ví dụ trên: hàng chục/ñơn vi) trước khi tăng hoặc
giãm giá trị của hàng cao (Ví dụ trên: hàng ngàn/trăm). Tuy nhiên trong một số trường hợp ñặc biệt có thể
bỏ qua thao tác này do giá trị sau khi tăng hoặc giãm lại trùng với giá trị ban ñầu.



B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp khơng đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 1: Chương trình điều khiển hiển thị số 7 trên LED4 (LED4 được nối với Port0).
Giáo trình thực hành vi xử lý. 16 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối cơng tắc và gạt tất cả
các cơng tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J8 (7SEG4 IN) ở khối LED 7 đoạn.
• Dùng dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
3
8

1.2 Sơ đồ ngun lý của hệ thống:

AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
A
B
C
D
E
F
G
AD0 A
AD1 B
AD2 C
AD3 D
AD4 E
AD5 F
AD6 G

XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1

P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15

P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2
3
4
5
6
7

8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN LED 7 ĐOẠN
(CẤU HÌNH KHÔNG ĐA HP, NGÕ VÀO 7 ĐOẠN)
LED4
+5V
R4
56
R5
56
R6
56
R7
56
R8
56
R9
56
R10
56
C3
10uF
R1
10k
+5V


B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED 7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu 7 ñoạn)
Bài 1: Chương trình ñiều khiển hiển thị số 7 trên LED4 (LED4 ñược nối với Port0).
Giáo trình thực hành vi xử lý. 17 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.

;***************************************************

;CHUONG TRINH DIEU KHIEN HIEN THI SO 7 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H

MOV P0,#0F8H ;XUAT HIEN THI
SJMP $

END

1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 2)


B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED 7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu 7 ñoạn)
Bài 2: Chương trình ñiều khiển hiển thị ñếm số BCD từ 0 lên 9 trên LED4 (LED4 ñược nối với Port0).
Giáo trình thực hành vi xử lý. 18 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:

1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 1.
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 1.
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.
• Cách 1:

XUẤT MÃ CỦA SỐ 0 RA PORT
(P0) = C0H
BEGIN
GỌI CTC TẠO TRỄ
DELAY500MS
XUẤT MÃ CỦA SỐ 1 RA PORT
(P0) = F9H
GỌI CTC TẠO TRỄ
DELAY500MS
B2.1
N7
XUẤT MÃ CỦA SỐ 2 RA PORT
(P0) = A4H
GỌI CTC TẠO TRỄ
DELAY500MS
XUẤT MÃ CỦA SỐ 3 RA PORT
(P0) = B0H
GỌI CTC TẠO TRỄ
DELAY500MS
XUẤT MÃ CỦA SỐ 4 RA PORT
(P0) = 99H
GỌI CTC TẠO TRỄ
DELAY500MS

XUẤT MÃ CỦA SỐ 6 RA PORT
(P0) = 82H
GỌI CTC TẠO TRỄ
DELAY500MS
XUẤT MÃ CỦA SỐ 7 RA PORT
(P0) = F8H
GỌI CTC TẠO TRỄ
DELAY500MS
XUẤT MÃ CỦA SỐ 8 RA PORT
(P0) = 80H
GỌI CTC TẠO TRỄ
DELAY500MS
XUẤT MÃ CỦA SỐ 9 RA PORT
(P0) = 90H
GỌI CTC TẠO TRỄ
DELAY500MS
MAIN:
XUẤT MÃ CỦA SỐ 5 RA PORT
(P0) = 92H
GỌI CTC TẠO TRỄ
DELAY500MS
DELAY500MS
(XEM CTC NÀY TẠI VÍ DỤ A1)

;***************************************************

;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA

;***************************************************
ORG 00H
MAIN:

MOV P0,#0C0H ;XUAT HIEN THI
LCALL DELAY500MS

MOV P0,#0F9H ;XUAT HIEN THI
LCALL DELAY500MS

MOV P0,#0A4H ;XUAT HIEN THI
LCALL DELAY500MS

MOV P0,#0B0H ;XUAT HIEN THI
LCALL DELAY500MS

MOV P0,#99H ;XUAT HIEN THI
LCALL DELAY500MS

MOV P0,#92H ;XUAT HIEN THI
LCALL DELAY500MS

MOV P0,#82H ;XUAT HIEN THI
LCALL DELAY500MS

MOV P0,#0F8H ;XUAT HIEN THI
LCALL DELAY500MS

MOV P0,#80H ;XUAT HIEN THI
LCALL DELAY500MS


MOV P0,#90H ;XUAT HIEN THI
LCALL DELAY500MS

SJMP MAIN
;****************************************************
B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED 7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu 7 ñoạn)
Bài 2: Chương trình ñiều khiển hiển thị ñếm số BCD từ 0 lên 9 trên LED4 (LED4 ñược nối với Port0).
Giáo trình thực hành vi xử lý. 19 Biên soạn: Phạm Quang Trí
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0


DJNZ R0,LOOP2

POP 00H

RET

END
• Cách 2:
BEGIN
NẠP ðỊA CHỈ VÙNG MÃ 7 ðOẠN
(DPTR) = CODEDISP
B2.2
N7
NẠP GIÁ TRỊ BẮT ðẦU
(R0) = 00H
DISP:
MAIN:
NẠP DỮ LIỆU HIỂN THỊ
(A) = (R0)
GIẢI MÃ DỮ LIỆU HIỂN THỊ
(A) = (@A+DPTR)
XUẤT MÃ DỮ LIỆU RA PORT
(P0) = (A)
GỌI CTC TẠO TRỄ
DELAY500MS
TĂNG GIÁ TRỊ CỦA DỮ LIỆU
(R0) = (R0) + 1
GIÁ TRỊ ≠ 10 (0AH)
(CHƯA ðẾM XONG; ≤ 9)
ð

S
VÙNG DỮ LIỆU CODEDISP
C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H
DELAY500MS
(XEM CTC NÀY TẠI VÍ DỤ A1)

;***************************************************

;CHUONG TRINH DIEU KHIEN HIEN THI 0 -> 9 TREN LED 7 DOAN
;***************************************************
;KET NOI: 1 LED -> PORT0.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H
MAIN:

MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MOV R0,#00H ;VI TRI DU LIEU HIEN THI TRONG VUNG MA
DISP:

MOV A,R0 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT HIEN THI
LCALL DELAY500MS

INC R0
CJNE R0,#10,DISP ;KIEM TRA VI TRI DU LIEU > 9 (DEM XONG)
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS

PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$
B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED 7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu 7 ñoạn)
Bài 2: Chương trình ñiều khiển hiển thị ñếm số BCD từ 0 lên 9 trên LED4 (LED4 ñược nối với Port0).
Giáo trình thực hành vi xử lý. 20 Biên soạn: Phạm Quang Trí
CLR TR0

CLR TF0

DJNZ R0,LOOP2

POP 00H

RET
;****************************************************
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END

1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1:
Hãy viết chương trình ñiều khiển hiển thị số 3 trên LED2.
• Bài 2:
Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 0 lên 5 trên LED3.
• Bài 3:
Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 5 xuống 0 trên LED3.
• Bài 4:
Hãy viết chương trình ñiều khiển hiển thị ñếm số HEX từ 0 lên F trên LED0.
• Bài 5:
Hãy viết chương trình ñiều khiển hiển thị ñếm số HEX từ F xuống 0 trên LED0.
• Bài 6:
Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay ñổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 7:
Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.

B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp khơng đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 3: Chương trình điều khiển hiển thị số 35 trên hai LED (LED4 được nối với Port0, LED5 được nối với
Port1).
Giáo trình thực hành vi xử lý. 21 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối cơng tắc và gạt tất cả
các cơng tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J8 (7SEG4 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J7 (7SEG5 IN) ở khối LED 7 đoạn.

• Dùng dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
3
8

1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
AD1
AD2
AD3
AD4

AD5
AD6
G2
A2
B2
C2
D2
E2
F2
G2
A2
B2
C2
D2
E2
F2
A1
B1
C1
D1
E1
F1
G1
A1
G1
B1
C1
D1
E1
F1

XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1

P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15

P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2
3
4
5
6
7

8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN LED 7 ĐOẠN
(CẤU HÌNH KHÔNG ĐA HP, NGÕ VÀO 7 ĐOẠN)
R4
56
R5
56
R6
56
R7
56
R8
56
R9
56
R10
56
R2
56
R3
56
R11
56
R12
56

R13
56
R14
56
R15
56
LED5
+5V
C3
10uF
R1
10k
+5V
LED4
+5V

B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED 7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu 7 ñoạn)
Bài 3: Chương trình ñiều khiển hiển thị số 35 trên hai LED (LED4 ñược nối với Port0, LED5 ñược nối với
Port1).
Giáo trình thực hành vi xử lý. 22 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.

;***************************************************

;CHUONG TRINH DIEU KHIEN HIEN THI SO 35 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0, PORT1.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************

ORG 00H
MAIN:

MOV P0,#92H ;XUAT HIEN THI
MOV P1,#0B0H ;XUAT HIEN THI
SJMP $

END

1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 4)


B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED 7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu 7 ñoạn)
Bài 4: Chương trình ñiều khiển hiển thị ñếm số BCD từ 00 lên 99 trên hai LED (LED4 ñược nối với Port0,
LED5 ñược nối với Port1).
Giáo trình thực hành vi xử lý. 23 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Quá trình kết nối thiết bị thí nghiệm tương tự như Bài 3.
1.2 Sơ ñồ nguyên lý của hệ thống:
• Sơ ñồ nguyên lý của hệ thống tương tự như Bài 3.
1.3 Vẽ lưu ñồ giải thuật và viết chương trình ñiều khiển.
BEGIN
NẠP ðỊA CHỈ VÙNG MÃ 7 ðOẠN
(DPTR) = CODEDISP
B4
N7

NẠP GIÁ TRỊ BẮT ðẦU
(R0) = 00H - ðƠN VỊ
(R1) = 00H - CHỤC
DISP:
MAIN:
NẠP DỮ LIỆU HIỂN THỊ
(A) = (R0) - ðƠN VỊ
GIẢI MÃ DỮ LIỆU HIỂN THỊ
(A) = (@A+DPTR) - ðƠN VỊ
XUẤT MÃ DỮ LIỆU RA PORT
(P1) = (A) - CHỤC
GỌI CTC TẠO TRỄ
DELAY500MS
TĂNG GIÁ TRỊ CỦA DỮ LIỆU
(R0) = (R0) + 1 - ðƠN VỊ
GIÁ TRỊ ≠ 10 (0AH)
(CHƯA ðẾM XONG; ≤ 9)
ð
S
NẠP DỮ LIỆU HIỂN THỊ
(A) = (R1) - CHỤC
GIẢI MÃ DỮ LIỆU HIỂN THỊ
(A) = (@A+DPTR) - CHỤC
XUẤT MÃ DỮ LIỆU RA PORT
(P0) = (A) - ðƠN VỊ
KHỞI ðỘNG LẠI GIÁ TRỊ
(R0) = 00H - ðƠN VỊ
TĂNG GIÁ TRỊ CỦA DỮ LIỆU
(R1) = (R1) + 1 - CHỤC
GIÁ TRỊ ≠ 10 (0AH)

(CHƯA ðẾM XONG; ≤ 9)
ð
S
VÙNG DỮ LIỆU CODEDISP
C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H
DELAY500MS
(XEM CTC NÀY TẠI VÍ DỤ A1)

;***************************************************

;CHUONG TRINH DIEU KHIEN HIEN THI 00 -> 99 TREN LED 7 DOAN
;***************************************************
;KET NOI: 2 LED -> PORT0, PORT1.
;CHE DO: NON-MULTI, 7SEG IN (DP -> A), CA
;***************************************************
ORG 00H
MAIN:

MOV DPTR,#CODEDISP ;NAP DIA CHI VUNG MA HIEN THI
MOV R0,#00H ;VI TRI DU LIEU HIEN THI TRONG VUNG MA
MOV R1,#00H
DISP:

MOV A,R0 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P0,A ;XUAT HIEN THI (DON VI)
MOV A,R1 ;NAP VI TRI DU LIEU
MOVC A,@A+DPTR ;LAY MA HIEN THI
MOV P1,A ;XUAT HIEN THI (CHUC)
LCALL DELAY500MS

INC R0 ;TANG DON VI
B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED 7 ñoạn ñược thiết kế theo phương pháp không ña hợp và ngõ vào dữ liệu kiểu 7 ñoạn)
Bài 4: Chương trình ñiều khiển hiển thị ñếm số BCD từ 00 lên 99 trên hai LED (LED4 ñược nối với Port0,
LED5 ñược nối với Port1).
Giáo trình thực hành vi xử lý. 24 Biên soạn: Phạm Quang Trí
CJNE R0,#10,DISP ;KIEM TRA DON VI > 9 (DEM XONG)
MOV R0,#00H ;XOA DON VI (DON VI = 0)
INC R1 ;TANG CHUC
CJNE R1,#10,DISP ;KIEM TRA CHUC > 9 (DEM XONG)
SJMP MAIN
;****************************************************
DELAY500MS: ;CHUONG TRINH CON TAO THOI GIAN TRE 500MS
PUSH 00H

MOV R0,#100

MOV TMOD,#01H
LOOP2:

MOV TH0,#HIGH(-5000)

MOV TL0,#LOW(-5000)

SETB TR0

JNB TF0,$

CLR TR0


CLR TF0

DJNZ R0,LOOP2

POP 00H

RET
;****************************************************
CODEDISP: ;VUNG DU LIEU HIEN THI
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

END
1.4 Thực hiện lần lượt các bước từ 1.3 ñến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1:
Hãy viết chương trình ñiều khiển hiển thị số 53 trên hai LED.
• Bài 2:
Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 00 lên 59 trên hai LED.
• Bài 3:
Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 00 lên 23 trên hai LED.
• Bài 4:
Hãy viết chương trình ñiều khiển hiển thị ñếm số BCD từ 23 xuống 00 trên hai LED.
• Bài 5:
Hãy viết chương trình ñiều khiển hiển thị ñếm số HEX từ 00 lên FF trên hai LED.
• Bài 6:
Hãy viết chương trình ñiều khiển hiển thị ñếm số HEX từ AB xuống 00 trên hai LED.
• Bài 7:
Nếu trường hợp LED của ta là loại Cathode chung thì chương trình phải thay ñổi như thế nào? Tại
sao? Tiến hành mô phỏng thử xem sao?
• Bài 8:

Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
B. HỆ THỐNG ðIỀU KHIỂN LED 7 ðOẠN.
(Bộ hiển thị LED 7 đoạn được thiết kế theo phương pháp khơng đa hợp và ngõ vào dữ liệu kiểu 7 đoạn)
Bài 5: Chương trình điều khiển hiển thị số 1234 trên bốn LED (LED4 được nối với Port0, LED5 được nối với
Port1, LED6 được nối với Port2 và LED7 được nối với Port3).
Giáo trình thực hành vi xử lý. 25 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 8 nối J2 (SEL LED IN) ở khối LED 7 đoạn với J34 (SWITCH) ở khối cơng tắc và gạt tất cả
các cơng tắc ở vị trí ON (vị trí GND).
• Dùng dây bus 8 nối J63 (PORT0 / DATA) ở khối vi điều khiển với J5 (7SEG7 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J6 (7SEG6 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J65 (PORT2 / A8 A15) ở khối vi điều khiển với J7 (7SEG5 IN) ở khối LED 7 đoạn.
• Dùng dây bus 8 nối J66 (PORT3 / FUNCTION) ở khối vi điều khiển với J8 (7SEG4 IN) ở khối LED 7
đoạn.
• Dùng dây bus 3 nối J110 (POWER) ở khối LED 7 đoạn với nguồn +5V ở khối nguồn.
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
3
8

1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0
AD0
AD1
AD2

AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
A1
B1
C1
D1
E1
F1
G1
AD0
AD1
AD2
AD3
AD4
AD5
AD6
G2
A2
B2
C2
D2

E2
F2
G2
A2
B2
C2
D2
E2
F2
A3
A3
A4
A4
B3
C3
D3
E3
F3
G3
B4
C4
D4
E4
F4
G4
B3
C3
D3
E3
F3

G3
B4
C4
D4
E4
F4
G4
G1
A1
F1
E1
D1
C1
B1
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38

P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10

P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27

U1
AT89C51
C1
33p
C2
33p
X1
12MHz
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN LED 7 ĐOẠN
(CẤU HÌNH KHÔNG ĐA HP, NGÕ VÀO 7 ĐOẠN)
LED4
+5V
R4
56
R5
56
R6
56

R7
56
R8
56
R9
56
R10
56
R2
56
R3
56
R11
56
R12
56
R13
56
R14
56
R15
56
LED5
+5V
LED6
+5V
LED7
+5V
R16
56

R17
56
R18
56
R19
56
R20
56
R21
56
R22
56
R23
56
R24
56
R25
56
R26
56
R27
56
R28
56
R29
56
C3
10uF
R1
10k

+5V

×