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

Giáo trình Kỹ thuật vi điều khiển (Nghề Điện tử dân dụng): Phần 2 - CĐ nghề Vĩnh Long

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 (8.06 MB, 105 trang )

BÀI 5: CỔNG NỐI TIẾP
Mục tiêu:
- Trình bày được cấu tạo và các chế độ làm việc của cổng truyền thông nối
tiếp theo nội dung đã học;
- Thực hiện cổng truyền thông nối tiếp đúng yêu cầu kỹ thuật;
- Thực hiện thu phát dữ liệu nối tiếp bằng 8051 đạt yêu cầu kỹ thuật.
Nội dung:
1. Mở đầu
Máy tính truyền dữ liệu theo hai phương pháp: truyền dữ liệu song song và
truyền dữ liệu nối tiếp.
❖ Truyền song song: Sử dụng nhiều dây dẫn để truyền dữ liệu giữa các
thiết bị có khoảng cách gần nhau (khoảng vài mét). Phương pháp này
cho phép truyền dữ liệu với tốc độ cao nhờ sử dụng nhiều dây dẫn để
truyền dữ liệu đồng thời nên tại một thời điểm có thể truyền được nhiều
bit thơng tin nhưng khoảng cách truyền thì có nhiều hạn chế.
❖ Truyền nối tiếp: Sử dụng một dây dẫn để truyền dữ liệu (một dây phát
đi và một dây thu về) giữa các thiết bị có khoảng cách xa nhau (khoảng
vài trăm mét trở lên). Phương pháp này sẽ truyền dữ liệu với tốc độ
chậm hơn (so với phương pháp truyền song song) vì chỉ sử dụng một dây
dẫn để truyền dữ liệu nên tại một thời điểm chỉ có thể truyền được một
bit thông tin nhưng khoảng cách truyền thì khơng bị hạn chế như ở
phương pháp song song.
Chip 8051 có một port nối tiếp (serial port) với các tính năng như sau:

140


❖ Lưu ý: Ở trường hợp đặc trưng thứ hai thì dữ liệu thứ nhất sẽ khơng bị
mất nếu CPU đọc xong dữ liệu thứ nhất trước khi dữ liệu thứ hai được
nhận đầy đủ.
2.Thanh ghi điều khiển


Các thanh ghi chức năng đặc biệt của port nối tiếp:
❖ SBUF (Serial Buffer Register): thanh ghi đệm của port nối tiếp.
❖ SCON (Serial Control Register): thanh ghi điều khiển port nối tiếp.
Đại lượng đặc trưng cho tốc độ truyền dữ liệu nhanh hay chậm là tốc độ baud
(baud rate) hay còn gọi là tần số hoạt động của port nối tiếp có thể là giá trị cố định
hay thay đổi tùy theo yêu cầu của người lập trình. Khi chế độ tốc độ baud thay đổi
được sử dụng, bộ định thời 1 cung cấp xung clock tốc độ baud và ta phải lập trình sao
cho phù hợp. Ở phiên bản chip 8031/8052, bộ định thời 2 cũng có thể được lập trình
để cung cấp xung clock tốc độ baud.
3. Chế độ làm việc
+ Thanh ghi SBUF.
Thanh ghi SBUF (Serial Buffer Register): được dùng để lưu giữ dữ liệu cần phát đi
và dữ liệu đã nhận được. Việc ghi dữ liệu vào thanh ghi SBUF sẽ nạp dữ liệu để phát
đi và việc đọc dữ liệu từ thanh ghi SBUF sẽ truy xuất dữ liệu đã thu được.
Thanh ghi SBUF bao gồm 2 thanh ghi:
Thanh ghi phát (bộ đệm phát): dùng để lưu giữ dữ liệu cần phát đi.
Thanh ghi thu (bộ đệm thu): dùng để lưu giữ dữ liệu đã nhận được.
Cấu trúc của thanh ghi SBUF:

141


Ví dụ: Các lệnh ghi dữ liệu vào SBUF và đọc dữ liệu từ SBUF.
MOV
SBUF, #45H
;Phát giá trị 45H qua port nối tiếp.
MOV
SBUF, #”D”
;Phát giá trị 44H qua port nối tiếp.
MOV

SBUF, A
;Phát nội dung của A qua port nối tiếp.
MOV
A, SBUF
;Đọc dữ liệu thu được từ port nối tiếp.
+ Thanh ghi SCON.
Thanh ghi SCON (Serial Control Register): chứa các bit dùng để điều khiển chế độ
hoạt động và báo trạng thái của port nối tiếp.
Cấu trúc của thanh ghi SCON:

142


Các chế độ của port nối tiếp:

Trước khi sử dụng port nối tiếp cần phải:

Ví dụ: Khởi động port nối tiếp ở chế độ 1, cho phép port thu dữ liệu từ chân RxD
và sẵn sàng phát dữ liệu từ chân TxD.
Giải
Ta dùng lệnh:
MOV

SCON, #52H

Giải thích:

SM0 = 0, SM1 = 1 → cho phép port hoạt động ở chế độ 1.
REN = 1 → cho phép port nối tiếp được phép thu dữ liệu.


143


TI = 1 → chuẩn bị port nối tiếp sẵn sàng phát dữ liệu qua chân TxD.
RI = 0 → chuẩn bị port nối tiếp sẵn sàng thu dữ liệu qua chân RxD.
3.1.Thanh ghi dịch 8 bit
+ Chế độ 0 – Thanh ghi dịch 8 bit:

Quá trình phát dữ liệu:
❖ Quá trình khởi động: Ghi dữ liệu cần phát vào SBUF Việc phát dữ
liệu bắt đầu: Dữ liệu từ SBUF được dịch ra chân RxD đồng thời với các
xung clock dịch bit được gởi ra chân TxD (mỗi bit được truyền đi trên
chân RxD trong 1 chu kỳ máy).

144


❖ Giản đồ thời gian phát dữ liệu:

Quá trình thu dữ liệu:
❖ Quá trình khởi động: Set bit cho phép thu (REN=1) → Xóa cờ ngắt thu
(RI=0) Việc thu dữ liệu bắt đầu: Các xung clock dịch bit được gởi ra
chân TxD và dữ liệu từ thiết bị bên ngoài được dịch vào chân RxD bởi
các xung clock dịch bit này (việc dịch dữ liệu vào chân RxD xảy ra ở
cạnh lên của xung clock dịch bit).

❖ Giản đồ thời gian thu dữ liệu:

Ứng dụng: Một ứng dụng khả thi của chế độ 0 (chế độ thanh ghi dịch bit) là mở
rộng thêm các ngõ ra cho chip 8051. Một vi mạch thanh ghi dịch nối tiếp – song song

có thể được nối với các chân TxD và RxD của chip 8051 để cung cấp thêm 8 đường
xuất (xem hình vẽ bên dưới). Các thanh ghi dịch bit khác có thể ghép cascade với
thanh ghi dịch bit đầu tiên để mở rộng thêm nữa.

145


3.2. Chế độ UART 8 bit có tốc độ baud thay đổi
+ Chế độ 1 – UART 8 bit có tốc độ baud thay đổi:
Trong chế độ 1, port nối tiếp của 8051 hoạt động như một bộ thu phát khơng
đồng bộ 8 bit có tốc độ baud thay đổi (UART -Universal Asynchronous Receiver
Transmitter).

UART là một bộ thu phát dữ liệu nối tiếp với mỗi ký tự dữ liệu được đứng trước
bởi một bit START (logic 0) và được đứng sau bởi một bit STOP (logic 1). Thỉnh
thoảng, một bit chẵn lẽ (Parity bit) được chèn vào giữa bit dữ liệu sau cùng và bit stop.
Hoạt động chủ yếu của UART là biến đổi dữ liệu phát từ song song thành nối tiếp và
biến đổi dữ liệu thu từ nối tiếp thành song song.
Hình vẽ khng dạng dữ liệu khi được sử dụng ở chế độ UART:

Khuông dạng của một dữ liệu khi sử dụng chế độ UART 8 bit:

146


Quá trình phát dữ liệu:
❖ Quá trình khởi động: Ghi dữ liệu cần phát vào SBUF Việc
phát dữ liệu bắt đầu: Dữ liệu từ SBUF được dịch ra chân TxD (theo
thứ tự: Start bit → 8 bit data (D0 .. D7) → Stop bit) → cờ TI=1.


❖ Tốc độ baud: do người lập trình thiết lập và được qui định bởi tốc độ tràn của
Timer 1.
❖ Thời gian của 1 bit trên đường truyền: bằng nghịch đảo của tốc độ baud (1 /
Baud rate).
❖ Cờ ngắt phát TI = 1: khi bit stop được xuất hiện trên chân TxD.
Quá trình thu dữ liệu:
❖ Quá trình khởi động: Một sự chuyển trạng thái từ mức 1 xuống mức 0 tại chân
RxD (tức xuất hiện bit Start) Việc thu dữ liệu bắt đầu: 8 bit dữ liệu được dịch vào
trong SBUF (theo thứ tự: D0→D1→…→D7) → Stop bit (bit thứ 9) được đưa vào bit
RB8 (thuộc thanh ghi SCON) → cờ RI=1.

147


❖ Tốc độ baud: do người lập trình thiết lập và được qui định bởi tốc độ tràn của
Timer 1.
❖ Hai điều kiện bắt buộc để thực hiện quá trình thu dữ liệu như trên:
• RI = 0 → Yêu cầu này có nghĩa là chip 8051 đã đọc xong dữ liệu trước đó
và xố cờ RI..
• (SM2 = 1 và Stop bit = 1) hoặc SM2 = 0 → chỉ áp dụng trong chế độ
truyền thông đa xử lý. u cầu này có nghĩa là khơng set cờ RI bằng 1
trong chế độ truyền thông đa xử lý khi bit dữ liệu thứ 9 là 0.
❖ Cờ ngắt thu RI = 1: khi 8 bit dữ liệu đã được nạp vào SBUF.
Lưu ý: Trường hợp các tín hiệu nhiễu xuất hiện trên đường truyền (làm cho đường
truyền xuất hiện mức thấp) dẫn đến làm cho bộ thu nhận dạng sai, cho đó là sự xuất
hiện của START bit (logic 0) và tiến hành thực hiện quá trình thu dữ liệu, từ đó dẫn
đến kết quả nhận vào sẽ khơng đúng. Để tránh điều này xảy ra thì khi đường truyền có
sự chuyển trạng thái từ 1 xuống 0, bộ thu yêu cầu mức 0 này phải được duy trì trên
đường truyền trong một khoảng thời gian xác định. Nếu không đảm bảo được như thế,
bộ thu được giả sử rằng đã nhận được nhiễu thay vì nhận được START bit hợp lệ. Lúc

đó bộ thu sẽ được thiết lập lại, quay về trạng thái nghỉ và chờ sự chuyển trạng thái từ 1
xuống 0 kế tiếp trên đường truyền.
3.3.UART 9 bit với tốc độ baud cố định
(Tương tự như UART 8 bit, chỉ khác ở số bit dữ liệu là 9 bit)

148


Khuông dạng của một dữ liệu khi sử dụng chế độ UART 9 bit:

3.4.Chế độ UART với tốc độ baud cố định
+ Chế độ 3 – UART 9 bit có tốc độ baud thay đổi:
(Tương tự như UART 9 bit, chỉ khác ở tốc độ baud có thể thay đổi)

Khng dạng của một dữ liệu khi sử dụng chế độ UART 9 bit:

4. Khởi tạo và truy suất thanh ghi PORT nối tiếp
Trong các chế độ truyền dữ liệu nối tiếp của 8051 đã nêu trên thì trên thực tế sử
dụng, để thực hiện việc thu và phát dữ liệu nối tiếp giữa chip 8051 với các thiết bị

149


khác (8051, máy tính, các thiết bị SPI,…) thường người lập trình chỉ sử dụng hai chế
độ sau : Mode 1 (UART 8 bit có tốc độ baud thay đổi) hoặc Mode 3 (UART 9 bit có
tốc độ baud thay đổi). Cịn hai chế độ cịn lại thì rất ít sử dụng khi cần truyền dữ liệu
nối tiếp. Cho nên ở đây chúng ta chỉ xem xét đến trình tự thực hiện việc lập trình (bao
gồm thao tác khởi động và điều khiển thu/phát dữ liệu) để 8051 có thể truyền (phát) và
nhận (thu) dữ liệu thông qua port nối tiếp theo hai chế độ UART nêu trên.
+ Lập trình truyền dữ liệu.

❖ Chọn chế độ hoạt động cho port nối tiếp:
MOV SCON, #...(1)…
❖ Chọn chế độ hoạt động Timer 1, cho bit GATE=0 và C/T=0:
MOV TMOD, #...(2)…
❖ Chọn giá trị thích hợp (căn cứ vào tốc độ baud) cho Timer 1:
MOV TH1, #...(3)…
❖ Cho Timer 1 chạy:
SETB TR1
❖ Kiểm tra xem đã phát xong toàn bộ dữ liệu trước đó hay chưa?
JNB TI, $
hoặc
WAIT: JNB TI, WAIT
❖ Xố cờ ngắt phát TI (chuẩn bị cho lần phát dữ liệu tiếp theo):
CLR TI
❖ Ghi dữ liệu cần phát vào port nối tiếp để phát đi:
MOV SBUF, ...(4)…
❖ Quay trở lại bước 5 để phát một dữ liệu tiếp theo.
Lưu ý:
(1): Giá trị dùng để qui định chế độ hoạt động của port nối tiếp. Để đơn giản
trong việc lập trình, ta có thể khởi động thanh ghi SCON theo như trình bày dưới đây:
Mode 1:
...(1)… = 52H

Mode 3:

...(1)… = D2H

150



(2): Giá trị dùng để qui định chế độ hoạt động của Timer 1 (dùng để tạo tốc độ
baud cho việc truyền dữ liệu nối tiếp). Để đơn giản trong việc lập trình, ta có thể khởi
động thanh ghi TMOD theo như trình bày dưới đây (chủ yếu ở đây ta chỉ cần sử dụng
Timer 1 ở Mode 2 – Chế độ 8 bit tự động nạp lại):
Mode 2:
...(2)… = 20H

(3): Giá trị dùng để qui định tốc độ baud cho port nối tiếp. Giá trị này phụ
thuộc vào tần số thạch anh, bit SMOD và tốc độ baud mà người lập trình mong muốn
(xem thêm “Bảng tính tốc độ baud cho port nối tiếp” như trên đã trình bày).
...(3)… = M

M=−

f
Osc
192 Baud rate

Trong đó:

, ( SMOD = 1) hoặc M = −

f
Osc
384 Baud rate

, ( SMOD = 0)

fOsc (Hz): tần số thạch anh.


Baud rate (bps): tốc độ baud của port nối tiếp.
(4): Dữ liệu cần phát đi thông qua port nối tiếp. Dữ liệu này có thể là nội dung
của một ô nhớ, thanh ghi hoặc một giá trị tức thời.
Nên nhớ rằng, nếu có u cầu thì bit gửi kèm theo (ví dụ như bit Parity) cần
phải thêm vào trước khi tiến hành quá trình phát dữ liệu (Mode 1: kèm thêm vào vị trí
của bit D7, Mode 3: kèm thêm vào vị trí của bit TB8).
+ Lập trình nhận dữ liệu.
❖ Chọn chế độ hoạt động cho port nối tiếp:





MOV SCON, #...(1)…
Chọn chế độ hoạt động Timer 1, cho bit GATE=0 và C/T=0:
MOV TMOD, #...(2)…
Chọn giá trị thích hợp (căn cứ vào tốc độ baud) cho Timer 1:
MOV TH1, #...(3)…
Cho Timer 1 chạy:
SETB TR1
Kiểm tra xem đã thu toàn bộ dữ liệu hay chưa?
JNB RI, $
hoặc
WAIT: JNB RI, WAIT

151


❖ Xoá cờ ngắt thu RI (chuẩn bị cho lần thu dữ liệu tiếp theo):
CLR RI

❖ Cất dữ liệu vừa thu được vào nơi an toàn (tránh bị mất dữ liệu):
MOV ...(4)…, SBUF
❖ Quay trở lại bước 5 để nhận một dữ liệu tiếp theo.
Lưu ý:
(1): Xem thêm “Lập trình 8051 truyền (phát) dữ liệu nối tiếp”.
(2): Xem thêm “Lập trình 8051 truyền (phát) dữ liệu nối tiếp”.
(3): Xem thêm “Lập trình 8051 truyền (phát) dữ liệu nối tiếp”.
(4): Địa chỉ của một ô nhớ, thanh ghi mà dữ liệu thu được từ port nối tiếp sẽ lưu
giữ vào trong đó.
Nên nhớ rằng, nếu có u cầu thì bit gửi kèm theo (ví dụ như bit Parity) cần
phải được xử lý trước khi tiến hành việc cất dữ liệu thu được (Mode 1: nằm tại vị trí
của bit D7, Mode 3: nằm tại vị trí của bit RB8).
5. Truyền thơng đa xử lý
Giao tiếp nối tiếp có nghĩa là truyền dữ liệu từng chút một tại một thời điểm, khi
truyền thơng song song, số lượng bit có thể được truyền tại một thời điểm phụ thuộc
vào số lượng dòng dữ liệu có sẵn để liên lạc.
Hai phương thức giao tiếp nối tiếp là

Truyền thơng đồng bộ: Chuyển dữ liệu hàng loạt trong cấu trúc khung tại
một thời điểm

Truyền thơng khơng đồng bộ: Truyền dữ liệu byte trong cấu trúc khung tại
một thời điểm
8051 đã được xây dựng trong UART với RXD (nhận dữ liệu nối tiếp pin) và TXD (dữ
liệu nối tiếp truyền pin) trên PORT3.0 và PORT3.1 tương ứng.
Giao tiếp không đồng bộ
Giao tiếp nối tiếp không đồng bộ được sử dụng rộng rãi để truyền byte theo định
hướng.
Cấu trúc khung trong giao tiếp khơng đồng bộ:


START bit: Đó là một chút mà bắt đầu giao tiếp nối tiếp và nó ln ln
thấp.

Gói bit dữ liệu : Các bit dữ liệu có thể là gói 5 đến 9 bit. Thơng thường,
chúng tơi sử dụng gói dữ liệu 8 bit, ln được gửi sau bit START.

STOP bit : Đây là một hoặc hai bit. Nó được gửi sau khi gói dữ liệu bit để
cho biết kết thúc khung. Stop bit luôn logic cao.
Trong khung giao tiếp nối tiếp không đồng bộ, bit START đầu tiên được theo sau bởi
byte dữ liệu và ở bit STOP cuối cùng, tạo thành một khung 10 bit. Đôi khi bit cuối
cùng cũng được sử dụng như bit chẵn lẻ.

152


6. Tốc độ BAUD
+ Tốc độ truyền dữ liệu.
- Tốc độ baud cho chế độ 0:

- Tốc độ baud cho chế độ 1, 3:

- Tốc độ baud cho chế độ 2:

❖ Lưu ý:
• Sau khi hệ thống reset thì bit SMOD = 0 (chế độ mặc định).
• Vì thanh ghi PCON không được định địa chỉ từng bit, nên để tăng gấp đôi
tốc độ baud (tức làm cho SMOD=1) ta phải thực hiện bằng những dòng
lệnh sau:
MOV A, PCON
; Lấy giá trị từ thanh ghi PCON.

SETB ACC.7
; SMOD = 1.
MOV PCON, A
; Chuyển giá trị mới vào PCON.
7. Bài tập
- Ứng dụng port nối tiếp trong lập trình điều khiển thiết bị ngoại vi.
+ Sơ đồ nguyên lý.

153


R1
J1

GND
+5V
GND

330

R2

330

R3

330

R4


330

VCC

1
2
3

VCC

VCC

1
2
3
4
5
6
7
8
9

1
2
3
4
5
6
7
8

9

1
2
3
4
5
6
7
8
9

1
2
3
4
5
6
7
8
9

POWER

VCC

VCC

D2


D3

D4

D5

D6

D7

D8

D9

D10

D11

D12

D13

D14

D15

D16

D17


D18

D19

D20

D21

D22

D23

D24

D25

D26

D27

D28

D29

D30

D31

D32


LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED


LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED


LED

LED

1
2
3
4
5
6
7
8
J4
BARLED3

J5
BARLED4

LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7

LED0
LED1
LED2

LED3
LED4
LED5
LED6
LED7

LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7

J3
BARLED2

LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7

J2
BARLED1


1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

1
2
3
4
5
6
7
8

D1

Hình 0.1: Sơ đồ nguyên lý khối LED đơn (Point LED).

J25

VCC
1
2
3
4
5
6
7
8
9

POWER

SW7
KEY 5

SW8
KEY 6

SW9
KEY 7

K7

SW6
KEY 4

K6


SW5
KEY 3

K5

SW4
KEY 2

J26

K4

SW3
KEY 1

K2

SW2
KEY 0

K1

K0
K1
K2
K3
K4
K5
K6

K7

K3

R15

K0

10K

VCC

1
2
3

GND
+5V
GND

K0
K1
K2
K3
K4
K5
K6
K7

1

2
3
4
5
6
7
8

KEY0
KEY1
KEY2
KEY3
KEY4
KEY5
KEY6
KEY7

PUSH KEY

Hình 0.2: Sơ đồ nguyên lý khối nút nhấn (Momentary Switch).


Sơ đồ bố trí linh kiện.

Hình 0.3: Khối LED đơn (Point LED)

Hình 0.4: Khối nút nhấn (Momentary Switch).

BÀI THỰC HÀNH
Nội dung: Viết chương trình, mơ phỏng và lắp ráp mạch điều khiển truyền dữ

liệu thông qua port nối tiếp. Thay đổi trạng thái của các LED tại vi điều khiển 2
(Slave) theo trạng thái của các nút nhấn tại vi điều khiển 1 (Master).
Lưu đồ giải thuật:
❖ Bước 1: Vẽ lưu đồ giải thuật của chương trình điều khiển.

154


Hình 0.5: Lưu đồ giải thuật của chương trình.
Chương trình điều khiển:
Sử dụng phần mềm Topview Simulation để thực hiện việc viết chương trình và
biên dịch, kiểm tra lỗi cú pháp của chương trình.
❖ Bước 2: Khởi động phần mềm Topview Simulation.
❖ Bước 3: Mở chức năng soạn thảo một chương trình mới và đặt tên tập tin
chương trình là: S1_MASTER.ASM và S1_SLAVE.ASM
❖ Bước 4: Viết chương trình điều khiển dưới đây vào máy tính.
Chương trình cho vi điều khiển Master:
ORG 00H
MOV TMOD,#20H
; Timer 1, Mode 2 (Auto reload).
MOV TH1,#-3
; Baud rate = 9600.
MOV SCON,#50H
; Data = 8 bit, Stop = 1 bit.
SETB TR1
; Kich hoat Timer 1.
AGAIN:
MOV A,P0
; Lay du lieu tu SW.
ACALL

SEND
; Gui du lieu di
SJMP AGAIN
; Thuc hien lai.
;---- Truyen du lieu noi tiep, Data = ACC.
SEND:

155


MOV SBUF,A
; Lay du lieu.
JNB TI,$
; Cho truyen xong du lieu.
CLR TI
; Xoa co bao, san sang cho lan truyen tiep theo.
RET
; Quay ve.
;---------------END
Chương trình cho vi điều khiển Slave:
ORG 00H
MOV TMOD,#20H
; Timer 1, Mode 2 (Auto reload).
MOV TH1,#-3
; Baud rate = 9600.
MOV SCON,#50H
; Data = 8 bit, Stop = 1 bit.
SETB TR1
; Kich hoat Timer 1.
AGAIN:

ACALL
RECV
; Nhan du lieu noi tiep.
MOV P1,A
; Xuat len LED.
SJMP AGAIN
; Thuc hien lai.
;---- Nhan du lieu noi tiep, ACC = Data.
RECV:
JNB RI,$
; Cho nhan xong du lieu.
MOV A,SBUF
; Cat du lieu nhan vao thanh ghi A.
CLR RI
; Xoa co bao, san sang cho lan nhan tiep theo.
RET
; Quay ve.
;---------------END
❖ Bước 5: Lưu chương trình trên vào máy tính.
❖ Bước 6: Thực hiện biên dịch và kiểm tra lỗi chương trình.
• Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục
các lỗi này. Nguyên nhân phát sinh lỗi thơng thường do cú pháp của các
lệnh khơng chính xác, cần phải được kiểm tra lại. Sau khi hoàn tất việc
hiệu chỉnh sai sót thì quay trở về thực hiện từ Bước 5.
• Nếu khơng có lỗi xuất hiện thì phần mềm sẽ tự động tạo tập tin mã máy
với tên là: S1_MASTER.HEX, S1_SLAVE.HEX và thực hiện tiếp theo
các phần nội dung dưới đây.
Mô phỏng hoạt động:
Sử dụng phần mềm ISIS 7 Professional (Protues 7.10) để thực hiện việc mô phỏng
quá trình hoạt động của hệ thống vi điều khiển.

❖ Bước 7: Khởi động phần mềm ISIS 7 Professional (Protues 7.10).
❖ Bước 8: Vẽ sơ đồ thiết kế mạch mô phỏng điều khiển truyền dữ liệu thông
qua port nối tiếp như Hình 5.4.4 dưới đây.

156


MẠCH ĐIỀU KHIỂN GIAO TIẾP CỔNG NỐI TIẾP

RP1
2
3
4
5
6
7
8
9

33p

X1
11.0592MHz

C1
33p

+5V

+5V


RP2
1

C2

P0.0M
P0.1M
P0.2M
P0.3M
P0.4M
P0.5M
P0.6M
P0.7M

1
P0.0S
P0.1S
P0.2S
P0.3S
P0.4S
P0.5S
P0.6S
P0.7S

C5

2
3
4

5
6
7
8
9

33p

X2
11.0592MHz

C4
33p

P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15

R1
10k

29
30
31


+5V
+5V

U2

2
3
4
5
6
7
8
9

D0M
D1M
D2M
D3M
D4M
D5M
D6M
D7M

10
18
17
16
15
14
13

12
11

D0M
D1M
D2M
D3M
D4M
D5M
D6M
D7M

10K

1
2
3
4
5
6
7
8

KEY12

10
11
12
13
14

15
16
17

10
11
12
13
14
15
16
17

KEY10

KEY9

KEY8

+5V

+5V

+5V

C6
10uF
9

RST


R18
10k

29
30
31

PSEN
ALE
EA

+5V
+5V

RP4

U3

P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD

1
2

3
4
5
6
7
8

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

1
2
3
4
5
6
7
8

KEY6

+5V

1

COM
1C
2C
3C
4C
5C
6C
7C
8C

1B
2B
3B
4B
5B
6B
7B
8B

10
18
17
16
15
14
13
12
11

D0S

D1S
D2S
D3S
D4S
D5S
D6S
D7S

D0S
D1S
D2S
D3S
D4S
D5S
D6S
D7S

ULN2803

SLAVE

KEY7

+5V

18

XTAL2

P2.0/A8

P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15

AT89C51

MASTER

P0.2M

+5V

P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD

AT89C51

KEY11

P0.4M

+5V

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

P0.1M

KEY13

+5V

1
2
3
4
5
6
7
8

ULN2803

P0.5M


+5V

1B
2B
3B
4B
5B
6B
7B
8B

P0.3M

KEY14
P0.6M

P0.7M

KEY15

COM
1C
2C
3C
4C
5C
6C
7C
8C


P0.0M

1

P2.0S21
P2.1S22
P2.2S23
P2.3S24
P2.4S25
P2.5S26
P2.6S27
P2.7S28

P0.7S

RP3

PSEN
ALE
EA

21 P2.0M
22 P2.1M
23 P2.2M
24 P2.3M
25 P2.4M
26 P2.5M
27 P2.6M
28 P2.7M


19

XTAL1

KEY5

+5V

10K

KEY4

+5V

2
3
4
5
6
7
8
9

KEY3

KEY2

KEY1

+5V


KEY0

+5V

+5V

P0.0S

RST

P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7

P0.1S

9

P0.0S 39
P0.1S 38
P0.2S 37
P0.3S 36
P0.4S 35
P0.5S 34

P0.6S 33
P0.7S 32

P0.2S

XTAL2

10uF

+5V

U1

39 P0.0M
38 P0.1M
37 P0.2M
36 P0.3M
35 P0.4M
34 P0.5M
33 P0.6M
32 P0.7M

P0.4S

18

C3

10K


P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7

P0.5S

XTAL1

P0.3S

10K

U9
19

P0.6S

+5V

+5V

+5V

R16


R15

R14

R13

R12

R11

R10

R9

R8

R7

R6

R5

R4

R3

R2

330


330

330

330

330

330

330

330

330

330

330

330

330

330

330

330


D15

D14

D13

D12

D11

D10

D9

D8

D7

D6

D5

D4

D3

D2

D1


D0

R19
R20
R21
R22
R23
R24
R25

U4
P2.4M 7
P2.5M 1
P2.6M 2
P2.7M 6
4
5
3

A
B
C
D
BI/RBO
RBI
LT

QA
QB
QC

QD
QE
QF
QG

13
12
11
10
9
15
14

56
56
56
56
56
56
56

13
12
11
10
9
15
14

56

56
56
56
56
56
56

A1
B1
C1
D1
E1
F1
G1

A1
B1
C1
D1
E1
F1
G1

A
B
C
D
BI/RBO
RBI
LT


QA
QB
QC
QD
QE
QF
QG

U6

A2
B2
C2
D2
E2
F2
G2

P2.4S 7
P2.5S 1
P2.6S 2
P2.7S 6
4
5
3

A
B
C

D
BI/RBO
RBI
LT

P2.0S 7
P2.1S 1
P2.2S 2
P2.3S 6
4
5
3

R26
R27
R28
R29
R30
R31
R32

74LS47

A
B
C
D
BI/RBO
RBI
LT


QA
QB
QC
QD
QE
QF
QG

13
12
11
10
9
15
14

56
56
56
56
56
56
56

13
12
11
10
9

15
14

56
56
56
56
56
56
56

+5V

A3
B3
C3
D3
E3
F3
G3

A3
B3
C3
D3
E3
F3
G3

D0S


D1S

D2S

D3S

D4S

R33
R34
R35
R36
R37
R38
R39

+5V

U7
A2
B2
C2
D2
E2
F2
G2

D5S


D6S

D7S

D0M

D1M

D2M
+5V

74LS47

U5
P2.0M 7
P2.1M 1
P2.2M 2
P2.3M 6
4
5
3

D3M

D4M

D5M

D6M


D7M

R17

+5V

A4
B4
C4
D4
E4
F4
G4

74LS47
QA
QB
QC
QD
QE
QF
QG

A4
B4
C4
D4
E4
F4
G4


R40
R41
R42
R43
R44
R45
R46

74LS47

Hình 0.6: Sơ đồ nguyên lý mô phỏng hệ thống điều khiển.
 Mạch mô phỏng này đã được thiết kế sẵn và lưu trong máy tính với tên tập tin
là: SerialPort_1.DSN. Vì thế người học có thể tự vẽ thiết kế mạch mơ phỏng hoặc lấy
mạch mơ phỏng có sẵn trong cơ sở dữ liệu của môn học.
❖ Bước 9: Chọn tập tin chương trình cần mơ phỏng (tập tin mã máy đã được
tạo ra từ Bước 6) cho hệ thống vi điều khiển: S1_MASTER.HEX,
S1_SLAVE.HEX
❖ Bước 10: Thực hiện chạy mô phỏng và quan sát trực tiếp kết quả trên màn
hình máy tính.
• Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục
các lỗi này. Nguyên nhân phát sinh lỗi thơng thường do giải thuật chương
trình khơng chính xác hoặc do mạch mơ phỏng vẽ khơng chính xác, cần
phải được kiểm tra lại. Sau khi hoàn tất việc hiệu chỉnh sai sót thì quay trở
về thực hiện từ Bước 5 (do giải thuật chương trình khơng chính xác) hoặc
Bước 8 (do mạch mơ phỏng vẽ khơng chính xác).
• Nếu khơng có lỗi xuất hiện thì thực hiện tiếp theo các phần nội dung dưới đây.
+ Lắp mạch và nạp chương trình điều khiển.

157



Sử dụng các khối "Microcontroller Unit Slot", "Point LED", "Momentary
Switch" và "Power Supply" có sẵn trên mơ hình thực hành vi điều khiển để lắp ráp
mạch theo thiết kế bên trên.
❖ Bước 11: Kết nối các khối trên mơ hình như Hình 5.4.5 để tạo thành hệ
thống mạch điều khiển như bên trên.
• Tắt nguồn AC cấp cho mơ hình thực hành.

Hình 0.7: Sơ đồ kết nối mạch trên mơ hình.
Sử dụng phần mềm Flash Magic để thực hiện việc nạp chương trình cho vi điều
khiển P89V51RB2 trên mơ hình thực hành.
❖ Bước 12: Bật nguồn AC cấp cho mô hình thực hành.
❖ Bước 13: Khởi động phần mềm Flash Magic.
❖ Bước 14: Kiểm tra cấu hình phần mềm (loại vi điều khiển, cổng COM, tốc
độ truyền, chuẩn giao tiếp,...
❖ Bước 15: Chọn tập tin chương trình điều khiển (tập tin mã máy đã được tạo
ra từ Bước 6): S1_MASTER.HEX, S1_SLAVE.HEX
❖ Bước 16: Nạp chương trình vào vi điều khiển.
❖ Bước 17: Nhấn nút "Master Reset" ở khối "Microcontroller Unit Slot" để
chạy chương trình và quan sát trực tiếp kết quả trên mơ hình thực hành.
• Nếu có bất kỳ lỗi nào xuất hiện thì thực hiện việc hiệu chỉnh khắc phục
các lỗi này. Nguyên nhân phát sinh lỗi thường do việc lắp ráp phần cứng
khơng chính xác hoặc các linh kiện bị hư hỏng, cần phải được kiểm tra
lại. Sau khi hoàn tất việc kiểm tra và hiệu chỉnh sai sót thì quay trở về
thực hiện từ Bước 15.
• Nếu khơng có lỗi xuất hiện thì hồn tất bài thực hành.
BÀI TẬP THỰC HÀNH
Nội dung: "Chương trình, mơ phỏng và lắp ráp mạch điều khiển truyền dữ liệu
thông qua port nối tiếp. Thay đổi trạng thái của các LED tại vi điều khiển 2 (Slave)

theo trạng thái của các nút nhấn tại vi điều khiển 1 (Master) và ngược lại"

158


Lưu đồ giải thuật:

Chương trình cho vi điều khiển Master:
ORG 00H
MOV TMOD,#20H
; Timer 1, Mode 2 (Auto reload).
MOV TH1,#-3
; Baud rate = 9600.
MOV SCON,#50H
; Data = 8 bit, Stop = 1 bit.
SETB TR1
; Kich hoat Timer 1.
AGAIN:
ACALL
RECV
; Nhan du lieu tu port ket hop truyen du lieu
MOV P1,A
; Xuat len LED.
SJMP AGAIN
; Thuc hien lai.
;---- Truyen du lieu noi tiep, Data = ACC.
SEND:
MOV SBUF,A
; Lay du lieu.
JNB TI,$

; Cho truyen xong du lieu.
CLR TI
; Xoa co bao, san sang cho lan truyen tiep theo.
RET
; Quay ve.
;---- Nhan du lieu noi tiep, ACC = Data.
RECV:
MOV A,P0
; Lay du lieu tu SW.
ACALL
SEND
; Gui du lieu di
JNB RI,RECV
; Cho nhan xong du lieu.
MOV A,SBUF
; Cat du lieu nhan vao thanh ghi A.
CLR RI
; Xoa co bao, san sang cho lan nhan tiep theo.
RET
; Quay ve.
;---------------END
Chương trình cho vi điều khiển Slave:
ORG 00H
MOV TMOD,#20H
; Timer 1, Mode 2 (Auto reload).

159


MOV TH1,#-3

; Baud rate = 9600.
MOV SCON,#50H
; Data = 8 bit, Stop = 1 bit.
SETB TR1
; Kich hoat Timer 1.
AGAIN:
ACALL
RECV
; Nhan du lieu tu port ket hop truyen du lieu
MOV P1,A
; Xuat len LED.
SJMP AGAIN
; Thuc hien lai.
;---- Truyen du lieu noi tiep, Data = ACC.
SEND:
MOV SBUF,A
; Lay du lieu.
JNB TI,$
; Cho truyen xong du lieu.
CLR TI
; Xoa co bao, san sang cho lan truyen tiep theo.
RET
; Quay ve.
;---- Nhan du lieu noi tiep, ACC = Data.
RECV:
MOV A,P0
; Lay du lieu tu SW.
ACALL
SEND
; Gui du lieu di

JNB RI,RECV
; Cho nhan xong du lieu.
MOV A,SBUF
; Cat du lieu nhan vao thanh ghi A.
CLR RI
; Xoa co bao, san sang cho lan nhan tiep theo.
RET
; Quay ve.
;---------------END
BÀI TẬP ỨNG DỤNG
Bài 1: Viết chương trình điều khiển truyền dữ liệu thơng qua port nối tiếp hoạt
động như sau: Ban đầu 8 LED của vi điều khiển Slave tắt hết. Thực hiện nhấn một
trong các nút nhấn của vi điều khiển Master để chọn lựa kiểu hiển thị trên 8 LED của
vi điều khiển Slave (chỉ thực hiện kiểu hiển thị 1 lần, không lặp lại).
o Nhấn nút “KEY8/MASTER”: 8 LED đơn “D0-D7/SLAVE” sáng tắt.
o Nhấn nút “KEY9/MASTER”: 8 LED đơn “D0-D7/SLAVE” sáng đuổi từ
trái sang phải.
o Nhấn nút “KEY10/MASTER”: 8 LED đơn “D0-D7/SLAVE” sáng dần từ
trái sang phải.
o Nhấn nút “KEY11/MASTER”: 8 LED đơn “D0-D7/SLAVE” sáng dần từ
hai bên vào giữa.
o Nhấn nút “KEY12/MASTER”: 8 LED đơn “D0-D7/SLAVE” tắt hết.
o Nhấn nút “KEY13/MASTER”: 8 LED đơn “D0-D7/SLAVE” sáng hết.
Bài 2: Viết chương trình điều khiển truyền dữ liệu thông qua port nối tiếp hoạt
động như sau: Ban đầu 16 LED của vi điều khiển Master và Slave tắt hết. Thực hiện
nhấn một trong các nút nhấn của vi điều khiển Master và Slave để chọn lựa trạng thái
làm việc của 16 LED này.

160



o Nhấn nút “KEY8/MASTER”: Bắt đầu sáng đuổi qua các LED từ D0 – D15
liên tục.
o Nhấn nút “KEY9/MASTER”: Dừng sáng đuổi và tắt hết các LED từ D0 –
D15.
o Nhấn nút “KEY6/SLAVE”: Tăng dần (theo số lần nhấn) tốc độ sáng đuổi
các LED.
o Nhấn nút “KEY7/SLAVE”: Giãm dần (theo số lần nhấn) tốc độ sáng đuổi
các LED.
Ứng dụng port nối tiếp trong lập trình điều khiển thiết bị ngoại vi (PC).
+ Sơ đồ nguyên lý.
R1
J1

330

R2

330

R3

330

R4

330

VCC


1
2
3

GND
+5V
GND

VCC

VCC

1
2
3
4
5
6
7
8
9

1
2
3
4
5
6
7
8

9

1
2
3
4
5
6
7
8
9

1
2
3
4
5
6
7
8
9

POWER

VCC

VCC

D5


D6

D7

D8

D9

D10

D11

D12

D13

D14

D15

D16

D17

D18

D19

D20


D21

D22

D23

D24

D25

D26

D27

D28

D29

D30

D31

D32

LED

LED

LED


LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED


LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED

LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7


J5
BARLED4

LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7

J4
BARLED3

LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7

J3
BARLED2

LED0
LED1

LED2
LED3
LED4
LED5
LED6
LED7

J2
BARLED1

1
2
3
4
5
6
7
8

D4

LED

1
2
3
4
5
6
7

8

D3

LED

1
2
3
4
5
6
7
8

D2

LED

1
2
3
4
5
6
7
8

D1


Hình 0.1: Sơ đồ nguyên lý khối LED đơn (Point LED).
J25

R15

VCC
1
2
3
4
5
6
7
8
9

POWER

SW7
KEY 5

SW8
KEY 6

K0
K1
K2
K3
K4
K5

K6
K7

SW9
KEY 7

K7

SW6
KEY 4

K6

K1

SW5
KEY 3

K5

SW4
KEY 2

J26

K4

SW3
KEY 1


K3

SW2
KEY 0

K2

K0
K1
K2
K3
K4
K5
K6
K7

K0

10K

VCC

1
2
3

GND
+5V
GND


1
2
3
4
5
6
7
8

KEY0
KEY1
KEY2
KEY3
KEY4
KEY5
KEY6
KEY7

PUSH KEY

Hình 0.2: Sơ đồ nguyên lý khối nút nhấn (Momentary Switch).

Q1
A1015

R31
2K2

VCC


Q2
A1015

R32
2K2

VCC

Q3
A1015

R33
2K2

VCC

Q4
A1015

R34
2K2

VCC

Q5
A1015

R35
2K2


VCC

Q6
A1015

J53

Q0

VCC

Q1

R30
2K2

Q2

Q4
Q5
Q6
Q7

VCC

Q3

1
2
3

4

R29
2K2

Q4

Q0
Q1
Q2
Q3

Q5

1
2
3
4

Q6

Q7

J52

SEL0
SEL1
SEL2
SEL3


R36
2K2

VCC

Q7
A1015

Q8
A1015

3

U28
LED7

1
2
3
4
5
6
7
8

SEL0
SEL1
SEL2
SEL3
SEL4

SEL5
SEL6
SEL7

SEL LED IN

CA

8
CA

3

U27
LED7

CA

8
CA

3

U26
LED7

CA

8
CA


3
CA

8

U25
LED7

CA

3
CA

U24
LED7

CA

8

3
CA

8

U23
LED7

CA


3
CA

8

U22
LED7

CA

3
CA

U21
LED7

CA

J54

SEL4
SEL5
SEL6
SEL7

8

SEL IN1


Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

SEL IN1

7
6
4
2
1
9
10
5
A
B
C
D
E
F
G
DP

A
B

C
D
E
F
G
DP

7
6
4
2
1
9
10
5
A
B
C
D
E
F
G
DP

A
B
C
D
E
F

G
DP

7
6
4
2
1
9
10
5
A
B
C
D
E
F
G
DP

A
B
C
D
E
F
G
DP

7

6
4
2
1
9
10
5
A
B
C
D
E
F
G
DP

A
B
C
D
E
F
G
DP

7
6
4
2
1

9
10
5
R68
R69
R70
R71
R72
R73
R74
R75

A
B
C
D
E
F
G
DP

7
6
4
2
1
9
10
5
R60

R61
R62
R63
R64
R65
R66
R67

A
B
C
D
E
F
G
DP

7
6
4
2
1
9
10
5
R52
R53
R54
R55
R56

R57
R58
R59

A
B
C
D
E
F
G
DP

7
6
4
2
1
9
10
5

R37
R38
R39
R40
R41
R42
R43
R76


330
330
330
330
330
330
330
330

1
2
3
4
5
6
7
8

A
B
C
D
E
F
G
DP

330
330

330
330
330
330
330
330
1
2
3
4
5
6
7
8

J59
7SEG5 IN

J60
7SEG4 IN

A
B
C
D
E
F
G
DP


330
330
330
330
330
330
330
330
1
2
3
4
5
6
7
8

J58
7SEG6 IN

A
B
C
D
E
F
G
DP

330

330
330
330
330
330
330
330

J57
7SEG7 IN

A
B
C
D
E
F
G
DP

1
2
3
4
5
6
7
8

7SEG IN MUL


330
330
330
330
330
330
330
330

POWER

VCC

1
2
3
4
5
6
7
8

1
2
3

A
B
C

D
E
F
G
DP

J56

GND
+5V
GND

R44
R45
R46
R47
R48
R49
R50
R51

A
B
C
D
E
F
G
DP


J55
A
B
C
D
E
F
G
DP

Hình 0.3: Sơ đồ nguyên lý khối LED 7 đoạn (7 Segment LED).

161


J211

A
B
C
D
E
F
G

VCC
1
2
3
4

5
6
7
8

A
B
C
D
A
B
C
D

4
3
5

BCD IN 1-2
VCC
C139
104

C140
104

16
8

D0

D1
D2
D3

A
B
C
D
E
F
G
DP

7SEG OUT 1

7447

J215
13
12
11
10
9
15
14

A
B
C
D

E
F
G

VCC
4
3
5

1
2
3
4
5
6
7
8
VCC

BI/RBO
LT
VCC
RBI GND
U100

7
1
2
6


13
12
11
10
9
15
14

U99

1
2
3
4
5
6
7
8

A
B
C
D
E
F
G
DP

VCC


BI/RBO
LT
VCC
RBI GND

16
8

7
1
2
6

J214

4
3
5

A
B
C
D
E
F
G

C137
104


BI/RBO
LT
VCC
RBI GND
U101

7
1
2
6

BCD IN 3-4
VCC

7SEG OUT 2

D0
D1
D2
D3

VCC
1
2
3
4
5
6
7
8


A
B
C
D
A
B
C
D

7447

VCC
C138
4
104
3
5

13
12
11
10
9
15
14

1
2
3

4
5
6
7
8
VCC

16
8

7SEG OUT 3

13
12
11
10
9
15
14

1
2
3
4
5
6
7
8

A

B
C
D
E
F
G

BI/RBO
LT
VCC
RBI GND

1
2
3

74138

A
B
C

DECODER 3-8
VCC
6
4
5

VCC
C135

104

J209
15
14
13
12
11
10
9
7

Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7

G1
G2A
G2B

1
2
3
4
5

6
7
8
VCC

C136
104

SEL0
SEL1
SEL2
SEL3
SEL4
SEL5
SEL6
SEL7

DECODER OUT

16
8

VCC
GND
VCC

7447

D0
D1

D2
D3

A
B
C
D
E
F
G
DP

U98
1
2
3

SEL A
SEL B
SEL C

J212

J216

J217

A
B
C

D
E
F
G
DP

VCC
16
8

16

J213

D0
D1
D2
D3

J210

U102A
1
2

SEL A
SEL B

2
3


DECODER 2-4

1

74139

GNDVCC

7
1
2
6

7447

A
B
G

J218
4
5
6
7

Y0
Y1
Y2
Y3


1
2
3
4

J219

SEL A
SEL B

7SEG OUT 4

U102B
1
2

14
13

DECODER 2-4

15

SEL0
SEL1
SEL2
SEL3

DECODER OUT


8

U97

74139

A
B

Y0
Y1
Y2
Y3

G

J220
12
11
10
9

1
2
3
4

SEL0
SEL1

SEL2
SEL3

DECODER OUT
J221

GND
+5V
GND

VCC

1
2
3
POWER

Hình 0.4: Sơ đồ nguyên lý khối giải mã 7 đoạn (7 Segment Decoder).
P1

J70
N/A1
DSR
RXD
RTS
TXD
CTS
DTR
N/A2


1
6
2
7
3
8
4
9
5

N/A1
DSR
RXD
RTS
TXD
CTS
DTR
N/A2

1
2
3
4
5
6
7
8

N/A
RXD

TXD
DTR
DSR
RTS
CTS
N/A

RS232C-PC

P2

J71

VCC

RS232C
VCC
C33
10u

C34
10u

C36
104

8

RXD


7

2

3
C1-

C1+
TXD

V+

1

J72
C35
10u
VCC

R2IN

R2OUT

T2OUT

T2IN

R1OUT
T1OUT


R1IN
T1IN

1
2
3

GND
+5V
GND

16

VCC

POWER
9

J74
1
2

10

TXD
RXD

GND

13

11
U33
MAX232

D0
D1
D2
D3
D4
D5
D6
D7

1
2
3
4
5
6
7
8

D0
D1
D2
D3
D4
D5
D6
D7


DATA LPT-PC

J73
ERR
ACK
BUSY
PE
SEL

1
2
3
4
5

ERROR\
ACK\
BUSY
PE
SEL

STATUS LPT-PC
J75
1
STROBE\
2
AF\
3
INIT

4

STB
AF
INIT
SEL IN

SEL IN\

LPT

15

C25

6

C2+
4

V-

TXD/RXD 1
12
14

STB
AF
D0
ERR

D1
INIT
D2
SEL IN
D3
GND
D4
GND
D5
GND
D6
GND
D7
GND
ACK
GND
BUSY
GND
PE
GND
SEL

1
14
2
15
3
16
4
17

5
18
6
19
7
20
8
21
9
22
10
23
11
24
12
25
13

CONTROL LPT-PC

C37
10u
C38
10u

VCC
J76

VCC
C39

10u

1
6
2
7
3
8
4
9
5

7
8

2

3
C1-

C1+

P3

R2OUT

R2IN

T2IN


R1OUT
T1OUT

R1IN
T1IN

JR1
6
4
2

PS2
5
3
1

J78
1
2

9
10

J79
1
2

VCC

TXD

RXD

J80

J81

GND

13
11

1
2
3
4

2
1

R83
10K

-DATA
+DATA

USB2-PC

U34
MAX232


VCC

JR2
6
4
2

PS2
5
3
1

USB 2

R84
10K
J82
1
2

CLOCK
DATA

PS2-2-PC

C43
10u
C44
10u


Hình 0.5e: Sơ đồ nguyên lý khối giao tiếp máy tính (PC Interface).


CLOCK
DATA

PS2-1-PC

16

15

V-

C25

6

4

C2+

RS232C

-DATA
+DATA

USB 1

TXD/RXD 2

12
14

VCC
J77
2
1

R82
10K

USB1-PC
VCC

T2OUT

C42
104
C41
10u

V+

1

C40
10u

R81
10K


1
2
3
4

VCC

Sơ đồ bố trí linh kiện.

Hình 0.6: Khối LED đơn (Point LED)

162


Hình 0.7: Khối nút nhấn (Momentary Switch).

Hình 0.8: Khối LED 7 đoạn (7 Segment LED).

Hình 0.9: Khối giải mã 7 đoạn (7 Segment Decoder).

163


Hình 0.10: Khối giao tiếp máy tính (PC Interface).
BÀI THỰC HÀNH

Viết chương trình, mơ phỏng và lắp ráp mạch điều khiển truyền dữ liệu giữa vi
điều khiển và PC thông qua port nối tiếp với yêu cầu sau:
❖ Truyền dữ liệu từ 8051 (nhập bằng nút nhấn và hiển thị trên LED đơn) qua

máy tính (hiển thị trên Hyper Terminal)
• KEY 0: 8051 gửi ký tự 'A'.
• KEY 1: 8051 gửi ký tự 'B'.
• KEY 2: 8051 gửi ký tự 'C'.
• KEY 3: 8051 gửi ký tự '0'.
• KEY 4: 8051 gửi ký tự '1'.
• KEY 5: 8051 gửi ký tự '2'.
• KEY 6: 8051 gửi ký tự '@'.
• KEY 7: 8051 gửi ký tự '#'.
❖ Truyền dữ liệu từ máy tính (nhập trên Hyper Terminal) qua 8051 (hiển thị trên
LED 7 đoạn)
• Ký tự 'A': 8051 hiển thị 0.
• Ký tự 'B': 8051 hiển thị 1.
• Ký tự 'C': 8051 hiển thị 2.
• Ký tự '0': 8051 hiển thị 3.
• Ký tự '1': 8051 hiển thị 4.
• Ký tự '2': 8051 hiển thị 5.
• Ký tự '@': 8051 hiển thị 6.
• Ký tự '#': 8051 hiển thị 7.
+ Lưu đồ giải thuật.
❖ Bước 1: Vẽ lưu đồ giải thuật của chương trình điều khiển.

164


×