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
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 JP8: P3_CPU JP3: P2_ADDRESS JP1: DATA_CPU JP2: DECODE2_LCD JP4: DECODE1_8255 JP3: P1_89C2051 JP4: P3_89C2051 PORT 1, CPU 89C51 PORT 3, CPU 89C51 PORT 2, CPU 89C51 PORT 0, CPU 89C51 PORT 0, CPU 89C51 Tín hiệu giải mã cho PPI 8255A PORT 1, CPU 89C2051 PORT 3, CPU 89C2051
2/- PPI 8255A:
Module giao tiếp song song, gồm các socket sau: CHỨC NĂNG TÊN
DATA BUS, 8255A Các tín hiệu điều khiển 8255A PORT A, 8255A PORT B, 8255A PORT C, 8255A PORT C, 8255A
Trang 1
JP9: DATA_8255 JP10: CTRL_8255 JP11: PA_8255 JP12: PB_8255 JB13: PC1_8255 JB14: PC2_8255
P h ò n g t h í n g h i ệ m T ự đ ộ n g
h o á
– V
i đ i ề u
k h i ể n
T r a n g 2
T à i l i ệ u t h í n g h i ệ m V
i đ i ề u k h i ể n
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
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 JP25: CATHOD BLUE JP26: CATHOD RED 8 ĐƯỜNG DATA MATRẬN LED 5 ĐƯỜNG ĐIỀU KHIỂN CỘT LED XANH 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:
CHỨC NĂNG
TÊN JP27: DATA LED JP22: DATA LCD JP23: CONTROL_LCD 8 BIT ĐIỀU KHIỂN LED ĐƠN 8 BIT DATA CỦA 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:
CHỨC NĂNG
TÊN JP20: DATA_LED7S. JP21: CONTROL_LED7S 8 BIT DATA CỦA LED 7 ĐOẠN 8 BIT ĐIỀU KHIỂN LED
Trang 3
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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
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 JP17: CONTROL_ADC 8 BIT NGÕ RA SỐ CÁC ĐƯỜNG TÍN HIỆU ĐIỀU KHIỂN
Trang 4
II. SƠ ĐỒ NGUYÊN LÝ CÁC KHỐI:
P h ò n g t h í
U1
AT89C51
U4
6264
JP1
U2
JP7
JP3
U P C _ 1 P
D A T A _ C P U
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
A0 A1 A2 A3 A4 A5 A6 A7
D0 D1 D2 D3 D4 D5 D6 D7
A8 A9 A10 A11 A12 A13 A14 A15
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
39 38 37 36 35 34 33 32
2 5 6 9 12 15 16 19
3 4 7 8 13 14 17 18
11 12 13 15 16 17 18 19
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
D0 D1 D2 D3 D4 D5 D6 D7
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D0 D1 D2 D3 D4 D5 D6 D7
D0 D1 D2 D3 D4 D5 D6 D7
P 2 _ A D D R E S S
11 1
LE OE
A8 A9 A10 A11 A12
10 9 8 7 6 5 4 3 25 24 21 23 2
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
SN74LS374
n g h i ệ m T ự đ ộ n g h o á
WR
RD WR Y2 A0 A1
U P C _ 3 P
RD WR T1 T0 INT1 INT0 TXD RXD
8 7 6 5 4 3 2 1
17 16 15 14 13 12 11 10
22 27 20 26
– V
OE WE CS1 CS2
P3.7/RD P3.6/WR P3.5/T1 P3.4/T0 P3.3/INT1 P3.2/INT0 P3.1/TXD P3.0/RXD
21 22 23 24 25 26 27 28
VCC
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
i
1 2 3 4 5 6 7 8
11,0592Mhz
JP4D E C O D E 1 _ 8 2 5 5
19
JP8
XTAL1
Y 1
/
18
30 29
T S R
P P V A E
đ i ề u
XTAL2
ALE/PROG PSEN
(0000H - 1FFFH)
9
1 3
VCC
R67
C6
C5
10K
k h i ể n
A13 A14 A15
1 2 3
A B C
10p
33p
PSEN
1
T E S E R
3
RD
RESET SW
2
6 4 5
G1 G2A G2B
R19
R28
15 14 13 12 11 10 9 7
100
10K
Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
Y 0 Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Y 7
SW1
U6A
74LS08
C7 10uF/50V
1
2
U5
74LS138
VCC
MEMORY SELECTION
VCC
VCC
T r a n g 5
0
1
2
3
4
5
6
7
.
.
.
.
.
.
.
.
0 D
1 D
2 D
3 D
4 D
5 D
6 D
7 D
5 1 A
4 1 A
3 1 A
2 1 A
1 1 A
0 1 A
9 A
8 A
0 T
1 T
R W
D R
1 P
1 P
1 P
1 P
1 P
1 P
1 P
1 P
RN7
10K
RN6
10K
0 T N
1 T N
D17
D19
D X R
D X T
I
I
READY
DATA LOAD
1 2 3 45 6 78 9
1 2 34 5 67 8 9
1 23 4 5 67 8 9
12 3 4 56 7 89
123456789
1 23 4 5 67 8 9
R63 270
R64 270
VCC
RN2
RN3
RN4
RN5
10K
10K
10K
10K
JP6
U23
6
8
R59
2K2
TXD
U6B
U6C
7408
7408
R60
2K2
JP5
RXD
U20
D B 9 _ 2 (
R61
TXD1 RXD1
8 7 6 5 4 3 2 1
11 9 8 7 6 3 2
2K2
1 5 0 2 C 9 8 _ 3 P
P3.7 P3.5/T1 P3.4/T0 P3.3/INT1 P3.2/INT0 P3.1/TXD P3.0/RXD
l
TXD1
M a e )
4 5
0 9 1
7 8
T2OUT R2IN
1 6 2 7 3 8 4 9 5
Y 2
R62 2K2
RXD1
11 12 10 9
5 4
XTAL1 XTAL2
11,0592Mhz
T1IN R1OUT T2IN R2OUT
C O M P O R T 2 0 5 1
1
19 18 17 16 15 14 13 12
8 7 6 5 4 3 2 1
P 1 _ 8 9 C 2 0 5 1
RST/VPP
P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1/AIN1 P1.0/AIN0
C8
C9
0 . 1 P
1 . 1 P
C15
C23
RESET
10uF
10uF
10p
10p
AT89C2051
1 3 4 5 2 6
14 13
T1OUT R1IN
C1+ C1- C2+ C2- V+ V-
C10
C11
T à i l i ệ u t h í n g h i ệ m V
MAX232
10uF
10uF
l
D B 9 _ 1 ( F e m a e )
Title
1 6 2 7 3 8 4 9 5
P C I N T E R F A C E
MICROCONTROLLER WITH EXTERNAL RAM Rev
Size B
Document Number
Date:
Monday , July 24, 2006
Sheet
1
1
of
i đ i ề u k h i ể n
R48
U3
330
JP9
JP11
R47
R50
2K7
270
VCC
P h ò n g t h í n g h i ệ m T ự đ ộ n g h o á
P A _ 8 2 5 5
D18
1
4
– V
D A T A _ 8 2 5 5
1 2 3 4 5 6 7 8
34 33 32 31 30 29 28 27
4 3 2 1 40 39 38 37
1 2 3 4 5 6 7 8
U18
4 8
D0 D1 D2 D3 D4 D5 D6 D7
PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7
LED
OPTO
7
DSCHG
i đ i ề u
JP12
T S R
C C V
2
5
JP10
R49
4K7
k h i ể n
5
3
OUT
CV
Q14 C828
18 19 20 21 22 23 24 25
1 2 3 4 5 6 7 8
6 2
P B _ 8 2 5 5
PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7
THR TRG
C4
5 36 6 9 8 35
RD WR CS A0 A1 RESET
JP13
LM555
104
R46
1 2 3 4 5 6 7 8
47K
D E C O D E _ 8 2 5 5
T r a n g 6
1 2 3 4 5 6 7 8
PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7
14 15 16 17 13 12 11 10
1 2 3 4 5 6 7 8
PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7
P C 1 _ 8 2 5 5
C3 470uF
JP14
8255
J15 COUNTER
PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7
1 2 3 4 5 6 7 8
PPI-8255A
P C 2 _ 8 2 5 5
T à i l i ệ u t h í n g h i ệ m V
i đ i ề u k h i ể n
DATA_LED7S
U13
74LS244
LED1
LED2
LED3
LED4
LED5
LED6
LED7
LED8
JP20
R20 150 X 8
P h ò n g t h í
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
1 2 3 4 5 6 7 8
2 4 6 8 11 13 15 17
18 16 14 12 9 7 5 3
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
2 C
2 C
2 C
2 C
2 C
2 C
2 C
2 C
A1 A2 A3 A4 A5 A6 A7 A8
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Y 7 Y 8
3 8
3 8
3 8
3 8
3 8
3 8
3 8
3 8
1 19
1OE 2OE
JP21
U12
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
18 17 16 15 14 13 12 11
IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8
OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8
n g h i ệ m T ự đ ộ n g h o á – V
S 7 D E L _ L O R T N O C
10
COM
VCC
ULN2803
5VDC
MLED1
LCD1
R31
R30
D9
D10
D11
D12
D13
D14
D15
D16
15K
15K
MATRIX LED 8x5
W2
W1
Q6
Q5
LED
LED
LED
LED
LED
LED
LED
LED
i đ i ề u k h i ể n
4007 X 8
A1013
A1013
C28
104
C27
104
THIS IS THE LCD
16
D23
P M A
W1
2 LINES x 16 CHARACTERS L
15
D24
W2
R33
R32
15K
15K
W4
R38 270
R39 270
R40 270
R41 270
R42 270
R43 270
R44 270
R45 270
17
D25
Q7
Q8
W3
W3
/
C29
104
S C
T S N O C
D N G
C C V
A K
0 D
1 D
2 D
3 D
4 D
5 D
6 D
7 D
S R
W R
A1013
A1013
14
D26
C30
104
W4
0 78 9 1
1 1
2 1
3 1
4 1
4 5 6 3
1 2
5 1
6 1
8
D27
W5
R35
R34
5
D28
15K
15K
W6
VCC
Q9
Q10
W5
W6
6
D29
C31
104
W7
A1013
A1013
C32
104
T r a n g
9
D30
R65 5/3W
W8
7
R10
10K
8 1
7 1
6 1
5 1
4 1
3 1
2 1
1 1
R37
R36
15K
15K
W7
Q13
VCC
Q11
Q12
U17
W8
C33
104
A1013
A1013
A1013
ULN2803
1 T U O
2 T U O
3 T U O
4 T U O
5 T U O
6 T U O
7 T U O
8 T U O
R66
4K7
C34
104
1 B
2 B
3 B
4 B
5 B
1 R
2 R
3 R
4 R
5 R
1 N
2 N
3 N
4 N
5 N
6 N
7 N
8 N
1 2 3 45 6 78
1 23 4 5 67 8
I
I
I
I
I
I
I
I
M O C
3 1 21
2 1
0 1
8 1
1 34 7 1
JP23
12VDC
12 3 4 56 7 8
0 1
JP22
DATA_LCD
CONTROL_LCD
W1 W2 W3 W4 W5 W6 W7 W8
12 3 4 56 7 8
1 2 3 45 6 78 9
8 1
7 1
6 1
5 1
4 1
3 1
2 1
1 1
JP27
U16
8 1
7 1
6 1
5 1
4 1
3 1
2 1
1 1
8 1
7 1
6 1
5 1
4 1
3 1
2 1
1 1
ULN2803
1 T U O
2 T U O
3 T U O
4 T U O
5 T U O
6 T U O
7 T U O
8 T U O
U14
U15
DATA_LED
ULN2803
ULN2803
1 T U O
2 T U O
3 T U O
4 T U O
5 T U O
6 T U O
7 T U O
8 T U O
1 T U O
2 T U O
3 T U O
4 T U O
5 T U O
6 T U O
7 T U O
8 T U O
RN1
1 N
2 N
3 N
4 N
5 N
6 N
7 N
8 N
I
I
I
I
I
I
I
I
M O C
10K
1 N
2 N
3 N
4 N
5 N
6 N
7 N
8 N
1 N
2 N
3 N
4 N
5 N
6 N
7 N
8 N
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
M O C
M O C
1 23 4 56 7 8
0 1
1 2 3 45 6 7 8
1 23 4 5 67 8
0 1
0 1
1 23 4 56 7 8
1 2 3 45 6 7 8
1 23 4 5 67 8
Title
JP24
JP25
JP26
T à i l i ệ u t h í n g h i ệ m V
Rev
Size B
MATRIX 8x5 AND LCD
Document Number
DATA_MATRIX
CATHOD BLUE
CATHOD RED
Date:
Monday , July 24, 2006
Sheet
1
1
of
i đ i ề u k h i ể n
VCC
VCC
MG1
1 2 3
R15 270
R16 270
R17 220
R18 270
4 5 6
D5
D6
D7
D8
MOTOR STEPPER
LED4
LED3
LED2
LED1
P h ò n g t h í n g h i ệ m T ự đ ộ n g h o á – V
D1
D2
D3
D4
i đ i ề u
4007
4007
4007
4007
k h i ể n
R11
4K7
Q1 TIP122
Q2 TIP122
Q3 TIP122
Q4 TIP122
JP28
R12
4K7
T r a n g 8
R13
4K7
1 2 3 4 5 6 7 8
R O T O M _ P E T S
R14
4K7
T à i l i ệ u t h í n g h i ệ m V
i đ i ề u k h i ể n
P h ò n g
t h í
INC
DEC
MODE
ENTER
JP29
n g h i ệ m T ự đ ộ n g
h o á
– V
D A T A _ S W
1 2 3 4 5 6 7 8
C19
C20
C21
C22
i đ i ề u
101
101
101
101
k h i ể n
T r a n g 9
T à i l i ệ u t h í n g h i ệ m V
i đ i ề u k h i ể n
P h ò n g t h í
-12VDC
R29
10
VCC
VCC
U21
DAC0808
D20
C13
n g h i ệ m T ự đ ộ n g h o á
3 1
C12
4007
JP18
104
1
– V
100uF
GND
D22
C14
i
C C V
LED
104
3
đ i ề u
VEE
16
COMPS
R56
VCC
2K7
k h i ể n
4
Iout
C A D _ A T A D
8 7 6 5 4 3 2 1
12 11 10 9 8 7 6 5
D0 D1 D2 D3 D4 D5 D6 D7
R58 150
2
U22B
R68 270
4
U22A
JR4558
4
- Iout F E R V
+ F E R V
6
JR4558
-
7
2
-
4 1
5 1
1
5
+
3
+
8
+12VDC
R69
R55
R53
8
T r a n g 1 0
R51 2K7
R52 10
820
2K7
10K
R57 2K7
D21
R54
5V1
JP19
C17
C16 CAP
5K
2 1
104
DAC_OUT
T à i l i ệ u t h í n g h i ệ m V
i đ i ề u k h i ể n
P h ò n g t h í
VCC
R5 1K
R6 1K
VCC
R4 1K
C2
VCC
100uF/25V
n g h i ệ m T ự đ ộ n g h o á
2
8
U8B
JR4558
U7
JP16
R3 470K
U9
5
– V
+
7
i
+ S V
LM35
3
6 7
6
-
ADJ
+IN -IN
VCC
đ i ề u
R1
9
VREF/2
4
D N G
1K
k h i ể n
R7 1K
19 4
CLKR CLKIN
1
D A T A _ A D C
18 17 16 15 14 13 12 11
1 2 3 4 5 6 7 8
DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7
-VCC VCC
C1
5
U8A
VCC
8
INTR
2 3 1
R9
JR4558
RD WR CS
3
1nF
+
1
1K
R2 10K
2
-
ADC0804
T r a n g 1 1
4 -VCC
JP17
R8 1K
1 2 3 4 5 6 7 8
C O N T R O L _ A D C
T à i l i ệ u t h í n g h i ệ m V
i đ i ề u k h i ể n
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
II. THIẾT BỊ GHI CHƯƠNG TRÌNH TVT_V1.1:
40 21 1 20
20 11 1 10
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:
Trang 12
III. PHẦN MỀM ĐIỀU KHIỂN: Giao diện chương trình:
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
Gồm các menu: - Comport: cho phép chọn cổng COM1 hoặc cổng COM2 để giao tiếp với
- ChipSelect: cho phép chọn loại CPU để ghi chương trình vào bộ nhớ trong
+ clr_Unlock: xóa và ghi chương trình không khóa, tức là chương - ProType: chọn kiểu ghi chương trình
+ clr_Lock: xóa và ghi chương trình với 3 bit khóa, chương trình đã
+ Compare: so sánh nội dung bộ nhớ CPU với vùng đệm của
+ Read: đọc nội dung bộ nhớ Flash ROM của CPU và lưu vào vùng
+ Clear: Xóa bộ nhớ CPU.
ngoại vi. (Flach ROM) trình sau khi ghi vào bộ nhớ CPU có thể đọc ngược trở ra. ghi vào không thể đọc ra được. chương trình. đệm chương trình. 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.
Trang 13
- 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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiể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
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,
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. TRANS., byte dữ liệu này sẽ được truyền đi. 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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
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
- Click chuột vào nút lệnh thao tác trong khung Flash ROM (ở góc dưới bên
- 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
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 đế
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. 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. phải của cửa sổ chương trình) Compare từ menu ProType và click chuột vào nút lệnh thao tác. 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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
- Nhấn SW RESET và kiểm tra đèn LED tín hiệu READY, nếu đèn nhấp nháy
- 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
4/- Một số lưu ý khi sử dụng thiết bị:
Trang 16
thì hệ thống sẵn sàng cho việc truyền/nhận dữ liệu. 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. Do CPU 89C51 có thể thực hiện chương trình từ bộ nhớ trong hoặc bộ nhớ ngoà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ớ ngoà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ớ ngoà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ớ ngoài RAM.
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
BÀI 01: SỬ DỤNG TẬP LỆNH 8951
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.
; P1 <- 11111111B, các led đều sáng ; gọi chương trình trì hoãn DELAY ; P1 <- 00000000B, các led đều tắt
MOV P1,#0FFH CALL DELAY MOV P1,#00H CALL DELAY LJMP MAIN ; nhảy đến MAIN để lập lại quá trình vô hạn
; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255
; (cid:217) X: DJNZ R7,X
Trang 17
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: DELAY: LAP: MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP 06 POP ; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp
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
RET ; kết thúc chương trình con. END
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ỆNH 1
- LỆNH 2 - Hướng dẫn:
MOV Ri, # 255)>
NHÃN:
- LỆNH n
DJNZ Ri,
MOV R7,#10
; P1 <- 11111111B, các led đều sáng ; gọi chương trình trì hoãn DELAY ; P1 <- 00000000B, các led đều tắt
MOV P1,#0FFH CALL DELAY MOV P1,#00H CALL DELAY DJNZ R7,MAIN SJMP $ ; ; “dừng chương trình”
; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255
; (cid:217) X: DJNZ R7,X
- Chương trình: MAIN: DELAY: LAP: MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP DJNZ R6, LAP 07 POP 06 POP RET ; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp ; kết thúc chương trình con.
Trang 18
NHẮC LẠI:
Ri,
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
6. 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à
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.
MOV A,#01H
MOV P1, A RL A CALL DELAY LJMP BEGIN
; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255
; (cid:217) X: DJNZ R7,X
; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp ; kết thúc chương trình con. MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP 06 POP RET 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 (cid:198) D8: MAIN: BEGIN: DELAY: LAP: END
MOV A,#80H
MOV P1, A A RR CALL DELAY LJMP BEGIN
Trang 19
Chương trình 1.6: viết chương trình dịch một led sáng từ D8 (cid:198) D1: MAIN: BEGIN: DELAY: ; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07
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
MOV R6,#255
; (cid:217) X: DJNZ R7,X
; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp ; kết thúc chương trình con. MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP 06 POP RET
MOV A,#01H
SETB C MOV P1, A RLC A CALL DELAY JNC BEGIN LJMP MAIN
; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255
; (cid:217) X: DJNZ R7,X
; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp ; kết thúc chương trình con. LAP: END Chương trình 1.7: viết chương trình sáng dần các led từ D1 (cid:198) D8: MAIN: BEGIN: DELAY: LAP: END MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP 06 POP RET
MOV A,#80H
Trang 20
Chương trình 1.8: viết chương trình sáng dần các led từ D8 (cid:198) D1: MAIN: BEGIN: SETB C MOV P1, A RRC A CALL DELAY JNC BEGIN LJMP MAIN
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
; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255
; (cid:217) X: DJNZ R7,X
; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R0 trong ngăn xếp ; kết thúc chương trình con. MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP 06 POP RET DELAY: LAP: 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 (cid:198) D8
Chương trình 1.10: viết chương trình tắt dần các led từ D8 (cid:198) D1
Chương trình 1.11: viết chương trình tắt dần các led từ D8 (cid:198) D1, thực hiện lặp lại 20 lần.
3/- Nhóm lệnh toá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ả
MOV A,#12 ADD A,#34 MOV P1,A SJMP $
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ả
Trang 21
trên các led. MAIN: END trên các led. MAIN: MOV A,#12
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
SETB C ADDC A,#34 MOV P1,A SJMP $
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ả
AB
MOV A,#17 MOV B,#3 DIV MOV P1,A SJMP $
AB
MOV A,#17 MOV B,#3 DIV MOV P1,B SJMP $
MOV A,#7 MOV B,#14 MUL AB MOV P1,A SJMP $
Trang 22
END (phần nguyên) trên các led. MAIN: 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: 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: 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 hoá – 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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
BÀI 02: LED 7 ĐOẠN VÀ BÀN PHÍM
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
I. MỤC ĐÍCH: 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.
- 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: Trong sơ đồ mạch:
AI X 0 1 YI Z 0 1
OUT1
IN1
GND
- 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 OE 1 0 0 X: mức logic 1 hoặc 0 Z: trạng thái cách ly (tổng trở cao) như sau:
dòng điện IC cực đại là 500mA, chân GND của 8 transistor được nối chung và
- LED 7 đoạn sử dụng trong mạch là loại cathod chung có cấu trúc như sau:
Trang 24
đưa ra tại chân số 9 của IC.
INC
DEC
MODE
ENTER
a
P h ò n g t h í n g h i ệ m T ự đ ộ n g h o á
JP29
a
b
d
e
f
g
c
i
f
b
– V
t n o p
g
i đ i ề u
D A T A _ S W
1 2 3 4 5 6 7 8
C19
C20
C21
C22
e
c
k h i ể n
101
101
101
101
d
point
COM
T r a n g 2 5
DATA_LED7S
LED1
LED2
LED3
LED4
LED5
LED6
LED7
LED8
U13
74LS244
JP20
R20 150 X 8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
S1 S2 S3 S4 S5 S6 S7 S8
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
7 6 4 2 1 9 10 5
1 2 3 4 5 6 7 8
2 4 6 8 11 13 15 17
18 16 14 12 9 7 5 3
2 C
2 C
2 C
2 C
2 C
2 C
2 C
2 C
Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Y 7 Y 8
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
a b c d e f g 1 p C
A1 A2 A3 A4 A5 A6 A7 A8
3 8
3 8
3 8
3 8
3 8
3 8
3 8
3 8
1 19
1OE 2OE
JP21
U12
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
18 17 16 15 14 13 12 11
OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8
IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8
S 7 D E L _ L O R T N O C
10
COM
ULN2803
T à i l i ệ u t h í n g h i ệ m V
i đ i ề u k h i ể n
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
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)
Chương trình 2.1: viết chương trình hiển thị số 5 trên LED1:
1/- Viết chương trình hiển thị thông tin trên led 7 đoạn: SỐ D5 f D4 e D3 D D2 c
1 0 1 1 6DH
0 1 2 3 4 5 6 7 8 9 D7 p 0 D6 G 1 D1 b 0 D0 Giá trị HEX a 1
; tắt các led ; đặt DATA số 5 ra P1 ; mở nguồn led1 MOV MOV MOV SJMP P2,#00H P1,#6DH P2,#01H $ MAIN: END
; tắt các led P2,#00H MOV
Trang 26
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: BEGIN: ; đặt DATA 5 ra P1 ; mở nguồn led 7 ; trì hoãn để mắt lưu ảnh thông tin P1,#6DH P2.6 DELAY MOV SETB CALL
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
; tắt nguồn led 7 ; đặt thông tin DATA 4 ra P1 ; mở nguồn led 8 ; trì hoãn để mắt lưu ảnh ; tắt nguồn led 8 ; lặp lại quá trình vô hạn ; chương trình DELAY ~ 1ms
P2.6 P1,#66H P2.7 DELAY P2.7 BEGIN 07H R7,#100 $ 07H CLR MOV SETB CALL CLR LJMP PUSH MOV DJNZ POP RET DELAY: END
MOVC A,@A+DPTR ; là lệnh gán vào thanh ghi A nội dung ô nhớ
EQU ; khai báo biến CNT tại ô nhớ RAM 127
; tắt các led ; khởi động biến đếm = 0 P2,#00H CNT,#0 DPTR,#MA_7S ; lấy địa chỉ đầu bảng mã 7 đoạn MOV MOV MOV
; đổi nội dung CNT ra mã 7 đoạn ; đặt mã 7 đoạn ra P1 ; mở nguồn led8 ; trì hoãn ; tăng nội dung biến
; nếu biến < 10 thì tiếp tục hiện thi( ; nếu biến = 10 thì gán về 0 A,CNT A,@A+DPTR P1,A P2.7 DELAY CNT A,CNT A,#10,BEGIN CNT,#0 BEGIN MOV MOVC MOV SETB CALL INC MOV CJNE MOV LJMP
; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 06 PUSH 07 MOV R6,#255
; (cid:217) X: DJNZ R7,X
Trang 27
Chương trình 2.3: viết chương trình hiển thị các số tăng dần từ 0 (cid:198)9 trên led 8 HƯỚNG DẪN: 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 (cid:205) (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ố đó. 127 CNT MAIN: BEGIN: DELAY: LAP: MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP 07 POP ; lấy lại giá trị cũ của R7 trong ngăn xếp
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
POP RET ; lấy lại giá trị cũ của R6 trong ngăn xếp ; kết thúc chương trình con. 06 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH MA_7S: END
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
127 EQU 126 125 EQU
ACC B A,CNT B,#10 AB CHUC,A DONVI,B B ACC DOI_SO: PUSH PUSH MOV MOV DIV MOV MOV POP POP 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
JNB
Trang 28
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
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
DONVI EQU
CHUC
.
.
.
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ị
bit,
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
BIT BIT P3.1 P3.2
MOV P2,#00H SETB P2.7 ; tắt các led ; mở nguồn led8
; nếu SW1 nhấn thì (cid:198) HT3
SW1,HT3 SW2,HT7 SW3,TAT JNB JNB JNB LJMP BEGIN
MOV P1,#4FH LJMP BEGIN ; hiển thị số 7 ; trở về tiếp tục kiểm tra phím
MOV P1,#07H LJMP BEGIN
MOV P2,#00H LJMP BEGIN
SW2 SW3 MAIN: BEGIN: SW1: SW2: SW3: 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-5…9-0) - Nhấn SW2: giảm nội dung hiển thị một đơn vị trên led1 (9-8-7…2-1-0-9)
127 P3.0 P3.1 CNT SW1 SW2 EQU BIT BIT
P2,#00H P2.0 CNT,#0 MOV SETB MOV
Trang 29
SW1,TANG SW2,GIAM A,CNT A,@A+DPTR P1,A BEGIN JNB JNB MOV MOVC MOV LJMP 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ì hoã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ì hoã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ị. MAIN: BEGIN: TANG:
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
INC MOV CJNE MOV CNT A,CNT A,#10,TROVE CNT,#0
CALL LJMP DELAY BEGIN
DEC MOV CJNE MOV LJMP CNT A,CNT A,#255,TROVE CNT,#0 TROVE TROVE: GIAM:
; cất nội dung R5 vào ngăn xếp ; cất nội dung R6 vào ngăn xếp ; cất nội dung R7 vào ngăn xếp PUSH 05 PUSH 06 PUSH 07 MOV R5,#2
MOV R6,#255
; (cid:217) X: DJNZ R7,X
; lấy lại giá trị cũ của R7 trong ngăn xếp ; lấy lại giá trị cũ của R6 trong ngăn xếp ; lấy lại giá trị cũ của R5 trong ngăn xếp ; kết thúc chương trình con. 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH MOV R7,#255 DJNZ R7,$ DJNZ R6, LAP DJNZ R5,LAP1 07 POP 06 POP 05 POP RET DB DELAY: LAP1: LAP: MA_7S: END
Trang 30
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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
BÀI 03: TIMER 8951 & PPI8255A
Giúp sinh viên tìm hiểu về timer trong 8951 và IC giao tiếp song song có lập
I. MỤC ĐÍCH: 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 (cid:34) 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:
PULSE INPUT
THx : 8 BIT
TLx : 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
Trang 31
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
1. Thanh ghi TCON (timer control): Là thanh ghi 8 bit, có thể truy xuất byte hoặc bit
3
7
6
5
4
2
1
0
TF0
IE1
IE0
TF1
TR1
TR0
IT1
IT0
• 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 ngoà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 ngoà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 ngoà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 ngoà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
3
7
6
5
4
2
1
0
M1
GATE
C/T
M1
GATE
C/T
M0
M0
ÑIEÀU KHIEÅN TIMER 1
ÑIEÀU KHIEÅN TIMER 0
• 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 0 0 1 1
M0 0 1 0 1
CHẾ ĐỘ (MODE) 0 1 2 3
MÔ TẢ Timer/Counter 13 bit Timer/Counter 16 bit Timer/Counter 8 bit, auto reload Timer/Counter 8 bit
a/- Chế độ 0:
Trang 32
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
PULSE INPUT
THx : 8 BIT
TLx : 5 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:
PULSE INPUT
THx : 8 BIT
TLx : 8 BIT
TFx
c/- Chế độ 2:
PULSE INPUT
TLx : 8 BIT
TFx
OVERFLOW
THx : 8 BIT
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:
PULSE INPUT
TF0
TL0 : 8 BIT
OSC:12
TH0 : 8 BIT
TF1
TR1
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.
Trang 33
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
(cid:34) Tìm hiểu PPI8255A: xem sơ đồ mạch trang sau:
U24
4 3 2 1 40 39 38 37
DATA BUS
PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7
PA PB PC
34 33 32 31 30 29 28 27
D0 D1 D2 D3 D4 D5 D6 D7
18 19 20 21 22 23 24 25
PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7
9 8
A0 A1
35 5 36 6
14 15 16 17 13 12 11 10
RESET RD WR CS
PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7
8255
CONTROL REGISTER (CR)
- 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 0 0 1 1 A0 0 1 0 1
GIAO TIẾP DATA BUS --- PA DATA BUS --- PB DATA BUS --- PC 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.
Trang 34
- 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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
7
6
5
3
2
1
0
4
ACT
0
PB
PCL
PA
0
PCH
0
Địa chỉ các PORT PPI8255 trong hệ thống: 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Ỉ 2000H 2001H 2002H 2003H GIAO TIẾP DATA BUS --- PA DATA BUS --- PB DATA BUS --- PC DATA BUS --- CR
III. TIẾN TRÌNH THÍ NGHIỆM:
1/-Viết chương trình sử dụng timer (tính toán timer sử dụng thạch anh 12Mhz): - Nối JP7 với JP27 - Kiểm tra cable truyền
A,#0 P1,A
; dịch bit 1 vào A để sáng dần các led
CALL DL_200MS C SETB A RLC JNC BEGIN SJMP MAIN
02 TMOD,#01H R2,#20 PUSH MOV MOV ; lặp lại 20 lần
Trang 35
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 BEGIN: MOV DL_200MS: X1: TH0,#HIGH(-10000) TL0,#LOW(-10000) TR0 MOV MOV SETB
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
TF0 TF0,$ R2,X1 02 CLR JNB DJNZ POP 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)
DPTR,#2003H
@DPTR,A
DISPLAY BEGIN
Trang 36
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 MOV A,#89H ; 10001001, PC: NHAP, PA: XUAT, PB:XUAT MOVX BEGIN: CALL LJMP 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 hoá – 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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
A
00
00
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 RET DELAY: PUSH MOV R0,#100 DJNZ R0,$ POP 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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
BÀI 04: NGẮT (INTERRUPT)
Giúp sinh viên tìm hiểu và sử dụng các ngắt trong 8951: ngắt timer, ngắt ngoài
I. MỤC ĐÍCH: 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 ngoài 0:
0003H Địa chỉ vector ngắt Khai báo sử dụng ngắt
Sự kiện ngắt: - SETB EA - SETB EX0 - SETB IT0 (ngắt cạnh) Xuất hiện cạnh xuống (hoặc mức thấp) tại chân INT0
- Ngắt timer0:
000BH Địa chỉ vector ngắt Khai báo sử dụng ngắt
Sự kiện ngắt - SETB EA - SETB ET0 Tràn timer 0
- Ngắt ngoài 1:
00013H Địa chỉ vector ngắt Khai báo sử dụng ngắt
Trang 39
Sự kiện ngắt: - SETB EA - SETB EX1 - SETB IT1 (ngắt cạnh) Xuất hiện cạnh xuống (hoặc mức thấp) tại chân INT1
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
- Ngắt timer1:
0001BH Địa chỉ vector ngắt Khai báo sử dụng ngắt
Sự kiện ngắt - SETB EA - SETB ET1 Tràn timer 1
- Ngắt truyền thông (truyền/nhận UART):
00023H Địa chỉ vector ngắt Khai báo sử dụng ngắt
Sự kiện ngắt - SETB EA - SETB ES 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
KHAI BÁO NGẮT
Sự kiện ngắt
Vector ngắt: . . RETI
SƠ ĐỒ CHƯƠNG TRÌNH KHI CÓ SỬ DỤNG NGẮT:
Trang 40
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)
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
LJMP MAIN ORG 000BH LJMP QUET_LED
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
CALL HEX_7S CALL DL_300MS INC CNT MOV A,CNT CJNE A,#100,BEGIN MOV CNT,#0 LJMP BEGIN CNT EQU 120 LED7 EQU 121 LED8 EQU 122 POS EQU 123 MAIN: BEGIN:
HEX_7S: . . RET
DL_300MS: . . RET
; tắt các led
Trang 41
;-------chương trình đổi số hex sang 2 mã 7 đoạn đặt vào LED1, LED2----- ;------chương trình delay 300ms dùng timer1------------------------------------- ; -------chương trình ngắt timer0---------------------------------------------------- PUSH PSW PUSH ACC MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) MOV P2,#00H MOV DPTR,#LED_7S MOV A,@R0 MOV P1,A MOV A,POS QUET_LED:
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
A
MOV P2,A RL MOV POS,A INC R0 CJNE R0,#123,EXIT MOV R0,#LED7 MOV POS,#40H
POP ACC POP PSW RETI DB ….
EXIT: LED_7S: 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 ngoài 01:
- Nối JP7 với JP20 - Nối JP3 với JP21 - Nối JP8 với JP15
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
Trang 42
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 ngoài 1 để đếm và ngắt timer0 để quét led) MAIN: MOV TMOD,#11H MOV CNT,#0 MOV POS,#01H MOV R0,#LED1 SETB EA SETB IT1
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
SETB EX1 SETB ET0 . . .
INC CNT RETI
;------chương trình ngắt ngoài 1-------------------------------- COUNTER: 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
Trang 43
- 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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
BÀI 05: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC
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.
I. MỤC ĐÍCH: 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
MG1
1 2 3
4 5 6
STEPPER MOTOR
CẤU TẠO MOTOR BƯỚC:
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.
Nghịch
Thuận
CHIỀU QUAY
- Điều khiển một bước (1.8 độ): T1 1 0 0 0 1 T2 0 1 0 0 0 T3 0 0 1 0 0 T4 0 0 0 1 0
Trang 44
Ti = 0: transistor ngưng dẫn Ti = 1: transistor dẫn bão hoà
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
VCC
VCC
MG1
R15 270
R16 270
R17 220
R18 270
1 2 3
4 5 6
MOTOR STEPPER
D5
D6
D7
D8
LED4
LED3
LED2
LED1
D1
D2
D3
D4
4007
4007
4007
4007
R11
4K7
Q1 TIP122
Q2 TIP122
Q3 TIP122
Q4 TIP122
JP28
R12
4K7
R13
4K7
1 2 3 4 5 6 7 8
R O T O M _ P E T S
R14
4K7
Nghịch
Thuận
CHIỀU QUAY
- Điều khiển nửa bước (0.9 độ): T1 1 1 1 0 0 T2 0 0 1 1 1 T3 0 0 0 0 1 T4 1 0 0 0 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 hoà
III. TIẾN TRÌNH THÍ NGHIỆM:
Trang 45
- 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
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
MOV MOV R2,#4 A,#01H
P1,A
MOV CALL DL_50MS A RL R2, BEGIN DJNZ LJMP MAIN
R2,#0 DPTR,#DU_LIEU MOV MOV
P1,A
MOV A, R2 MOVC A,@A+DPTR MOV CALL DL_500MS R2 INC CJNE R2,#8,BEGIN LJMP MAIN
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: BEGIN: ;-----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: BEGIN: ;-----chương trình delay 500ms dùng timer 1------------------------------ DL_500MS: . . RET DU_LIEU: DB ………. END
Trang 46
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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
- Nhấn SW3: dừng (mặc định: động cơ dừng)
Trang 47
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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
BÀI 06: ĐIỀU KHIỂN MA TRẬN LED
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
I. MỤC ĐÍCH: 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:
Hàng 01 Hàng 02 Hàng 03 Hàng 04 Hàng 05 Hàng 06 Hàng 07 Hàng 08 Cột 1 1 0 0 0 0 0 1 0 Cột 2 1 0 0 0 0 0 0 1 Cột 3 1 1 1 1 1 1 1 0 Cột 4 1 0 0 0 0 0 0 0 Cột 5 1 0 0 0 0 0 0 0
Trang 48
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 đỏ
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
5VDC
MLED1
R31
R30
15K
15K
MATRIX LED 8x5
W2
W1
Q6
Q5
4007 X 8
A1013
A1013
C28
104
C27
104
D23
16
W1
D24
15
W2
R32
R33
15K
15K
W4
D25
Q7
17
Q8
W3
W3
C29
104
A1013
A1013
D26
14
C30
104
W4
D27
8
W5
R34
R35
D28
5
15K
15K
W6
Q9
Q10
W5
W6
D29
C31
104
6
W7
A1013
A1013
C32
104
D30
9
W8
R36
R37
15K
15K
W7
Q11
Q12
W8
C33
104
A1013
A1013
C34
104
1 B
2 B
3 B
4 B
5 B
1 R
2 R
3 R
4 R
5 R
3 1 2 1
2 1
0 1
8 1
1 3 4 7 1
12VDC
W1 W2 W3 W4 W5 W6 W7 W8
1 2 3 4 5 6 7 8 9
8 1
7 1
6 1
5 1
4 1
3 1
2 1
1 1
8 1
7 1
6 1
5 1
4 1
3 1
2 1
1 1
8 1
7 1
6 1
5 1
4 1
3 1
2 1
1 1
U16
U14
U15
ULN2803
1 T U O
2 T U O
3 T U O
4 T U O
5 T U O
6 T U O
7 T U O
8 T U O
ULN2803
ULN2803
1 T U O
2 T U O
3 T U O
4 T U O
5 T U O
6 T U O
7 T U O
8 T U O
1 T U O
2 T U O
3 T U O
4 T U O
5 T U O
6 T U O
7 T U O
8 T U O
RN1
1 N
2 N
3 N
4 N
5 N
6 N
7 N
8 N
I
I
I
I
I
I
I
I
M O C
1 N
2 N
3 N
4 N
5 N
6 N
7 N
8 N
1 N
2 N
3 N
4 N
5 N
6 N
7 N
8 N
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
M O C
M O C
10K
1 2 3 4 5 6 7 8
0 1
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
0 1
0 1
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
JP25
JP26
JP24
CATHOD BLUE
CATHOD RED
DATA_MATRIX
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. 127
MOV
POS,#0 DPTR,#2003H A,#80H ; ñònh caáu hình 8255 vôùi caùc port ñeàu
Trang 49
POS EQU MAIN: MOV MOV xuaát MOVX @DPTR,A BEGIN:
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
A,#0h DPTR,#2002H ; PC = 0 @DPTR,A ; TAT LED
A,POS DPTR,#COT A,@A+DPTR DPTR,#2000H ; PA = 01H @DPTR,A
A,POS DPTR,#DU_LIEU A,@A+DPTR DPTR,#2002H ; PC = DATA @DPTR,A
DELAY POS A,POS A,#5,BEGIN POS,#0 BEGIN
41H, 81H, 7FH, 01H,01H 01H, 02H, 04H, 08H, 10H
; ******************************************** MOV MOV MOVX MOV MOV MOVC MOV MOVX MOV MOV MOVC MOV MOVX CALL INC MOV CJNE MOV LJMP ;------------------------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 COT: DB 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)
Trang 50
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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
BÀI 07: LCD TC1602A
Giúp sinh viên tìm hiểu LCD và viết chương trình giao tiếp LCD
I. MỤC ĐÍCH: 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.
LCD1
SƠ ĐỒ MẠCH:
THIS IS THE LCD
P M A
2 LINES x 16 CHARACTERS L
/
S C
T S N O C
D N G
C C V
A K
0 D
1 D
2 D
3 D
4 D
5 D
6 D
7 D
S R
W R
0 7 8 9 1
1 1
2 1
3 1
4 1
4 5 6 3
1 2
5 1
6 1
VCC
R65 5/3W
R10
10K
Q13
VCC
A1013
R66
4K7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
JP23
JP22
DATA_LCD
CONTROL_LCD
- 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
Trang 51
- A, K: anod và cathode của đèn sáng nền của LCD
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
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 toàn bộ hiển thị sang trái
1CH Dịch toà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
Trang 52
; = = = = = = = = = = = = = = = = = ; P1.0 - > D0 ; P1.1 - > D1
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
; P1.2 - > D2 ; . . . ; P1.7 - > D7 ; P3.0 - > Enable ; P3.1 - > RS ; P3.2 - > RW ;*******************************************************
P3.4 P3.2 P3.3 P3.5 BIT BIT BIT BIT
; bật đèn background LCD ;RS low ;RW low ;Enable
TH0,#HIGH(-50000) ; DELAY 50ms ; đặt chế độ 2 dòng EN RS RW LAMP ;---------------------------------------------------------------------------------- MAIN:
; bật hiển thị
;xoá màn hình
CLR LAMP clr RS clr RW setb EN mov TMOD,#01h mov TL0,#LOW(-50000) mov MOV p1,#38h call GHI_LENH call GHI_LENH call Delay MOV p1,#0ch call GHI_LENH call GHI_LENH MOV p1,#01h call GHI_LENH call GHI_LENH call DONG_01 call DONH_02 sjmp $ ;------------------------------------------------------------------- write: push acc
write1:
acc mov a,#0 movc a,@a+dptr cjne a,#2,write_data ; asc = 2: kết thúc pop ret
Trang 53
write_data: MOV p1,A
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
call GHI_DATA inc dptr sjmp write1 ;-------------------------------------------------------------------- delay:
clr TF0 setb TR0 jnb TF0,$ clr TR0 ret ;----------------------------------------------- DONG_01: ; đưa con trỏ về đầu dòng 01
MOV p1,#080h call GHI_LENH mov dptr,#DT_DONG1 call write ret ;------------------------------------------------- DONG_02: ; đưa con trỏ về đầu dòng 02
MOV p1,#0c0h call GHI_LENH mov dptr,#DT_DONG2 call write ret ;-------------------------------------------------- GHI_LENH:
clr RS clr RW clr EN nop setb EN ret GHI_DATA:
Trang 54
setb RS nop wait: clr RW clr EN nop setb EN nop
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
MOV p1,#0ffh ;configure port1 to input mode setb RW clr RS clr EN nop setb EN
; kiểm tra bit 7: busy flag ; chôø
MOV A,p1 anl a,#80h cjne a,#00h,wait1 nop nop nop nop nop nop ret ; kieåm tra Busy Flag nop wait1: DT_DONG1: db ' K. DIEN-DIEN TU', 02H DT_DONG2: db ' PTN TDH-VDK ', 02H
Trang 55
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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
BÀI 08: ADC-DAC
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:
I. MỤC ĐÍCH: 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.
VCC
R5 1K
R6 330
VCC
R4 1K
C2
VCC
100uF/25V
2
8
R3 470K
U8B
JR4558
U7
JP16
U9
5
+
7
+ S V
LM35
3
6 7
6
-
+IN -IN
ADJ
VCC
R1
9
VREF/2
4
D N G
1K
19 4
R7 1K
CLKR CLKIN
1
SƠ ĐỒ MẠCH ADC:
D A T A _ A D C
18 17 16 15 14 13 12 11
1 2 3 4 5 6 7 8
DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7
-VCC VCC
C1
5
U8A
VCC
8
INTR
R9
2 3 1
JR4558
RD WR CS
3
1nF
+
1
1K
R2 10K
2
-
ADC0804
4 -VCC
JP17
R8 1K
1 2 3 4 5 6 7 8
C O N T R O L _ A D C
KÝ HIỆU NGÕ VÀO/RA VREF
CLKIN/CLKR
NGÕ VÀO VIN+ VIN- WR RD DB7 –DB0 NGÕ RA INTR
CHỨC NĂNG Ngõ vào điện áp chuẩn,cho phép chỉnh thang đo. Các ngõ vào cho mạch dao động RC Ngõ vào đo + Ngõ vào đo - Ngõ vào khởi động ADC ( START) Ngõ vào điều khiển đọc số liệu. Ngõ ra dữ liệu số 8 bit Ngõ ra báo tín hiệu biến đổi đã sẳn sàng (EOC: end of converter).
Trang 56
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
ADC biến đổi điện áp :
VIN = VIN + - VIN -
IN
255
Thành giá trị số 8 bit ở ngõ ra:
V V
REF
N =
Trong đó: Vref = R6*VCC/(R5+R6)
-12VDC
R29
VCC
10
VCC
U21
DAC0808
D20
C13
3 1
C12
4007
JP18
104
1
100uF
GND
D22
C14
C C V
LED
104
3
VEE
16
COMPS
R56
VCC
2K7
4
Iout
8 7 6 5 4 3 2 1
12 11 10 9 8 7 6 5
SƠ ĐỒ MẠCH DAC:
C A D _ A T A D
D0 D1 D2 D3 D4 D5 D6 D7
R58 150
2
U22B
R68 270
4
U22A
JR4558
4
- Iout F E R V
+ F E R V
6
JR4558
-
7
2
-
4 1
5 1
1
5
+
3
+
8
R55
+12VDC
R69
R53
8
R51 2K7
R52 10
820
10K
2K7
R57 2K7
D21
R54
5V1
JP19
C17
C16 CAP
5K
2 1
104
DAC_OUT
- 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:
Trang 57
- 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 hoá – Vi điều khiển
Tài liệu thí nghiệm Vi điều khiển
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.
Trang 58
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.