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

vi xử lý hệ thống điều khiển dữ liệu dạng nối tiếp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (646.87 KB, 11 trang )


KHOA CÔNG NGHỆ ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP




T
T
À
À
I
I


L
L
I
I


U
U


H
H
Ư
Ư



N
N
G
G


D
D


N
N


T
T
H
H
Í
Í


N
N
G
G
H
H
I
I



M
M


-
-


T
T
H
H


C
C


H
H
À
À
N
N
H
H


















L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Giáo trình thực hành vi xử lý. 2 Biên soạn: Phạm Quang Trí

A. MỤC ĐÍCH:

• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào vi điều khiển và sử dụng mô
hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các port của vi điều khiển.
• Ưùng dụng port nối tiếp của vi điều khiển để mở rộng port nhập và xuất.
• Điều khiển việc thu phát nối tiếp.

B. YÊU CẦU:

• Nắm vững tập lệnh của vi điều khiển MCS-51.
• Biết cách hoạt động của port nối tiếp ở các chế độ khác nhau.

• Biết cách lập trình điều khiển việc xuất nhập dữ liệu thông qua port nối tiếp ở các chế độ khác nhau.



L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 1: Chương trình điều khiển (ứng dụng mở rộng port xuất) xuất liên tục các giá trị 00H, 01H, 03H, 07H,
0FH, 1FH, 3FH, 7FH và FFH ra 8 LED thơng qua port nối tiếp và sử dụng vi mạch 4094, mỗi lần xuất
cách nhau 1s.
Giáo trình thực hành vi xử lý. 3 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 8 nối J45 (PARALLEL OUT 2) ở khối thanh ghi dịch với J12 (BAR LED 2) ở khối dãy
LED.
• Dùng dây bus 1 nối J39 (SERIAL IN 1) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 1 (IN) của J39 với bit 0 (RXD) của J66).
• Dùng dây bus 1 nối J39 (SERIAL IN 1) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 2 (CLK) của J39 với bit 1 (TXD) của J66).
• Dùng dây bus 1 nối J39 (SERIAL IN 1) ở khối thanh ghi dịch với nguồn +5V ở khối nguồn (chú ý là ta
chỉ nối bit 3 (STB) của J39 với nguồn +5V của khối nguồn).
• Dùng hai dây bus 3 nối J115 (POWER) ở khối thanh ghi dịch và J103 (POWER) ở khối LED dãy với
nguồn +5V ở khối nguồn.
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
PARALLEL
OUT 1
POWER
SERIAL

IN 1
PARALLEL
OUT 2
SERIAL
IN 2
PARALLEL
IN
SERIAL
OUT

1.2 Sơ đồ ngun lý của hệ thống:
D7
D0
D1
D2
D3
D4
D5
D6
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6

AD5
AD4
AD3
AD2
AD1
D0
D7
D6
D5
D4
D3
D2
D1
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2

37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD

11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1

AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
D1
R2
330
+5V
D2
R3
330
+5V
D3
R4
330
+5V
D4
R5
330
+5V
D5
R6

330
+5V
D6
R7
330
+5V
D7
R8
330
+5V
D8
R9
330
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾPMẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
D

2
CLK
3
STB
1
OE
15
Q0
4
Q1
5
Q2
6
Q3
7
Q4
14
Q5
13
Q6
12
Q7
11
QS
9
QS
10
U3
4094
+5V

(ỨNG DỤNG MỞ RỘNG PORT XUẤT)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT)(ỨNG DỤNG MỞ RỘNG PORT XUẤT)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT)

L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 1: Chương trình điều khiển (ứng dụng mở rộng port xuất) xuất liên tục các giá trị 00H, 01H, 03H, 07H,
0FH, 1FH, 3FH, 7FH và FFH ra 8 LED thơng qua port nối tiếp và sử dụng vi mạch 4094, mỗi lần xuất
cách nhau 1s.
Giáo trình thực hành vi xử lý. 4 Biên soạn: Phạm Quang Trí
D7
D0
D1
D2
D3
D4
D5
D6
AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4

AD3
AD2
AD1
D0
D7
D1
D2
D3
D4
D5
D6
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3

36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0

12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1

33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
D1
R2
330
+5V
D2
R3
330
+5V
D3
R4
330
+5V
D4
R5
330
+5V
D5
R6
330
+5V

D6
R7
330
+5V
D7
R8
330
+5V
D8
R9
330
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
SRG8
R
C1/->
&
1D
1 3

2
4
5
6
10
8
11
12
9
13
U2
74164
+5V
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾPMẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
(ỨNG DỤNG MỞ RỘNG PORT XUẤT)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT)(ỨNG DỤNG MỞ RỘNG PORT XUẤT)
(ỨNG DỤNG MỞ RỘNG PORT XUẤT)

1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 1: Chương trình điều khiển (ứng dụng mở rộng port xuất) xuất liên tục các giá trị 00H, 01H, 03H, 07H,
0FH, 1FH, 3FH, 7FH và FFH ra 8 LED thông qua port nối tiếp và sử dụng vi mạch 4094, mỗi lần xuất
cách nhau 1s.
Giáo trình thực hành vi xử lý. 5 Biên soạn: Phạm Quang Trí
;***************************************************
;CHUONG TRINH DIEU KHIEN THU PHAT DU LIEU DANG NOI TIEP (MO RONG PORT XUAT)
;***************************************************

;KET NOI: LED -> PARALLEL OUT
; RXD -> IN
; TXD -> CLK
;***************************************************
ORG 00H
MAIN:
MOV SCON,#12H ;KHOI TAO SERIAL PORT (MODE0, REN = 1, TI = 1, RI = 0)
MOV DPTR,#DATABYTE ;NAP DIA CHI VUNG DU LIEU
MOV R0,#00H ;OFFSET VUNG DU LIEU
WAIT:
JNB TI,WAIT ;KIEM TRA CO TI (KIEM TRA PHAT XONG)
CLR TI ;XOA CO TI
MOV A,R0 ;LAY OFFSET
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU
MOV SBUF,A ;PHAT DU LIEU RA SERIAL PORT
ACALL DELAY
INC R0 ;CHUYEN SANG DU LIEU KE TIEP
CJNE R0,#9,WAIT ;KIEM TRA DA PHAT XONG HET CAC DU LIEU TRONG VUNG DU LIEU
SJMP MAIN
;***************************************************
DELAY:
PUSH 00H
MOV R0,#100
MOV TMOD,#01H
DEL:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
JNB TF0,$
CLR TR0

CLR TF0
DJNZ R0,DEL
POP 00H
RET
DATABYTE:
DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
END
1.4 Lưu chương trình và biên dịch chương trình.
1.5 Kiểm tra lỗi và hiệu chỉnh lỗi nếu có.
1.6 Gắn chip vi điều khiển thí nghiệm vào socket tương ứng trên khối nạp chip và bật nguồn cho khối nạp chip
hoạt động.
1.7 Nạp chương trình vào vi điều khiển.
1.8 Sử dụng vi điều khiển vừa nạp gắn vào socket tương ứng trên khối vi điều khiển.
1.9 Bật nguồn cho mô hình thí nghiệm. Quan sát kết quả hoạt động, nếu kết quả hoạt động không đúng yêu
cầu của đề bài thì phải quay lại kiểm tra việc kết nối mạch, hiệu chỉnh chương trình và làm lại các bước từ
bước 3 đến bước 9.
2 Bài tập:
(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 2: Chương trình điều khiển (ứng dụng mở rộng port nhập) thực hiện liên tục việc nhập dữ liệu từ 8 cơng
tắc thơng qua port nối tiếp và sử dụng vi mạch 74165, dữ liệu nhập vào này sẽ được xuất ra 8 LED.
Giáo trình thực hành vi xử lý. 6 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây bus 8 nối J41 (PARALLEL IN) ở khối thanh ghi dịch với J34 (SWITCH) ở khối cơng tắc.
• Dùng dây bus 1 nối J43 (SERIAL OUT) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 0 (CLK) của J43 với bit 1 (TXD) của J66).
• Dùng dây bus 1 nối J43 (SERIAL OUT) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi

điều khiển (chú ý là ta chỉ nối bit 1 (LD) của J43 với bit 2 (INT0\) của J66).
• Dùng dây bus 1 nối J43 (SERIAL OUT) ở khối thanh ghi dịch với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 2 (OUT) của J43 với bit 0 (RXD) của J66).
• Dùng ba dây bus 3 nối J115 (POWER) ở khối thanh ghi dịch, J106 (POWER) ở khối cơng tắc và J103
(POWER) ở khối LED dãy với nguồn +5V ở khối nguồn.
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
PARALLEL
OUT 1
POWER
SERIAL
IN 1
PARALLEL
OUT 2
SERIAL
IN 2
PARALLEL
IN
SERIAL
OUT
3
POWERSWITCH
3
1

1.2 Sơ đồ ngun lý của hệ thống:
AD7
AD0

AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
D0
D7
D6
D5
D4
D3
D2
D1
SW7
SW6
SW5
SW4
SW3
SW2
SW1
SW0

SW0
SW7
SW6
SW5
SW4
SW3
SW2
SW1
SW7
SW6
SW5
SW4
SW3
SW2
SW1
SW0
D0
D1
D2
D3
D4
D5
D6
D7
XTAL2
18
XTAL1
19
ALE
30

EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
3
P1.3
4

P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22

P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k
+5V
D0
R2
330
+5V
D1
R3
330

+5V
D2
R4
330
+5V
D3
R5
330
+5V
D4
R6
330
+5V
D5
R7
330
+5V
D6
R8
330
+5V
D7
R9
330
+5V
2
3
4
5
6

7
8
9
1
RP1
10K
+5V
SW7 SW6 SW5 SW4 SW3 SW2 SW1 SW0
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾPMẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
(ỨNG DỤNG MỞ RỘNG PORT NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT NHẬP)(ỨNG DỤNG MỞ RỘNG PORT NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT NHẬP)
SI
10
D0
11
D1
12
D2
13
D3
14
D4
3
D5
4
D6
5

D7
6
SO
9
CLK
2
QH
7
INH
15
SH/LD
1
U3
74165
2
3
4
5
6
7
8
9
1
RP3
10K
+5V

L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 2: Chương trình điều khiển (ứng dụng mở rộng port nhập) thực hiện liên tục việc nhập dữ liệu từ 8 công
tắc thông qua port nối tiếp và sử dụng vi mạch 74165, dữ liệu nhập vào này sẽ được xuất ra 8 LED.

Giáo trình thực hành vi xử lý. 7 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

;***************************************************
;CHUONG TRINH DIEU KHIEN THU PHAT DU LIEU DANG NOI TIEP (MO RONG PORT NHAP)
;***************************************************
;KET NOI: LED -> P1
; RXD -> OUT
; TXD -> CLK
; INT0 -> LD
; SW -> PARALLEL IN
;***************************************************
ORG 00H
MAIN:
MOV SCON,#02H ;KHOI TAO SERIAL PORT (MODE0, REN = 0, TI = 1, RI = 0)
MP1:
CLR P3.2 ;INT = LD = 0
NOP ;NAP GIA TRI CHO VI MACH CHUYEN DOI (PARALLEL -> SERIAL)
SETB P3.2 ;INT = LD = 1
SETB REN ;REN = 1 - CHO PHEP THU DU LIEU
WAIT:
JNB RI,WAIT ;KIEM TRA CO RI (KIEM TRA THU XONG)
CLR REN ;REN = 0 - KHONG CHO PHEP THU
CLR RI ;XOA CO RI
MOV A,SBUF ;DOC DU LIEU DA THU DUOC TU SERIAL PORT
MOV P1,A ;XUAT RA LED
SJMP MP1
END
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:

(xem thêm trong phần hướng dẫn và phần bài tập của Bài 3)
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 3: Chương trình điều khiển (ứng dụng mở rộng thu phát nối tiếp) tạo một bảng dữ liệu gồm 9 bytes (00H,
01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối
tiếp (chân TXD) rồi thu vào port nối tiếp (chân RXD) và cất vào RAM nội có địa chỉ bắt đầu là 40H.
Việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần xuất/nhập một byte. Dữ liệu sau khi
nhập vào được xuất ra 8 LED (có sử dụng bộ đệm đảo) đồng thời với việc ghi vào RAM nội.
Giáo trình thực hành vi xử lý. 8 Biên soạn: Phạm Quang Trí
1 Trình tự tiến hành thí nghiệm:
1.1 Kết nối thiết bị thí nghiệm.
• Tắt nguồn cấp cho mơ hình thí nghiệm.
• Dùng dây bus 8 nối J64 (PORT1) ở khối vi điều khiển với J11 (BAR LED 1) ở khối dãy LED.
• Dùng dây bus 1 nối J66 (PORT3 / FUNCTION) ở khối vi điều khiển với J66 (PORT3 / FUNCTION) ở
khối vi điều khiển (chú ý là ta chỉ nối bit 0 (RXD) của J66 với bit 1 (TXD) của J66).
• Dùng dây bus 1 nối J76 (MONENTARY SW) ở khối nút nhấn với J66 (PORT3 / FUNCTION) ở khối vi
điều khiển (chú ý là ta chỉ nối bit 0 (KEY0) của J76 với bit 2 (INT0\) của J66).
• Dùng dây bus 1 nối J66 (PORT3 / FUNCTION) ở khối vi điều khiển với J66 (PORT3 / FUNCTION) ở
khối vi điều khiển (chú ý là ta chỉ nối bit 1 (TXD) của J66 với bit 0 (RXD) của J66).
• Dùng hai dây bus 3 nối J114 (POWER) ở khối nút nhấn và J103 (POWER) ở khối LED dãy với nguồn
+5V ở khối nguồn.
MOMENTARY
SW
POWER
PORT 0PORT 1PORT 3PORT 2
PORT 1PORT 3
40 PINS
20 PINS
33

1.2 Sơ đồ ngun lý của hệ thống:

AD7
AD0
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD6
AD5
AD4
AD3
AD2
AD1
D0
D7
D6
D5
D4
D3
D2
D1
D0
D1
D2
D3
D4
D5

D6
D7
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32

P1.0
1
P1.1
2
P1.2
3
P1.3
4
P1.4
5
P1.5
6
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16

P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
C1
33p
C2
33p
X1
12MHz
C3
10uF
R1
10k

+5V
D0
R2
330
+5V
D1
R3
330
+5V
D2
R4
330
+5V
D3
R5
330
+5V
D4
R6
330
+5V
D5
R7
330
+5V
D6
R8
330
+5V
D7

R9
330
+5V
2
3
4
5
6
7
8
9
1
RP1
10K
+5V
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾPMẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
MẠCH ĐIỀU KHIỂN THU/PHÁT DỮ LIỆU DẠNG NỐI TIẾP
(ỨNG DỤNG MỞ RỘNG PORT NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT NHẬP)(ỨNG DỤNG MỞ RỘNG PORT NHẬP)
(ỨNG DỤNG MỞ RỘNG PORT NHẬP)
RUN
R10
10k
+5V

L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 3: Chương trình điều khiển (ứng dụng mở rộng thu phát nối tiếp) tạo một bảng dữ liệu gồm 9 bytes (00H,
01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối
tiếp (chân TXD) rồi thu vào port nối tiếp (chân RXD) và cất vào RAM nội có địa chỉ bắt đầu là 40H.

Việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần xuất/nhập một byte. Dữ liệu sau khi
nhập vào được xuất ra 8 LED (có sử dụng bộ đệm đảo) đồng thời với việc ghi vào RAM nội.
Giáo trình thực hành vi xử lý. 9 Biên soạn: Phạm Quang Trí
1.3 Vẽ lưu đồ giải thuật và viết chương trình điều khiển.

L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 3: Chương trình điều khiển (ứng dụng mở rộng thu phát nối tiếp) tạo một bảng dữ liệu gồm 9 bytes (00H,
01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối
tiếp (chân TXD) rồi thu vào port nối tiếp (chân RXD) và cất vào RAM nội có địa chỉ bắt đầu là 40H.
Việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần xuất/nhập một byte. Dữ liệu sau khi
nhập vào được xuất ra 8 LED (có sử dụng bộ đệm đảo) đồng thời với việc ghi vào RAM nội.
Giáo trình thực hành vi xử lý. 10 Biên soạn: Phạm Quang Trí
;***************************************************
;CHUONG TRINH DIEU KHIEN THU PHAT DU LIEU DANG NOI TIEP.
;***************************************************
;KET NOI: LED -> P1
; RXD -> TXD
; KEY0 -> INT0 (ACT = 0)
;***************************************************
ORG 00H
MAIN:
MOV TMOD,#20H ;TIMER 1: MODE 2 - TAO TOC DO BAUD SERIAL PORT
MOV TH1,#-26 ;BAUD RATE = 1200
SETB TR1 ;TIMER HOAT DONG
MOV SCON,#52H ;SERIAL: MODE 1, TI = 1, RI = 0, REN = 1
MP1:
MOV DPTR,#DATABYTE ;NAP DIA CHI VUNG DU LIEU
MP2:
MOV R0,#50 ;BIEN LAP - CHONG DOI PHIM
KEY_NHAN:

JB INT0,$ ;CHO PHIM DUOC NHAN
DJNZ R0,KEY_NHAN ;GIAM BIEN LAP - CHONG DOI (PHIM DA NHAN)
MOV R0,#50 ;BIEN LAP - CHONG DOI PHIM
KEY_NHA:
JNB INT0,$ ;CHO PHIM DUOC NHA
DJNZ R0,KEY_NHA ;GIAM BIEN LAP - CHONG DOI (PHIM DA NHAN)
;PHIM DA DUOC NHAN VA NHA HOAN TAT
MOV A,#0 ;OFFSET CUA DU LIEU
MOVC A,@A+DPTR ;LAY DU LIEU TRONG VUNG DU LIEU
ACALL TRANS_DATA ;GOI CTC PHAT DU LIEU QUA SERIAL PORT
ACALL RECEI_DATA ;GOI CTC THU DU LIEU QUA SERIAL PORT
MOV 40H,A ;NAP DU LIEU THU DUOC VAO O NHO 40H
MOV P1,40H ;XUAT PORT HIEN THI
INC DPTR ;CHUYEN SANG DU LIEU KE TIEP
MOV A,DPL ;KIEM TRA DA PHAT/THU XONG VUNG DU LIEU
CJNE A,#LOW(DATABYTE+9),MP2
SJMP MP1 ;QUAY TRO LAI
;***************************************************
TRANS_DATA: ;CTC PHAT DU LIEU
JNB TI,$ ;KIEM TRA PHAT XONG
CLR TI ;XOA TI DE CHUAN BI CHO LAN PHAT KE TIEP
MOV SBUF,A ;PHAT DU LIEU
RET
;***************************************************
RECEI_DATA: ;CTC THU DU LIEU
JNB RI,$ ;KIEM TRA THU XONG
CLR RI ;XOA RI DE CHUAN BI CHO LAN THU KE TIEP
MOV A,SBUF ;THU DU LIEU
RET
;***************************************************

DATABYTE: ;VUNG DU LIEU
DB 00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
END
1.4 Thực hiện lần lượt các bước từ 1.3 đến 1.8 tương tự như bài trên.
2 Bài tập:
• Bài 1: Hãy viết chương trình điều khiển việc truyền dữ liệu dạng nối tiếp giữa hai chip vi điều khiển với
nhau (phương pháp nối dây cho từng vi điều khiển tương tự bài mẫu 3):
o Vi điều khiển 1: Viết chương trình tạo một bảng dữ liệu gồm 9 bytes (00H, 01H, 03H, 07H, 0FH,
1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối tiếp (TXD) để
truyền sang cho vi điều khiển 2, việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần
xuất một byte. Đồng thời, vi điều khiển 1 liên tục kiểm tra và thu dữ liệu vào từ port nối tiếp
(RXD) các dữ liệu do vi điều khiển 2 gửi sang và cất vào RAM nội có địa chỉ bắt đầu là 40H, dữ
liệu sau khi nhập vào được xuất ra 8 LED đồng thời với việc ghi vào RAM nội.
L. HỆ THỐNG ĐIỀU KHIỂN THU PHÁT DỮ LIỆU DẠNG NỐI TIẾP.
Bài 3: Chương trình điều khiển (ứng dụng mở rộng thu phát nối tiếp) tạo một bảng dữ liệu gồm 9 bytes (00H,
01H, 03H, 07H, 0FH, 1FH, 3FH, 7FH, FFH). Thực hiện việc xuất từng byte của bảng này ra port nối
tiếp (chân TXD) rồi thu vào port nối tiếp (chân RXD) và cất vào RAM nội có địa chỉ bắt đầu là 40H.
Việc xuất dữ liệu được điều khiển bằng nút nhấn KEY0, mỗi lần xuất/nhập một byte. Dữ liệu sau khi
nhập vào được xuất ra 8 LED (có sử dụng bộ đệm đảo) đồng thời với việc ghi vào RAM nội.
Giáo trình thực hành vi xử lý. 11 Biên soạn: Phạm Quang Trí
o Vi điều khiển 2: Viết chương trình tạo một bảng dữ liệu gồm 9 bytes (FFH, 7FH, 3FH, 1FH, 0FH,
07H, 03H, 01H, 00H). Thực hiện việc xuất từng byte của bảng này ra port nối tiếp (TXD) để
truyền sang cho vi điều khiển 1, việc xuất dữ liệu được điều khiển bằng nút nhấn KEY1, mỗi lần
xuất một byte. Đồng thời, vi điều khiển 2 liên tục kiểm tra và thu dữ liệu vào từ port nối tiếp
(RXD) các dữ liệu do vi điều khiển 2 gửi sang và cất vào RAM nội có địa chỉ bắt đầu là 40H, dữ
liệu sau khi nhập vào được xuất ra 8 LED đồng thời với việc ghi vào RAM nội.
• Bài 2: Sinh viên tự mình suy nghĩ và phát triển thêm chương trình.
3 Hướng dẫn:
Phần mở rộng port xuất:
o Port thu phát nối tiếp của 8051 có thể sử dụng để mở rộng thành nhiều port xuất song song. Để

thực hiện điều này, sử dụng port nối tiếp ở chế độ thanh ghi dịch (Shift Register – Mode 0) và vi
mạch chuyển đổi từ nối tiếp ra song song (Serial In – Parallel Out) như 74164, 4094, …
o Chế độ thanh ghi dịch: RXD là ngõ ra dữ liệu nối tiếp, TXD là ngõ ra xung clock.
o Viết chương trình: xuất dữ liệu ra port nối tiếp ở chế độ thanh ghi dịch.
Phần mở rộng port nhập:
o Port thu phát nối tiếp của 8051 có thể sử dụng để mở rộng thành nhiều port nhập song song. Để
thực hiện điều này, sử dụng port nối tiếp ở chế độ thanh ghi dịch (Shift Register – Mode 0) và vi
mạch chuyển đổi song song từ ra nối tiếp (Serial Out – Parallel In) như 74165.
o Chế độ thanh ghi dịch: RXD là ngõ ra dữ liệu nối tiếp, TXD là ngõ ra xung clock.
o Viết chương trình:
 Cho LD\ = 0 để nhập dữ liệu từ các công tắc.
 Cho LD\ = 1 để chuẩn bị thực hiện việc ghi dịch.
 Nhập dữ liệu từ port nối tiếp ở chế độ thanh ghi dịch.
 Xuất dữ liệu ra các LED.
Phần thu phát nối tiếp:
o Nối chân RXD của vi điều khiển 1 với chân TXD của vi điều khiển 2.
o Nối chân TXD của vi điều khiển 1 với chân RXD của vi điều khiển 2.



×