1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Tài liệu Lập trình giao tiếp mối tiếp pdf

28 561 4
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập trình giao tiếp mối tiếp
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Lập trình
Thể loại Bài luận
Thành phố Hà Nội
Định dạng
Số trang 28
Dung lượng 553,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

DCE là các thiết bị trung gian như MODEM còn DTE là các thiết bị tiếp nhận hay truyền dữ liệu như máy tính, PLC, vi điều khiển, … Việc trao đổi tín hiệu thông thường qua 2 chân RxD nhận

Trang 1

Lập trình giao tiếp mối tiếp

I Cấu trúc cổng nối tiếp

Cổng nối tiếp được sử dụng để truyền dữ liệu hai chiều giữa máy tính và ngoại vi, cócác ưu điểm sau:

- Khoảng cách truyền xa hơn truyền song song

- Số dây kết nối ít

- Có thể truyền không dây dùng hồng ngoại

- Có thể ghép nối với vi điều khiển hay PLC (Programmable Logic Device)

- Cho phép nối mạng

- Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc

- Có thể cung cấp nguồn cho các mạch điện đơn giản

Các thiết bị ghép nối chia thành 2 loại: DTE (Data Terminal Equipment) và DCE

(Data Communication Equipment) DCE là các thiết bị trung gian như MODEM còn DTE là các thiết bị tiếp nhận hay truyền dữ liệu như máy tính, PLC, vi điều khiển, … Việc trao đổi tín hiệu thông thường qua 2 chân RxD (nhận) và TxD (truyền) Các tín hiệucòn lại có chức năng hỗ trợ để thiết lập và điều khiển quá trình truyền, được gọi là các tínhiệu bắt tay (handshake) Ưu điểm của quá trình truyền dùng tín hiệu bắt tay là có thể kiểm soát đường truyền

1 Chuẩn RS-232.

Tại sao phải quy định chuẩn?Để các thiêt bị máy in,máy tính vi điều khiển,rôbôt goi chung là các thiết bị thu phát có thể làm việc hiệu quả và không gặp rắc rối khi làm việc phối hợp từ lâu ngươì ta đặt ra các tiêu chuẩn (VD như tiêu chuẩn tốc độ truyền,cách kiểm soát lỗi trong quá trình truyền,mức điện áp khi truyền )cho các cổng vào ra tín hiệu của các thiết bị.RS-232 là một trong những chuẩn đó.Chuẩn này ra đời 1962(bởi EIA) Tín hiệu truyền theo chuẩn RS-232 của EIA (Electronics Industry Associations).Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -3V đến -25V (mark), mức logic

0 ứng với điện áp từ 3V đến 25V (space) và có khả năng cung cấp dòng từ 10 mA đến 20 mA

Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập mạch

Chuẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếu cáp

• Tín hiệu có áp lớn +3V được coi có logic 0 hoặc có giá trị cao (H)

• Tín hiệu có áp nhỏ hơn –3V được coi có logic 1 hoặc giá trị thấp (L)

• Điện áp từ -3V tới +3V không có ý nghĩa

Chính vì từ – 3V tới 3V là phạm vi không được định nghĩa, trong trường hợp thay đổi giá trị logic từ thấp lên cao hoặc từ cao xuống thấp, một tín hiệu phải vượt qua quãng quá

độ trong một thơì gian ngắn hợp lý Điều này dẫn đến việc phải hạn chế về điện dung củacác thiết bị tham gia và của cả đường truyền Tốc độ truyền dẫn tối đa phụ thuộc vào chiều dài của dây dẫn Đa số các hệ thống hiện nay chỉ hỗ trợ với tốc độ 19,2 kBd (chiều dài cho phép 30 – 50 m)

Trang 2

a.Các đặc tính kỹ thuật của chuẩn RS-232 như sau:

Chiều dài cable cực đại 15m

an toàn truyền dẫn thuộc về trách nhiệm phần mềm.RS-232 có một ưu điểm cụ thể sử dụng công suất phát ra tương đối thấp,nhờ trở kháng đầu vào hạn chế trong phạm vi từ 3-7Kom.Trong các rơle số thường dùng loai giắc cắm 9 chân và 25 chân.Chuẩn RS-232 quy định mức áp,tốc độ truyền và chức năng các chân của giắc

c Các đường dữ liệu của chuẩn RS-232

- TxD: Dữ liệu được truyền đi từ Modem trên mạng điện thoại

- RxD: Dữ liệu được thu bởi Modem trên mạng điện thoại

1.5 Các đường báo thiết bị sẵn sàng:

- DSR : Để báo rằng Modem đã sẵn sàng

- DTR : Để báo rằng thiết bị đầu cuối đã sẵn sàng

- Các đường bắt tay bán song công

- RTS : Để báo rằng thiết bị đầu cuối yêu cầu phát dữ liệu

- CTS : Modem đáp ứng nhu cầu cần gửi dữ liệu của thiết bị đầu cuối cho thiết bị đầu cuối có thể sử dụng kênh truyền dữ liệu Các đường trạng thái sóng mang và tín hiệu điệnthoại:

- CD : Modem báo cho thiết bị đầu cuối biết rằng đã nhận được một sóng mang hợp lệ

từ mạng điện thoại

- RI : Các Modem tự động trả lời báo rằng đã phát hiện chuông từ mạng điện thoại địa chỉ đầu tiên có thể tới được của cổng nối tiếp được gọi là địa chỉ cơ bản (Basic Address) Các địa chỉ ghi tiếp theo được đặt tới bằng việc cộng thêm số thanh ghi đã gặp của bộ UART vào địa chỉ cơ bản

- Mức tín hiệu trên chân ra RxD tùy thuộc vào đường dẫn TxD và thông thường nằm trong khoảng –12 đến +12 Các bit dữ liệu được gửi đảo ngược lại Mức điện áp đối với mức High nằm giữa –3V và –12V và mức Low nằm giữa +3V và +12V Trên hình 2-4

mô tả một dòng dữ liệu điển hình của một byte dữ liệu trên cổng nối tiếp RS-232C

- Ở trạng thái tĩnh trên đường dẫn có điện áp –12V Một bit khởi động (Starbit) sẽ mở đầu việc truyền dữ liệu Tiếp đó là các bit dữ liệu riêng lẻ sẽ đến, trong đó các bit giá trị thấp sẽ được gửi trước tiên Còn số của các bit thay đổi giữa 5 và 8 Ở cuối của dòng dữ liệu còn có một bit dừng (Stopbit) để đặt trở lại trạng thái ngõ ra (-12V)

Cổng nối tiếp RS232 là một giao diện phổ biến rộng rãi nhất Người ta còn gọi cổng này là cổng COM1, còn cổng COM2 để tự do cho các ứng dụng khác Giống như

Trang 3

cổng máy in cổng COM cũng được sử dụng một cách thuận tiện cho việc giao tiếp với thiết bị ngoại vi

Việc truyền dữ liệu qua cổng COM được tiến hành theo cách nối tiếp Nghĩa là các bit dữ liệu được truyền đi nối tiếp nhau trên một đường dẫn Loại truyền này có khả năng dùng cho những ứng dụng có yêu cầu truyền khoảng cách lớn hơn, bởi vì các khả năng gây nhiễu là nhỏ đáng kể hơn khi dùng một cổng song song (cổng máy in)

Cổng COM không phải là một hệ thống bus nó cho phép dễ dàng tạo ra liên kết dưới hình thức điểm với điểm giữa hai máy cần trao đổi thông tin với nhau, một thành viên thứ ba không thể tham gia vào cuộc trao đổi thông tin này

• Các chân và đường dẫn được mô tả như sau:

Phích cắm COM có tổng cộng 8 đường dẫn, chưa kể đến đường nối đất Trên thực

tế có hai loại phích cắm, một loại 9 chân và một loại 25 chân Cả hai loại này đều có chung một đặc điểm

Việc truyền dữ liệu xảy ra ở trên hai đường dẫn Qua chân cắm ra TXD máy tính gởi dữ liệu của nó đến KIT Vi điều khiển Trong khi đó các dữ liệu mà máy tính nhận được, lại được dẫn đến chân RXD các tín hiệu khác đóng vai trò như là tín hiệu hổ trợ khitrao đổi thông tin, và vì thế không phải trong mọi trường hợp ứng dụng đều dùng hết Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1200 bps, 4800 bps,

9600 bps và 19200 bps

Trang 4

Sơ đồ chân cổng nối tiếp

2.Truyền thông 2 nút.

Các sơ đồ khi kết nối dùng cổng nối tiếp:

Sơ đồ kết nối đơn giản trong truyền thông nối tiếp

Khi thực hiện kết nối như trên, quá trình truyền phải bảo đảm tốc độ ở đầu phát vàthu giống nhau Khi có dữ liệu đến DTE, dữ liệu này sẽ được đưa vào bộ đệm và tạo ngắt.Ngoài ra, khi thực hiện kết nối giữa hai DTE, ta còn dùng sơ đồ sau:

Trang 5

DTE1 DTE2

Sơ đồ kết nối trong truyền thông nối tiếp dùng tín hiệu bắt tay

Khi DTE1 cần truyền dữ liệu thì cho DTR tích cực tác động lên DSR của DTE2cho biết sẵn sàng nhận dữ liệu và cho biết đã nhận được sóng mang của MODEM (ảo) Sau đó, DTE1 tích cực chân RTS để tác động đến chân CTS của DTE2 cho biết DTE1 cóthể nhận dữ liệu Khi thực hiện kết nối giữa DTE và DCE, do tốc độ truyền khác nhau nên phải thực hiện điều khiển lưu lượng Quá trinh điều khiển này có thể thực hiện bằng phần mềm hay phần cứng Quá trình điều khiển bằng phần mềm thực hiện bằng hai ký tự Xon và Xoff

Ký tự Xon được DCE gởi đi khi rảnh (có thể nhận dữ liệu) Nếu DCE bận thì sẽ gởi ký tự Xoff Quá trình điều khiển bằng phần cứng dùng hai chân RTS và CTS Nếu DTE muốn truyền dữ liệu thì sẽ gởi RTS để yêu cầu truyền, DCE nếu có khả năng nhận

dữ liệu (đang rảnh) thì gởi lại CTS

3:GIỚI THIỆU VI MẠCH GIAO TIẾP MAX 232.

Vì tín hiệu cổng COM thường ở mức +12V, -12V nên không tương thích với điện áp TTL nên để giao tiếp KIT Vi điều khiển 8051 với máy tính qua cổng COM ta phải qua một vi mạch biến đổi điện áp cho phù hợp với mức TTL, ta chọn vi mạch MAX232 để thực hiện việc tương thích điện áp

Vi mạch MAX 232 của hãng MAXIM là một vi mạch chuyên dùng trong giao diện nối tiếp với máy tính Chúng có nhiệm vụ chuyển đổi mức TTL ở lối vào thành mức +10V hoặc –10V ở phía truyền và các mức +3…+15V hoặc -3…-15V thành mức TTL ở phía nhận

Trang 6

Vi mạch MAX 232 có hai bộ đệm và hai bộ nhận Đường dẫn điều khiển lối vào CTS, điều khiển việc xuất ra dữ liệu ở cổng nối tiếp khi cần thiết, được nối với chân 9 của vi mạch MAX 232 Còn chân RST (chân 10 của vi mạch MAX ) nối với đường dẫn bắt tay

để điều khiển quá trình nhận Thường thì các đường dẫn bắt tay được nối với cổng nối tiếp qua các cầu nối, để khi không dùng đến nữa có thể hở mạch các cầu này Cách truyền

dữ liệu đơn giản nhất là chỉ dùng ba đường dẫn TxD, RxD và GND

II.Một số ngôn ngữ trong lập trình giao tiếp nối tiếp:

Trang 7

Trong MS DOS ở dòng lệnh đánh

MODE COM n : 96, E, 7, 1 sẽ mở COM n

2.LẬP TRÌNH NGÔN NGỮ VISUAL BASIC 6.0

Ngôn ngữ Visual Basic có module phần mềm MSCOMM.OCX phục vụ cho truyền thông, với Visual Basic 4.0 là MSCOMM16.OCX còn với Visual Basic 6.0 là MSCOMM32.OCX

Muốn cài trình đơn truyền thông vào thanh công cụ ta vào Project- Components – Controls chọn Microsoft Comm Control 6.0/ OK (Hình 8.1), biểu tượng hình điện thoại

sẽ hiện trên thanhcông cụ Có thể nhắp chuột kép để đưa vào form của chương trình Các bước trên có thể làm tắt bằng phím Ctrl T Thành phần Comm khi mới đưa vào form thường được gán tên MSComm1 cho cổng Com1 và ta có thể sửa tên hay thay đổi cổng com tùy ý

Các tính chất chính của trình đơn là Commport, DTREnable, EOFEnable, Handshaking, InBuffersize, InputLen, InputMode,NullDiscard, OutBuffersize, ParityReplace, Rthreshold, RTSEnable, Settmgs, Sthreshold… được đặt khi viết chương trình, có thể thay đổi khi chạy chương trình bằng các lệnh điều khiển.

Tính chất CommPort

Đặt cổng com được sử dụng

Object.CommPort [= Value]

Value = 1 đến 16, mặc định là 1 khi khởi động Visual Basic.

Tính chất này phải đặt trước khi mở cổng, nếu biểu thức

trong ngoặc không có thì trả về số cổng com đang hoạt động.

Trang 8

Sau đây là các giá trị cho phép:

• Baud rate: 110, 300, 600, 1200, 2400, 9600 (Default), 14400,

Trang 9

Dim Buffer as Variant

Dim Arr() as Byte

Xuất chuỗi ký tự hay chuỗi nhị phân ra cổng COM.

Giống như nhập dữ liệu ta có các lệnh hỗ trợ.

OutBufferSize: đặt và trả lại kích thước bộ đệm truyền OutBufferCount: trả lại số ký tự trong bộ đệm truyền.

Ví dụ: gởi ký tự nhấn phím

Private Sub Form_KeyPress (KeyAscii As Integer)

Dim Buffer as Variant

MSComm1.CommPort = 1

MSComm1.PortOpen = True

Trang 10

inCD= object CDHolding

nếu inCD True thì DCD ở mức cao, nếu False DCD ở mức thấp

Đặt thời gian chờ sóng mang

object CDTimeout [= milliseconds]

Chờ khoảng thời gian cho DCD ở mức cao, nếu hết thời gian mà CDHolding = false thì tạo sự kiện onComm CDTO (carrier detect Timeout Error)

object RTSEnable [ =True/False]

Khi True RTS sẽ ở mức 1 khi mở cổng và mức 0 khi đóng

cổng

Sthreshold: đặt số byte có trong bộ đệm truyền để báo sự kiện

Nếu Sthreshold = 1 thì sẽ gọi onComm khi bộ đệm truyền rỗng

Nếu Sthreshold = 0 thì không gọi

Đặt số byte của bộ đệm thu tối thiểu để báo sự kiện

Trang 11

object Rthreshold [= value]

Nếu đặt bằng 1 thì sẽ gọi onComm khi nhận được 1 ký tự

Nếu đặt bằng 0 thì không gọi

Giao thức bắt tay

object.Handshaking [= value]

Value = 0 không bắt tay

Value = 1 bắt tay theo RTS/CTS

= 2 XON/XOFF

= 3 RTS/XON/XOFF

Ví dụ:

Private Sub Form_Load ( )

Dim Buffer$ as string

‘ Dùng COM 1, 9600 baud, không parity, 8 bit data, 1 bit stop

MSComm1 Comport = 1

MSComm1 Settings = “9600, N, 8, 1”

‘ Đọc toàn bộ bộ đệm

MSComm1 Inputlen = 0

‘ Mở cổng và gởi lệnh đến modem chế độ trả lời bằng chữ

MSComm1 PortOpen = True

MSComm1 Output = “ATV1Q0” & Chr$(13)

‘ Chờ trả lời “OK”, nếu có OK thì đóng cổng

Do

DoEvents

Buffer$ = Buffer$ & MSComm1 Input

Loop Until InStr (Buffer$, “OK” & vbCrLf)

MSComm1 PortOpen = False

Private Sub MSComm1_OnComm ( )

Select Case MSComm1 CommEvent

‘ Xử lý sự kiện hay lỗi bằng cách đặt lệnh dưới mỗi phát biểu Case

‘ Lỗi

Case ComEventBreak ‘Nhận Break

Case ComEventFrame ‘Sai frame

Case ComEventOverrun ‘Mất dữ liệu

Case ComEventRXOver ‘Đệm thu tràn

Case ComEventRXParity ‘Sai Parity

Case ComEventTXFull ‘Đệm phát đầy

Case ComEventDCB ‘Sai khi đọc DCB

‘ Sự kiện

Case ComEvCD ‘Đường CD thay đổi

Trang 12

Case ComEvCTS ‘CTS thay đổi

Case ComEvDSR ‘DSR thay đổi từ 1 xuống 0

Case ComEvRing ‘RI thay đổi

Case ComEvReceive ‘Số byte đệm thu đạt mức Rthreshold

Case ComEvSend ‘Số byte đệm phát ít hơn Sthreshold

Case ComEvEOF ‘Nhận ký tự EOF kết thúc file (mã ASCII 26) trong chuỗi nhập End Select

Dim CancelFlag, Default$

Private Sub CancelButton_Click()

' CancelFlag tells the Dial procedure to exit.

CancelFlag = True

CancelButton.Enabled = False

End Sub

Private Sub Dial(Number$)

Dim DialString$, FromModem$, dummy, i As Double

i = 0

DialString$ = "ATDT" + Number$ + vbCr

' Dial the number.

FromModem$ = FromModem$ + MSComm1.Input

' Check for "OK".

If InStr(FromModem$, "OK") Then

' Notify the user to pick up the phone.

Beep

MsgBox "Please pick up the phone and either press Enter or click OK" Exit Do

Trang 13

Private Sub DialButton_Click()

Dim Number$, Temp$

DialButton.Enabled = False

QuitButton.Enabled = False

CancelButton.Enabled = True

' Get the number to dial.

Number$ = InputBox$("Enter phone number:", , Default$)

Status = "Dialing - " + Number$

' Dial the selected phone number.

Trang 14

MsgBox "COM1: not available Change the CommPort property to another port."

Private Sub QuitButton_Click()

' Close the port.

Trang 15

Các lệnh MSComm trong Delphi tương tự trong Visual Basic Đối với Visual C thì lập trình MSComm phức tạp hơn, sau đây là ví dụ cài đặt MSComm trong Visual C Lập trình MSCOMM trong Visual C++ phức tạp hơn lập trìnhtrong Visual Basic và Delphi, các hàm của lớp CMScomm đượcđịnh nghĩa trong mscomm.h, sau đây là một đoạn trong filenàycần tham khảo để gọi hàm cho đúng:

void SetCDHolding(BOOL bNewValue);

Trang 16

Ví dụ muốn truyền chuỗi what ta dùng đoạn lệnh sau

CString strOutput = "What";

1 Ưng dụng giao tiêp giữa máy tinh và vi điều khiển 8051

a) Sơ đồ kết nối giữa 8051 và máy tính

Khi thực hiện giao tiếp với vi điều khiển ,ta phải dùng thêm mạch chuyển mức logic

từ TTL đến 232 và ngược lại Các vi mạch thường sử dụng là MAX232 của maxim hay DS275 của Dallas.Mạch chuyển mức logic mô tả như sau:

Mạch chuyển mức logic TTL và RS232

Tuy nhiên,khi sử dụng mach chuyển mức logic dùng các vi mạch thì đòi hỏi phải dùng

Trang 17

chung GND giữa máy tính và vi mạch có khả năng làm hỏng cổng nối tiếp khi xảy ra hiện tượng chập mạch ở ngoài Do đó ta có thể dùng thêm opto 4N35 để cách ly về điệnvề

Sơ đồ kết nối giữa cổng COM với KIT Vi điều khiển 8051 :

Sơ đồ thực thực tế

Trang 18

Vi mạch này nhận mức RS232 đã được gởi tới từ máy tính và biến đổi tín hiệu náy thành tín hiệu TTL để cho tương thích với IC 8051 và nó cũng thực hiện ngược lại là biếnđổi tín hiệu TTL từ Vi điều khiển thành mức +12V, -12V để cho phù hợp hoạt động của máy tính Giao tiếp theo cách này, khoảng cách từ máy tính đến thiết bị ngoại vi có thể đạt tới trên 20 mét.

Ưu điểm của giao diện này là có khả năng thiết lập tốc độ Baud

Khi dữ liệu từ máy tính được gởi đến KIT Vi điều khiển 8051 qua cổng COM thì dữ liệu này sẽ được đưa vào từng bit (nối tiếp) vào thanh ghi SBUF (thanh ghi đệm), đến khi thanh ghi đệm đầy thì cờ RI trong thanh ghi điều khiển sẽ tự động Set lên 1 và lúc này CPU sẽ gọi chương trình con phục vụ ngắt và dữ liệu sẽ được đưa vào để xử lý

b) Lập trình 8051 để truyền dữ liệu nối tiếp

Khi lập trình 8051 để truyền các byte ký tự nối tiếp thì cần phải thực hiện các bước sau đây:

1 Nạp thanh ghi TMOD giá trị 204 báo rằng sử dụng Timer1 ở chế độ 2 để thiết lập chế

6 Byte ký tự cần phải truyền được ghi vào SBUF

7 Bít cờ TI được hiển thị bằng lệnh “ JNB TI, xx” để báo ký tự đã được truyền hoàn tất chưa

8 Để truyền ký tự tiếp theo quay trở về bước 5

Ngày đăng: 27/01/2014, 02:20

HÌNH ẢNH LIÊN QUAN

Sơ đồ chân cổng nối tiếp - Tài liệu Lập trình giao tiếp mối tiếp pdf
Sơ đồ ch ân cổng nối tiếp (Trang 4)
Sơ đồ thực thực tế - Tài liệu Lập trình giao tiếp mối tiếp pdf
Sơ đồ th ực thực tế (Trang 17)
Sơ đồ kết nối giữa cổng COM với KIT Vi điều khiển 8051 : - Tài liệu Lập trình giao tiếp mối tiếp pdf
Sơ đồ k ết nối giữa cổng COM với KIT Vi điều khiển 8051 : (Trang 17)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w