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

THỰC HÀNH VI ĐIỀU KHIỂ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 (751.07 KB, 76 trang )

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


×