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

đồ án thiết kế chế tạo và điều khiển tay máy, chương 9 ppsx

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 (330.15 KB, 8 trang )

Thiết kế, chế tạo và điều khiển tay máy Trang 67


9
ĐIỀU KHIỂN BẰNG
CỔNG NỐI TIẾP
9.1 GIỚI THIỆU
Ghép nối dùng qua cổng nối tiếp là một trong những kỹ thuật được dùng
rộng rãi nhất để ghép nối, giao tiếp giữa các thiết bò với nhau. Qua cổng nối tiếp
có thể ghép nối chuột, modem, máy in, bộ biến đổi A/D, các thiết bò đo lường
hoặc để giao tiếp giữa các chip, … Cách ghép nối này sử dụng phương pháp
truyền thông theo kiểu nối tiếp, trong đó ở một thời điểm chỉ có 1 bit được gửi
đi/nhận về trên một đường dẫn. Đặc điểm này khác so với phương pháp truyền
thông theo kiểu song song, trong đó nhiều bit được gửi đi đồng thời.
Ưu điểm chính của kiểu truyền nối tiếp so với kiểu truyền song song là tiết
kiệm dây dẫn, truyền đi được xa, khả năng chống nhiễu tốt hơn. Nhưng lại có
khuyết điểm là tốc độ truyền chậm hơn.
Luận văn này dùng truyền thông nối tiếp để giao tiếp giữa máy PC với bộ
phát hồng ngoại, và dùng để giao tiếp giữa AT89C2051 và AT90S2313 để điều
khiển động cơ. Chương này sẽ trình bày về cách thiết lập và phương pháp điều
khiển cổng nối tiếp.
9.2 GIAO TIẾP VỚI MÁY VI TÍNH
Máy tính được giao tiếp với vi xử lý AT89C2051 bằng chuẩn RS-232.

GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 68


9.2.1 Chuẩn giao tiếp RS-232
9.2.1.1 Các yêu kỹ thuật của chuẩn RS-232


Các yêu cầu về điện được qui đònh trong RS- 232C như sau:
+ Mức logic 1: nằm trong khoảng -3V÷ -12V.
+ Mức logic 0: nằm trong khoảng +3V ÷ +12V.
+ Trở kháng tải về phía bộ nhận của mạch phải lớn hơn 3000(Ω) và phải
nhỏ hơn 7000(Ω).
+ Tốc độ truyền / nhận dữ liệu cực đại là 100 Kbit/giây.
+ Các lối vào của bộ nhận phải có điện dung nhỏ hơn 2,500 pF.
+ Độ dài của cáp nối giữa máy tính và thiết bò ghép nối qua cổng nối tiếp
không được vượt quá 15m nếu không sử dụng modem.
+ Các giá trò tốc độ truyền dữ liệu chuẩn là : 50, 75, 110, 150, 300, 600,
1200, 2400, 4800, 9600, 19200, 28800,…,56600, 115200 BAUD.
9.2.1.2 Sơ đồ chân ra trên PC

Hầu hết các máy tính cá nhân được chế tạo gần đây đều có hai cổng nối
tiếp RS-232, đôi khi có 3-4 cổng. Cổng đầu tiên có tên là COM1 tiếp theo là
COM2, COM3, COM4.
Có hai kiểu đầu nối được sử dụng cho cổng nối tiếp RS-232 là loại 25 chân
và 9 chân.

P2
13
25
12
24
11
23
10
22
9
21

8
20
7
19
6
18
5
17
4
16
3
15
2
14
1
P1
5
9
4
8
3
7
2
6
1

RI
GND
GND
TXD

CTS
DTR
DCD
RI
RTS
DTR
RTS
RXD
RXD
DCD
DSR
DSR
CTS
TXD
Hình 9.1 Sơ đồ chân của DB9 và DB25 của RS-232
Đối với đầu nối 25 chân, trong một số trường hợp có sử dụng chân số 1 để
nối với vỏ kim loại của cáp truyền để hạn chế nhiễu, thông thường thì cáp
truyền chỉ bọc nhựa. Khi đó chân 1 sẽ được nối với đất mass của thiết bò, chân
này khác với chân số 7 là chân mass của tín hiệu.
Tiêu chuẩn RS- 232C qui đònh rõ việc sử dụng đầu nối thống nhất để tất cả
các sản phẩm đều tương thích với nhau. Cho nên thứ tự và chức năng của các
chân đã được qui đònh rất cụ thể và phải tuân thủ một cách nghiêm ngặt.
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 69


Bảng dưới đây chỉ ra tất cả các đường dẫn được nối với các chân trên DB9
và DB25.
Bảng 9.1 Các chân và chức năng

DB2
5
DB9 Tên gọi Vào/ra Chức năng
1 -
FG
Frame ground
(đất vỏ máy)
-

Chân này thường được nối với vỏ
bọc kim của dây cáp, với vỏ máy,
với đai bao ngoài hoặc đất thật sự
2 3
TxD
Transmit data

Truyền dữ liệu
3 2
RxD
Receive Data

Nhận dữ liệu
4 7
RTS
Request to send

Yêu cầu gửi; bộ truyền đặt đường
này lên mức hoạt động khi sẵn
sàng truyền dữ liệu.
5 8

CTS
Clear to send

Xóa để gửi; bộ nhận đặt đường
này lên mức hoạt động để thông
báo cho bộ truyền là nó sẵn sàng
nhận dữ liệu.
6 6
DSR
Data set ready

Dữ liệu sẵn sàng; tính hoạt động
giống như CTS, nhưng được kích
hoạt bởi bộ truyền khi nó sẵn
sàng nhận dữ liệu.
7 5
SG
Signal ground
-
Mass của tín hiệu
8 1
DCD
Data carrier detect

Phát hiện tín hiệu mang dữ liệu
20 4
DTR
Data terminal
ready


Đầu cuối dữ liệu sẵn sàng; tính
hoạt động giống với RTS nhưng
được kích hoạt bởi bộ nhận khi
muốn truyền dữ liệu.
22 9
RI
Ring Indicate

Báo chuông, cho biết là bộ nhận
đang nhận tín hiệu rung chuông
+ Ghi chú: ⇒ lối vào; ⇐ lối ra.

GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 70


9.2.2 Các thanh ghi và đòa chỉ
Chúng ta cần phải thiết lập các thông số cho cổng nối tiếp trước khi muốn
sử dụng nó. Những thiết lập này được thực hiện trong vùng BIOS của máy tính
và tùy vào cổng nối tiếp sử dụng mà ta dùng các đòa chỉ cơ sở tương ứng. Các đòa
chỉ cơ sở này được cho trong bảng dưới.
Bảng 9.2 Đòa chỉ các cổng COM

COM 1 COM 2 COM 3 COM 4
HEX 3F8 2F8 3E8 2E8
DEC 1016 760 1000 744

UART có tổng cộng là 12 thanh ghi, qua đó tất cả các chức năng nhập vào
và xuất ra nối tiếp có thể được điều khiển. Các thanh ghi được trao đổi qua 7 đòa

chỉ, trong đó có những đòa chỉ được sắp xếp 2 lần. Bảng sau đây giới thiệu tất cả
các thanh ghi. Nhưng trong luận văn này chúng ta chỉ sử dụng một số thanh ghi
trong số này.
Bảng 9.3 Đòa chỉ offset các thanh ghi
Offset DLAB Đọc/Ghi Ký hiệu Tên
=0 Ghi - Thanh ghi đệm truyền
=0 Đọc - Thanh ghi đệm nhận
+0
=1 Đọc/Ghi - Thanh ghi tốc độ BAUD (byte thấp)
=0 Đọc/Ghi IER Thanh ghi cho phép ngắt
+1
=1 Đọc/Ghi - Thanh ghi tốc độ BAUD (byte cao)
+2 - Đọc IIR Thanh ghi nhận dạng ngắt
- Ghi FCR Thanh ghi điều khiển FIFO
+3 - Đọc/Ghi LCR Thanh ghi điều khiển đường dẫn
+4 - Đọc/Ghi MCR Thanh ghi điều khiển MODEM
+5 - Đọc LSR Thanh ghi trạng thái đường dẫn
+6 - Đọc MSR Thanh ghi trạng thái MODEM
+7 - Đọc/Ghi - Thanh ghi Scratch

Việc truy nhập trực tiếp lên thanh ghi diễn ra qua đòa chỉ thanh ghi, được
tính bằng cách lấy tổng của đòa chỉ cơ sở của giao diện và độ lệch Offset của
thanh ghi trong UART, cụ thể là:
Đòa chỉ cơ sở + Offset = Đòa chỉ thanh ghi
Như đã nói ở trên, chúng ta chỉ sử dụng một số thanh ghi và sẽ được trình
bày sau đây.
9.2.2.1 Thanh ghi cho phép ngắt (IER)


GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng


Thiết kế, chế tạo và điều khiển tay máy Trang 71


Bảng 9.4 Chức năng từng bit của thanh ghi IER
Bit Chức năng
7 -
6 -
5 Cho phép chế độ nguồn giảm
4 Cho phép chế độ nghỉ
3 Cho phép ngắt modem
2 Cho phép ngắt nhận
1 Cho phép ngắt truyền
0 Cho phép nhận dữ liệu khi có ngắt

Vì ta không dùng ngắt nối tiếp nên chúng ta ghi giá trò 0 vào thanh ghi này.
9.2.2.2 Thanh ghi điều khiển đường dẫn (LCR)

Thanh ghi này được dùng hai lần để thiết lập thông số truyền của cổng.
Việc này được kiểm soát bằng bit DLAB. Thanh ghi này được mô tả như sau.
Bảng 9.5 Chức năng từng bit của thanh ghi LCR
Bit 7 1 DLAB
0 Truy xuất đến các bộ đệm và các thanh ghi cho
phép ngắt
Bit 6 Cho phép Break
Bit 3,4 và 5 Bit 5 Bit 4 Bit 3 Chọn Parity
X X 0 No Parity
0 0 1 Parity lẻ
0 1 1 Parity chẳn
1 0 1 Parity cao

1 1 1 Parity thấp
Bit 2 Độ dài của stop-bit
0 1 stop-bit

1
2 stop bit đối với khung truyền 6,7,8 bit hay1,5
stop bit với khung truyền 5 bit
Bit 1 Bit 0 Khung dừ liệu
0 0 5 bit
0 1 6 bit
1 0 7 bit
Bit 0 và bit 1
1 1 8 bit

GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 72


Sau khi có các hiểu biết về chuẩn RS-232 và cổng nối tiếp của máy PC,
phần tiếp theo sẽ trình bày phương thức thiết lập giao tiếp giữa máy PC và chip
AT89C2051.

9.2.3 Giao tiếp giữa PC với AT89C2051
9.2.3.1 Khung truyền dữ liệu
Bảng dưới chỉ ra khung truyền một byte dữ liệu mà chúng ta dùng để giao
tiếp giữa máy tính và chip AT89C2051.
Bảng 9.6 Khung truyền dữ liệu
Khung truyền dữ liệu
19200 BAUD 1 stop bit No parity 8 bytes


9.2.3.2 Sơ đồ MẠCH nối AT89C2051 với RS232

Chúng ta sử dụng một IC MAX 232 để ghép mức điện áp. Chương trình
điều khiển đơn giản có thể được viết một cách dễ dàng khi nắm vững hoạt động
của bộ vi xử lý AT89C2051.

1uF
1uF
10k
1uF
A
T89C2051
1
5
4
12

13

14

15
16
17
18
19

2
3

6
7
8
9
11
RST/VPP
XTAL1

XTAL2
P1.0/AIN0
P1.1/AIN1
P1.2

P1.3

P1.4

P1.5
P1.6
P1.7
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.7
33p
33p
0

11.059M
1uF
COM PC
0
VCC
10uF
MAX232/SO
1
3

4
5

2
6
9
10
8
7
C1+

C1-
C2+
C2-
V+
V-
R2OUT
T2IN
R2IN


T2OUT
0
1

2
3
0

Hình 9.2 Ghép nối tiếp AT89C2051 với PC qua MAX2

Dữ liệu được máy tính truyền qua cổng COM lần lượt theo đònh dạng sau:
o Byte thứ nhất + số 13 - quy đònh số thứ tự động cơ.
o Byte thứ hai + số 13 – quy đònh vò trí của động cơ đó.
o 255 - byte đồng bộ hóa.
Chẳng hạn ví dụ nếu chúng ta muốn điều khiển động cơ thứ 3 đến vò trí
góc 500 (mỗi động cơ có 560 vò trí góc) thì ta phải truyền đi là: số 3 + 13 + 500 +
13 + 255 + 13.
Do mỗi lần giao tiếp nối tiếp ta chỉ có thể gửi được một byte. Trong khi dữ
liệu truyền cần để xác đònh vò trí của động cơ phải là word (2 byte). Do vậy việc
gửi đi ký tự có mã ASCII 13 có ý nghóa như là một “stop byte”.
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 73


Byte “255”: được gửi nhằm đồng bộ hóa các dữ liệu đã gửi đi. Khi nhận
được byte này thì chip AT90S2313 mới gửi các vò trí mới tới các động cơ, còn
không thì các vò trí mới này vẫn được lưu trong bộ nhớ của chip AT90S2313.
9.3 GIAO TIẾP NỐI TIẾP GIỮA AT89C2051 VÀ AT90S2313
AT89C2051 và AT90S2313 ghép nối tiếp với nhau bằng 2 chân RxD và

TxD được nối chéo với nhau. Mức điện áp trên đường truyền là mức TTL. Trước
khi giao tiếp nối tiếp giữa hai chip, chúng ta cần phải thiết lập tốc độ BAUD
giống nhau ở hai chip.
Trong luận văn này, chúng ta dùng tốc độ BAUD là 9600 cho việc truyền
dữ liệu giữa hai chip. Do chip AT90S2313 vừa thực hiện việc điều khiển động cơ
vừa nhận dữ liệu nối tiếp, nên để bảo đảm dữ liệu không bò mất, chúng ta sử
dụng thêm một chân làm cờ bắt tay trong việc truyền nhận giữa hai chip.
Dữ liệu được truyền một chiều từ AT89C2051 đến AT90S2313.
9.3.1 Thiết lập tốc độ BAUD 4800
9.3.1.1 Thiết lập tốc độ BAUD cho AT89C2051
MOV SCON,#52H ; Port nối tiếp chế độ 1.
MOV TCON,#20H ; Bộ đònh thời 1, chế độ 2.
MOV TH1,#-6 ; Giá trò nạp để có tốc độ BAUD là 4800.
SETB TR1 ; Bộ đònh thời 1 hoạt động.
9.3.1.2 Thiết lập tốc độ BAUD cho AT90S2313

EQU BAUDR=143
EQU MYVAL =129
LDI UCR,MYVAL ;Nạp giá trò vào thanh ghi cho phép sử dụng
RxD, TxD.
LDI UBBR,BAUDR ;Nạp giá trò để đònh tốc độ BAUD là 4800.

9.3.2 Chương trình truyền (AT89C2051) và nhận (AT90S2313) dữ liệu
9.3.2.1 Chương trình con truyền dữ liệu viết cho AT89C2051
Transmit:
JNB TI,$
CLR TI
JB BUSY,$ ; Busy là chân bắt tay phần cứng.
MOV SBUF,{byte cao của data}


JNB TI,$
CLR TI
JB BUSY,$
GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

Thiết kế, chế tạo và điều khiển tay máy Trang 74


MOV SBUF,{byte thấp của data}

JNB TI,$
CLR TI
JB BUSY,$
MOV SBUF,#13
RET
Cờ Busy sẽ được set lên 1 trong AT90S2313 mỗi khi chip này vào chương
trình phục vụ ngắt để điều khiển động cơ.

9.3.2.2 Chương trình con nhận dữ liệu viết cho AT90S2313

Receive:
L2:
Charin = 0
Again:
Portb = &B11000000
SBIS USR,7 ; Chờ cho RXEN được set
RJMP Again
Portb = &B11110000
IN R17,UDR ; Ghi buffer vào thanh ghi R17
CPI R17,13 : So sánh với số 13

BREQ Thoat
STS {temp},R17 ; Chuyển nội dung R17 vào biến temp.
Shift Charin , Left , 8
Charin = Charin + Temp
RJMP Again
Thoat:
Ret
9.4 KẾT LUẬN
Chương này chúng ta đã tìm hiểu khá rõ về việc sử dụng cổng nối tiếp để
giao tiếp và điều khiển; và với các tập lệnh của các họ vi xử lý đã biết chúng ta
có thể dễ dàng viết một chương trình con xử lý dữ liệu theo khung truyền mong
muốn. Chương tiếp chúng ta sẽ nghiên cứu một cách truyền dữ liệu khác cũng
khá phổ biến hiện nay, đó là việc truyền nhận dữ liệu không dây bằng sóng
hồng ngoại.


GVHD: TS. NGUYỄN VĂN GIÁP SVTH: Nguyễn Nhật Tân-Nguyễn Lê Tùng

×