Upload
nguyen-hieu
View
39
Download
3
Embed Size (px)
DESCRIPTION
Hướng dẫn thực hành VĐK
Citation preview
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 1/76
BỘ GIÁO DỤC VÀ ĐÀO TẠO
THỰC HÀNH
VI ĐIỀU KHIỂN
Biên soạn: ThS. Trần Viết ThắngKS. Bùi Hữu Hiên
www.hutech.edu.vnTài Liệu Lưu Hành Tại HUTECH
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 2/76
THỰC HÀNH VI ĐIỀU KHIỂN
Ấn bản 2013
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 3/76
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 4/76
THỰC HÀNH VI ĐIỀU KHIỂN I
MỤC LỤC
MỤC LỤC ...................................................................................... I
TỔNG QUAN VỀ KIT THÍ NGIỆM VI ĐIỀU KHIỂN UP8951 ...................... II BÀI 1: SỬ DỤNG TẬP LỆNH 8951 ................................................................................... 1
BÀI 2: LED 7 ĐOẠN VÀ BÀN PHÍM ................................................................................11
BÀI 3: TIMER 8951 & PPI8255A ...................................................................................21
BÀI 4: NGẮT (INTERRUPT) ..........................................................................................33
BÀI 5: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC ............................................................................41
BÀI 6: ĐIỀU KHIỂN MA TRẬN LED ................................................................................46 BÀI 7: LCD TC1602A ....................................................................................................51
BÀI 8: ADC – DAC ........................................................................................................58
TÀI LIỆU THAM KHẢO ....................................................................
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 5/76
II TỔNG QUAN VỀ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN uP8951
TỔNG QUAN VỀ KIT THÍ NGHIỆMVI ĐIỀU KHIỂN uP8951
KIT thí nghiệm gồm 10 module bố trí như trên hình 1
1.1 MICROCONTROLLER WITH EXTERNAL RAM:
Là khối điều khiển trung tâm gồm một vi điều khiển AT89C51 có kết nối với RAM
ngoài và một vi điều khiển AT89C2051.
AT89C51 có thể chạy bằng bộ nhớ trong (internal memory dung lượng 4Kb) hoặc
chạy bằng bộ nhớ ngoài (external memory dung lượng 8Kb).
Các socket trên module này bao gồm:
TÊN CHỨC NĂNG
JP7: P1_CPU PORT 1, CPU 89C51
JP8: P3_CPU PORT 3, CPU 89C51
JP3: P2_ADDRESS PORT 2, CPU 89C51
JP1: DATA_CPU PORT 0, CPU 89C51
JP2: DECODE2_LCD PORT 0, CPU 89C51
JP4: DECODE1_8255 Tín hiệu giải mã cho PPI 8255A
JP3: P1_89C2051 PORT 1, CPU 89C2051
JP4: P3_89C2051 PORT 3, CPU 89C2051
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 6/76
THỰC HÀNH VI ĐIỀU KHIỂN III
1.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
1.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.
1.4 MATRIX LED 8x5:
Module ma trận LED 8 hàng, 5 cột, các bit hàng và cột đều tác dụng ở mức
cao, Các socket bao gồm:
TÊN CHỨC NĂNG
JP24: DATA_MATRIX 8 ĐƯỜNG DATA MA TRẬN LED
JP25: CATHOD BLUE 5 ĐƯỜNG ĐIỀU KHIỂN CỘT LED XANH
JP26: CATHOD RED 5 ĐƯỜNG ĐIỀU KHIỂN CỘT LED ĐỎ
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 7/76
IV TỔNG QUAN VỀ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN uP8951
1.5 LED _ LCD TC1602A:
Gồm 8 led đơn, 5 ly màu đỏ, tác dụng ở mức cao và một LCD TC1602A, module
gồm các socket sau:
TÊN 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
1.6 LED 7 ĐOẠN:
Module gồm 8 led 7 đoạn cathod chung, các đường DATA vào điều khiển đều tác
động ở mức cao. Các socket:
TÊN 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
1.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 đều tác động ở mức cao.
1.8 CONTROL_KEYBOARD:
Gồm 4 phím nhấn, có một socket:
JP29: DATA_SW
1.9 DAC0808:
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 8/76
THỰC HÀNH VI ĐIỀU KHIỂN V
Gồm một mạch DAC 8 bit sử dụng IC DAC0808, ngõ ra của mạch nối với một LED
5 ly, dung để điều khiển độ sang của LED theo giá trị số ở ngõ vào. Module có một
socket:
JP18: DATA_DAC, gồm 8 bit data của bộ biến đổi Số – Tương tự.
1.10 ADC0804:
Gồm một ADC 8 bit sử dụng IC ADC0804, ngõ vào tương tự là bộ cảm biến nhiệt
độ dùng LM335, module gồm hai socket:
TÊN CHỨC NĂNG
JP16: DATA_ADC 8 BIT NGÕ RA SỐ
JP17: CONTROL_ADC CÁC ĐƯỜNG TÍN HIỆU ĐIỀU KHIỂN
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 9/76
VI TỔNG QUAN VỀ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN uP8951
PPI-8255A
PC2
PC7
PC5
PC3
JP12
P B _ 8 2 5 5
12345678
PC1
PC2
PC5
JP14
P C2 _ 8 2 5 5
12345678
PC4
PC6PC7
PC4
PC0
PC3
PC6
PC1
JP10DE C ODE _ 8 2 5 5
12345678
JP11
P A _ 8 2 5 5
123
45678
PC0
JP9
DAT A _ 8 2 5 5
123
45678
U3
8255
343332
3130292827
432
140393837
1819202122232425
1415161713121110
536
98
35
6
D0D1
D2D3D4D5D6D7
PA0PA1
PA2PA3PA4PA5PA6PA7
PB0PB1PB2PB3PB4PB5PB6PB7
PC0PC1PC2PC3PC4PC5PC6PC7
RDWR
A0 A1RESET
CS
JP13
P C1 _ 8 2 5 5
12345678
SƠ ĐỒ NGUYÊN LÝ CÁC KHỐI:
D4
JP1
DAT A _ CP U
12345678
C6
33p
VCC
D 1
A11
A5
A0
VCC
A8
INT1
Y7
D6D6
A 9
W R
R X D
P 1
. 1
R64270
RD
D2
U 5 74 LS13 8
123
15141312111097
645
ABC
Y0Y1Y2Y3Y4Y5Y6Y7
G1G2AG2B
P 1 . 0
JP7
P 1_
C P U
12345678
D 7
R61 2K2
A15
U6 A 7 4L S0 8
1
23
T 1
P1.0
A14
RD
A9
RESET
A10
C8
10uF
Y2
11,0592Mhz
PSEN
R N6 1 0K
1 2 3 4 5 6 7 8 9
<Doc> <Rev Code>
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
P 1 _ 8 9 C2 0 5 1 1
2345678
A 1 5
Y5
P1.7
Y3
D2
U23
AT89C2051
1
54
1213141516171819
236789
11
RST/VPP
XTAL1XTAL2
P1.0/AIN0P1.1/AIN1
P1.2P1.3P1.4P1.5P1.6P1.7
P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.7
JP4DE C ODE 1 _ 8 2 5 5
1
2345678
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
RN310K
1 2 3 4 5 6 7 8 9
A13
R60 2K2
D17
READY
P C
INTERFA
CE
A3
A15
D 0
A7
VCC
A 1 2
JP3
P 2 _ADDRE S S
12345678
A13
C OMP
ORT
2 0 5 1
A12
I N T 1
U6C
7408
9 1 0
8
Y2
A 1 4
D 4
D1
I N T 0
VCC
A14
R63270
A 1 3
P 1
. 0
D5
A11
DB 9 _2 ( M al e )
594837261
A1
RXD1
D19
DATA LOAD
P 1 . 7
T0
RXD
DB 9 _1 ( F em al e )
594837261
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
RN410K
1 2 3 4 5 6 7 8 9
RN7 10K
1 2 3 4 5 6 7 8 9
T X D
SW1
MEMORY SELECTION
1 2C7 10uF/50V
RN510K
1 2 3 4 5 6 7 8 9
R E S E T
A0
U20
MAX232
134526
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
3478
13141718
111
256912151619
D0D1D2D3D4D5D6D7
OELE
Q0Q1Q2Q3Q4Q5Q6Q7
WR
P1.1
P 1 . 6
TXD
R28 10K
D 2
P 1 . 5
U1 AT89C51
9
18
19
2930
3 1
12345678
2122
232425262728
1011121314
151617
3938373635343332
R S T
XTAL2
XTAL1
PSEN ALE/PROG
E A / V P P
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7
P2.0/A8
P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15
P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1
P3.6/WRP3.7/RD
P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7
RESET SW
JP6
P 3_
8 9 C 2 0 5 1
12345678
C23
10p
RXD1
D3
A 8
A 1 0
D3
WR Y2
JP8
P 3_
C P U
12345
678
VCC
D0
D1
C11
10uF
T 0
A9
D0
U4 6264
109876543
25242123
2
1112131516171819
22272026
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11
A12
D0D1D2D3D4D5D6D7
OEWECS1CS2
RD
R67 10K
RN210K
1 2 3 4 5 6 7 8 9
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 10/76
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 11/76
VIII TỔNG QUAN VỀ KIT THÍ NGHIỆM VI ĐIỀU KHIỂN uP8951
R16270
R14 4K7
R15270
Q4TIP122
Q2TIP122
VCC
R13 4K7
D6
LED3
D5
LED4
MG1
MOTOR STEPPER
123
4 5 6
VCC
D2
4007
D7
LED2
D8
LED1
R18270
JP28
S T E P_
M O T O R 1
2345678
Q1TIP122
R11 4K7
D4
4007
R17220
D3
4007
Q3TIP122
D1
4007
R12 4K7
INC
JP29
DAT A _ S W
12345678
MODE
C19
101
ENTER
C21
101
DEC
C20
101
C22
101
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 12/76
THỰC HÀNH VI ĐIỀU KHIỂN IX
C16CAP
R54
5K
-
+
U22A
JR4558
3
21
8
4
R56 2K7
D21
5V1
C12
100uF
R52 10
U21 DAC0808
1
3
16
1 4
1 5
2
1 3
56
789
101112
4
GND
VEE
COMPS
V R E F +
V R E F
- Iout
V C C
D7D6
D5D4D3D2D1D0
Iout
R68270
+12VDC
R572K7
C14
104
R58150
C17
104
D22
LED
R512K7
JP18
D A
T A_
D A C
12
345678
VCC
R29 10
R55
10K
VCCVCC
R69
2K7
JP19
DAC_OUT
12
-
+
U22B
JR4558
5
67
8
4
R53 820
D20
4007
-12VDC
C13
104
VCC
JP16
DAT A _AD C
12345
678-VCC
-
+
U8AJR4558
3
21
8
4
R81K
-
+
U8B JR45585
67
8
4
VCC
R3 470KU9
LM35
2
3
1
V S +
ADJ
G N D
R9
1K
-VCC
R1
1K
C2
100uF/25V
JP17 C ONT R OL _AD C
12345678
VCC
R5 1K
C1
1nF
VCC
VCC
U7
ADC0804
67
9
111213
1415161718
194
51
23
+IN-IN
VREF/2
DB7DB6DB5DB4DB3DB2DB1DB0
CLKRCLKIN
INTRCS
RDWR
R41K
R71K
R6 1K
VCC
R210K
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 13/76
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 14/76
THỰC HÀNH VI ĐIỀU KHIỂN 1
BÀI 1: SỬ DỤNG TẬP LỆNH
8051
1.1 MỤC ĐÍCH YÊU CẦU:Giúp sinh viên làm quen với thiết bị và tìm hiểu một số nhóm lệnh quan trọng
trong tập lệnh của họ 8051
1.2 CHUẨN BỊ THÍ NGHIỆM:- Bộ thí nghiệm DHC_uPC8951
- Máy tính
- Kiểm tra cable truyền
- Xem các module: microcontroller, led đơn
1.3 TIẾN TRÌNH THÍ NGHIỆM:
1.3.1 Nhóm lệnh di chuyển dữ liệu, lệnh nhảy:a) Nối mạch thí nghiệm:
Nối JP7: P1_CPU trên module Microcontroler với JP27: DATA_LED trên module
LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P1.0 đến P1.7, các led đều
tác động ở mức cao.
b) Viết các chương trình ứng dụng:
Chương trình 1.1: Chớp tắt 8 led vô hạn lần.
MAIN:
MOV P1,#0FFH ; P1 <- 11111111B, các led đều sáng
CALL DELAY ; gọi chương trình trì hoãn DELAY
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 15/76
2 BÀI 1: SỬ DỤNG TẬP LỆNH 8051
MOV P1,#00H ; P1 <- 00000000B, các led đều tắt
CALL DELAY
LJMP MAIN ; nhảy đến MAIN để lập lại quá trình vô hạn
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
NHẮC LẠI:
DJNZ Ri, <NHÃN>: Ri là một trong các thanh ghi từ R0 -> R7, lệnh giảm nội
dung thanh ghi Ri một đơn vị, nếu Ri > 0 thì nhảy đến NHÃN chỉ định, ngược lại sẽ
chuyển sang thực hiện kế tiếp.
Chương trình 1.2: giống nội dung chương trình 01 nhưng lặp lại quá trình 10 lần.
HƯỚNG DẪN: MOV Ri, # <SỐ LẦN LẶP (1->255)>
NHÃN:
LỆNH 1
LỆNH 2
.
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 16/76
THỰC HÀNH VI ĐIỀU KHIỂN 3
.
LỆNH n
DJNZ Ri,<NHÃN>
CHƯƠNG TRÌNH:
MOV R7,#10
MAIN:
MOV P1,#0FFH ; P1 <- 11111111B, các led đều sáng
CALL DELAY ; gọi chương trình trì hoãn DELAY
MOV P1,#00H ; P1 <- 00000000B, các led đều tắt
CALL DELAY
DJNZ R7,MAIN
SJMP $ ; “dừng chương trình”
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 17/76
4 BÀI 1: SỬ DỤNG TẬP LỆNH 8051
c) BÀI TẬP SV:
Chương trình 1.3: Hiển thị 1 led sáng, dịch dần từ D1 đến D8 vô hạn lần.
Chương trình 1.4: Hiển thị 1 led sáng, dịch dần từ D8 đến D1 với số lần lặp là 6.
1.3.2 Nhóm lệnh quay vòng:a) Nối mạch thí nghiệm:
Nối JP7: P3_CPU trên module Microcontroler vôùi JP27: DATA_LED trên module
LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P3.0 đến P3.7, các led đều
tác động ở mức cao.
b) Viết các chương trình ứng dụng:
Chương trình 1.5: viết chương trình dịch một led sáng từ D1 D8:
MAIN:
MOV A,#01H
BEGIN:
MOV P3,A
RL A
CALL DELAY
LJMP BEGIN
DELAY:
PUSH 06 ; cất nội dung R6 vào ngăn xếp
PUSH 07 ; cất nội dung R7 vào ngăn xếp
MOV R6,#255
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 18/76
THỰC HÀNH VI ĐIỀU KHIỂN 5
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 P3,A
RR A
CALL DELAY
LJMP BEGIN
DELAY:
PUSH 06 ; cất nội dung R6 vào ngăn xếp
PUSH 07 ; cất nội dung R7 vào ngăn xếp
MOV R6,#255
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 19/76
6 BÀI 1: SỬ DỤNG TẬP LỆNH 8051
Chương trình 1.7: viết chương trình sáng dần các led từ D1 D8:
MAIN:
MOV A,#01H
BEGIN:
SETB C
MOV P3, A
RLC A
CALL DELAY
JNC BEGIN
LJMP MAIN
DELAY:
PUSH 06 ; cất nội dung R6 vào ngăn xếp
PUSH 07 ; cất nội dung R7 vào ngăn xếp
MOV R6,#255
LAP:
MOV R7,#255
DJNZ R7,$ ; X: DJNZ R7,X
DJNZ R6, LAP
POP 07 ; lấy lại giá trị cũ cuûa R7 trong ngăn xếp
POP 06 ; lấy lại giá trị cũ của R0 trong ngăn xếp
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 20/76
THỰC HÀNH VI ĐIỀU KHIỂN 7
BEGIN:
SETB C
MOV P3, A
RRC A
CALL DELAY
JNC BEGIN
LJMP MAIN
DELAY:
PUSH 06 ; cất nội dung R6 vào ngăn xếp
PUSH 07 ; cất nội dung R7 vào ngăn xếp
MOV R6,#255
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
c) BÀI TẬP SV:
Chương trình 1.9: viết chương trình tắt dần các led từ D1 D8.
Chương trình 1.10: viết chương trình tắt dần các led từ D8 D1.
Chương trình 1.11: viết chương trình tắt dần các led từ D8 D1, thực hiện lặp
lại 20 lần.
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 21/76
8 BÀI 1: SỬ DỤNG TẬP LỆNH 8051
1.3.3 Nhóm lệnh toán học:a) Nối mạch thí nghiệm:
Nối JP7: P3_CPU trên module Microcontroler vôi JP27: DATA_LED trên module
LED, các led tương ứng từ led1 đến led8 sẽ nối với các bit P3.0 đến P3.7, các led đềutá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,#12ADD A,#34
MOV P3,A
SJMP $
END
Chương trình 1.13: Viết chương trình cộng 2 số sau: 12 + 34, hiển thị kết quả
trên các led.
MAIN:
MOV A,#12
SETB C
ADDC A,#34
MOV P3,A
SJMP $
END
So sánh kết quả của chương trình 1 và chương trình 2.
Chương trình 1.14: Viết chương trình chia 2 số 17 cho 3, hiển thị kết quả (phần
nguyên) trên các led.
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 22/76
THỰC HÀNH VI ĐIỀU KHIỂN 9
MAIN:
MOV A,#17
MOV B,#3
DIV AB
MOV P3,A
SJMP $
END
Chương trình 1.15: Viết chương trình chia 2 số 17 cho 3, hiển thị kết quả (phần
dư) trên các led.
MAIN:
MOV A,#17
MOV B,#3
DIV AB
MOV P3,B
SJMP $
END
Chương trình 1.16: Viết chương trình nhân 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 P3,A
SJMP $
END
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 23/76
10 BÀI 1: SỬ DỤNG TẬP LỆNH 8051
Chương trình 1.17: Viết chương trình nhân 2 số 23 cho 14, hiển thị kết quả
(byte cao) trên các led.
MAIN:
MOV A,#7
MOV B,#14
MUL AB
MOV P3,B
SJMP $
END
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 24/76
THỰC HÀNH VI ĐIỀU KHIỂN 11
BÀI 2: LED 7 ĐOẠN & BÀN
PHÍM
2.1 MỤC ĐÍCH YÊU CẦU:Giúp sinh viên tìm hiểu cách hiển thị thông tin trên led 7 đoạn bằng phương
pháp quét và xử lý thông tin trên bàn phím điều khiển.
2.2 CHUẨN BỊ THÍ NGHIỆM:- Bộ thí nghiệm DHC_uPC8951
- Máy tính
- Kiểm tra cable truyền
- Xem sơ đồ mạch điều khiển led 7 đoạn và bàn phím
- 74244 là IC đệm một chiều 8 bit với ngõ vào là Ai và ngõ ra là Yi tương ứng:
OE AI YI
1 X Z
0 0 0
0 1 1
X: mức logic 1 hoặc 0
Z: trạng thái cách ly (tổng trở cao)
- 2803 là IC đệm đảo công suất, bên trong gồm một dãy 8 transistor có cấu
trúc như sau:
OUT1
GND
IN1
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 25/76
12 BÀI 2: LED 7 ĐOẠN & BÀN PHÍM
e
g
d
b e f
p o
i n t
a d f
point
g
b
c
COM
c
a
C21
101
JP29
DAT A _ S W
12345678
ENTERDECINC MODE
C22
101
C20
101
C19
101
Dòng điện IC cực đại là 500mA, chân GND của 8 transistor được nối chung và đưa
ra tại chân số 9 của IC.
- LED 7 đoạn dung trong mạch là loại cathod chung có cấu trúc như sau:
S8
S1
S6
JP21
C O N T R O L_
L E D 7 S
12345678
S7
S1
S7
S6
S3
S8
S4
S5
S6
S5
S2
S7
S4 S4
S5
LED6
764219
105
3 8
abcdef gp C
1 C 2
S6
S7
S1
S4
S5
JP20
DATA_LED7S
12345678
S4
S1
S6
S4
S3
LED2
764219
105
3 8
abcdef gp C
1 C 2
S1
R20 150 X8
S5
S1S2
S5
LED4
764219
105
3 8
abcdef gp C
1 C 2
S3
U13 74LS244
2468
1
18161412
11131517
9753
19
A1 A2 A3 A4
1OE
Y1Y2Y3Y4
A5 A6 A7 A8
Y5Y6Y7Y8
2OE
S3
S4
S6
S2
LED3
764219
105
3 8
abcdef gp C
1 C 2
LED8
764219
105
3 8
abcdef gp C
1 C 2S8
S2S2
S7
S6
LED5
764219
105
3 8
abcdef gp C
1 C 2
S1
S8 S8
U12
ULN2803
10
12345678
1817161514131211
COM
IN1IN2IN3IN4IN5IN6IN7IN8
OUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8
S4
S8
S3
S2
S7
S1
S7
S3
S8
S5
LED1
764219
105
3 8
abcdef gp C
1 C 2
S7
S5
S6
S2 S2
S3
LED7
764219
105
3 8
abcdef gp C
1 C 2S8
S3
2.3 TIẾN TRÌNH THÍ NGHIỆM:a) Nối mạch thí nghiệm:
- Nối JP29(DATA_SW) của bàn phím với P3_CPU (port 3 8951)
- Nối P1_CPU với JP20 (DATA_LED7S)
- Nối P2_ADDRESS với JP21 (CONTROL_LED7S)
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 26/76
THỰC HÀNH VI ĐIỀU KHIỂN 13
b) Viết các chương trình ứng dụng:
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ị
HEXp 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
9MAIN:
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 27/76
14 BÀI 2: LED 7 ĐOẠN & BÀN PHÍM
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ì hoãn để mắt lưu ảnh thông tin
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ì hoã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 ~ 1msPUSH 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à
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 28/76
THỰC HÀNH VI ĐIỀU KHIỂN 15
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ì hoãn
INC CNT ; tăng nội dung biến đếm
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ếpMOV R6,#255
LAP:
MOV R7,#255
DJNZ R7,$ ; X: DJNZ R7,X
DJNZ R6, LAP
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 29/76
16 BÀI 2: LED 7 ĐOẠN & BÀN PHÍM
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
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 30/76
THỰC HÀNH VI ĐIỀU KHIỂN 17
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, <NHÃN> để kiểm tra phím nhấn;
ví dụ:
JNB P3.0, HT3 (hiển thị 3); 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 HT3, 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
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:
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 31/76
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 32/76
THỰC HÀNH VI ĐIỀU KHIỂN 19
LJMP BEGIN
TANG:
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 33/76
20 BÀI 2: LED 7 ĐOẠN & BÀN PHÍM
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.
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 34/76
THỰC HÀNH VI ĐIỀU KHIỂN 21
BÀI 3: TIMER HỌ 8951 &
PPI8255A
3.1 MỤC ĐÍCH YÊU CẦU:Giúp sinh viên tìm hiểu về timer trong họ 8951 và IC giao tiếp song song có lập
trình điều khiển PPI8255A.
3.2 CHUẨN BỊ THÍ NGHIỆM:- Bộ thí nghiệm DHC_uPC8951
- Máy tính
- Kiểm tra cable truyền
- Xem sơ đồ mạch điều khiển led 7 đoạn và bàn phím
- 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:
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 35/76
22 BÀI 3: TIMER HỌ 8951 & PPI8255A
Hoạt động của bộ Timer/Counter được điều khiển bởi hai thanh ghi TCON và
TMOD.
a) 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 bộ 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).
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 36/76
THỰC HÀNH VI ĐIỀU KHIỂN 23
IT1: không liên quan đến hoạt động của bộ 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 ngoài
bằng mức thấp).
IE0: không liên quan đến hoạt động của bộ 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 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 bộ Timer/Counter, bit này dùng để báo
trạng thái ngắt ngoài 0 bằng cạnh xuống (default IT1 = 0, tác động ngắt ngoài
bằng mức thấp).
b) Thanh ghi TMOD (timer mode):
Là thanh ghi 8 bit, chỉ có thể truy xuất byte
ÑIEÀU KHIEÅN TIMER 0
GATE
3
M1 M1
6
GATE
2
M0
4
C/T
1
M0
ÑIEÀU KHIEÅ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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 37/76
24 BÀI 3: TIMER HỌ 8951 & PPI8255A
Chế độ 0:
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.
Chế độ 1:
TLx : 8 BIT
PULSE INPUT
THx : 8 BIT TFx
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.
Chế độ 3:
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 38/76
THỰC HÀNH VI ĐIỀU KHIỂN 25
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.
Tìm hiểu PPI8255A:
xem sơ đồ mạch trang sau:
CONTROL REGISTER (CR)
DATA BUS PB
PA
PC
U24
8255
343332
3130292827
4321403938
37
1819202122232425
1415161713121110
536
98
35
6
D0D1D2
D3D4D5D6D7
PA0PA1PA2PA3PA4PA5PA6
PA7
PB0PB1PB2PB3PB4PB5PB6PB7
PC0PC1PC2PC3PC4PC5PC6PC7
RDWR
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.
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 39/76
26 BÀI 3: TIMER HỌ 8951 & PPI8255A
- 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 của
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:
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 40/76
THỰC HÀNH VI ĐIỀU KHIỂN 27
- 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
3.3 TIẾN TRÌNH THÍ NGHIỆM:a) Nối mạch thí nghiệm:
Sinh viên nối dây theo hướng dẫn cụ thể trong từng ứng dụng cụ thể dưới đây.
b) Viết các chương trình ứng dụng:
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
Chương trình 3.1: Viết chương trình hiển thị các led sang dần từ D1 đếnD8, với
thời gian Delay 200ms, sử dụng timer0, mode 1.
MAIN: MOV A,#0
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 41/76
28 BÀI 3: TIMER HỌ 8951 & PPI8255A
BEGIN: MOV P1,A
CALL DL_200MS
SETB C
RLC A ; dịch bit 1 vào A để sang dần các led
JNC BEGIN
SJMP MAIN
DL_200MS:
PUSH 02
MOV TMOD,#01H
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
MOV R2,#20 ; lặp lại 20 lần
SETB TR0
X1:
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.
Viết chương trình điều khiển PPI8255:
- Nối JP1 với JP9
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 42/76
THỰC HÀNH VI ĐIỀU KHIỂN 29
- 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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 43/76
30 BÀI 3: TIMER HỌ 8951 & PPI8255A
CALL DELAY
MOV A,#0
MOVX @DPTR,A
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,#2001HMOVX @DPTR,A
CALL DELAY
MOV A,#0
MOVX @DPTR,A
MOV A,#66H
MOV DPTR,#2000HMOVX @DPTR,A
MOV A,#10H
MOV DPTR,#2001H
MOVX @DPTR,A
CALL DELAY
MOV A,#0
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 44/76
THỰC HÀNH VI ĐIỀU KHIỂN 31
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
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 45/76
32 BÀI 3: TIMER HỌ 8951 & PPI8255A
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.
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 46/76
THỰC HÀNH VI ĐIỀU KHIỂN 33
BÀI 4: NGẮT (INTERRUPT)
4.1 MỤC ĐÍCH YÊU CẦU: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 và
ngắt truyền thông nối tiếp.
4.2 CHUẨN BỊ THÍ NGHIỆM:- Bộ thí nghiệm DHC_uPC8951
- Máy tính
- Kiểm tra cable truyền
- Xem sơ đồ mạch trên các module: microcontroller, led 7 đoạn, bàn phím,
counter
DANH SÁCH CÁC NGẮT TRONG 8051:
- Ngắt ngoà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ắtXuấ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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 47/76
34 BÀI 4: NGẮT (INTERRUPT)
- SETB ET0
Sự kiện ngắt Tràn timer 0
- Ngắt ngoà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ặcmức thấp) tại chân INT1
- 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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 48/76
THỰC HÀNH VI ĐIỀU KHIỂN 35
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:
4.3 TIẾN TRÌNH THÍ NGHIỆM:a) Nối mạch thí nghiệm:
Sinh viên nối dây theo hướng dẫn cụ thể trong từng ứng dụng cụ thể dưới đây.
b) Viết các chương trình ứng dụng:
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).
CNT EQU 120
KHAI BÁO NGẮT
Sự kiện ngắt
Vector ngắt:...RETI
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 49/76
36 BÀI 4: NGẮT (INTERRUPT)
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-----
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 50/76
THỰC HÀNH VI ĐIỀU KHIỂN 37
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
MOV P2,A
RL A
MOV POS,A
INC R0
CJNE R0,#123,EXIT
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 51/76
38 BÀI 4: NGẮT (INTERRUPT)
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).
Ngắt ngoài 01:
- Nối JP7 với JP20
- Nối JP3 với JP21
- Nối JP8 với JP15Chươ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).
CNT EQU 127
LED1 EQU 126
LED2 EQU 125LED3 EQU 124
LED4 EQU 123
LED5 EQU 122
LED6 EQU 121
LED7 EQU 120
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 52/76
THỰC HÀNH VI ĐIỀU KHIỂN 39
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
SETB EX1
SETB ET0
.
.
;------ chương trình ngắt ngoài 1--------------------------------
COUNTER:
INC CNT
RETI
Ngắt truyền thông:
- Nối JP7 với JP27
- Nối JP3 với JP29
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 53/76
40 BÀI 4: NGẮT (INTERRUPT)
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).
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 54/76
THỰC HÀNH VI ĐIỀU KHIỂN 41
BÀI 5: ĐIỀU KHIỂN ĐỘNG CƠ
BƯỚC
5.1 MỤC ĐÍCH YÊU CẦU: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.
5.2 CHUẨN BỊ THÍ NGHIỆM:
- Bộ thí nghiệm DHC_uPC8951
- Máy tính
- Kiểm tra cable truyền
- Xem sơ đồ mạch trên các module: microcontroller, led 7 đoạn, PPI8255, bàn
phím, stepper motor
CẤU TẠO ĐỘNG CƠ BƯỚC:
MG1
STEPPER MOTOR
123
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 độ):
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 55/76
42 BÀI 5: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC
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òa
JP28
S T E P_
M O T O R
12345678
D8
LED1
R14 4K7
D7
LED2
D1
4007
R12 4K7
R17220
R18270
D5
LED4
R13 4K7
D6
LED3
R16270
Q4TIP122
D4
4007
R11 4K7
R15270
Q1TIP122
D3
4007
VCC
D2
4007
Q3TIP122
VCC
Q2TIP122
MG1
MOTOR STEPPER
123
4 5 6
Điều khiển nữa bước (0.9 độ):
Thuận Nghịch
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 56/76
THỰC HÀNH VI ĐIỀU KHIỂN 43
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òa
5.3 TIẾN TRÌNH THÍ NGHIỆM:a) Nối mạch thí nghiệm:
Sinh viên nối dây theo hướng dẫn cụ thể trong từng ứng dụng cụ thể dưới đây.
b) Viết các chương trình ứng dụng:
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
Thuận Nghịch
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 57/76
44 BÀI 5: ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC
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 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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 58/76
THỰC HÀNH VI ĐIỀU KHIỂN 45
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)
- 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.
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 59/76
46 BÀI 6: ĐIỀU KHIỂN MA TRẬN LED
BÀI 6: ĐIỀU KHIỂN MA TRẬN
LED6.1 MỤC ĐÍCH YÊU CẦU:
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.
6.2 CHUẨN BỊ THÍ NGHIỆM:- Bộ thí nghiệm DHC-uPC8951
- Máy tính
- Kiểm tra cable truyền
- Xem sơ đồ mạch 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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 60/76
THỰC HÀNH VI ĐIỀU KHIỂN 47
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 đỏ
5VDC
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
Q12
A1013
C32 104
Q11
A1013
R33 15K
W1 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
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 15KW7
Q5
A1013
Q10
A1013
D30
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
W2
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
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 61/76
48 BÀI 6: ĐIỀU KHIỂN MA TRẬN LED
6.3 TIẾN TRÌNH THÍ NGHIỆM:a) Nối mạch 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
b) Viết các chương trình ứng dụng:
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:
; ----------------------------------------------------------------------------
MOV A,#0H
MOV DPTR,#2002H ; PC = 0
MOVX @DPTR,A ; TAT LED
MOV A,POS
MOV DPTR,#COT
MOVC A,@A+DPTR
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 62/76
THỰC HÀNH VI ĐIỀU KHIỂN 49
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 63/76
50 BÀI 6: ĐIỀU KHIỂN MA TRẬN LED
COT: DB 01H, 02H, 04H, 08H, 10H
END
c) BÀI TẬP SV:
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.
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 64/76
THỰC HÀNH VI ĐIỀU KHIỂN 51
BÀI 7: LCD TC1602A
7.1 MỤC ĐÍCH YÊU CẦU:Giúp sinh viên tìm hiểu LCD và viết chương trình giao tiếp LCD.
7.2 CHUẨN BỊ THÍ NGHIỆM:- Bộ thí nghiệm DHC-uPC8951
- Máy tính
- Kiểm tra cable truyền
- Xem sơ đồ mạch trên các module: microcontroller, LCD, bàn phím
SƠ ĐỒ MẠCH:
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
Q13
A1013R66 4K7
VCC
JP22DATA_LCD
1 2 3 4 5 6 7 8
R655/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=1) hoặc thanh ghi dữ liệu (RS
= 0)
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 65/76
52 BÀI 7: LCD TC1602A
- 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
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 66/76
THỰC HÀNH VI ĐIỀU KHIỂN 53
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
7.3 TIẾN TRÌNH THÍ NGHIỆM:a) Nối mạch thí nghiệm:
- Nối JP7 với JP22
- Nối JP8 với JP23
- Nối JP3 với JP29
b) Viết các chương trình ứng dụng:
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
; P1.2 - > D2
; . . .
; P1.7 - > D7
; P3.0 - > Enable
; P3.1 - > RS
; P3.2 - > RW
; --------------------------------------------------
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 67/76
54 BÀI 7: LCD TC1602A
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 DELAY
MOV P1,#0CH ; bật hiển thị
CALL GHI_LENH
MOV P1,#01H ;xóa màn hình
CALL GHI_LENH
CALL DONG_01
CALL DONG_02
SJMP $
;-------------------------------------------------------------------
WRITE:
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 68/76
THỰC HÀNH VI ĐIỀU KHIỂN 55
PUSH ACC
MOV A,#0
MOVC A,@A+DPTR
CJNE A,#2,WRITE_DATA ; ACC = 2: kết thúc
POP ACC
RET
WRITE_DATA:
MOV P1,A
CALL GHI_DATA
INC DPTR
SJMP WRITE
;--------------------------------------------------------------------
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 69/76
56 BÀI 7: LCD TC1602A
;-------------------------------------------------------------------------
DONG_02:
MOV P1,#0C0H ; đưa con trỏ về đầu dòng 01
CALL GHI_LENH
MOV DPTR,#DT_DONG2
CALL WRITE
RET
;------------------------------------------------------------------------
GHI_LENH:
CLR RS
SJMP WAIT
GHI_DATA:
SETB RS
NOP
WAIT:
CLR RW
CLR EN
NOP
SETB EN
NOP ; kiểm tra Busy Flag
MOV P1,#0FFH ;configure port1 to input mode
SETB RW
CLR RS
CLR EN
NOP
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 70/76
THỰC HÀNH VI ĐIỀU KHIỂN 57
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
c) BÀI TẬP SV:
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.
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 71/76
58 BÀI 8: ADC-DAC
BÀI 8: ADC-DAC
8.1 MỤC ĐÍCH YÊU CẦU: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.
8.2 CHUẨN BỊ THÍ NGHIỆM:- Bộ thí nghiệm DHC-uPC8951
- Máy tính
- Kiểm tra cable truyền
- Xem sơ đồ mạch trên các module: microcontroller, LCD, bàn phím, module
ADC và DAC.
SƠ ĐỒ MẠCH ADC:
R5 1K
R81K
-
+
U8B JR45585
67
8
4
VCC
VCC
R3 470K
R1
1K
U7
ADC0804
67
9
1112131415161718
194
51
23
+IN-IN
VREF/2
DB7DB6DB5DB4DB3DB2DB1DB0
CLKRCLKIN
INTRCS
RDWR
U9
LM35
2
3
1
V S +
ADJ
G N D
JP17 C ONT R OL _AD C
12345678
C1
1nF
VCCR9
1K
C2
100uF/25V
R41K
R210K
R6 330
VCC
-VCC
-
+
U8AJR4558
3
21
8
4
JP16
DAT A _AD C
12345678
VCC
R71K
-VCC
VCC
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 72/76
THỰC HÀNH VI ĐIỀU KHIỂN 59
KÝ HIỆU NGÕ VÀO/RA CHỨC NĂNG
NGÕ VÀO
VREFNgõ 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
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
INTRNgõ ra báo tín hiệu biến đổi đã sẳn sàng
(EOC: end of converter).
ADC biến đổi điện áp :
VIN = VIN + - VIN -
Thành giá trị số 8 bit ở ngõ ra:
N = 255V
V
REF
IN
Trong đó: Vref = R6*VCC/(R5+R6)
SƠ ĐỒ MẠCH DAC:
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 73/76
60 BÀI 8: ADC-DAC
R58150
VCC
JP19
DAC_OUT
12
R512K7
R69
2K7
R562K7
C14
104
R52 10
D22
LED
R29 10
JP18
D A T
A_
D A C
123
45678
R53 820
VCC
D21
5V1
R572K7
U21 DAC0808
1
3
16
1 4
1 5
2
1 3
567
89
101112
4
GND
VEE
COMPS
V R E F +
V R E F
- Iout
V C C
D7D6D5
D4D3D2D1D0
Iout
C17
104
R55
10K
C13
104
D20
4007
VCC
R54
5K
-12VDC
-
+
U22A
JR4558
3
21
8
4 -
+
U22B
JR4558
5
67
8
4
C12
100uF
C16CAP
+12VDC
R68270
- 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
CATHODE_RED: 01H, 02H, 04H, 08H, 10H, hiển thị màu đỏ
8.3 TIẾN TRÌNH THÍ NGHIỆM:a) Nối mạch thí nghiệm:
Sinh viên nối dây theo hướng dẫn cụ thể trong từng ứng dụng cụ thể dưới đây
b) Viết các chương trình ứng dụng:
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
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 74/76
THỰC HÀNH VI ĐIỀU KHIỂN 61
- Nối JP11 với JP20
- Nối JP12 với JP21
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ị).
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.
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 75/76
62 BÀI 8: ADC-DAC
7/18/2019 Huong Dan Thuc Hanh VDK
http://slidepdf.com/reader/full/huong-dan-thuc-hanh-vdk 76/76
THỰC HÀNH VI ĐIỀU KHIỂN 63
TÀI LIỆU THAM KHẢO