BỘ GIÁO DỤC VÀ ĐÀO TẠO
THỰC HÀNH
VI ĐIỀU KHIỂN
Biên soạn:
ThS. Trần Viết Thắng
KS. Bùi Hữu Hiên
Tài Liệu Lưu Hành Tại HUTECH
www.hutech.edu.vn
THỰC HÀNH VI ĐIỀU KHIỂN
Ấn bản 2013
THỰC HÀNH VI ĐIỀU KHIỂN
I
MỤC LỤC
MỤC LỤC ......................................................................................I
TỔNG QUAN VỀ KIT THÍ NGIỆM VI ĐIỀU KHIỂN UP8951 ...................... II
BÀI 1: SỬ DỤNG TẬP LỆNH 8951 ................................................................................... 1
BÀI 2: LED 7 ĐOẠN VÀ BÀN PHÍM ................................................................................11
BÀI 3: TIMER 8951 & PPI8255A...................................................................................21
BÀI 4: NGẮT (INTERRUPT) ..........................................................................................33
BÀI 5: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC ............................................................................41
BÀI 6: ĐIỀU KHIỂN MA TRẬN LED ................................................................................46
BÀI 7: LCD TC1602A ....................................................................................................51
BÀI 8: ADC – DAC ........................................................................................................58
TÀI LIỆU THAM KHẢO ....................................................................
II
TỔNG QUAN VỀ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN uP8951
TỔNG QUAN VỀ KIT THÍ NGHIỆM
VI ĐIỀU KHIỂN uP8951
KIT thí nghiệm gồm 10 module bố trí như trên hình 1
1.1
MICROCONTROLLER WITH EXTERNAL RAM:
Là khối điều khiển trung tâm gồm một vi điều khiển AT89C51 có kết nối với RAM
ngoài và một vi điều khiển AT89C2051.
AT89C51 có thể chạy bằng bộ nhớ trong (internal memory dung lượng 4Kb) hoặc
chạy bằng bộ nhớ ngoài (external memory dung lượng 8Kb).
Các socket trên module này bao gồm:
TÊN
CHỨC NĂNG
JP7: P1_CPU
PORT 1, CPU 89C51
JP8: P3_CPU
PORT 3, CPU 89C51
JP3: P2_ADDRESS
PORT 2, CPU 89C51
JP1: DATA_CPU
PORT 0, CPU 89C51
JP2: DECODE2_LCD
PORT 0, CPU 89C51
JP4: DECODE1_8255
Tín hiệu giải mã cho PPI 8255A
JP3: P1_89C2051
PORT 1, CPU 89C2051
JP4: P3_89C2051
PORT 3, CPU 89C2051
THỰC HÀNH VI ĐIỀU KHIỂN
1.2
III
PPI 8255A:
Module giao tiếp song song, gồm các socket sau:
TÊN
1.3
CHỨC NĂNG
JP9: DATA_8255
DATA BUS, 8255A
JP10: CTRL_8255
Các tín hiệu điều khiển 8255A
JP11: PA_8255
PORT A, 8255A
JP12: PB_8255
PORT B, 8255A
JB13: PC1_8255
PORT C, 8255A
JB14: PC2_8255
PORT C, 8255A
COUNTER:
Gồm một socket:
JP15: COUNTER, cung cấp xung cho mạch đếm, dùng để mô phỏng cho bài thí
nghiệm đếm sản phẩm.
1.4
MATRIX LED 8x5:
Module ma trận LED 8 hàng, 5 cột, các bit hàng và cột đều tác dụng ở mức
cao, Các socket bao gồm:
TÊN
CHỨC NĂNG
JP24: DATA_MATRIX
8 ĐƯỜNG DATA MA TRẬN LED
JP25: CATHOD BLUE
5 ĐƯỜNG ĐIỀU KHIỂN CỘT LED XANH
JP26: CATHOD RED
5 ĐƯỜNG ĐIỀU KHIỂN CỘT LED ĐỎ
IV
1.5
TỔNG QUAN VỀ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN uP8951
LED _ LCD TC1602A:
Gồm 8 led đơn, 5 ly màu đỏ, tác dụng ở mức cao và một LCD TC1602A, module
gồm các socket sau:
TÊN
1.6
CHỨC NĂNG
JP27: DATA LED
8 BIT ĐIỀU KHIỂN LED ĐƠN
JP22: DATA LCD
8 BIT DATA CỦA LCD
JP23: CONTROL_LCD
ĐƯỜNG ĐIỀU KHIỂN ĐỌC/ GHI LCD
LED 7 ĐOẠN:
Module gồm 8 led 7 đoạn cathod chung, các đường DATA vào điều khiển đều tác
động ở mức cao. Các socket:
TÊN
1.7
CHỨC NĂNG
JP20: DATA_LED7S.
8 BIT DATA CỦA LED 7 ĐOẠN
JP21: CONTROL_LED7S
8 BIT ĐIỀU KHIỂN LED
STEP MOTOR:
Gồm một động cơ bước và mạch điều khiển, có một socket:
JP28: STEP_MOTOR, các đường điều khiển đều tác động ở mức cao.
1.8
CONTROL_KEYBOARD:
Gồm 4 phím nhấn, có một socket:
JP29: DATA_SW
1.9
DAC0808:
THỰC HÀNH VI ĐIỀU KHIỂN
V
Gồm một mạch DAC 8 bit sử dụng IC DAC0808, ngõ ra của mạch nối với một LED
5 ly, dung để điều khiển độ sang của LED theo giá trị số ở ngõ vào. Module có một
socket:
JP18: DATA_DAC, gồm 8 bit data của bộ biến đổi Số – Tương tự.
1.10 ADC0804:
Gồm một ADC 8 bit sử dụng IC ADC0804, ngõ vào tương tự là bộ cảm biến nhiệt
độ dùng LM335, module gồm hai socket:
TÊN
CHỨC NĂNG
JP16: DATA_ADC
8 BIT NGÕ RA SỐ
JP17: CONTROL_ADC
CÁC ĐƯỜNG TÍN HIỆU ĐIỀU KHIỂN
VI
TỔNG QUAN VỀ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN uP8951
SƠ ĐỒ NGUYÊN LÝ CÁC KHỐI:
U3
JP9
34
33
32
31
30
29
28
27
JP11
D0
D1
D2
D3
D4
D5
D6
D7
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
JP10
5
36
6
9
8
35
RD
WR
CS
A0
A1
RESET
18
19
20
21
22
23
24
25
1
2
3
4
5
6
7
8
14
15
16
17
13
12
11
10
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
8255
U1
JP7
P1_CPU
P3_CPU
17
16
15
14
13
12
11
10
U2
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
XTAL2
R67
C5
10p
33p
R19
ALE/PROG
PSEN
RESET
C6
EA/VPP
RST
XTAL1
9
18
21
22
23
24
25
26
27
28
U4
D0
D1
D2
D3
D4
D5
D6
D7
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
A0
A1
A2
A3
A4
A5
A6
A7
2
5
6
9
12
15
16
19
RESET SW
R28
100
10
9
8
7
6
5
4
3
25
24
21
23
2
A8
A9
A10
A11
A12
LE
OE
22
27
20
26
WR
6264
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
SN74LS374
D0
D1
D2
D3
D4
D5
D6
D7
11
12
13
15
16
17
18
19
1
2
3
4
5
6
7
8
JP3
OE
WE
CS1
CS2
VCC
1
2
3
4
5
6
7
8
A8
A9
A10
A11
A12
A13
A14
A15
1
2
3
4
5
6
7
8
RD
WR
Y2
A0
A1
JP4
(0000H - 1FFFH)
A13
A14
A15
VCC
10K
PSEN
1
RD
2
1
2
3
A
B
C
6
4
5
3
G1
G2A
G2B
10K
SW1
U6A
C7 10uF/50V
VCC
JP1
D0
D1
D2
D3
D4
D5
D6
D7
30
29
31
19
Y1
3
4
7
8
13
14
17
18
11
1
P3.7/RD
P3.6/WR
P3.5/T1
P3.4/T0
P3.3/I NT1
P3.2/I NT0
P3.1/TXD
P3.0/RXD
11,0592Mhz
JP8
D0
D1
D2
D3
D4
D5
D6
D7
39
38
37
36
35
34
33
32
JP14
DECODE1_8255
RD
WR
T1
T0
INT1
INT0
TXD
RXD
8
7
6
5
4
3
2
1
AT89C51
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
1
2
3
4
5
6
7
8
P2_ADDRESS
1
2
3
4
5
6
7
8
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
JP13
DATA_CPU
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
PC2_8255
PPI-8255A
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
JP12
PC1_8255
DECODE_8255
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
PB_8255
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
4
3
2
1
40
39
38
37
PA_8255
DATA_8255
1
2
3
4
5
6
7
8
1
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
15
14
13
12
11
10
9
7
74LS08
2
U5
74LS138
MEMORY SELECTION
VCC
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RN7
10K
RN6
D17
R62 2K2
RXD1
11
12
10
9
T1IN
R1OUT
T2IN
R2OUT
T2OUT
R2I N
7
8
TXD1
RXD1
Y2
11, 0592Mhz
5
4
1
C9
10uF
10uF
C11
10uF
10uF
C1+
C1C2+
C2V+
VMAX232
T1OUT
R1I N
14
13
1
6
2
7
3
8
4
9
5
DB9_1 (Female)
C10
1
3
4
5
2
6
PC INTERFACE
C8
C15
10p
C23
XTAL1
XTAL2
RST/VPP
8
6
P3.7
P3.5/T1
P3.4/T0
P3.3/INT1
P3.2/INT0
P3.1/TXD
P3.0/RXD
U6B
U6C
7408
7408
JP5
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1/AI N1
P1.0/AI N0
19
18
17
16
15
14
13
12
8
7
6
5
4
3
2
1
10
TXD1
11
9
8
7
6
3
2
9
2K2
1
6
2
7
3
8
4
9
5
U23
8
7
6
5
4
3
2
1
P1_89C2051
R61
U20
JP6
P1. 1
RXD
VCC
10K
5
TXD
RN5
4
2K2
10K
R64
270
P1. 0
R60
RN4
10K
DB9_2 (Male)
2K2
COMPORT 2051
R59
DATA LOAD
R63
270
1
2
3
4
5
6
7
8
9
9
8
7
6
5
4
3
2
1
RN3
10K
D19
READY
P3_89C2051
RN2
10K
1
2
3
4
5
6
7
8
9
RXD
TXD
INT0
INT1
T0
T1
WR
RD
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
D0
D1
D2
D3
D4
D5
D6
D7
A15
A14
A13
A12
A11
A10
A9
A8
VCC
RESET
10p
AT89C2051
Title
MICROCONTROLLER WITH EXTERNAL RAM
Size
B
Date:
Document Number
<Doc>
Monday , July 24, 2006
Rev
<Rev Code>
Sheet
1
of
1
VII
THỰC HÀNH VI ĐIỀU KHIỂN
R48
R50
VCC
270
8
R49
5
CV
6
2
104
LM555
R46
Q14
C828
47K
1
2
3
4
5
6
7
8
THR
TRG
4K7
3
OUT
C4
OPTO
2
DSCHG
LED
VCC
4
RST
7
1
D18
U18
4
2K7
5
R47
330
C3
470uF
J15
JP21
a
b
c
d
e
f
g
p
C1
7
6
4
2
1
9
10
5
3
C2
S1
S2
S3
S4
S5
S6
S7
S8
C2
LED8
C1
a
b
c
d
e
f
g
p
3
7
6
4
2
1
9
10
5
8
LED7
S1
S2
S3
S4
S5
S6
S7
S8
C2
C1
a
b
c
d
e
f
g
p
8
7
6
4
2
1
9
10
5
8
LED6
S1
S2
S3
S4
S5
S6
S7
S8
3
a
b
c
d
e
f
g
p
C2
7
6
4
2
1
9
10
5
C1
LED5
S1
S2
S3
S4
S5
S6
S7
S8
3
a
b
c
d
e
f
g
p
C2
7
6
4
2
1
9
10
5
8
LED4
S1
S2
S3
S4
S5
S6
S7
S8
C1
a
b
c
d
e
f
g
p
C2
7
6
4
2
1
9
10
5
8
LED3
S1
S2
S3
S4
S5
S6
S7
S8
C1
a
b
c
d
e
f
g
p
3
1OE
2OE
LED2
S1 7
S2 6
S3 4
S4 2
S5 1
S6 9
S7 10
S8 5
8
a
b
c
d
e
f
g
p
3
7
6
4
2
1
9
10
5
C1
S1
S2
S3
S4
S5
S6
S7
S8
C2
LED1
R20 150 X 8
18
16
14
12
9
7
5
3
8
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
3
74LS244
A1
A2
A3
A4
A5
A6
A7
A8
CONTROL_LED7S
1
19
U13
C2
2
4
6
8
11
13
15
17
C1
1
2
3
4
5
6
7
8
8
JP20
3
DATA_LED7S
COUNTER
U12
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
IN1
IN2
IN3
IN4
IN5
IN6
IN7
IN8
10
OUT1
OUT2
OUT3
OUT4
OUT5
OUT6
OUT7
OUT8
18
17
16
15
14
13
12
11
COM
VCC
ULN2803
5VDC
MLED1
A1013
A1013
104
15K
D27
8
D28
W7
104
A1013
5
D29
6
D30
9
W2
R38
270
W3
R39
270
D15
LED
D16
LED
LED
R40
270
R41
270
R42
270
R43
270
R44
270
R45
270
W8
A1013
1
2
3
4
5
6
7
8
1
2
13
12
10
U17
ULN2803
1
2
3
4
5
6
7
8
JP24
18
17
16
15
14
13
12
11
OUT 1
OUT 2
OUT 3
OUT 4
OUT 5
OUT 6
OUT 7
OUT 8
DATA_LED
COM
ULN2803
10
I N1
I N2
I N3
I N4
I N5
I N6
I N7
I N8
JP25
CATHOD BLUE
JP27
U15
1
2
3
4
5
6
7
8
10
COM
ULN2803
1
2
3
4
5
6
7
8
18
17
16
15
14
13
12
11
U14
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
10
1
2
3
4
5
6
7
8
D14
LED
W7
OUT 1
OUT 2
OUT 3
OUT 4
OUT 5
OUT 6
OUT 7
OUT 8
ULN2803
COM
IN1
IN2
IN3
IN4
IN5
IN6
IN7
IN8
OUT1
OUT2
OUT3
OUT4
OUT5
OUT6
OUT7
OUT8
U16
10K
DATA_MATRIX
D13
LED
W6
15K
104
D12
W5
Q11
C33
LED
W4
W1
W2
W3
W4
W5
W6
W7
W8
1
2
3
4
5
6
7
8
9
RN1
14
B1
B2
B3
B4
B5
C34
17
D26
D11
COM
Q12
D25
I N1
I N2
I N3
I N4
I N5
I N6
I N7
I N8
12VDC
R36
15K
1
2
3
4
5
6
7
8
JP23
CONTROL_LCD
104
15
Q9
C31
A1013
D24
LED
W1
18
17
16
15
14
13
12
11
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
A1013
W5
16
10
R37
W8
VCC
R34
15K
Q10
C32
10K
Q13
JP22
104
D10
LED
D23
15K
Q7
C29
D9
MATRIX LED 8x5
4007 X 8
18
17
16
15
14
13
12
11
W6
R65
5/3W
DATA_LCD
A1013
OUT1
OUT2
OUT3
OUT4
OUT5
OUT6
OUT7
OUT8
R35
4K7
W3
A1013
104
104
IN1
IN2
IN3
IN4
IN5
IN6
IN7
IN8
LAMP
C30
15K
Q5
C27
R32
15K
Q8
A
K
VCC
GND
W4
VCC
R66
W1
A1013
104
15
16
2
CS
R/W
RS
CONST
1
3
6
5
4
D0
D1
D2
D3
D4
D5
D6
D7
7
8
9
10
11
12
13
14
R33
R10
R30
15K
Q6
C28
R1
R2
R3
R4
R5
R31
W2
THIS IS THE LCD
2 LINES x 16 CHARACTERS
18
3
4
7
11
LCD1
Title
JP26
CATHOD RED
MATRIX 8x5 AND LCD
Size
B
Date:
Document Number
<Doc>
Monday , July 24, 2006
Rev
<Rev Code>
Sheet
1
of
1
VIII
TỔNG QUAN VỀ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN uP8951
VCC
VCC
MG1
R18
270
D5
D6
D7
D8
LED4
LED3
LED2
1
2
3
D2
4007
STEP_MOTOR
D3
4007
D4
4007
4007
4K7
Q1
TIP122
JP28
1
2
3
4
5
6
7
8
MOTOR STEPPER
LED1
D1
R11
6
R17
220
5
R16
270
4
R15
270
R12
4K7
R13
4K7
R14
4K7
Q2
TIP122
Q3
TIP122
Q4
TIP122
INC
DEC
MODE
ENTER
C19
C20
C21
C22
101
101
101
101
JP29
DATA_SW
1
2
3
4
5
6
7
8
IX
THỰC HÀNH VI ĐIỀU KHIỂN
-12VDC
R29
VCC
10
VCC
3
13
R53
2
Iout
U22B
4
15
R69
R51
2K7
D21
6
JR4558
1
5
R55
2K7
R58
150
R68
270
JR4558
7
R57
2K7
10K
R54
5V1
C16
CAP
4
U22A
2
820
VCC
8
R52 10
2K7
8
VCC
VREF-
R56
4
Iout
VREF+
LED
3
+12VDC
D22
104
16
COMPS
4007
100uF
C14
VEE
14
DATA_DAC
GND
+
D0
D1
D2
D3
D4
D5
D6
D7
D20
C12
104
-
12
11
10
9
8
7
6
5
C13
1
+
JP18
8
7
6
5
4
3
2
1
DAC0808
-
U21
JP19
C17
5K
2
1
104
DAC_OUT
VCC
R5 1K
R4
1K
R6 1K
VCC
C2
VCC
6
7
9
1K
19
4
8
4
R1
U8A
8
-VCC
VCC
R9
C1
JR4558
3 +
1K
U7
7
6 -
GND
LM35
100uF/25V
JR4558
+
1
R7
1K
ADJ
U9
U8B
5
1nF
2
3
1
+IN
-IN
VREF/2
CLKR
CLKIN
RD
WR
CS
1
JP16
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
INTR
18
17
16
15
14
13
12
11
5
1
2
3
4
5
6
7
8
DATA_ADC
3
VCC
VS+
2
R3 470K
VCC
R2
10K
2 4
ADC0804
-VCC
JP17
1
2
3
4
5
6
7
8
CONTROL_ADC
R8
1K
THỰC HÀNH VI ĐIỀU KHIỂN
1
BÀI 1: SỬ DỤNG TẬP LỆNH
8051
1.1 MỤC ĐÍCH YÊU CẦU:
Giúp sinh viên làm quen với thiết bị và tìm hiểu một số nhóm lệnh quan trọng
trong tập lệnh của họ 8051
1.2 CHUẨN BỊ THÍ NGHIỆM:
-
Bộ thí nghiệm DHC_uPC8951
-
Máy tính
-
Kiểm tra cable truyền
-
Xem các module: microcontroller, led đơn
1.3 TIẾN TRÌNH THÍ NGHIỆM:
1.3.1 Nhóm lệnh di chuyển dữ liệu, lệnh nhảy:
a) Nối mạch thí nghiệm:
Nối JP7: P1_CPU trên module Microcontroler với JP27: DATA_LED trên module
LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P1.0 đến P1.7, các led đều
tác động ở mức cao.
b) Viết các chương trình ứng dụng:
Chương trình 1.1: Chớp tắt 8 led vô hạn lần.
MAIN:
MOV
P1,#0FFH
CALL
DELAY
; P1 <- 11111111B, các led đều sáng
; gọi chương trình trì hoãn DELAY
2
BÀI 1: SỬ DỤNG TẬP LỆNH 8051
MOV
P1,#00H ; P1 <- 00000000B, các led đều tắt
CALL
DELAY
LJMP
MAIN
; nhảy đến MAIN để lập lại quá trình vô hạn
PUSH
06
; cất nội dung R6 vào ngăn xếp
PUSH
07
; cất nội dung R7 vào ngăn xếp
MOV
R6,#255
MOV
R7,#255
DJNZ
R7,$
DJNZ
R6, LAP
POP
07
; lấy lại giá trị cũ của R7 trong ngăn xếp
POP
06
; lấy lại giá trị cũ của R0 trong ngăn xếp
DELAY:
LAP:
RET
; X: DJNZ R7,X
; kết thúc chương trình con
END
NHẮC LẠI:
DJNZ
Ri, <NHÃN>: Ri là một trong các thanh ghi từ R0 -> R7, lệnh giảm nội
dung thanh ghi Ri một đơn vị, nếu Ri > 0 thì nhảy đến NHÃN chỉ định, ngược lại sẽ
chuyển sang thực hiện kế tiếp.
Chương trình 1.2: giống nội dung chương trình 01 nhưng lặp lại quá trình 10 lần.
HƯỚNG DẪN:
MOV
NHÃN:
LỆNH 1
LỆNH 2
.
Ri, # <SỐ LẦN LẶP (1->255)>
THỰC HÀNH VI ĐIỀU KHIỂN
.
LỆNH n
DJNZ
Ri,<NHÃN>
CHƯƠNG TRÌNH:
MOV
R7,#10
MAIN:
MOV
P1,#0FFH
; P1 <- 11111111B, các led đều sáng
CALL
DELAY
; gọi chương trình trì hoãn DELAY
MOV
P1,#00H
; P1 <- 00000000B, các led đều tắt
CALL
DELAY
DJNZ
R7,MAIN
SJMP
$
; “dừng chương trình”
PUSH
06
; cất nội dung R6 vào ngăn xếp
PUSH
07
; cất nội dung R7 vào ngăn xếp
MOV
R6,#255
MOV
R7,#255
DJNZ
R7,$
DJNZ
R6, LAP
DJNZ
R6, LAP
POP
07
; lấy lại giá trị cũ của R7 trong ngăn xếp
POP
06
; lấy lại giá trị cũ của R0 trong ngăn xếp
DELAY:
LAP:
RET
END
; X: DJNZ R7,X
; kết thúc chương trình con
3
4
BÀI 1: SỬ DỤNG TẬP LỆNH 8051
c) BÀI TẬP SV:
Chương trình 1.3: Hiển thị 1 led sáng, dịch dần từ D1 đến D8 vô hạn lần.
Chương trình 1.4: Hiển thị 1 led sáng, dịch dần từ D8 đến D1 với số lần lặp là 6.
1.3.2 Nhóm lệnh quay vòng:
a) Nối mạch thí nghiệm:
Nối JP7: P3_CPU trên module Microcontroler vôùi JP27: DATA_LED trên module
LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P3.0 đến P3.7, các led đều
tác động ở mức cao.
b) Viết các chương trình ứng dụng:
Chương trình 1.5: viết chương trình dịch một led sáng từ D1 D8:
MAIN:
MOV
A,#01H
BEGIN:
MOV
P3,A
RL
A
CALL
DELAY
LJMP
BEGIN
DELAY:
PUSH
06
; cất nội dung R6 vào ngăn xếp
PUSH
07
; cất nội dung R7 vào ngăn xếp
MOV
R6,#255
MOV
R7,#255
DJNZ
R7,$
DJNZ
R6, LAP
POP
07
LAP:
; X: DJNZ R7,X
; lấy lại giá trị cũ của R7 trong ngăn xếp
THỰC HÀNH VI ĐIỀU KHIỂN
POP
06
RET
; lấy lại giá trị cũ của R0 trong ngăn xếp
; kết thúc chương trình con
END
Chương trình 1.6: viết chương trình dịch một led sáng từ D8 D1:
MAIN:
MOV
A,#80H
BEGIN:
MOV
P3,A
RR A
CALL
DELAY
LJMP
BEGIN
DELAY:
PUSH
06
; cất nội dung R6 vào ngăn xếp
PUSH
07
; cất nội dung R7 vào ngăn xếp
MOV
R6,#255
MOV
R7,#255
DJNZ
R7,$
DJNZ
R6, LAP
POP
07
; lấy lại giá trị cũ của R7 trong ngăn xếp
POP
06
; lấy lại giá trị cũ của R0 trong ngăn xếp
LAP:
RET
END
; X: DJNZ R7,X
; kết thúc chương trình con
5
6
BÀI 1: SỬ DỤNG TẬP LỆNH 8051
Chương trình 1.7: viết chương trình sáng dần các led từ D1 D8:
MAIN:
MOV
A,#01H
BEGIN:
SETB
C
MOV
P3, A
RLC
A
CALL
DELAY
JNC
BEGIN
LJMP
MAIN
DELAY:
PUSH
06
; cất nội dung R6 vào ngăn xếp
PUSH
07
; cất nội dung R7 vào ngăn xếp
MOV
R6,#255
MOV
R7,#255
DJNZ
R7,$
DJNZ
R6, LAP
POP
07
; lấy lại giá trị cũ cuûa R7 trong ngăn xếp
POP
06
; lấy lại giá trị cũ của R0 trong ngăn xếp
LAP:
RET
; X: DJNZ R7,X
; kết thúc chương trình con
END
Chương trình 1.8: viết chương trình sáng dần các led từ D8 D1:
MAIN:
MOV
A,#80H
THỰC HÀNH VI ĐIỀU KHIỂN
7
BEGIN:
SETB
C
MOV
P3, A
RRC
A
CALL
DELAY
JNC
BEGIN
LJMP
MAIN
DELAY:
PUSH
06
; cất nội dung R6 vào ngăn xếp
PUSH
07
; cất nội dung R7 vào ngăn xếp
MOV
R6,#255
MOV
R7,#255
DJNZ
R7,$
DJNZ
R6,LAP
POP
07
; lấy lại giá trị cũ của R7 trong ngăn xếp
POP
06
; lấy lại giá trị cũ của R0 trong ngăn xếp
LAP:
RET
; X: DJNZ
R7,X
; kết thúc chương trình con
END
c) BÀI TẬP SV:
Chương trình 1.9: viết chương trình tắt dần các led từ D1 D8.
Chương trình 1.10: viết chương trình tắt dần các led từ D8 D1.
Chương trình 1.11: viết chương trình tắt dần các led từ D8 D1, thực hiện lặp
lại 20 lần.
8
BÀI 1: SỬ DỤNG TẬP LỆNH 8051
1.3.3 Nhóm lệnh toán học:
a) Nối mạch thí nghiệm:
Nối JP7: P3_CPU trên module Microcontroler vôi JP27: DATA_LED trên module
LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P3.0 đến P3.7, các led đều
tác động ở mức cao.
b) Viết các chương trình ứng dụng:
Chương trình 1.12: Viết chương trình cộng 2 số sau: 12 + 34, hiển thị kết quả
trên các led.
MAIN:
MOV
A,#12
ADD
A,#34
MOV
P3,A
SJMP
$
END
Chương trình 1.13: Viết chương trình cộng 2 số sau: 12 + 34, hiển thị kết quả
trên các led.
MAIN:
MOV
A,#12
SETB
C
ADDC
A,#34
MOV
P3,A
SJMP
$
END
So sánh kết quả của chương trình 1 và chương trình 2.
Chương trình 1.14: Viết chương trình chia 2 số 17 cho 3, hiển thị kết quả (phần
nguyên) trên các led.
THỰC HÀNH VI ĐIỀU KHIỂN
9
MAIN:
MOV
A,#17
MOV
B,#3
DIV
AB
MOV
P3,A
SJMP
$
END
Chương trình 1.15: Viết chương trình chia 2 số 17 cho 3, hiển thị kết quả (phần
dư) trên các led.
MAIN:
MOV
A,#17
MOV
B,#3
DIV
AB
MOV
P3,B
SJMP
$
END
Chương trình 1.16: Viết chương trình nhân
(byte thấp) trên các led.
MAIN:
END
MOV
A,#7
MOV
B,#14
MUL
AB
MOV
P3,A
SJMP
$
2 số 23 cho 14, hiển thị kết quả
10
BÀI 1: SỬ DỤNG TẬP LỆNH 8051
Chương trình 1.17: Viết chương trình nhân
(byte cao) trên các led.
MAIN:
END
MOV
A,#7
MOV
B,#14
MUL
AB
MOV
P3,B
SJMP
$
2 số 23 cho 14, hiển thị kết quả
THỰC HÀNH VI ĐIỀU KHIỂN
11
BÀI 2: LED 7 ĐOẠN & BÀN
PHÍM
2.1 MỤC ĐÍCH YÊU CẦU:
Giúp sinh viên tìm hiểu cách hiển thị thông tin trên led 7 đoạn bằng phương
pháp quét và xử lý thông tin trên bàn phím điều khiển.
2.2 CHUẨN BỊ THÍ NGHIỆM:
-
Bộ thí nghiệm DHC_uPC8951
-
Máy tính
-
Kiểm tra cable truyền
-
Xem sơ đồ mạch điều khiển led 7 đoạn và bàn phím
-
74244 là IC đệm một chiều 8 bit với ngõ vào là Ai và ngõ ra là Yi tương ứng:
OE
AI
YI
1
X
Z
0
0
0
0
1
1
X: mức logic 1 hoặc 0
Z: trạng thái cách ly (tổng trở cao)
-
2803 là IC đệm đảo công suất, bên trong gồm một dãy 8 transistor có cấu
trúc như sau:
OUT1
IN1
GND
12
BÀI 2: LED 7 ĐOẠN & BÀN PHÍM
Dòng điện IC cực đại là 500mA, chân GND của 8 transistor được nối chung và đưa
ra tại chân số 9 của IC.
-
LED 7 đoạn dung trong mạch là loại cathod chung có cấu trúc như sau:
point
g
f
e
d
c
b
a
a
f
b
g
e
c
d
point
COM
INC
DEC
MODE
ENTER
C19
C20
C21
C22
101
101
101
101
JP29
JP21
U12
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
10
IN1
IN2
IN3
IN4
IN5
IN6
IN7
IN8
OUT1
OUT2
OUT3
OUT4
OUT5
OUT6
OUT7
OUT8
18
17
16
15
14
13
12
11
COM
ULN2803
2.3 TIẾN TRÌNH THÍ NGHIỆM:
a) Nối mạch thí nghiệm:
-
Nối JP29(DATA_SW) của bàn phím với P3_CPU (port 3 8951)
-
Nối P1_CPU với JP20 (DATA_LED7S)
-
Nối P2_ADDRESS với JP21 (CONTROL_LED7S)
C2
a
b
c
d
e
f
g
p
8
7
6
4
2
1
9
10
5
3
S1
S2
S3
S4
S5
S6
S7
S8
C1
LED8
C2
a
b
c
d
e
f
g
p
8
7
6
4
2
1
9
10
5
3
S1
S2
S3
S4
S5
S6
S7
S8
C1
LED7
C2
a
b
c
d
e
f
g
p
8
7
6
4
2
1
9
10
5
C1
LED6
S1
S2
S3
S4
S5
S6
S7
S8
3
a
b
c
d
e
f
g
p
C2
7
6
4
2
1
9
10
5
C1
LED5
S1
S2
S3
S4
S5
S6
S7
S8
8
a
b
c
d
e
f
g
p
3
7
6
4
2
1
9
10
5
C2
LED4
S1
S2
S3
S4
S5
S6
S7
S8
C1
a
b
c
d
e
f
g
p
8
7
6
4
2
1
9
10
5
3
LED3
S1
S2
S3
S4
S5
S6
S7
S8
C2
a
b
c
d
e
f
g
p
C1
LED2
S1 7
S2 6
S3 4
S4 2
S5 1
S6 9
S7 10
S8 5
8
a
b
c
d
e
f
g
p
3
7
6
4
2
1
9
10
5
C2
LED1
S1
S2
S3
S4
S5
S6
S7
S8
1OE
2OE
CONTROL_LED7S
1
19
R20 150 X 8
18
16
14
12
9
7
5
3
8
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
C1
74LS244
A1
A2
A3
A4
A5
A6
A7
A8
3
U13
2
4
6
8
11
13
15
17
C2
1
2
3
4
5
6
7
8
8
JP20
3
DATA_LED7S
C1
DATA_SW
1
2
3
4
5
6
7
8