Bài giảng môn Truyền thông nối tiếp
• Cấu Trúc Cổng Com • Chuẩn RS232 • Truyền Thông Nối Tiếp Trên VB • Truyền Thông Nối Tiếp Trên Vi Điều Khiển
Bạn đang xem nội dung tài liệu Bài giảng môn Truyền thông nối tiếp, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài Giảng Truyền Thông Nối Tiếp
• Cấu Trúc Cổng Com
• Chuẩn RS232
• Truyền Thông Nối Tiếp Trên VB
• Truyền Thông Nối Tiếp Trên Vi Điều Khiển
Ks. Lê Tiến Lộc
TRƯỜNG ĐẠI HỌC LẠC HỒNG
KHOA ĐIỆN – ĐIỆN TỬ
Truyền Thông Nối Tiếp Từ PC Đến
VĐK
1. Cấu Trúc Cổng COM
2. Xác Lập Các Thông Số Cho Cổng Truyền Thông
Nối Tiếp Trên Visual Basic 6.0
3. Thiết Kế Giao Diện Và Viết Code Serial Trên
Visual Basic 6.0
4. Mạch Chuyển Mức (IC Max232)
5. Truyền Nhận Nối Tiếp Trong 8051
6. Thiết Kế Mạch VĐK 8051 Và Viết Code
Cấu Trúc Cổng COM
• Cổng nối tiếp trên máy tính thường được gọi là cổng COM có
các ưu điểm sau:
- Hiệu điện thế giữa 2 mức có thể lên đến 50V (mức 1 từ: -3V
-> -25V và mức 0 từ: +3V -> 25V) nên dây cable có thể truyền
đi xa hơn, ít bị nhiễu hơn.
- Số lượng dây cần ít hơn so với truyền song song.
- Một đường dẫn dùng để truyền (TXD) còn một đường dùng
để nhận (RXD) dữ liệu riêng biệt.
- Có thể truyền không dây. (dùng tia hồng ngoại)
- Ghép nối dễ dàng với VĐK hay PLC.
- Tín hiệu truyền nối tiếp theo dạng xung chuẩn RS232 của EIA
(Electronics Industry Associations) chỉ cho phép sử dụng đường
truyền ngắn , với tốc độ bit thấp (baudrate: 19.600 có khoảng cách
cực đại 20m)
- Các chuẩn truyền thông nối tiếp ra đời sau như RS-422, RS-449 và
RS-485 cho phép truyền trên đường cáp rất dài với tốc độ bit cao
hơn.
- Khuôn dạng tín hiệu truyền giữa 2 dây TXD và GND như sau:
-10V Mark
Mức1
mức0 D0 D1 D2 D3 D4 D5 D6 D7 P Stop
+10V Space
- Các thiết bị ghép nối nối tiếp chia làm 2 loại DTE (Data Terminal
Equipment) và DCE (Data Communication Equipment)
Sơ lược về chuẩn RS232
• Cổng Com có 2 dạng đầu nối đực D-25 và D-9.
D-25 D-9 Tên Tín hiệu Chiều Ý Nghĩa
2 3 TD, TXD, truyền dữ liệu Out Xuất dữ liệu nối tiếp
3 2 RD, RXD, nhận dữ liệu In Nhận dữ liệu nối tiếp
4 7 RTS, Request to send Out DTE sẵn sàng trao đổi dữ liệu
5 8 CTS, Clear to send In Modem sẵn sàng trao đổi dữ
liệu
6 6 DSR, Data set ready in Modem sẵn sàng kết nối
7 5 SG, Signal grourd Mass
8 1 CD, Carrier detect, phát
giác sóng mang
In Phát hiện có tín hiệu trên
đường dây
20 4 DTR, Data Teminal Ready Out DTE sẵn sàng kết nối
22 9 RI, Ring Indicator In Modem phát giác tín hiệu
chuông
• Mô hình kết nối Thiết bị thu và phát trong truyền nhận nối tiếp:
DTE: thiết bị phát hoặc nhận dữ liệu (VĐK, PLC, Computer)
DCE: thiết bị trung gian như modem kết nối, chân TXD của DCE
đóng vai trò nhận tín hiệu còn RXD phát tín hiệu
TXD
RXD
TXD TXD TXD
RXD RXD RXD
DTE1 DTE2 DTE DCE
Tên Địa chỉ gốc Ngắt Vector
Com1 3F8 4 0000:0400
Com2 2F8 3 0000:0402
Com3 3E8 2 0000:0404
Com4 2E8 1 0000:0406
Xác Lập Các Thông Số Cho Cổng Truyền
Thông Nối Tiếp Trên Visual Basic 6.0
• Visual Basic 6.0 hỗ trợ module phục vụ cho truyền thông nối tiếp là
MSCOMM32.OCX
• Để đưa công cụ truyền thông nối tiếp vào Form ta làm theo các bước sau:
Trong cửa sổ VB chọn Project – Components sau đó chọn Microsoft
comm control 6.0 -> OK. (hay dùng phím tắt Ctr+T) Sau đó nhấp chọn
biểu tượng Mscomm và đưa vào form
• Thuộc tính Commport có giá trị từ 1->16, giá trị mặc định là 1 khi khởi
động.
• Thuộc tính DTR Enabled = True (DTE sẵn sàng kết nối) ở mức 1 khi mở
cổng, còn ngược lại DTR ở mức 0.
* Thuộc tính Handshaking (giao thức bắt tay) 0: không bắt tay
1: XON/XOFF 2: bắt tay theo RTS/CTS 3: RTS/XON/XOFF`
* Thuộc tính Inbuffersize đặt và trả lại kích thước theo Byte bộ đệm thu, mặc
định là 1024
• Thuộc tính Index: Xác định phần tử thứ index của mảng (chỉ dùng
khi thiết lập các control theo kiểu mảng)
• Thuộc tính InputLen: Xác định số ký tự sẽ đọc từ bộ đệm thu, nếu =0
sẽ đọc toàn bộ bộ đệm.
• Thuộc tính InputMode: cho biết loại dữ liệu là văn bản hay nhị phân.
• Thuộc tính NullDiscard: cho phép loại bỏ ký tự rỗng.loai bo khoang
trong khi truyen
• Thuộc tính Outbuffersize đặt và trả lại kích thước theo Byte bộ đệm
truyền, mặc định là 512.
• Thuộc tính ParityReplace: thiết lập ký tự sẽ thay thế khi khi bit kiểm tra
chẳn lẻ phát hiện ra lỗi.
• Thuộc tính Rthreshold: Đặt số byte tối thiểu của bộ đệm thu để báo sự
kiện, bằng 1 sẽ gọi sự kiện oncomm khi nhận được 1 ký tự, bằng 0 sẽ
không gọi.
• Thuộc tính RTSEnabled: = True thì RTS ở mức 1 khi mở cổng, và mức
0 khi đóng cổng. Nếu False RTS ở mức 0.
• Thuộc tính Sthreshold: Đặt số byte có trong bộ đệm truyền
để báo sự kiện, bằng 1 sẽ gọi sự kiện oncomm khi bộ đệm
truyền rỗng, bằng 0 sẽ không gọi.
• Thuộc tính Settings: Thiết lập tốc độ baud, bit chẳn lẻ, số bit
truyền và bit stop.
Các giá trị cho phép:
Baud rate: 110, 300, 600, 1200, 2400, 9600, 14400,
19200,28800, 38400, 56000, 128000, 256000.
Parity bit: E(even), M(mark), N(none), O(odd)
Data bit: 4, 5, 6, 7, 8
Stop bit: 1, 1.5, 2
Giá trị mặc định khi không thiết lập là: 9600,n,8,1
Thiết Kế Giao Diện Và Viết Code Serial Trên
Visual Basic 6.0
• Thiết kế giao diện như hình sau:
Đầu tiên ta viết code cho sự kiện Form Load
Private Sub Form_Load() 'Cac khai bao khi form hien len
MSComm1.CommPort = 1 'Chon cong Com1
MSComm1.Settings = "9600,N,8,1" 'Toc do truyen 9600, no
parity, du lieu 8bit 1bit stop
MSComm1.InputLen = 0 'Khong gioi han ky tu truyen
MSComm1.RThreshold = 1 'Cho phep oncomm khi nhận
1 du lieu
MSComm1.PortOpen = True 'Lenh mo cong com
End Sub ‘ket thuc su kien
Private Sub Command1_Click() 'Nut send tren chuong trinh
MSComm1.Output = Text2.Text
End Sub
• Bây giờ ta nhấp double vào nut Stop và viết code sau:
Private Sub Command2_Click() 'Khi nut Stop duoc nhan thi
xoa tat ca cac text
Text1.Text = “” „Xóa các text box
Text2.Text = ""
End Sub
Private Sub MSComm1_OnComm() 'Co tin hieu vao cong
com
If (MSComm1.CommEvent = comEvReceive) Then
Text1.Text = Text1.Text & MSComm1.Input 'Xuat tin hieu
nhan duoc ra text1
End If
End Sub
* Phần trên là chương trình xuất nhập dữ liệu đơn giản
qua cổng Com không có bắt tay bằng phần cứng cũng
như phần mềm. Ta có thể kiểm tra chương trình bằng
cách nối 2 chân TXD và RXD ở cổng com lại rồi chạy
thử chương trình. Sau đó có thể bổ sung thêm thủ tục
bắt tay bằng phần mềm.
Mạch Chuyển Mức (IC Max232)
• Do mức điện áp khác nhau nên khi ghép cổng Com máy tính
với VĐK cần phải có mạch chuyền mức TTL -> 232 và ngược
lại. Ta thường dùng vi mạch Max232 vì chỉ cần cấp nguồn 5V,
nguồn + -10V do mạch dao động 16KHz bên trong cung cấp.
Truyền Nhận Nối Tiếp Trong 8051
Trong Vi điều khiển có chức năng ngắt truyền thông nối
tiếp để truyền và nhận dữ liệu. Chân TXD(P3.1 phát) vào
chân RXD(P3.0 thu). Thanh ghi điều khiển ngắt nối tiếp là
SCON và thanh ghi đệm dữ liệu là SBUF. Địa chỉ ngắt nối
tiếp là 023H, bit cho phép ngắt là ES bit 4 trong thanh ghi
IE.
• Thanh ghi SCON coù 8 bit:
Bit Ký hiệu Địa Chỉ Ý Nghĩa
SCON.7 SM0 9FH Quy định chế độ hoạt động
SCON.6 SM1 9EH Quy định chế độ hoạt động
SCON.5 SM2 9DH Kích hoạt giao tiếp nhiều VĐK
SCON.4 REN 9CH Cho phép nhận dữ liệu
SCON.3 TB8 9BH Bit thứ 9(bit kiểm tra) để truyền đi
SCON.2 RB8 9AH Bit thứ 9 nhận được
SCON.1 TI 99H Mức 1 khi truyền xong 1 Byte
SCON.0 RI 98H Mức 1 khi nhận xong 1 Byte
• Các Mode truyền nhận nối tiếp của 8051
Trong mode 1, baudrate được thiết lập bởi timer 1 có công thức
tính như sau:
Baudrate = (timer 1 overflow)/n với n=32 nếu
SMOD=0
Smod là bit7 trong thanh ghi PCON. với n=16 nếu
SMOD=1
SM0 SM1 MODE MÔ TẢ BAUDRATE
0 0 0 Shift Regster Tần số thạch anh/12
0 1 1 8-bit UART Quy định bởi Timer1
1 0 2 9-bit UART Tần số thạch anh/12 or 64
1 1 3 9-bit UART Quy định bởi Timer1
Nếu sử dụng thạch anh 12MHz thì sẽ tồn tại sai số (26.04 ->26),
sai số này sẽ tích lũy và gây nên những sai lệch dữ liệu. Do đó
muốn truyền nhận với độ chính xác cao hơn nên sử dụng thạch
anh 11.0592MHz
Baudrate Thạch anh
(MHz)
SMOD TH1 Baudrate thật Sai số
9600 12.000 1 -7 8923 7%
2400 12.000 0 -13 2404 0.16%
1200 12.000 0 -26 1202 0.16%
19200 11.0592 1 -3 19200 0
9600 11.0592 0 -3 9600 0
2400 11.0592 0 -12 2400 0
1200 11.0592 0 -24 1200 0
Chương trình mẫu truyền nhận nối tiếp trong 8051:
Chương trình này khi nhận được một ký tự trong ngắt nối tiếp thì trong
main sẽ phát lại ký tự “A”
#include
DATAS EQU 30H
ORG 0000H
LJMP MAIN
ORG 0023H ;VECTOR NGAT PORT NOI TIEP
LJMP NGAT_SERIAL ;NHAY DEN PHUC VU NGAT
ORG 0030H
MAIN:
MOV PCON,#00000000B ;BIT 7 SMOD = 1 TANG TOC DO
MOV SCON,#50H ;01010010B TI BIT1=1 SAN SANG PHAT
MOV TMOD,#00100000B ;timer1 cheá ñoä 8bit töï ñoäng naïp laïi
MOV TH1,#-3
MOV IE,#10010000B ;bit4(ES) =1 cho phep ngat port noi tiep
bit7=1cho phep ngat toan cuc
SETB TR1 ;bật cho timer1 run
SETB 00H ;bit nho nhận xong thi phát lại
LOOP:
JB 00H,$ ;nhảy tại chỗ chờ nhận được ký tự thì phát A lại
MOV A,#"A"
LCALL PHAT
SETB 00H
SJMP LOOP
PHAT:
MOV IE,#0
MOV SBUF,A ;dua gia tri thanh ghi A vao thanh ghi SBUF
JNB TI,$ ;co TI duoc set ngay sau khi phat xong 1 ky tu
CLR TI
MOV IE,#10010000B
RET
NGAT_SERIAL: ;Trình phuïc vuï ngaét port noái tieáp
JNB RI,TRANF ;co RI duoc set ngay sau khi nhan xong 1 ky tu
CPL P2.4
CLR 00H
MOV A,SBUF ;Ñöa döõ lieäu nhaän ñöôïc vaøo thanh ghi A
CLR RI ;xoùa côø
RETI ;keát thuùc ngaét
TRANF:
CLR TI
RETI
END