Tài liệu Đề tài Tổng quan về kit thí nghiệm vi điều khiển μp8951: Phòng thí nghiệm Tự động hoá – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 1
TỔNG QUAN VỀ KIT THÍ NGHIỆM VI
ĐIỀU KHIỂN μP8951
I. KIT KTCT_μp8951:
KIT thí nghiệm gồm 10 module được bố trí như trên hình 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ó nối kết 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
2/- PPI 8255A:
Module giao tiếp song song, gồm các socket sau:
TÊN CHỨC NĂNG
JP9: DATA_8255 DATA BUS, 8255A
JP10:...
58 trang |
Chia sẻ: ntt139 | Lượt xem: 1006 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Tổng quan về kit thí nghiệm vi điều khiển μp8951, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 1
TỔNG QUAN VỀ KIT THÍ NGHIỆM VI
ĐIỀU KHIỂN μP8951
I. KIT KTCT_μp8951:
KIT thí nghiệm gồm 10 module được bố trí như trên hình 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ĩ nối kết với
RAM ngồ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ớ ngồ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
2/- PPI 8255A:
Module giao tiếp song song, gồm các socket sau:
TÊN 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
Phịng thí nghiệm
Tự động hố – Vi điều khiển
Tài liệu thí nghiệm
Vi điều khiển
Trang 2
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 3
3/- 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.
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 động ở mức
cao . Các socket bao gồm:
TÊN CHỨC NĂNG
JP24: DATA_MATRIX 8 ĐƯỜNG DATA MATRẬ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 ĐỎ
5/- LED _ LCD TC1602A:
Gồm 8 led đơn, 5 ly màu đỏ, tác động ở mức cao và một LCD TC1602A,
module gồm các socket sau:
TÊN 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
6/- LED 7 ĐOẠN:
Module gồm 8 led 7 đoạn cathod chung, các đường DATA và điều khiển đều
tác động ở mức cao. Các socket:
TÊN 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
7/- 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 tác động cao.
8/- CONTROL_KEYBOARD:
Gồm 4 phím nhấn, cĩ một socket:
JP29: DATA_SW
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 4
9/- DAC0808:
Gồm một mạch DAC 8 bit sử dụng IC DAC0808, ngõ ra của mạch được nối với
một LED 5 ly, dùng để điều khiển độ sáng 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ự.
10/- ADC0804:
Gồm mộ 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 2 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
II. SƠ ĐỒ NGUYÊN LÝ CÁC KHỐI:
D4
JP1
D
A
TA
_C
PU
1
2
3
4
5
6
7
8
C6
33p
VCC
D
1
A11
A5
A0
VCC
A8
INT1
Y7
D6D6
A
9
W
R
R
X
D
P
1
.
1
R64
270
RD
D2
U5 74LS138
1
2
3
15
14
13
12
11
10
9
7
6
4
5
A
B
C
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
G1
G2A
G2B
P
1
.
0
JP7
P
1
_
C
P
U
1
2
3
4
5
6
7
8
D
7
R61 2K2
A15
U6A 74LS08
1
2
3
T
1
P1.0
A14
RD
A9
RESET
A10
C8
10uF
Y2
11,0592Mhz
PSEN
RN6 10K
1 2 3 4 5 6 7 8 9
MICROCONTROLLER WITH EXTERNAL RAM
B
1 1Monday , July 24, 2006
Title
Size Document Number Rev
Date: Sheet of
T1
TXD1
WR
P
1
.
2
A1
JP5
P1_89C
20511
2
3
4
5
6
7
8
A
1
5
Y5
P1.7
Y3
D2
U23
AT89C2051
1
5
4
12
13
14
15
16
17
18
19
2
3
6
7
8
9
11
RST/VPP
XTAL1
XTAL2
P1.0/AIN0
P1.1/AIN1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.7
JP4DEC
O
D
E1_8255
1
2
3
4
5
6
7
8
Y4
Y1
11,0592Mhz
R62 2K2
RXD
Y1
A8
A12
C9
10uF
P1.3
A
1
1
P
1
.
3
TXD1
P1.5
P1.6
TXD
(0000H - 1FFFH)
R
D
Y8
RN3 10K
1 2 3 4 5 6 7 8 9
A13
R60 2K2
D17
READY
PC INTERFACE
A3
A15
D
0
A7
VCC
A
1
2
JP3
P2_A
D
D
R
ESS
1
2
3
4
5
6
7
8
A13
COMPORT 2051
A12
I
N
T
1
U6C
7408
9 1
0
8
Y2
A
1
4
D
4
D1
I
N
T
0
VCC
A14
R63
270
A
1
3
P
1
.
0
D5
A11
D
B
9_2 (M
ale)
5
9
4
8
3
7
2
6
1
A1
RXD1
D19
DATA LOAD
P
1
.
7
T0
RXD
D
B
9_1 (F
em
ale)
5
9
4
8
3
7
2
6
1
R19 100
A10
INT0
D
5
U6B
7408
4 5
6R59 2K2
VCC
C15
10p
D7
A4P1.4
C10
10uF
C5
10p
D
3
D
6
A2
Y6
D4
A6
P
1
.
4
RN4 10K
1 2 3 4 5 6 7 8 9
RN7 10K
123456789
T
X
D
SW1
MEMORY SELECTION
1 2C7 10uF/50V
RN5 10K
1 2 3 4 5 6 7 8 9
R
E
S
E
T
A0
U20
MAX232
1
3
4
5
2
6
12
9
11
10
13
8
14
7
C1+
C1-
C2+
C2-
V+
V-
R1OUT
R2OUT
T1IN
T2IN
R1IN
R2IN
T1OUT
T2OUT
P1.2
D7
P
1
.
1
D5
U2
SN74LS374
3
4
7
8
13
14
17
18
1
11
2
5
6
9
12
15
16
19
D0
D1
D2
D3
D4
D5
D6
D7
OE
LE
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
WR
P1.1
P
1
.
6
TXD
R28 10K
D
2
P
1
.
5
U1 AT89C51
9
18
19
29
30
3
1
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
39
38
37
36
35
34
33
32
R
S
T
XTAL2
XTAL1
PSEN
ALE/PROG
E
A
/
V
P
P
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
RESET SW
JP6
P
3
_
8
9
C
2
0
5
1
1
2
3
4
5
6
7
8
C23
10p
RXD1
D3
A
8
A
1
0
D3
WR
Y2
JP8
P
3
_
C
P
U
1
2
3
4
5
6
7
8
VCC
D0
D1
C11
10uF
T
0
A9
D0
U4 6264
10
9
8
7
6
5
4
3
25
24
21
23
2
11
12
13
15
16
17
18
19
22
27
20
26
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
D0
D1
D2
D3
D4
D5
D6
D7
OE
WE
CS1
CS2
RD
R67 10K
RN2 10K
1 2 3 4 5 6 7 8 9
Phịng thí nghiệm
Tự động hố – Vi điều khiển
Tài liệu thí nghiệm
Vi điều khiển
Trang 5
PPI-8255A
PC2
PC7
PC5
PC3
JP12
PB
_8255
1
2
3
4
5
6
7
8
PC1
PC2
PC5
JP14
PC
2_8255
1
2
3
4
5
6
7
8
PC4
PC6
PC7
PC4
PC0
PC3
PC6
PC1
JP10D
EC
O
D
E_8255
1
2
3
4
5
6
7
8
JP11
PA
_8255
1
2
3
4
5
6
7
8
PC0
JP9
D
A
TA
_8255
1
2
3
4
5
6
7
8
U3
8255
34
33
32
31
30
29
28
27
4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10
5
36
9
8
35
6
D0
D1
D2
D3
D4
D5
D6
D7
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
RD
WR
A0
A1
RESET
CS
JP13
PC
1_8255
1
2
3
4
5
6
7
8
VCC
U18
LM555
3
4 8
5
2
6
7
OUT
R
S
T
V
C
C
CV
TRG
THR
DSCHG
C4
104
R48 330
C3
470uF
D18
LED
Q14
C828
J15 COUNTER
1 2 3 4 5 6 7 8
OPTO
2
1
5
4
R46 47K
R50 270
R49 4K7
R47 2K7
Phịng thí nghiệm
Tự động hố – Vi điều khiển
Tài liệu thí nghiệm
Vi điều khiển
Trang 6
S5
JP21
C
O
N
T
R
O
L
_
L
E
D
7
S
1
2
3
4
5
6
7
8
S1
S3
D25
D16
LED
R43
270
S5
W1
U16
ULN2803
1
0
1 2 3 4 5 6 7 8
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
C
O
M
I
N
1
I
N
2
I
N
3
I
N
4
I
N
5
I
N
6
I
N
7
I
N
8
O
U
T
1
O
U
T
2
O
U
T
3
O
U
T
4
O
U
T
5
O
U
T
6
O
U
T
7
O
U
T
8
D26
S5
R37 15K
S6
S1
S5
W4
Q12
A1013
R39
270
S2
MATRIX LED 8x5
MLED1
1 2 1
3
1
2
1
0
1
8
3 4 7 1
1
16
15
17
14
8
5
6
9
B
1
B
2
B
3
B
4
B
5
R
1
R
2
R
3
R
4
R
5
W1
W2
W3
W4
W5
W6
W7
W8
S2
R42
270
D12
LED
D23
S8
S7
S8
W8
VCC
D27
JP24
DATA_MATRIX
1 2 3 4 5 6 7 8
W7
S1
4007 X 8
S3
RN1
10K
1 2 3 4 5 6 7 8 9
R32 15K
Q7
A1013
S7
R44
270
S6
S5
D30
JP22DATA_LCD
1 2 3 4 5 6 7 8
S7
S2
LED8
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
JP26
CATHOD RED
1 2 3 4 5 6 7 8
W4
S3
R65
5/3W
D13
LED
S2
S5
W6
S4
R41
270
U14
ULN2803
1
0
1 2 3 4 5 6 7 8
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
C
O
M
I
N
1
I
N
2
I
N
3
I
N
4
I
N
5
I
N
6
I
N
7
I
N
8
O
U
T
1
O
U
T
2
O
U
T
3
O
U
T
4
O
U
T
5
O
U
T
6
O
U
T
7
O
U
T
8
U17
ULN2803
1
0
1 2 3 4 5 6 7 8
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
C
O
M
I
N
1
I
N
2
I
N
3
I
N
4
I
N
5
I
N
6
I
N
7
I
N
8
O
U
T
1
O
U
T
2
O
U
T
3
O
U
T
4
O
U
T
5
O
U
T
6
O
U
T
7
O
U
T
8
W5
D29
S7
S6
S4
LED4
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
JP23
CONTROL_LCD
1 2 3 4 5 6 7 8
W8
S1S1
C27 104
VCC
W5
W3
C28 104
S6
R40
270
R10 10K
R45
270
JP25
CATHOD BLUE
1 2 3 4 5 6 7 8
12VDC
W2
Q8
A1013
S2
LED2
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
S3
S8
D11
LED
R66 4K7
S8
Q13
A1013
Q6
A1013
S4
S7
S3
S8
R31 15K
R20 150 X 8
S7
5VDC
S4
S6
D10
LED
LED7
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
S3
C34 104
S6
C30 104
D15
LED
S3S3
S1
R38
270
W7
U12
ULN2803
10
1
2
3
4
5
6
7
8
18
17
16
15
14
13
12
11
COM
IN1
IN2
IN3
IN4
IN5
IN6
IN7
IN8
OUT1
OUT2
OUT3
OUT4
OUT5
OUT6
OUT7
OUT8
S8
S5
W1
JP27
DATA_LED
1 2 3 4 5 6 7 8
LED6
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
C31 104
C32 104
D14
LED
S8
MATRIX 8x5 AND LCD
B
1 1Monday , July 24, 2006
Title
Size Document Number Rev
Date: Sheet of
S4
S5
R36 15K
S4
S8
C29 104
Q5
A1013
S2
S4
W6
Q9
A1013
W2
D24
C33 104
Q11
A1013
LED3
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
THIS IS THE LCD
2 LINES x 16 CHARACTERS L A
M
P
LCD1
7 8 9 1
0
1
1
1
2
1
3
1
4
4 5 6 3 1 2 1
5
1
6
D
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
R
S
R
/
W
C
S
C
O
N
S
T
G
N
D
V
C
C
A K
U15
ULN2803
1
0
1 2 3 4 5 6 7 8
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
C
O
M
I
N
1
I
N
2
I
N
3
I
N
4
I
N
5
I
N
6
I
N
7
I
N
8
O
U
T
1
O
U
T
2
O
U
T
3
O
U
T
4
O
U
T
5
O
U
T
6
O
U
T
7
O
U
T
8
S1
S4
LED5
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
D9
LED
VCC
S7
R33 15K
S2 S2
Q10
A1013
D28R34 15K
R30 15K
S6 S6
W3
S7
JP20
DATA_LED7S
1
2
3
4
5
6
7
8
S1
R35 15K
LED1
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
U13 74LS244
2
4
6
8
1
18
16
14
12
11
13
15
17
9
7
5
3
19
A1
A2
A3
A4
1OE
Y1
Y2
Y3
Y4
A5
A6
A7
A8
Y5
Y6
Y7
Y8
2OE
Phịng thí nghiệm
Tự động hố – Vi điều khiển
Tài liệu thí nghiệm
Vi điều khiển
Trang 7
R16
270
R14 4K7
R15
270
Q4
TIP122
Q2
TIP122
VCC
R13 4K7
D6
LED3
D5
LED4
MG1
MOTOR STEPPER
1
2
3
4 5 6
VCC
D2
4007
D7
LED2
D8
LED1
R18
270
JP28
S
T
E
P
_
M
O
T
O
R
1
2
3
4
5
6
7
8
Q1
TIP122
R11 4K7
D4
4007
R17
220
D3
4007
Q3
TIP122
D1
4007
R12 4K7
Phịng thí nghiệm
Tự động hố – Vi điều khiển
Tài liệu thí nghiệm
Vi điều khiển
Trang 8
INC
JP29
D
A
TA
_SW
1
2
3
4
5
6
7
8
MODE
C19
101
ENTER
C21
101
DEC
C20
101
C22
101
Phịng thí nghiệm
Tự động hố – Vi điều khiển
Tài liệu thí nghiệm
Vi điều khiển
Trang 9
C16
CAP
R54
5K
-
+
U22A
JR4558
3
2
1
8
4
R56 2K7
D21
5V1
C12
100uF
R52 10
U21 DAC0808
1
3
16
1
4
1
5
2
1
3
5
6
7
8
9
10
11
12
4
GND
VEE
COMPS
V
R
E
F
+
V
R
E
F
- Iout
V
C
C
D7
D6
D5
D4
D3
D2
D1
D0
Iout
R68
270
+12VDC
R57
2K7
C14
104
R58
150
C17
104
D22
LED
R51
2K7
JP18
D
A
T
A
_
D
A
C
1
2
3
4
5
6
7
8
VCC
R29 10
R55
10K
VCC
VCC
R69
2K7
JP19
DAC_OUT
1
2
-
+
U22B
JR4558
5
6
7
8
4
R53 820
D20
4007
-12VDC
C13
104
Phịng thí nghiệm
Tự động hố – Vi điều khiển
Tài liệu thí nghiệm
Vi điều khiển
Trang 10
VCC
JP16
D
A
TA
_A
D
C
1
2
3
4
5
6
7
8-VCC
-
+
U8A
JR4558
3
2
1
8
4
R8
1K
-
+
U8B JR4558
5
6
7
8
4
VCC
R3 470K
U9
LM35
2
3
1
V
S
+
ADJ
G
N
D
R9
1K
-VCC
R1
1K
C2
100uF/25V
JP17 C
O
N
TR
O
L_A
D
C
1
2
3
4
5
6
7
8
VCC
R5 1K
C1
1nF
VCC
VCC
U7
ADC0804
6
7
9
11
12
13
14
15
16
17
18
19
4
5
1
2
3
+IN
-IN
VREF/2
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
CLKR
CLKIN
INTR
CS
RD
WR
R4
1K
R7
1K
R6 1K
VCC
R2
10K
Phịng thí nghiệm
Tự động hố – Vi điều khiển
Tài liệu thí nghiệm
Vi điều khiển
Trang 11
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 12
II. THIẾT BỊ GHI CHƯƠNG TRÌNH TVT_V1.1:
Thiết bị dùng để ghi chương trình vào bộ nhớ Flash ROM của các vi điều khiển
họ 89C51/2051. Trên thiết bị cĩ một đế kẹp 40 chân, và một đế kẹp 20 chân. Vi điều
khiển cần ghi chương trình được đặt vào đúng vị trí của đế kẹp (mỗi thời điểm chỉ
cho phép cắm một IC trên thiết bị), cấp nguồn cho thiết bị và kết nối với máy tính để
sử dụng. Sơ đồ chân các đế kẹp như hình sau:
III. PHẦN MỀM ĐIỀU KHIỂN:
Giao diện chương trình:
40 21
1 20
20 11
1 10
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 13
Gồm các menu:
- Comport: cho phép chọn cổng COM1 hoặc cổng COM2 để giao tiếp với
ngoại vi.
- ChipSelect: cho phép chọn loại CPU để ghi chương trình vào bộ nhớ trong
(Flach ROM)
- ProType: chọn kiểu ghi chương trình
+ clr_Unlock: xĩa và ghi chương trình khơng khĩa, tức là chương
trình sau khi ghi vào bộ nhớ CPU cĩ thể đọc ngược trở ra.
+ clr_Lock: xĩa và ghi chương trình với 3 bit khĩa, chương trình đã
ghi vào khơng thể đọc ra được.
+ Compare: so sánh nội dung bộ nhớ CPU với vùng đệm của
chương trình.
+ Read: đọc nội dung bộ nhớ Flash ROM của CPU và lưu vào vùng
đệm chương trình.
+ Clear: Xĩa bộ nhớ CPU.
Tất cả các thao tác trên khi được chọn trong menu ProType sẽ tác động lên nút
lệnh nằm trong khung Flash ROM, để thực thi thao tác vừa chọn, ta click chuột vào
nút lệnh này.
- Emulator: Cho phép truyền nhận từng byte giữa PC và thiết bị với tốc độ
truyền nhận 4800bps. Xem hình sau:
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 14
Khi nhấn nút START sẽ kích hoạt trạng thái sẵn sàng nhận của chương trình.
Nếu cĩ một Byte được nhận thì giá trị byte này sẽ được hiển thị trong khung R. Byte
và đồng thời được vẽ trên khung Picture ở trên.
Khi nhập vào khung T. Byte một giá trị (số hoặc chữ) và click chuột vào nút
TRANS., byte dữ liệu này sẽ được truyền đi.
1/- Sử dụng phần mềm soạn thảo chương trình:
Từ giao diện của chương trình trên PC, click chuột vào nút lệnh EDIT ASM,
phần mềm soạn thảo sẽ được kích hoạt. Xem cửa sổ trang sau.
Để soạn thảo chương trình, thực hiện lệnh File-> New, và nhập các dịng lệnh
của chương trình vào trang màn hình soan thảo. Kết thúc một chương trình hợp ngữ
cho MOS51 bằng lệnh END. File được lưu vào đĩa với phần mở rộng mặc định *.a51.
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 15
Để biên dịch chương trình và kiểm tra các lỗi cú pháp trong quá trình dịch ta
chọn lệnh Winsdow-> Tile (hiển thị cửa sổ kết quả trong quá trình biện dịch), và
dịch chương trình bằng lệnh Assemble->Assemble hoặc nhấn phím CTRL_F7. Nếu
chương trình khơng cĩ lỗi sẽ tạo ra được file *.HEX.
Xem kết quả biên dịch chương trình vào windows->Ouputs.
2/- Thao tác ghi chương trình vào Flash ROM của CPU:
- Nối kết đường truyền từ cổng COM của PC và cổng giao tiếp của thiết bị ghi
- Mở nguồn cho thiết bị, khi thấy LED chỉ thị trên thiết bị nhấp nháy tức là thiết
bị đã sẵn sàng. Nếu LED tắt hoặc sáng hẳn thì tắt nguồn 15 giây và mở lại.
- Đặt CPU cần nạp vào đúng đế kẹp và đúng vị trí chân trên đế.
- Chọn cổng giao tiếp (mặc định khi vừa khởi động chương trình trên PC là
COM1)
- Chọn loại CPU từ menu ChipSelect
- Chọn thao tác thực hiện trong ProType
- Chọn đường dẫn trong chương trình, click chuột vào file cần nạp vào bộ nhớ
(file dạng *.HEX hoặc *.BIN), lập tức nội dung file sẽ được nạp vào vùng đệm. Số
byte của file sẽ được hiển thị trong ơ nằm ở gĩc dưới phải của chương trình.
- Click chuột vào nút lệnh thao tác trong khung Flash ROM (ở gĩc dưới bên
phải của cửa sổ chương trình)
- Kiểm tra lại nội dung vừa ghi (thao tác này khơng cần thiết): chọn thao tác
Compare từ menu ProType và click chuột vào nút lệnh thao tác.
3/- Thao tác ghi và thực hiện chương trình ở bộ nhớ RAM của CPU:
- Đặt CPU 89C51 (đã cĩ chương trình giao tiếp với PC) vào đúng vị trí của đế
kẹp trong module MICROCONTROLER WITH EXTERNAL RAM
- Bật SW chọn bộ nhớ trong module này về vị trí INT. MEMORY
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 16
- Nhấn SW RESET và kiểm tra đèn LED tín hiệu READY, nếu đèn nhấp nháy
thì hệ thống sẵn sàng cho việc truyền/nhận dữ liệu.
- Nối cáp tín hiệu giữa cổng COM máy PC với cổng giao tiếp PC INTERFACE
trên module
- Kích hoạt chương trình trên máy PC, chọn cổng COM (1 hoặc 2)
- Chọn đường dẫn trong chương trình, click chuột vào file cần nạp vào bộ nhớ
(file dạng *.HEX hoặc *.BIN), lập tức nội dung file sẽ được nạp vào vùng đệm. Số
byte của file sẽ được hiển thị trong ơ nằm ở gĩc dưới phải của chương trình.
- Click chuột vào nút WRITE_RAM. Nếu đường truyền bị lỗi thì sẽ hiển thị câu
thơng báo “Time out”, khi đĩ nhấn SW RESET trên mudule và thực hiện hiện lại thao
tác này.
4/- Một số lưu ý khi sử dụng thiết bị:
Do CPU 89C51 cĩ thể thực hiện chương trình từ bộ nhớ trong hoặc bộ nhớ
ngồi nhờ SW Memory Selection, nên khi sử dụng ở chế độ bộ nhớ trong phải hết sức
cẩn thận khi sử dụng PORT P2, vì các tín hiệu của port này dùng làm các tín hiệu giải
mã địa chỉ cho bộ nhớ ngồi (0000H - 1FFFH), nếu các trạng thái của các bit P2.7,
P2.6, P2.5 = 000B thì bộ nhớ ngồi sẽ được chọn, khi đĩ dễ dẫn đến xung đột dữ liệu
giữa các bit của port P0 với các bit data của bộ nhớ ngồi RAM.
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 17
I. 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 8951
II. 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
III. TIẾN TRÌNH THÍ NGHIỆM:
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 chương các 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 ; P1 <- 11111111B, các led đều sáng
CALL DELAY ; gọi chương trình trì hỗn DELAY
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
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
LAP:
MOV R7,#255
DJNZ R7,$ ; Ù X: DJNZ R7,X
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
BÀI 01: SỬ DỤNG TẬP LỆNH 8951
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 18
RET ; kết thúc chương trình con.
END
NHẮC LẠI:
DJNZ Ri, : 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 Ri, # 255)>
NHÃN:
- LỆNH 1
- LỆNH 2
- LỆNH n
DJNZ Ri,
- 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ì hỗ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”
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
LAP:
MOV R7,#255
DJNZ R7,$ ; Ù X: DJNZ R7,X
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
RET ; kết thúc chương trình con.
END
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
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 19
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.
2/- Nhĩm lệnh quay vịng:
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 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 P1, 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
LAP:
MOV R7,#255
DJNZ R7,$ ; Ù X: DJNZ R7,X
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
RET ; 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 P1, 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
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 20
MOV R6,#255
LAP:
MOV R7,#255
DJNZ R7,$ ; Ù X: DJNZ R7,X
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
RET ; kết thúc chương trình con.
END
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 P1, 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
LAP:
MOV R7,#255
DJNZ R7,$ ; Ù X: DJNZ R7,X
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
RET ; 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
BEGIN:
SETB C
MOV P1, A
RRC A
CALL DELAY
JNC BEGIN
LJMP MAIN
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 21
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
LAP:
MOV R7,#255
DJNZ R7,$ ; Ù X: DJNZ R7,X
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
RET ; kết thúc chương trình con.
END
BÀI TẬP:
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.
3/- Nhĩm lệnh tốn học:
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 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 P1,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
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 22
SETB C
ADDC A,#34
MOV P1,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.
MAIN:
MOV A,#17
MOV B,#3
DIV AB
MOV P1,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 P1,B
SJMP $
END
Chương trình 1.16: Viết chương trình nhân 2 số 23 cho 14, hiển thị kết quả (byte
thấp) trên các led.
MAIN:
MOV A,#7
MOV B,#14
MUL AB
MOV P1,A
SJMP $
END
Chương trình 1.17: Viết chương trình nhân 2 số 23 cho 14, hiển thị kết quả (byte
cao) trên các led.
MAIN:
MOV A,#7
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 23
MOV B,#14
MUL AB
MOV P1,B
SJMP $
END
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 24
I. MỤC ĐÍCH:
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.
II. 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.
Trong sơ đồ mạch:
- 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
GND
IN1
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 sử dụng trong mạch là loại cathod chung cĩ cấu trúc như sau:
BÀI 02: LED 7 ĐOA ̣N VA ̀ BÀN PHI ́M
e
g
d
be f
p
o
i
n
t
a d f
point
g
b
c
COM
c
a
C21
101
JP29
D
A
TA
_SW
1
2
3
4
5
6
7
8
ENTERDECINC MODE
C22
101
C20
101
C19
101
S8
S1
S6
JP21
C
O
N
T
R
O
L
_
L
E
D
7
S
1
2
3
4
5
6
7
8
S7
S1
S7
S6
S3
S8
S4
S5
S6
S5
S2
S7
S4 S4
S5
LED6
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
S6
S7
S1
S4
S5
JP20
DATA_LED7S
1
2
3
4
5
6
7
8
S4
S1
S6
S4
S3
LED2
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
S1
R20 150 X 8
S5
S1
S2
S5
LED4
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
S3
U13 74LS244
2
4
6
8
1
18
16
14
12
11
13
15
17
9
7
5
3
19
A1
A2
A3
A4
1OE
Y1
Y2
Y3
Y4
A5
A6
A7
A8
Y5
Y6
Y7
Y8
2OE
S3
S4
S6
S2
LED3
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
LED8
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
S8
S2S2
S7
S6
LED5
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
S1
S8 S8
U12
ULN2803
10
1
2
3
4
5
6
7
8
18
17
16
15
14
13
12
11
COM
IN1
IN2
IN3
IN4
IN5
IN6
IN7
IN8
OUT1
OUT2
OUT3
OUT4
OUT5
OUT6
OUT7
OUT8
S4
S8
S3
S2
S7
S1
S7
S3
S8
S5
LED1
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
S7
S5
S6
S2 S2
S3
LED7
7
6
4
2
1
9
10
5
3 8
a
b
c
d
e
f
g
p
C
1
C
2
S8
S3
Phịng thí nghiệm
Tự động hố – Vi điều khiển
Tài liệu thí nghiệm
Vi điều khiển
Trang 25
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 26
III. TIẾN TRÌNH THÍ NGHIỆM:
- Nối JP29(DATA_SW) của bàn phím với P3_CPU (port 3 của 8951)
- Nối P1_CPU với JP20 (DATA_LED7S)
- Nối P2_ADDRESS với JP21 (CONTROL_LED7S)
1/- Viết chương trình hiển thị thơng tin trên led 7 đoạn:
Chương trình 2.1: viết chương trình hiển thị số 5 trên LED1:
SỐ D7 D6 D5 D4 D3 D2 D1 D0 Giá trị
HEX p G f e D c b a
0
1
2
3
4
5 0 1 1 0 1 1 0 1 6DH
6
7
8
9
MAIN:
MOV P2,#00H ; tắt các led
MOV P1,#6DH ; đặt DATA số 5 ra P1
MOV P2,#01H ; mở nguồn led1
SJMP $
END
Chương trình 2.2: viết chương trình hiển thị số 54 trên 2 LED 7 và 8
HƯỚNG DẪN: theo sơ đồ nguyên lý ở trên, ta thấy khơng thể hiển thị 2 thơng
tin khác nhau trên 2 led tại cùng thời điểm. Do đĩ: tại mỗi thời điểm (khoảng vài ms)
ta hiển thị thơng tin trên 1 led, sau đĩ tắt led và chuyển sang hiển thị thơng tin khác
trên led kế tiếp. Thực hiện quá trình này liên tục, do hiện tượng lưu ảnh của mắt sẽ
thấy hai thơng tin được hiển thị đồng thời.
MAIN:
MOV P2,#00H ; tắt các led
BEGIN:
MOV P1,#6DH ; đặt DATA 5 ra P1
SETB P2.6 ; mở nguồn led 7
CALL DELAY ; trì hỗn để mắt lưu ảnh thơng tin
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 27
CLR P2.6 ; tắt nguồn led 7
MOV P1,#66H ; đặt thơng tin DATA 4 ra P1
SETB P2.7 ; mở nguồn led 8
CALL DELAY ; trì hỗn để mắt lưu ảnh
CLR P2.7 ; tắt nguồn led 8
LJMP BEGIN ; lặp lại quá trình vơ hạn
DELAY: ; chương trình DELAY ~ 1ms
PUSH 07H
MOV R7,#100
DJNZ $
POP 07H
RET
END
Chương trình 2.3: viết chương trình hiển thị các số tăng dần từ 0 Ỉ9 trên led 8
HƯỚNG DẪN:
MOVC A,@A+DPTR ; là lệnh gán vào thanh ghi A nội dung ơ nhớ
chương trình cĩ địa chỉ = (nội dung hiện tại của A + nội dung thanh ghi DPTR), ví
dụ: A = 20 và DPTR = 1000 => A Í (1020); lệnh này trong chương trình sau dùng
để đổi nội dung một ơ nhớ (cĩ giá trị từ 0 đến 9) sang mã 7 đoạn của số đĩ.
CNT EQU 127 ; khai báo biến CNT tại ơ nhớ RAM 127
MAIN:
MOV P2,#00H ; tắt các led
MOV CNT,#0 ; khởi động biến đếm = 0
MOV DPTR,#MA_7S ; lấy địa chỉ đầu bảng mã 7 đoạn
BEGIN:
MOV A,CNT
MOVC A,@A+DPTR ; đổi nội dung CNT ra mã 7 đoạn
MOV P1,A ; đặt mã 7 đoạn ra P1
SETB P2.7 ; mở nguồn led8
CALL DELAY ; trì hỗn
INC CNT ; tăng nội dung biến
MOV A,CNT
CJNE A,#10,BEGIN ; nếu biến < 10 thì tiếp tục hiện thi(
MOV CNT,#0 ; nếu biến = 10 thì gán về 0
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
LAP:
MOV R7,#255
DJNZ R7,$ ; Ù X: DJNZ R7,X
DJNZ R6, LAP
POP 07 ; lấy lại giá trị cũ của R7 trong ngăn xếp
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 28
POP 06 ; lấy lại giá trị cũ của R6 trong ngăn xếp
RET ; kết thúc chương trình con.
MA_7S: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
BÀI TẬP:
Chương trình 2.4: viết chương trình hiển thị: 15-10-06 trên 8 led
Chương trình 2.5: viết chương trình hiển thị các số tăng dần từ 00 – 99 trên 2
led 1 và 2.
HƯỚNG DẪN: dùng 1 ơ nhớ chứa số đếm, trước khi hiển thị nội dung ơ nhớ, ta
phải đổi ra thành 2 số thập phân (0 -9), sau đĩ lần lượt đổi từng số thập phân sang mã
7 đoạn và quét trên 2 led :
CNT EQU 127
DONVI EQU 126
CHUC EQU 125
.
.
.
DOI_SO:
PUSH ACC
PUSH B
MOV A,CNT
MOV B,#10
DIV AB
MOV CHUC,A
MOV DONVI,B
POP B
POP ACC
RET
2/- Thực hành điều khiển các phím: phím SW1 nối chân P3.0; SW2 nối chân
P3.1; SW3 nối chân P3.2; SW4 nối chân P3.3
Chương trình 2.6: Viết chương trình thực hiện:
- Nhấn SW1: hiển thị số 3 trên led8
- Nhấn SW2: hiển thị số 7 trên led8
- Nhấn SW3: tắt các thơng tin đang hiển thị
HƯỚNG DẪN: dùng lệnh JNB bit, để kiểm tra phím nhấn; ví dụ:
JNB P3.0, HIENTHI3 ; nếu SW1 nhấn thì logic tại P3.0 là 0, nên lệnh
này thỏa điều kiện nhảy đến nhãn HIENTHI3, ngược lại sẽ thực hiện lệnh kế
tiếp.
SW1 BIT P3.0 ; khai báo kiểu BIT: SW1 Ù P3.0
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 29
SW2 BIT P3.1
SW3 BIT P3.2
MAIN:
MOV P2,#00H ; tắt các led
SETB P2.7 ; mở nguồn led8
BEGIN:
JNB SW1,HT3 ; nếu SW1 nhấn thì Ỉ HT3
JNB SW2,HT7
JNB SW3,TAT
LJMP BEGIN
SW1:
MOV P1,#4FH ; hiển thị số 7
LJMP BEGIN ; trở về tiếp tục kiểm tra phím
SW2:
MOV P1,#07H
LJMP BEGIN
SW3:
MOV P2,#00H
LJMP BEGIN
END
Chương trình 2.7: Viết chương trình thực hiện:
- Nhấn SW1: tăng nội dung hiển thị một đơn vị trên led1 (0-1-2-3-4-59-0)
- Nhấn SW2: giảm nội dung hiển thị một đơn vị trên led1 (9-8-72-1-0-9)
HƯỚNG DẪN: dùng một ơ nhớ chứa số đếm, khi nhấn SW1, tăng nội dung ơ nhớ,
sau đĩ trì hỗn một thời gian (chờ nhấc tay khỏi phím, thời gian này thường chọn từ
100ms -> 500ms); khi nhấn SW2, giảm nội dung ơ nhớ 1 đơn vị, sau đĩ trì hỗn; nếu
khơng phím nào được nhấn thì đổi nội dung ơ nhớ sang mã led 7 đoạn và hiển thị.
CNT EQU 127
SW1 BIT P3.0
SW2 BIT P3.1
MAIN:
MOV P2,#00H
SETB P2.0
MOV CNT,#0
BEGIN:
JNB SW1,TANG
JNB SW2,GIAM
MOV A,CNT
MOVC A,@A+DPTR
MOV P1,A
LJMP BEGIN
TANG:
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 30
INC CNT
MOV A,CNT
CJNE A,#10,TROVE
MOV CNT,#0
TROVE:
CALL DELAY
LJMP BEGIN
GIAM:
DEC CNT
MOV A,CNT
CJNE A,#255,TROVE
MOV CNT,#0
LJMP TROVE
DELAY:
PUSH 05 ; cất nội dung R5 vào ngăn xếp
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 R5,#2
LAP1:
MOV R6,#255
LAP:
MOV R7,#255
DJNZ R7,$ ; Ù X: DJNZ R7,X
DJNZ R6, LAP
DJNZ R5,LAP1
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 R6 trong ngăn xếp
POP 05 ; lấy lại giá trị cũ của R5 trong ngăn xếp
RET ; kết thúc chương trình con.
MA_7S: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
BÀI TẬP:
Chương trình 2.8: giống chương trình 1 nhưng hiển thị các số thay đổi trong khoảng
00 – 99.
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 31
I. MỤC ĐÍCH:
Giúp sinh viên tìm hiểu về timer trong 8951 và IC giao tiếp song song cĩ lập
trình điều khiển PPI8255A.
II. CHUẨN BỊ THÍ NGHIỆM:
- Bộ thí nghiệm DHC-uP8951
- Máy tính
- Kiểm tra cable truyền
- Xem các module: microcontroller, PPI8255 và led 7 đoạn
" Tìm hiểu cấu trúc timer trong vi điều khiển:
Vi điều khiển 89C51 cĩ hai thanh ghi timer/counter 16 bit. Các thanh ghi này
cĩ thể hoạt động ở một trong hai trạng thái timer hoặc counter. Mỗi thanh ghi gồm 2
thanh ghi 8 bit ghép lại:
TLx : 8 BIT
PULSE INPUT
THx : 8 BIT
Cấu trúc của bộ Timer/ Counter trong 89C51 như hình sau.
Hoạt động của bộ Timer/Counter được điều khiển bởi hai thanh ghi TCON và TMOD
BA ̀I 03: TIMER 8951 & PPI8255A
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 32
1. Thanh ghi TCON (timer control):
Là thanh ghi 8 bit, cĩ thể truy xuất byte hoặc bit
IE1
3
TF0 IE0
6
TF1
2
IT0
4
TR1
1
TR0
7 0
IT1
5
• TF1: báo trạng thái tràn cho bộ Timer/Counter1
• TR1: điều khiển cấp xung cho bộ Timer/Counter1
• TF0: báo trạng thái tràn cho bộ Timer/Counter0
• TR0: điều khiển cấp xung cho bộ Timer/Counter0
• IE1: khơng liên quan đến hoạt động của Timer/Counter, bit này dùng để báo trạng
thái ngắt ngồi 1 (khi trạng thái logic thay đổi từ 1 xuống 0 tại chân 13 vi điều khiển
bit này được đặt lên mức logic 1)
• IT1: khơng liên quan đến hoạt động của Timer/Counter, bit này cho phép tác động
ngắt ngồi 1 bằng cạnh xuống (default IT1 = 0, tác động ngắt bằng mức thấp)
• IE0: khơng liên quan đến hoạt động của Timer/Counter, bit này dùng để báo trạng
thái ngắt ngồi 0 (khi trạng thái logic thay đổi từ 1 xuống 0 tại chân 12 vi điều khiển
bit này được đặt lên mức logic 1)
• IT0: khơng liên quan đến hoạt động của Timer/Counter, bit này cho phép tác động
ngắt ngồi 0 bằng cạnh xuống (default IT1 = 0, tác động ngắt bằng mức thấp)
2. Thanh ghi TMOD (timer mode):
Là thanh ghi 8 bit, chỉ cĩ thể truy xuất byte
ĐIỀU KHIỂN TIMER 0
GATE
3
M1 M1
6
GATE
2
M0
4
C/T
1
M0
ĐIỀU KHIỂN TIMER 1
7 0
C/T
5
• GATE, C/T: điều khiển trạng thái hoạt động cho Timer/Counter (xem sơ đồ ở trên)
• M1, M0: chọn chế độ hoạt động cho Timer/Counter
M1 M0 CHẾ ĐỘ (MODE) MƠ TẢ
0 0 0 Timer/Counter 13 bit
0 1 1 Timer/Counter 16 bit
1 0 2 Timer/Counter 8 bit, auto reload
1 1 3 Timer/Counter 8 bit
a/- Chế độ 0:
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 33
TLx : 5 BIT
PULSE INPUT
THx : 8 BIT TFx
Thanh ghi THx và TLx kết hợp tạo thành bộ Timer/Counter 13 bit, khi tràn 13 bit thì cờ TFx
sẽ đặt lên logic 1.
b/- Chế độ 1:
TLx : 8 BIT
PULSE INPUT
THx : 8 BIT TFx
c/- Chế độ 2:
TFx
THx : 8 BIT
OVERFLOW
TLx : 8 BIT
PULSE INPUT
TLx được nạp giá trị ban đầu từ THx và bắt đầu đếm từ giá trị này khi cĩ xung ở ngõ vào,
khi tràn thì TFx sẽ đặt lên logic 1 đồng thời kích hoạt bộ khĩa để nạp giá trị trong THx vào
TLx.
d/- Chế độ 3:
TL0 : 8 BIT
TR1
TF1TH0 : 8 BIT
PULSE INPUT
OSC:12
TF0
Trong chế độ này, TH1 và TL1 khơng được sử dụng thay vào đĩ là TH0 và TL0 hoạt động
như 2 bộ Timer 8 bit (TL0) và Timer/Counter 8 bit (TL0). Tuy nhiên, tín hiệu mở xung cho
TH0 khơng phải là TR0 mà là TR1.
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 34
" Tìm hiểu PPI8255A: xem sơ đồ mạch trang sau:
CONTROL REGISTER (CR)
DATA BUS PB
PA
PC
U24
8255
34
33
32
31
30
29
28
27
4
3
2
1
40
39
38
37
18
19
20
21
22
23
24
25
14
15
16
17
13
12
11
10
5
36
9
8
35
6
D0
D1
D2
D3
D4
D5
D6
D7
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
RD
WR
A0
A1
RESET
CS
- CS (chip select): tác động thấp cho phép 8255 làm việc, khi CS = 1, tất cả
các tín hiệu ở tổng trở cao.
- D0 –D7: data bus, cho phép 8255 giao tiếp với hệ thống.
- PA0-PA7: 8 chân của port A
- PB0-PB7: 8 chân của port B
- PC0-PC7: 8 chân của port C, cĩ thể chia làm 2 nhĩm: PCL gồm các chân
PC0 đến PC3, và PCH gồm các chân PC4 đến PC7.
- A1, A0: các chân địa chỉ. Tại mỗi thời điểm, data bus chỉ cĩ thể giao tiếp dữ
liệu với PA hoặc PB hoặc PC hoặc CR phụ thuộc vào vị trí của chuyển
mạch, vị trí của chuyển mạch được quyết định bởi tín hiệu địa chỉ:
A1 A0 GIAO TIẾP
0 0 DATA BUS --- PA
0 1 DATA BUS --- PB
1 0 DATA BUS --- PC
1 1 DATA BUS --- CR
- RD (read): tín hiệu cho phép đọc, tác động thấp, cho phép chuyển dữ liệu từ
một trong các port đến data bus
- WR(write): tín hiệu ghi, tác động thấp, cho phép chuyển dữ liệu từ data bus
đến một trong các port hoặc đến CR.
- RESET: tác động cao, cho phép xĩa nội dung cài đặt chế độ hoạt động 8255.
Khi sử dụng 8255, trước hết phải xác lập cấu hình bằng cách ghi vào CR một
giá trị thích hợp tuỳ theo chế độ làm việc, ở chế độ I/O nội dung CR như sau:
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 35
135 0
ACT
7
0
4
PCH0 0PA
2
PCL
6
PB
trong đĩ: - ACT: là bit active, cĩ giá trị 1
- bit 5 và bit 6 = 0
- bit 2 = 0
- PA điều khiển port A, PB điều khiển port B, PCL điều khiển 4
chân thấp của PC, PCH điều khiển 4 chân cao của port C; các bit này nếu đặt ở logic
1 thì các port tương ứng sẽ là port nhập (khơng cho phép xuất dữ liệu từ data bus
sang), nếu các bit này là 0 thì các port tương ứng sẽ là port xuất (khơng thể đọc được
dữ liệu từ các port này), ví dụ: muốn định cấu hình ban đầu cho 8255 với PA xuất,
PB xuất, PCL xuất, PCH nhập thì phải ghi vào CR một byte cĩ giá trị là: 10001000b
= 88H.
Địa chỉ các PORT PPI8255 trong hệ thống:
ĐỊA CHỈ GIAO TIẾP
2000H DATA BUS --- PA
2001H DATA BUS --- PB
2002H DATA BUS --- PC
2003H DATA BUS --- CR
III. TIẾN TRÌNH THÍ NGHIỆM:
1/-Viết chương trình sử dụng timer (tính tốn timer sử dụng thạch anh 12Mhz):
- Nối JP7 với JP27
- Kiểm tra cable truyền
Chương trình 3.1: Viết chương trình hiển thị các led sáng dần từ D1 đến D8, với thời
gian Delay 200ms, sử dụng timer0, mode 1
MAIN: MOV A,#0
BEGIN: MOV P1,A
CALL DL_200MS
SETB C
RLC A ; dịch bit 1 vào A để sáng dần các led
JNC BEGIN
SJMP MAIN
DL_200MS:
PUSH 02
MOV TMOD,#01H
MOV R2,#20 ; lặp lại 20 lần
X1:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 36
CLR TF0
JNB TF0,$
DJNZ R2,X1
POP 02
RET
Chương trình 3.2: tương tự chương trình 3.1, nhưng dùng timer0, mode2
Chương trình 3.3: tương tự chương trình 3.1, nhưng dùng timer0, mode3
Chương trình 3.4: tương tự chương trình 3.1, nhưng thời gian delay là 500ms, dùng
timer1, mode1
1/-Viết chương trình điều khiển PPI8255:
- Nối JP1 với JP9
- Nối JP4 với JP10
- Nối JP11 với JP20 (led 7 đoạn)
- Nối JP12 với JP21 (led 7 đoạn)
Chương trình 3.5: Viết chương trình hiển thị các số từ 0 đến 7 trên các led 7 đoạn
MAIN:
MOV TMOD,#11H
MOV DPTR,#2003H
MOV A,#89H ; 10001001, PC: NHAP, PA: XUAT, PB:XUAT
MOVX @DPTR,A
BEGIN:
CALL DISPLAY
LJMP BEGIN
DISPLAY:
PUSH A
MOV A,#3FH
MOV DPTR,#2000H
MOVX @DPTR,A
MOV A,#01H
MOV DPTR,#2001H
MOVX @DPTR,A
CALL DELAY
MOV A,#0
MOVX @DPTR,A
MOV A,#06H
MOV DPTR,#2000H
MOVX @DPTR,A
MOV A,#02H
MOV DPTR,#2001H
MOVX @DPTR,A
CALL DELAY
MOV A,#0
MOVX @DPTR,A
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 37
MOV A,#5BH
MOV DPTR,#2000H
MOVX @DPTR,A
MOV A,#04H
MOV DPTR,#2001H
MOVX @DPTR,A
CALL DELAY
MOV A,#00H
MOVX @DPTR,A
MOV A,#4FH
MOV DPTR,#2000H
MOVX @DPTR,A
MOV A,#08H
MOV DPTR,#2001H
MOVX @DPTR,A
CALL DELAY
MOV A,#0
MOVX @DPTR,A
MOV A,#66H
MOV DPTR,#2000H
MOVX @DPTR,A
MOV A,#10H
MOV DPTR,#2001H
MOVX @DPTR,A
CALL DELAY
MOV A,#0
MOVX @DPTR,A
MOV A,#6DH
MOV DPTR,#2000H
MOVX @DPTR,A
MOV A,#20H
MOV DPTR,#2001H
MOVX @DPTR,A
CALL DELAY
MOV A,#00H
MOVX @DPTR,A
MOV A,#7DH
MOV DPTR,#2000H
MOVX @DPTR,A
MOV A,#40H
MOV DPTR,#2001H
MOVX @DPTR,A
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 38
CALL DELAY
MOV A,#0
MOVX @DPTR,A
MOV A,#07
MOV DPTR,#2000H
MOVX @DPTR,A
MOV A,#80H
MOV DPTR,#2001H
MOVX @DPTR,A
CALL DELAY
MOV A,#0
MOVX @DPTR,A
POP A
RET
DELAY:
PUSH 00
MOV R0,#100
DJNZ R0,$
POP 00
RET
MA_7D: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
Chương trình 3.6: Viết chương trình hiển thị NGÀY-THÁNG-NĂM trên 8 led 7
đoạn.
Chương trình 3.7: Viết chương trình hiển thị GIỜ-PHÚT-GIÂY trên 8 led
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 39
I. MỤC ĐÍCH:
Giúp sinh viên tìm hiểu và sử dụng các ngắt trong 8951: ngắt timer, ngắt ngồi
và ngắt truyền thơng nối tiếp.
II. 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 trên các module: microcontroller, led 7 đoạn, bàn phím,
counter
DANH SÁCH CÁC NGẮT TRONG 8951:
- Ngắt ngồi 0:
Địa chỉ vector ngắt 0003H
Khai báo sử dụng ngắt - SETB EA
- SETB EX0
- SETB IT0 (ngắt cạnh)
Sự kiện ngắt: Xuất hiện cạnh xuống (hoặc mức
thấp) tại chân INT0
- Ngắt timer0:
Địa chỉ vector ngắt 000BH
Khai báo sử dụng ngắt - SETB EA
- SETB ET0
Sự kiện ngắt Tràn timer 0
- Ngắt ngồi 1:
Địa chỉ vector ngắt 00013H
Khai báo sử dụng ngắt - SETB EA
- SETB EX1
- SETB IT1 (ngắt cạnh)
Sự kiện ngắt: Xuất hiện cạnh xuống (hoặc mức
thấp) tại chân INT1
BA ̀I 04: NGẮT (INTERRUPT)
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 40
- Ngắt timer1:
Địa chỉ vector ngắt 0001BH
Khai báo sử dụng ngắt - SETB EA
- SETB ET1
Sự kiện ngắt Tràn timer 1
- Ngắt truyền thơng (truyền/nhận UART):
Địa chỉ vector ngắt 00023H
Khai báo sử dụng ngắt - SETB EA
- SETB ES
Sự kiện ngắt Nhận được một byte hoặc truyền
xong một byte trong SBUF
Tốc độ truyền nhận MODE
autoreload (timer1)
- TH1 = -3 ; 9600bps
- TH1 = -6 ; 4800bps
- TH1 = -12 ; 2400bps
- TH1 = -24 ; 1200bps
SƠ ĐỒ CHƯƠNG TRÌNH KHI CĨ SỬ DỤNG NGẮT:
III. TIẾN TRÌNH THÍ NGHIỆM:
1/- Ngắt timer 0:
- Nối JP7 với JP20
- Nối JP3 với JP21
Chương trình 4.1: Viết chương trình hiển thị các số tăng dần từ 00-99 trên 2 led
7 và 8 (sử dụng ngắt timer0 để quét led)
KHAI BÁO NGẮT
Sự kiện ngắt
Vector ngắt:
.
.
RETI
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 41
CNT EQU 120
LED7 EQU 121
LED8 EQU 122
POS EQU 123
LJMP MAIN
ORG 000BH
LJMP QUET_LED
MAIN:
MOV TMOD,#11H
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
MOV CNT,#0
MOV R0,#LED7
MOV POS,#40H
SETB EA
SETB ET0
SETB TR0
BEGIN:
CALL HEX_7S
CALL DL_300MS
INC CNT
MOV A,CNT
CJNE A,#100,BEGIN
MOV CNT,#0
LJMP BEGIN
;-------chương trình đổi số hex sang 2 mã 7 đoạn đặt vào LED1, LED2-----
HEX_7S:
.
.
RET
;------chương trình delay 300ms dùng timer1-------------------------------------
DL_300MS:
.
.
RET
; -------chương trình ngắt timer0----------------------------------------------------
QUET_LED:
PUSH PSW
PUSH ACC
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
MOV P2,#00H ; tắt các led
MOV DPTR,#LED_7S
MOV A,@R0
MOV P1,A
MOV A,POS
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 42
MOV P2,A
RL A
MOV POS,A
INC R0
CJNE R0,#123,EXIT
MOV R0,#LED7
MOV POS,#40H
EXIT:
POP ACC
POP PSW
RETI
LED_7S: DB .
END
Chương trình 4.2: Viết chương trình điều khiển đèn giao thơng với các thơng số: thời
gian đèn xanh: 15s, thời gian đèn vàng 3 giây (dùng ngắt timer0)
2/- Ngắt ngồi 01:
- Nối JP7 với JP20
- Nối JP3 với JP21
- Nối JP8 với JP15
Chương trình 4.3: Viết chương trình đếm số xung tạo ra bởi mạch COUNTER, hiển
thị số đếm trên 8 led dạng: cnt—000 (dùng ngắt ngồi 1 để đếm và ngắt timer0 để
quét led)
CNT EQU 127
LED1 EQU 126
LED2 EQU 125
LED3 EQU 124
LED4 EQU 123
LED5 EQU 122
LED6 EQU 121
LED7 EQU 120
LED8 EQU 119
POS EQU 118
LJMP MAIN
ORG 000BH
LJMP QUET_LED
ORG 0013H
LJMP COUNTER
MAIN:
MOV TMOD,#11H
MOV CNT,#0
MOV POS,#01H
MOV R0,#LED1
SETB EA
SETB IT1
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 43
SETB EX1
SETB ET0
.
.
.
;------chương trình ngắt ngồi 1--------------------------------
COUNTER:
INC CNT
RETI
3/- Ngắt truyền thơng:
- Nối JP7 với JP27
- Nối JP3 với JP29
Chương trình 4.4: Viết chương trình thực hiện:
- Nhấn SW1: tăng nội dung ơ nhớ 1 đơn vị, hiển thị ra led đơn và truyền về
máy tính
- Nhấn SW2 giảm nội dung ơ nhớ một đơn vị, hiển thị ra led và truyền về PC
- Chương trình cho phép nhận 4 byte truyền đến từ PC và hiển thị ra led
(tốc độ truyền 4800bps,n,8,1; sử dụng ngắt truyền thơng)
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 44
I. MỤC ĐÍCH:
Giúp sinh viên tìm hiểu stepper motor và điều khiển hoạt động của động cơ này.
II. 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 trên các module: microcontroller, led 7 đoạn, PPI8255, bàn
phím, stepper motor
CẤU TẠO MOTOR BƯỚC:
MG1
STEPPER MOTOR
1
2
3
4 5 6
Gồm 4 cuộn dây: 1-2, 2-3, 4-5 và 5-6, tất cả cĩ cùng số vịng dây và được chia
thành 2 cuộn cách ly, sơ đồ mạch điều khiển như hình trang sau.
- Điều khiển một bước (1.8 độ):
T1 T2 T3 T4 CHIỀU QUAY
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
Ti = 0: transistor ngưng dẫn
Ti = 1: transistor dẫn bão hồ
Thuâ ̣n Nghịch
BÀI 05: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 45
JP28
ST
EP
_M
O
TO
R 1
2
3
4
5
6
7
8
D8
LED1
R14 4K7
D7
LED2
D1
4007
R12 4K7
R17
220
R18
270
D5
LED4
R13 4K7
D6
LED3
R16
270
Q4
TIP122
D4
4007
R11 4K7
R15
270
Q1
TIP122
D3
4007
VCC
D2
4007
Q3
TIP122
VCC
Q2
TIP122
MG1
MOTOR STEPPER
1
2
3
4 5 6
- Điều khiển nửa bước (0.9 độ):
T1 T2 T3 T4 CHIỀU QUAY
1 0 0 1
1 0 0 0
1 1 0 0
0 1 0 0
0 1 1 0
0 0 1 0
0 0 1 1
0 0 0 1
1 0 0 1
Ti = 0: transistor ngưng dẫn
Ti = 1: transistor dẫn bão hồ
III. TIẾN TRÌNH THÍ NGHIỆM:
- Nối JP1 với JP9
- Nối JP4 với JP10
- Nối JP11 với JP20 (led 7 đoạn)
- Nối JP12 với JP21 (led 7 đoạn)
- Nối JP8 với JP29
- Nối JP7 với JP28
Thuâ ̣n Nghịch
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 46
Chương trình 5.1: Viết chương trình điều khiển động cơ quay thuận (quay từng
bước) với tốc độ 6 vịng/ phút
MAIN:
MOV R2,#4
MOV A,#01H
BEGIN:
MOV P1,A
CALL DL_50MS
RL A
DJNZ R2, BEGIN
LJMP MAIN
;-----chương trình delay 50ms dùng timer 0------------------------------
DL_50MS:
.
.
RET
END
Chương trình 5.2: Giảm từng bước thời gian delay của CT5.1, cho biết tốc độ
quay nhanh nhất của động cơ bước này.
Chương trình 5.3: Chương trình điều khiển động cơ quay thuận (nửa bước).
MAIN:
MOV R2,#0
MOV DPTR,#DU_LIEU
BEGIN:
MOV A, R2
MOVC A,@A+DPTR
MOV P1,A
CALL DL_500MS
INC R2
CJNE R2,#8,BEGIN
LJMP MAIN
;-----chương trình delay 500ms dùng timer 1------------------------------
DL_500MS:
.
.
RET
DU_LIEU: DB .
END
Chương trình 5.4: Viết chương trình thực hiện:
- Nhấn SW1: quay thuận (1 bước)
- Nhấn SW2: quay nghịch (1 bước)
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 47
- Nhấn SW3: dừng
(mặc định: động cơ dừng)
Chương trình 5.5: Viết chương trình cho phép nhập vào số bước (lưu trong một ơ
nhớ RAM) dùng SW1 (tăng 10 đơn vị ), SW2 (giảm một đơn vị), nội dung ơ nhớ
hiển thị trên LED1-LED8: Count. 000; nhấn SW3 động cơ quay thuận với số bước đã
đặt; nhấn SW4 động cớ quay nghịch với số bước đã đặt; trong khi quay, số đếm trên
các LED giảm dần, khi giảm đến 0 thì động cơ dừng; trong khi quay: khơng cho phép
thao tác phím.
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 48
I. MỤC ĐÍCH:
Giúp sinh viên tìm hiểu led ma trận 2 màu và phương pháp hiển thị thơng tin
nhiều màu trên led.
II. 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 trên các module: microcontroller, led ma trận , PPI8255,
bàn phím.
SƠ ĐỒ MẠCH: xem trang sau
Hiển thị chữ J trên ma trận LED:
Cột 1 Cột 2 Cột 3 Cột 4 Cột 5
Hàng 01 1 1 1 1 1
Hàng 02 0 0 1 0 0
Hàng 03 0 0 1 0 0
Hàng 04 0 0 1 0 0
Hàng 05 0 0 1 0 0
Hàng 06 0 0 1 0 0
Hàng 07 1 0 1 0 0
Hàng 08 0 1 0 0 0
DATA_MATRIX = 41H, 81H, 7FH, 01H, 01H
CATHODE_BLUE: 01H, 02H, 04H, 08H, 10H, hiển thị màu xanh
CATHODE_RED: 01H, 02H, 04H, 08H, 10H, hiển thị màu đỏ
BÀI 06: ĐIỀU KHIỂN MA TRẬN LED
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 49
5VDC
U14
ULN2803
101 2 3 4 5 6 7 8
18 17 16 15 14 13 12 11
C
O
M
IN
1
IN
2
IN
3
IN
4
IN
5
IN
6
IN
7
IN
8
O
U
T
1
O
U
T
2
O
U
T
3
O
U
T
4
O
U
T
5
O
U
T
6
O
U
T
7
O
U
T
8
Q12
A1013
C32 104
Q11
A1013
R33 15K
W1 MATRIX LED 8x5
MLED1
1 2 13 12 10 18 3 4 7 11
16
15
17
14
8
5
6
9
B
1
B
2
B
3
B
4
B
5
R
1
R
2
R
3
R
4
R
5
W1
W2
W3
W4
W5
W6
W7
W8
Q9
A1013
JP25
CATHOD BLUE
1 2 3 4 5 6 7 8
C27 104
JP26
CATHOD RED
1 2 3 4 5 6 7 8
C28 104
W6
W2
Q8
A1013
4007 X 8
Q7
A1013
R30 15K
W8
W1
C33 104
D25
D24
W5
D27
D26
R36 15K
C29 104
R35 15K
W6
W4
W4
D28
R37 15K
W7
Q5
A1013
Q10
A1013
D30
U15
ULN2803
101 2 3 4 5 6 7 8
18 17 16 15 14 13 12 11
C
O
M
IN
1
IN
2
IN
3
IN
4
IN
5
IN
6
IN
7
IN
8
O
U
T
1
O
U
T
2
O
U
T
3
O
U
T
4
O
U
T
5
O
U
T
6
O
U
T
7
O
U
T
8
W2
U16
ULN2803
101 2 3 4 5 6 7 8
18 17 16 15 14 13 12 11
C
O
M
IN
1
IN
2
IN
3
IN
4
IN
5
IN
6
IN
7
IN
8
O
U
T
1
O
U
T
2
O
U
T
3
O
U
T
4
O
U
T
5
O
U
T
6
O
U
T
7
O
U
T
8
W5
R34 15K
D29
W3
W8
JP24
DATA_MATRIX
1 2 3 4 5 6 7 8
D23
Q6
A1013
W3
C30 104
12VDC
C31 104
W7
C34 104
RN1
10K
1 2 3 4 5 6 7 8 9
R32 15K
R31 15K
III. TIẾN TRÌNH THÍ NGHIỆM:
- Nối JP1 với JP9
- Nối JP4 với JP10
- Nối JP8 với JP29
- Nối JP11 với JP25
- Nối JP12 với JP26
- Nối JP13 với JP24
Chương trình 6.1: Viết chương trình hiển thị chữ J màu xanh trên ma trận LED.
POS EQU 127
MAIN:
MOV POS,#0
MOV DPTR,#2003H
MOV A,#80H ; định cấu hình 8255 với các port đều
xuất
MOVX @DPTR,A
BEGIN:
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 50
; ********************************************
MOV A,#0h
MOV DPTR,#2002H ; PC = 0
MOVX @DPTR,A ; TAT LED
MOV A,POS
MOV DPTR,#COT
MOVC A,@A+DPTR
MOV DPTR,#2000H ; PA = 01H
MOVX @DPTR,A
MOV A,POS
MOV DPTR,#DU_LIEU
MOVC A,@A+DPTR
MOV DPTR,#2002H ; PC = DATA
MOVX @DPTR,A
CALL DELAY
INC POS
MOV A,POS
CJNE A,#5,BEGIN
MOV POS,#0
LJMP BEGIN
;------------------------delay---------------------------------
DELAY:
MOV TMOD,#01H
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
SETB TR0
CLR TF0
JNB TF0,$
CLR TR0
RET
;----------------------------------------------------------------
DU_LIEU: DB 41H, 81H, 7FH, 01H,01H
COT: DB 01H, 02H, 04H, 08H, 10H
END
Chương trình 6.2: Hiển thị chữ A màu đỏ trêm ma trận led
Chương trình 6.3: Hiển thị chữ H màu cam trên MT led
Chương trình 6.4: hiển thị các số tăng dần từ 0 – 9 trên ma trận led (dùng ngắt timer 0
để quét led), thời gian tăng số là 0.5 giây (dùng timer 1)
Chương trình 6.5: Viết chương trình hiển thị chữ T trên ma trận led, chương trình cho
phép thay đổi thời gian quét màu đỏ (dùng SW1), thời gian quét màu xanh (dùng
SW2) để tạo hiệu ứng TRUE COLOR.
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 51
I. MỤC ĐÍCH:
Giúp sinh viên tìm hiểu LCD và viết chương trình giao tiếp LCD
II. 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 trên các module: microcontroller, LCD, bàn phím.
SƠ ĐỒ MẠCH:
THIS IS THE LCD
2 LINES x 16 CHARACTERS LA
MP
LCD1
7 8 9 10 11 12 13 14 4 5 6 3 1 2 15 16
D
0
D
1
D
2
D
3
D
4
D
5
D
6
D
7
R
S
R
/W
C
S
C
O
N
S
T
G
N
D
V
C
C
A K
Q13
A1013R66 4K7
VCC
JP22DATA_LCD
1 2 3 4 5 6 7 8
R65
5/3W
VCC
R10 10K
JP23
CONTROL_LCD
1 2 3 4 5 6 7 8
- CONST: contrast, chỉnh độ tương phản (độ sáng của hình ảnh trên LCD)
- CS: chip selection, tác động bằng cạnh xuống, cho phép chốt dữ liệu
- RS: register selection, chọn thanh ghi lệnh (RS=0) hoặc thanh ghi dữ liệu
(RS = 1)
- R/W: chân đọc/ghi
- D7 – D0: data bus, hai hướng
- A, K: anod và cathode của đèn sáng nền của LCD
BÀI 07: LCD TC1602A
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 52
Tập lệnh LCD:
TẬP LỆNH (MÃ HEX) Chức năng
01H Xĩa màn hình hiển thị
02H Trở về đầu dịng
04H Dịch con trỏ sang trái
06H Dịch con trỏ sang phải
05H Dịch hiển thị sang phải
07H Dịch hiển thị sang trái
08H Tắt con trỏ, tắt hiển thị
0AH Tắt hiển thị, bật con trỏ
0CH Bật hiển thị, tắt con trỏ
0EH Bật hiển thị, nhấp nháy con trỏ
0FH Tắt hiển thị, nhấp nháy con trỏ
10H Dịch vị trí con trỏ sang trái
14H Dịch vị trí con trỏ sang phải
18H Dịch tồn bộ hiển thị sang trái
1CH Dịch tồn bộ hiển thị sang phải
80H Đưa con trỏ về đầu dịng 1
C0H Đưa con trỏ về đầu dịng 2
38H Xác lập chế độ 2 dịng và độ phân giải chữ 5x7
III. TIẾN TRÌNH THÍ NGHIỆM
- Nối JP7 với JP22
- Nối JP8 với JP23
- Nối JP3 với JP29
Chương trình 7.1: Viết chương trình hiển thị
“K. DIEN-DIEN TU” - dịng 1
“PTN TDH-VDK” - dịng 2
trên LCD
; = = = = = = = = = = = = = = = = =
; P1.0 - > D0
; P1.1 - > D1
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 53
; P1.2 - > D2
; . . .
; P1.7 - > D7
; P3.0 - > Enable
; P3.1 - > RS
; P3.2 - > RW
;*******************************************************
EN BIT P3.4
RS BIT P3.2
RW BIT P3.3
LAMP BIT P3.5
;----------------------------------------------------------------------------------
MAIN:
CLR LAMP ; bật đèn background LCD
clr RS ;RS low
clr RW ;RW low
setb EN ;Enable
mov TMOD,#01h
mov TL0,#LOW(-50000)
mov TH0,#HIGH(-50000) ; DELAY 50ms
MOV p1,#38h ; đặt chế độ 2 dịng
call GHI_LENH
call GHI_LENH
call Delay
MOV p1,#0ch ; bật hiển thị
call GHI_LENH
call GHI_LENH
MOV p1,#01h ;xố màn hình
call GHI_LENH
call GHI_LENH
call DONG_01
call DONH_02
sjmp $
;-------------------------------------------------------------------
write:
push acc
write1:
mov a,#0
movc a,@a+dptr
cjne a,#2,write_data ; asc = 2: kết thúc
pop acc
ret
write_data:
MOV p1,A
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 54
call GHI_DATA
inc dptr
sjmp write1
;--------------------------------------------------------------------
delay:
clr TF0
setb TR0
jnb TF0,$
clr TR0
ret
;-----------------------------------------------
DONG_01:
MOV p1,#080h ; đưa con trỏ về đầu dịng 01
call GHI_LENH
mov dptr,#DT_DONG1
call write
ret
;-------------------------------------------------
DONG_02:
MOV p1,#0c0h ; đưa con trỏ về đầu dịng 02
call GHI_LENH
mov dptr,#DT_DONG2
call write
ret
;--------------------------------------------------
GHI_LENH:
clr RS
clr RW
clr EN
nop
setb EN
ret
GHI_DATA:
setb RS
nop
wait:
clr RW
clr EN
nop
setb EN
nop
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 55
; kiểm tra Busy Flag
MOV p1,#0ffh ;configure port1 to input mode
setb RW
clr RS
clr EN
nop
setb EN
wait1: nop
MOV A,p1
anl a,#80h ; kiểm tra bit 7: busy flag
cjne a,#00h,wait1 ; chờ
nop
nop
nop
nop
nop
nop
ret
DT_DONG1:
db ' K. DIEN-DIEN TU', 02H
DT_DONG2:
db ' PTN TDH-VDK ', 02H
end
Chương trình 7.2: Viết chương trình hiển thị NGÀY-THÁNG-NĂM trên dịng 01 và
GIỜ-PHÚT-GIÂY trên dịng 02.
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 56
I. MỤC ĐÍCH:
Giúp sinh viên tìm hiểu thiết bị biến đổi tương tự – số và số tương tự 8 bit:
ADC0804 và ADC0808
II. 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 trên các module: microcontroller, LCD, bàn phím, module
ADC và DAC.
SƠ ĐỒ MẠCH ADC:
R5 1K
R8
1K
-
+
U8B JR4558
5
6
7
8
4
VCC
VCC
R3 470K
R1
1K
U7
ADC0804
6
7
9
11
12
13
14
15
16
17
18
19
4
5
1
2
3
+IN
-IN
VREF/2
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
CLKR
CLKIN
INTR
CS
RD
WR
U9
LM35
2
3
1
VS
+
ADJ
G
N
D
JP17 C
O
N
TR
O
L_A
D
C
1
2
3
4
5
6
7
8
C1
1nF
VCC
R9
1K
C2
100uF/25V
R4
1K
R2
10K
R6 330
VCC
-VCC
-
+
U8A
JR4558
3
2
1
8
4
JP16
D
A
TA
_A
D
C
1
2
3
4
5
6
7
8
VCC
R7
1K
-VCC
VCC
KÝ HIỆU NGÕ VÀO/RA CHỨC NĂNG
VREF Ngõ vào điện áp chuẩn,cho phép chỉnh thang
đo.
CLKIN/CLKR Các ngõ vào cho mạch dao động RC
NGÕ VÀO VIN+ Ngõ vào đo +
VIN- Ngõ vào đo -
WR Ngõ vào khởi động ADC ( START)
RD Ngõ vào điều khiển đọc số liệu.
NGÕ RA DB7 –DB0 Ngõ ra dữ liệu số 8 bit
INTR Ngõ ra báo tín hiệu biến đổi đã sẳn sàng (EOC:
end of converter).
BA ̀I 08: ADC-DAC
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 57
ADC biến đổi điện áp :
VIN = VIN + - VIN -
Thành giá trị số 8 bit ở ngõ ra:
N = 255
V
V
REF
IN
Trong đĩ: Vref = R6*VCC/(R5+R6)
SƠ ĐỒ MẠCH DAC:
R58
150
VCC
JP19
DAC_OUT
1
2
R51
2K7
R69
2K7
R56 2K7
C14
104
R52 10
D22
LED
R29 10
JP18
D
A
TA
_D
A
C
1
2
3
4
5
6
7
8
R53 820
VCC
D21
5V1
R57
2K7
U21 DAC0808
1
3
16
14 15
2
13
5
6
7
8
9
10
11
12
4
GND
VEE
COMPS
V
R
EF
+
V
R
EF
- Iout
VC
C
D7
D6
D5
D4
D3
D2
D1
D0
Iout
C17
104
R55
10K
C13
104
D20
4007
VCC
R54
5K
-12VDC
-
+
U22A
JR4558
3
2
1
8
4
-
+
U22B
JR4558
5
6
7
8
4
C12
100uF
C16
CAP
+12VDC
R68
270
- D7-D0: 8 bit số ngõ vào
- Vref+, Vref-: các chân điện áp chuẩn
- Vout = (D7/2 + D6/4 ++ D0/256)*Vref hoặc
Vout = N*Vref/255
III. TIẾN TRÌNH THÍ NGHIỆM
1/- ADC0804:
- Nối JP7 với JP16
- Nối JP8 với JP17
- Nối JP1 với JP9
- Nối JP4 với JP10
- Nối JP11 với JP20
- Nối JP12 với JP21
Phịng thí nghiệm Tự động hố – Vi điều khiển Tài liệu thí nghiệm Vi điều khiển
Trang 58
Chương trình 8.1: Viết chương trình đọc giá trị ADC và hiển thị trên 6 led 7
đoạn (led3 – led8): 000doC (chỉnh biến trở để nhiệt độ đo được đúng với nhiệt độ
phịng)
Chương trình 8.2: Viết chương trình cho phép lấy mẫu nhiệt độ (1s một mẫu) và
truyền về PC (tốc độ 4800bps,n,8,1) để khảo sát sự thay đổi nhiệt độ trong phịng thí
nghiệm. Trên giao diện chương trình máy tính chọn Emulator và click START để bắt
đầu (chương trình cho phép vẽ các giá trị nhiệt độ nhận được trên đồ thị)
2/- DAC0808:
- Nối JP7 với JP18
- Nối JP8 với JP29
- Nối JP1 với JP9
- Nối JP4 với JP10
- Nối JP11 với JP20
- Nối JP12 với JP21
Chương trình 8.3: Viết chương trình cho phép nhập vào một số 0 – 255 bằng
SW1 (tăng 10 đơn vị) và SW2 (giảm 1 đơn vị), hiển thị trên 3 led 6,7,8. Nhấn SW3
để xuất ra ngõ vào ADC, quan sát trạng thái sáng của led ở ngõ ra DAC và dùng
VOM để đo điện áp.
Chương trình 8.4: Viết chương trình cho phép nhận một byte truyền từ PC
(4800,n,8,1) và xuất ra DAC.
Các file đính kèm theo tài liệu này:
- tailieu.pdf