-Qua cổng nối tiếp có thể ghép nối chuột, modem ngoài, máy in, bộ biến đổi A/ D, các thiết bị đo lường, … -Các cách ghép nối này sử dụng phương pháp truyền thông tin dữ liệu theo kiểu nố
Trang 1Mục lục
Chương 1 Sơ lược về cổng nối tiếp
I Cấu trúc của cổng nối tiếp
II Lập trình vào ra với cổng nối tiếpIII Giới thiệu linh kiện trong sơ đồ
1 Sơ đồ mạch đo điện áp
2 Sơ đồ bộ DAC lập trình được
IV Viết phần mềm giao diện
Trang 2BÀI TẬP LỚNChương 1: Sơ lược về cổng nối tiếp
I Cấu trúc của cổng nối tiếp
Một trong những kỹ thuật ghép nối được sử dụng rộng rãi là kỹ thuật ghép nối TBN qua cổng nối tiếp
-Qua cổng nối tiếp có thể ghép nối chuột, modem ngoài, máy in, bộ biến đổi A/
D, các thiết bị đo lường, …
-Các cách ghép nối này sử dụng phương pháp truyền thông tin (dữ liệu) theo kiểu nối tiếp các bit dữ liệu được truyền nối tiếp nhau trên một đường dây duy nhất Tại một thời điểm chỉ có một bit dữ liệu được truyền trên đường dây.-Truyền thông nối tiếp có ưu điểm là cần ít đường dây, có thể sử dụng một đường để truyền, một đường để nhận Thông tin thu nhận là tin cậy, tuy nhiên tốc độ truyền là chậm
-Chuẩn RS232 được xây dựng thành chuẩn chính thức dành cho truyền thông nối tiếp, do hiệp hội các nhà công nghiệp điện tử EIA (Electronic Industries Association) năm 1962 Chuẩn này cho phép truyền với tốc độ cực đại 19.600 bit/s với khoảng cách nhỏ hơn 20 m
-Sau đó ra đời một số chuẩn như RS422, RS449, RS485 có tốc độ truyền và khoảng cách cho phép xa hơn Vd: RS422: Tốc độ truyền 10Mbit/s, khoảng cách >1000m
Yêu cầu và thủ tục trao đổi tin nối tiếp:
Khi khoảng cách giữa hai thiết bị trao đổi tin là rất lớn, việc sử dụng phương pháp truyền tin song song sẽ đòi hỏi chi phí tốn kém về đường dây đồng thời
Trang 3cũng khó khăn trong việc chống nhiễu trên đường truyền Do đó với việc truyềntin ở khoảng cách xa và yêu cầu về tốc độ không lớn thì phương pháp truyền tin nối tiếp được sử dụng Truyền thông nối tiếp cần thêm công đoạn gia công tín hiệu để chuyển tín hiệu song song thành tín hiệu nối tiếp để gửi đi, sau đó phải chuyển từ tín hiệu nối tiếp thành song song ở nơi nhận Việc gia công tín hiệu này cũng tốn một khoản chi phí nhưng cũng giảm hơn nhiều so với truyền thôngsong song.
Các thiết bị đầu cuối trong liên kết nối tiếp có thể là các loại thiết bị khác nhau nhưng chúng phải thống nhất với nhau về các quy tắc về giao thức cũng như định dạng dữ liệu Sự thống nhất này đảm bảo dữ liệu được gửi tới bên nhận và bên nhận có thể hiểu được dữ liệu đó Phần này sẽ trình bày về định dạng dữ liệu và giao thức truyền dữ liệu sử dụng trong truyền thông nối tiếp, và sẽ chú trọng hơn tới phương pháp truyền thông không đồng bộ do được dùng trong chuẩn RS232 của cổng nối tiếp COM
Trong truyền tin nối tiếp, tại một thời điểm chỉ có một bit dữ liệu được truyền đi
và các bit dữ liệu được truyền tuần tự nhau Một liên kết giữa hai bên có thể sử dụng hai đường dữ liệu để truyền theo hai hướng riêng biệt hoặc có thể sử dụng chung một đường dữ liệu để truyền theo cả hai hướng vào các thời điểm khác nhau Việc truyền thông sửe dụng chung một đường tín hiệu cho cả hai hướng gọi là truyền bán song công (Half-duplex) còn trường hợp sử dụng hai đường tín hiệu riêng cho hai hướng cho phép truyền đồng thời cả hai hướng thì được gọi là truyền song công đầy đủ (Full-duplex) Trong máy tính PC, liên kết nối tiếp sử dụng dạng Full-duplex
Có một tín hiệu phải có trong truyền tin nối tiếp đó là tín hiệu xung đồng hồ (clock) Tín hiệu này giúp điều khiển dòng dữ liệu Bên gửi và bên nhận sử dụng tín hiệu này để quyết định khi nào gửi và nhận mỗi bit Có hai phương pháp truyền thông nối tiếp là truyền thông đồng bộ (Synchronous) và truyền
Trang 4thông không đồng bộ (Asynchronous) Với mỗi loại thì cách sử dụng tín hiệu clock là khác nhau.
Trao đổi tin đồng bộ: Synchronous
Trong truyền thông đồng bộ, hai bên truyền thông sử dụng chung một đường tínhiệu clock Tín hiệu này được phát ra bởi một bên hoặc bởi một thiết bị phát xung đồng bộ riêng Tín hiệu đồng bộ này có thể có tần số thay đổi hoặc có một chu kỳ không xác định Nghĩa là mỗi bit truyền đi được xác định tại một thời điểm khi có sự thay đổi mức tín hiệu của tín hiệu clock Bên nhận cũng sử dụng
sự thay đổi mức đó để xác định khi nào thì đọc bit dữ liệu gửi tới Thí dụ như bên nhận sẽ chốt dữ liệu gửi tới khi xuất hiện sườn lên của xung clock hay là sự thay đổi mức tín hiệu từ thấp lên cao Truyền đồng bộ bên nhận không cần phải biết trước tốc độ trao đổi tin mà chỉ cần qua tâm tới tín hiệu đồng bộ phát trên đường dây đồng bộ
Trao đổi tin không đồng bộ - Asynchronous:
Trong truyền thông không đồng bộ, đường truyền sẽ không cần có thêm một đường tín hiệu clock bởi vì mỗi bên đã có bộ phát xung đồng bộ của riêng nó
Để làm được như vậy, hai bên phải thống nhất một tần số xung chung, và tất cả các xung clock phải khớp nhau ở một mức độ nào đó Mỗi byte truyền đi sẽ bao gồm một bit Start để đồng bộ xung đồng hồ giữa hai bên và một bit Stop để đánh dấu kết thúc byte được truyền Cổng RS-232 của máy PC sử dụng định dạng không đồng bộ để truyển thông với các thiết bị ngoài như modem, máy in cũng như để truyền thông với máy tính khác Tuy rằng cổng RS-232 có thể sử dụng phương pháp truyền đồng bộ nhưng phương pháp truyền không đồng bộ vẫn thường được sử dụng nhiều hơn
Việc truyền thông sử dụng phương pháp không đồng bộ không cần phải thực hiện liên tục Trong trạng thái nghỉ, đường tín hiệu truyền tin sẽ có trạng thái tương ứng với mức tín hiệu của bit Stop
Trang 5Quá trình truyền thông không đồng bộ sử dụng một số định dạng khác nhau Thông dụng nhất là dạng 8-N-1 Trong đó mỗi byte dữ liệu gửi đi bao gồm một bit Start, tiếp theo đó là 8 bit dữ liệu, bắt đầu băng bit 0 ( hay bit LSB) và kết thúc bằng một bit Stop.
Ký tự N trong 8-N-1 có nghĩa là trong dữ liệu truyền đi không có bit chẵn lẻ (Parity bit) Bit chẵn lẻ được sử dụng như một phương pháp kiểm tra lỗi truyền một cách đơn giản Bit chẵn lẻ có thể là bit “Chẵn” hoặc bit “Lẻ” Bit chẵn có nghĩa là bit parity được đặt là chẵn hay lẻ sao cho số các bit có giá trị 1 trong các bit dữ liệu bao gồm cả bit Parity là một số chẵn, và ngược lại với Parity lẻ Khi bên nhận nhận được byte dữ liệu nó sẽ kiểm tra để tính giá trị parity của byte được nhận, sau đó so sánh với bit parity ở trong byte vừa nhận Nếu không trùng nhau có nghĩa là đã có lỗi xảy ra trên đường truyền Bên nhận sẽ thông báo lại để bên gửi truyền lại byte dữ liệu đó
Số bit dữ liệu truyền đi trong một lần truyền có thể là từ 5 đến 8 bit tuỳ theo từng ứng dụng Nếu truyên ký tự ASCII thì ta truyền 7 bit, nếu truyền giá trị nhịphân (truyền file) thì sử dụng 8 bit
Số bit stop cũng là một tham số cần quan tâm Số 1 trong 8-N-1 chỉ ra rằng ở đây ta sử dụng 1 bit Stop Số bit stop có thể là 1,5 hoặc 2 bit
Tham số rất quan trọng trong quá trình truyền thông đó là tốc độ truyền dữ liệu Tốc độ truyền là số bit được truyền trên đường dây trên một đơn vị thời gian, thông thường được tính bằng đơn vị baud Trong đa số trường hợp, đơn vị này tương tương đương với đơn vị bit trên giây (b/s) Với định dạng 8-N-1, tốc độ truyền một byte dữ liệu bằng 1/10 tốc độ truyền Nếu ta truyền với tốc độ 9600 baud thì trong một giây truyền được 960 byte
II Lập trình vào ra với cổng nối tiếp
Truyền thông nối tiếp sử dụng giao diện RS-232:
Trang 6Chúng ta thấy rằng việc truyền thông nối tiếp đòi hỏi rất nhiều thao tác phải thực hiện Ta phải chuyển một byte dữ liệu từ dạng song song thành dạng nối tiếp ( bởi vì hầu hết các hệ thống số đều làm việc với các dữ liệu ở dạng song song) Tiếp theo ta phải tạo ra một lời tin theo đúng định dạng cho trước bằng cách thêm các bit Start, Stop, Parity phù hợp Sau đó ta mới truyền dữ liệu đi dưới dạng nối tiếp Cổng nối tiếp của máy PC có một vi mạch chuyên dùng để điều khiển truyền thông nối tiếp Do đó, khi sử dụng cổng RS-232 của máy PC
để truyền thông, tất cả công việc của chúng ta là gửi byte dữ liệu cần truyền ra thanh ghi dữ liệu của vi mạch này Sau đó mọi thao tác của quá trình truyền thông kể trên sẽ được vi mạch thực hiện dựa theo những thiết lập trong quá trình khởi tạo
Quá trình truyền một byte dữ liệu:
Trong trạng thái rỗi, giá trị logic trên đường truyền luôn bằng 1 Để báo việc bắtđầu truyền dữ liệu, bên gửi đưa giá trị logic 0 lên đường truyền trong khoảng thời gian bằng độ dài một bit Bit đó gọi là bit Start Khi truyền với tốc độ 300 baud, một bit có độ dài là 3,3 ms, trong khi với tốc độ 9600 baud thì có độ dài 0,1 ms
Ngay sau bit Start, bên truyền gửi tiếp 8 bit dữ liệu kế tiếp nhau, bắt đầu bằng bit LSB Tiếp sau đó bên truyền sẽ gửi tiếp một bit có giá trị logic 1 lên đường truyền và duy trì trong khoảng thời gian ít nhất là độ dài một bit Ngay sau đó hoặc sau một khoảng thời gian bất kỳ, bit Start tiếp theo sẽ được gửi để bắt đầu truyền một byte mới
Cổng nối tiếp RS 232
Phần cứng
Những thuộc tính của phần cứng
Trang 7Những thiết bị sử dụng cáp nối tiếp cho việc truyền thông được chia làm hai
loại Đó là DCE (Data Communications Equipment) và DTE (Data Terminal Equipment ) DCE là những thiết bị được sử dụng như một modem của chúng
ta, bộ tiếp hợp TA, máy vẽ, trong khi đó DTE lại được sử dụng như máy tính hoặc Teminal của chúng ta
Những phát minh về cổng nối tiếp của EIA (Electronics IndustryAssociation) trong đó tiêu biểu là chuẩn RS 232C Nó đưa ra nhiều thông sốnhư:
A “Space” (logic 0) ở giữa +3V và +12V
A “Mark” (logic 1) ở giữa -3V và -12V
Vùng giữa +3V và -3V là không xác định
Liệt kê ở trên chỉ là một phần của danh sách của chuẩn EIA Trong đó baogồm cả Line Capacitance, Maximum Baud Rates, Để biết chi tiết hơn xintham khảo chuẩn EIA RS-232C Tuy nhiên nó thật thú vị để ghi nhớ rằngChuẩn RS -232C chỉ rõ a maximum baud rate of 20,000 BPS!, điều mà làm cho
nó khá chậm trước những tiêu chuẩn của ngày nay Một tiêu chuẩn mới, RS 232D gần đây đã được phát hành
-Cổng nối tiếp có hai loại ỎsizeÕ, đó là bộ nối Type 25 chân và bộ nối Type 9 chân, cả hai loại này đều có chung một đặc điểm khác hẳn với cổng máy
D-in là chỗ nối với máy D-in ở máy PC là ổ cắm, trong khi ở các cổng nối tiếp lại làphích cắm nhiều chân Bên dưới là bảng kết nối chân cho bộ kết nối 9 chân và
25 chân D-Type.
D-Type-25 Pin No D-Type-9 Pin No Abbreviation Full Name
Trang 8Chân 6 Chân 6 DSR Data Set Ready
Bảng 1: D Type 9 Pin and D Type 25 Pin Connectors
Chức năng của các chân
Chữ viết tắt
Tên đầy
vào CTS Clear to Send Báo rằng Modem sằn sàng trao đổi dữ liệu
Detect
Khi nào modem phát hiện ra một ỎCarrierÕ từmột modem kết thúc khác của the phone line,thì Line này trở thành tích cực
thiết lập một mối liên kết
RI Ring Indicator Goes active when modem detects a ringing
signal from the PSTN
Registers của cổng nối tiếp
Port Addresses & IRQ's
Trang 9Bảng 3: Standard Port Addresses
Trên là bảng standard port addresses Chúng làm việc trong đa số các PC Nếuchúng ta tình cờ hay may mắn sở hữu một IBM P/S2 mà có micro-channel bus,thì chúng ta mong đợi một sự thiếtlập khác của địa chỉ và IRQ.Giống như cổngLPT, dữ liệu cơ sở cho các cổng COM có thể đọc từ Vùng Dữ liệu BIOS (BIOS
Data Area).
Bảng 4: COM Port Addresses in the BIOS Data Area;
Trên là bảng cho thấy địa chỉ mà chúng ta có thể tìm thấy theCommunications (COM) ports addresses trong the BIOS Data Area Mỗi địa chỉ
sẽ chiếm 2 bytes
Lập trình với cổng nối tiếp dùng visual basic
Phần mềm visual basic là phần mềm cho phép chúng ta thiết kế một giao diện
và viết lệnh Khi thiết kế giao diện ta dùng các công cụ do visual basic cung cấpsẵn visual basic là một ngôn ngữ lập trình cấp cao 32 bít được sử dụng để viết các ứng dụng trên môi trường windows
Có 2 cách để có thể giao tiếp với cổng com trong visual basic đó là :
1 Sử dụng các thư viện liên kết động
DLL là các thư viện liên kết động chứa các hàm và thủ tục mà ta có thể sử dụng
để bổ sung thêm những hàm còn thiếu của một ngôn ngữ lập trình
Khai báo DLL :
Trang 10Gọi hàm trong Visual Basic
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer) Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long) Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Private Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer
Private Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Private Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean
Private Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function IsDriverInstalled Lib "IO.DLL" As Boolean
Mô tả hàm
Hãy đọc kỹ trước khi sử dụng hàm !
Trang 12Quay phải bit ở cổg tương ứng
IsDriverInstalled
Trả về giá trị khác 0 nếu io.dll đã được cài đặt, đảm bảo rằng trên nền NT/2000/
XP chế độ Kernel được cài và có khả năng truy nhập
2 Sử dụng Microsoft Comm control 6.0
Microsoft Comm control 6.0 là một component được tích hợp sẵn trong bộ phầnmềm visual basic cho phép người dùng viết các ứng dụng giao tiếp qua cổng nốitiếp
Ví dụ:
MSComm1.CommPort = 1 // chọn cổng comm
MSComm1.Settings = "9600,n,8,1"// cài đặt giá trị tốc độ baud, không bitchẵn lẻ, 8 bit, 1 bit start
MSComm1.InputLen = 0
MSComm1.PortOpen = True // mở cổng Comm
MSComm1.input = "giá trị muốn gửi đi"
MSComm1.output = "giá trị muốn nhận về"
III Giới thiệu linh kiện trong sơ đồ
1 Sơ đồ mạch đo điện áp
a) Bộ chọn kênh vi sai 4 đầu vào
4 kênh đo điện áp là U1,U2,U3,U4
Trang 132 kênh điều khiển chọn kênh là A1, A2
Trang 14R2 = 2R4
R3 = R4
Từ đó ta chọn các giá trị điện trở
R (nằm trong dải cho phép của
tầng khuếch đại thuật toán)
- 12 bit của dữ liệu đầu ra có thể được đọc như là một từ dữ liệu 12bit hoặc như
2 byte 8 bit ( byte đầu với 8 bit dữ liệu, byte còn lại với 4 bit dữ liệu và 4 bit 0)
- Cung cấp 4 dải đo: 0V tới +10V
và 0V tới 20V đơn cực, -5V tới
Đầu vào tương tự được nối giữa
chân 13 và chân 9 cho phạm vi
đầu vào 0V tới +10V, giữa
Trang 15chân 14 và chân 9 cho phạm vi đầu vào từ 0V tới 20V AD574A rất dễ điều chỉnh để cung cấp tín hiệu đầu vào vượt cao hơn nguồn cấp AD574A được thiết kế để có độ lệch thông thường là ½ LSB so với giá trị chính xác ở đầu vào tương tự.
8255 này rất thông dụng, thường có trong các máy tính PC/XT, PC/AT và cácthiết bị trao đổi tin khác
Trang 16Phần ghép nối với TBN có:
Cửa A: thanh ghi đệm số liệu (8 bit), vào hoặc ra tuỳ theo chương trình khởi phát
Cửa B: thanh ghi đệm số liệu (8 bit), vào hoặc ra tuỳ theo chương trình khởi phát
Cửa C: Chia làm 2 nửa, cao và thấp
Cæng A 8
Cæng C nöa thÊp 4
Cæng B 8
IO
PA
0 - PA 7 Cæng C
nöa cao 4
§iÒu khiÓn nhãm B
§Öm sè liÖu