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