LỜI NÓI ĐẦU
Trong mấy chục năm qua , khoa học máy tính và xử lý thông tin có những
bước tiến vược bậc và ngày càng có những đóng góp to lớn vào cuộc cách mạng
khoa học kỹ thuật hiện đại. Đặc biệt sự ra đời và phát triển nhanh chóng của kỹ
thuật số làm cho ngành điện tử trở nên phong phú và đa dạng hơn. Nó góp phần rất
lớn trong việc đưa kỹ thuật hiện đại thâm nhập rộng rãi vào mọi lĩnh vực của hoạt
động sản xuất ,kinh tế và đời sống xã hội. Từ những hệ thống máy tính lớn đến
nhứng hệ thống máy tính cá nhân , từ những việc điều khiển các máy công nghiệp
đến các thiết bị phục vụ đời sống hằng ngày của con người. Với mong muốn tìm
hiểu , ứng dụng những tiến bộ của khoa học kỹ thuật hiện đại vào phục vụ sản xuất
và phục vụ đời sống con người
Hơn nữa được sự hướng dẫn và gíúp đỡ của thầy cô trong khoa em đã hoàn thành đề
tài của mình là thiết kế modul ghép nối máy tính sử dụng giao diện RS232. Do trình
độ còn hạn chế nên không tránh khỏi thiếu sót mong các thầy cô chỉ bảo thêm
Sau đây em xin trình bày thiết kế của mình
CHƯƠNG 1. TỔNG QUAN VỀ CÔNG NGHỆ.
1.1. Giới thiệu về chuẩn giao tiếp RS232
Cổng nối tiếp RS 232 là giao diện phổ biến rộng rãi nhất. Người dùng máy tính
PC còn gọi cổng này là COM 1, còn COM 2 để tự do cho các ứng dụng khác. Việc
truyền dữ liệu qua cổng RS 232 được tiến hành theo cách nối tiếp, nghĩa là các bit
dữ liệu được gửi đi nối tiếp nhau trên một đường dẫn. Ưu điểm của cổng nối tiếp là
có khả năng truyền được đi xa, ít bị gây nhiễu so với khi sử dụng cổng song song,
và tiết kiệm được dây dẫn.
Ở đây ta xét loại 9 chân, có hình dáng và chức năng như hình dưới.
1.2. Giới thiệu về các linh kiện sử dụng trong bài.
1.2.1. Vi mạch UART CDP 6402
U 2
C D P 6 4 0 2
V C C
1
F E
1 4
R R C
1 7
D R
1 9
R R I
2 0
T R O
2 5
T R C
4 0
R B R 1
1 2
R B R 2
1 1
R B R 3
1 0
R B R 4
9
R B R 5
8
R B R 6
7
R B R 7
6
R B R 8
5
T B R 1
2 6
T B R 2
2 7
T B R 3
2 8
T B R 4
2 9
T B R 5
3 0
T B R 6
3 1
T B R 7
3 2
T B R 8
3 3
O E
1 5
P E
1 3
T R E
2 4
T B R E
2 2
C R L
3 4
D R R
1 8
E P E
3 9
M R
2 1
P I
3 5
R R D
4
S B S
3 6
S F D
1 6
T B R L
2 3
C L S 1
3 8
C L S 2
3 7
Bố trí chân của UART CDP6402
Những tính chất sau đây đặc trưng cho CDP6402
• Công suất tiêu thụ không đáng kể
• Tốc độ baud: Đến 200kbaud khi điện áp nguồn nuôi +5V
Đến 400kbaud khi điện áp nguồn nuôi +10V
• Điện áp nguồn nuôi từ 4V đến 10,5 V
• Đặt khuôn mẫu truyền dữ liệu bằng phần cứng.
• Sử dụng đơn giản
• Giá thành gần 10USD (năm 1996)
Như ở trong mục trước đã đề cập đến, để chuyển dữ liệu qua giao diện nối
tiếp đã có các chip được tích hợp ở mức độ cao. Một linh kiên loại này là 1 bộ
UART CDP 6402 của hẵng HARIS. Bộ UART này chứa trên cùng một chip một bộ
gửi và bộ nhận nối tiếp hoạt động toàn độc lập với nhau. Bộ gửi nối tiếp truyền đi
sau một xung khởi động các dữ liệu xếp kề sát qua một đường dẫn tới bộ nhận và
gửi kèm theo một cách tự động các bit khởi động và bit dừng. Bên ộ nhận lại có
được các dữ liệu đã nối tiếp đến để sử dụng song song. Điểm đáng lưu ý ở vi mạch
này là khuôn mẫu truyền dữ liệu có thể được thiết lập trước bằng phần cứng qua các
mức logic ở các chân. Nhờ vậy mà vi mạch này có thể được sử dụng một cách vạn
năng.
Bảng dưới đây mô tả chức năng của các chân riêng biệt.
Chân Ký hiệu Mô tả
1 VDD Cực dương của nguồn nuôi
2 NC Không dùng
3 GND Mass đất, 0V
4 RRD Receive Register Disable
Khi tín hiệu này dẫn đến mức high thì các đường dẫn lối ra
D0OUT đến D7OUT chuyển sang trạng thái điện trở cao
5 D7 OUT Các bi dữ liệu đã đến theo cách nối tiếp ở chân 20 sẽ xuất
6 D6 OUT Hiện theo cách song song ở các lối ra ba trạng thái
7 D5 OUT D7OUT đến D0OUT
8 D4 OUT
9 D3 OUT
10 D2 OUT
11 D1OUT
12 D0 OUT
13 PE Parity Error: sai số chẵn lẻ
Một mức logic 1 ở chân này báo hiệu là bit chẵn lẻ đã được
lập trình không đồng nhất với bit nhận được. Nếu như bit
chẵn lẻ không được kích hoạt thì chân này nằm ở mức low
14 FE Sai số Framming
Mức High ở chân này báo hiệu là bit dừng đầu tiên là không
có giá trị. FE giữ nguyên High cho đến khi nhận được một
bit dừng có giá trị
15 OE Sai số Overrun
OE sau đó trở nên High, nếu như một byte mới đã nhận.
Trước khi byte cũ được đọc từ thanh ghi nhận
16 SFD Status Flag Disable
Một mức cao ở chân này có nghĩa là lối ra PE, FE, OE, DE,
và TBRL trở nên có điện trở cao
17 RRC Receiver Register Clock
ở RRC, các tín hiệu giữ nhịp của bộ nhận nối tiếp được dẫn
đến. Tần số cần phải được thiết lập ở giá trị 16 lần lớn hơn
tốc độ
18 DRR Data Receiver Reset
Một xung low ở chân này đặt DR trở lại low
19 DR Data Receiver
DR=1 báo hiệu là các dữ liệu đã được nhận một cách đầy đủ
và có mặt ở các lối ra D7OUT đến D0OUT. Trước khi 1 byte
dữ liệu có giá trị tiếp theo có thể được báo hiệu, tín hiệu DR
cần phải được đặt lại bằng một xung âm ở DRR
20 RRI Receiver Register Input
Ở chân này tín hiệu nối tiếp được dẫn đến
21 MR Master Rest
Với mức Higt, việc Reset linh kiện sẽ được thực hiện. PE,
FE, OE và DR được đặt lại, trong khi TRE, TBRE và TRO
được đặt lên mức cao.
22 TBRE Tranmitter Bufer Register Empty
Một mức cao ở chân này báo hiệu là thanh ghi của bộ gửi
đang trống và sẵn sang tiếp nhận dữ liệu mới
23 TBRL Tranmitter Control Register Load
Một xung low sẽ xóa để gửi đi các bit dữ liệu. Bằng sườn
dương các dữ liệu xếp kề sát, song song D7IN đến D0IN sẽ
được truyền vào thanh ghi của bộ gửi và sau đó được gửi đến
bên nhận theo cách nối tiếp với bit khởi động và bit dừng
24 TRE Tranmitter Register Empty
Một mức cao sẽ báo hiệu là linh kiện đã làm xong việc gửi
25 TRO Tranmitter Register Output
Các bit dữ liệu xếp kề sát song song D0IN đến D7IN dược
gửi bao gồm bit khởi động và bit dừng qua đường dẫn TRO
tới bên nhận
26 D0IN Các bit dữ liệu ở các lối vào này được giửi trực tiếp đến nơi
nhận
27 D1IN
28 D2IN * D0IN là LSB
29 D3IN * D7IN là MSB
30 D4IN
31 D5IN
32 D6IN
33 D7IN
34 CLR Control Register Load: nạp thanh ghi điều khiển. Một mức
High nạp các bit điều khiển vào thanh ghi điều khiển.
35 PI CLS
2
0
0
0
0
0
CLS
1
0
0
0
0
0
PI
0
0
0
0
1
EP
E
0
0
1
1
X
SB
S
0
0
0
1
0
DATA
BITS
5
5
5
5
5
PARITY
BITS
Lẻ (old)
Lẻ
Chẵn
Chẵn
disabled
STOP
BITS
1
1,5
1
1,5
1
36 SBS 0
0
0
0
0
0
1
1
1
1
1
0
0
0
0
X
0
0
1
1
0
0
0
0
0
0
0
0
0
0
Disable
Lẻ
Lẻ
Chẵn
Chẵn
1
1,5
1
1,5
1
37 CLS2 0
0
1
1
1
1
1
1
0
0
0
0
1
1
0
0
0
0
X
X
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
Disable
Disable
Lẻ
Lẻ
Chẵn
Chẵn
1
1,5
1
1,5
1
1
38 CLS1 1
1
1
1
0
0
1
1
1
1
0
0
X
X
0
0
0
1
0
1
7
7
8
8
Disable
Disable
Lẻ
Lẻ
1
1,5
1
1,5
1 1 0 1 0 8 Chẵn 1
39 EPE 1
1
1
1
1
1
0
1
1
1
X
x
1
0
1
8
8
8
Chẵn
Disable
Disable
2
1
2
40 TRC Transmitter Register Clock
Ở TRC có tín hiệu giữ nhịp của bộ gửi nối tiếp. Tần số cần
phải được thiết lập lớn hơn tốc độ baud 16 lần
1.2.2. Vi mạch MAX232
Hầu như tất cả các thiết bị số như vi điều khiển đều sử dụng các mức logic TTL
hay CMOS, trong khi điện áp truyền thông RS 232 là -25V đến 25V. Vì vậy, để kết
nối một thiết bị với một kênh RS 232 ta phải thay đổi mức điện áp của RS 232 trở
lại mức từ 0 đến 5V hoặc ngược lại. Bộ chuyển đổi được sử dụng rộng rãi là MAX-
232 (và tương thích với bộ vi xử lý). IC này cũng có hai luồng nhận và hai luồng gửi
trên cùng một thiết bị. IC MAX232 có chân 16 với một điện thế cung cấp 5V. Pin
16 được sử dụng như điện áp đầu vào (FCC), pin 15 như mặt đất. Pin 8 và 13 được
sử dụng như là đầu vào (nhận) RS-232, trong khi các chân 7 và 14 như đầu ra (gửi)
RS232. Cấu hình các chân của IC MAX232 được thể hiện trong hình:
Ghép nối giữa RS 232 và MAX 232:
CHƯƠNG 2. THIẾT KẾ MẠCH GHÉP NỐI MÁY TÍNH
2.1. Tính toán mạch chuyển đổi chuẩn điện áp 0 – 5V
2.1.1. Chuyển đổi cho kênh
±
20V (-20V to +20V)
Ta sử dụng mạch phân áp
R 1
3 0 0 R
R 2
1 0 0 R
- 2 0 V t o + 2 0 V
- 5 V t o + 5 V
Ta có U
ra
=
2
1 2
vao
R
U
R R+
Các thông số tính toán được trình bày ở trên
Sử dụng cầu điện trở đưa về dải điện áp cần thiết 0 – 5V
R 2
R 3
R 1
V C C
U e U a
Các thông số tính toán trình bày như hình dưới
R 3
1 0 0 k
R 4
1 0 0 K
- 5 V t o + 5 V 0 t o + 5 V
+ 5 V
max
a max
1
2
e
U
R
R U
=
2.1.2. Chuyển đổi kênh
±
10V (-10V to +10V)
Sủ dụng cầu điện trở
Nguyên lý và các thông số tính toán trình bày ở phần dưới
a. Nguyên lý.
R 2
R 3
R 1
U h
U aU e
Các thông số tính toán
R 2
5 0 K
R 3
1 0 0 K
R 1
1 0 0 K
U e U a
+ 5 V
2.1.3. Chuyển đổi kênh
±
5 (-5V to +5V)
Sử dụng cầu phân áp như các phần trên ta có các thông số tính toán như sau
R 3
1 0 0 k
R 4
1 0 0 K
- 5 V t o + 5 V 0 t o + 5 V
+ 5 V
2.1.4. Chuyển đổi kênh
±
2 (-2V to +2V)
Ta sử dụng mạch phân áp để chuyển về dải 0V to +2V
Các thông số tính toán được
R 2
1 0 0 k
- 2 V t o + 2 V 0 t o + 2 V
+ 2 V
R 1
1 0 0 K
Sau đó dùng mạch khuyếch đại thuật toán để đưa về dải 0 to +5V
Nguyên lý
9
109
R
RR
UU
vaora
+
=
ra
U
=5V
vao
U
=0 ÷2V
=>
2
3
9
10
=
R
R
chọn
9
R
=100 kΩ
=>
10
R
=150 kΩ
2.1.5. Chuyển đổi kênh
±
1 (-1V to +1V)
Ta sử dụng cầu điện trở để đưa về dải 0 to +1V
R 2
1 0 0 k
- 1 V t o + 1 V 0 t o + 1 V
+ 1 V
R 1
1 0 0 K
Sau đó dùng mạch khuyếch đại thuật toán để đưa về dải 0 to +5V
7
87
R
RR
UU
vaora
+
=
ra
U
=5V
vao
U
=0 ÷1V
=>
4
7
8
=
R
R
chọn
7
R
=50 kΩ
=>
8
R
=200 kΩ
2.1.6. Chuyển đổi dải -0.5V to +0.5V
Sử dụng mạch phân áp chuyển về dải 0 to +0.5V
R 2
1 0 0 k
- 0 . 5 V t o + 0 . 5 V 0 t o + 0 . 5 V
+ 0 . 5 V
R 1
1 0 0 K
Sau đó dùng mạch khuyếch đại thuật toán để đưa về dải 0 to +5V
R 2
0 t o + 5 V
+
-
U 5 A
2
1
3
1 17
R 1
0
0 - 0 . 5 V
1 2
1
ra vao
R R
U U
R
+
=
ra
U
=5V
vao
U
=0 ÷ 0.5V
=>
2
1
10
R
R
=
chọn
1
R
=10 kΩ
=>
2
R
=100 kΩ
1.2.7. Chuyển đổi kênh -0.2V to +0.2V
Dùng cầu điện trở chuyển về dải 0 to +0.2V
R 2
1 0 0 k
- 0 . 2 V t o + 0 . 2 V 0 t o + 0 . 2 V
+ 0 . 2 V
R 1
1 0 0 K
Sau đó dùng mạch khuyếch đại thuật toán để đưa về dải 0 to +5V
R 2
0 t o + 5 V
+
-
U 5 A
2
1
3
1 17
R 1
0
0 - 0 . 5 V
1 2
1
ra vao
R R
U U
R
+
=
ra
U
=5V
vao
U
=0 ÷ 0.2V
=>
2
1
25
R
R
=
chọn
1
R
=10 kΩ
=>
2
R
=250 kΩ
2.2. Mạch ghép nối MAX232
2.2.2. Mạch kết nối hoàn chỉnh
CHƯƠNG 3. THIẾT KẾ GIAO DIỆN VÀ VIẾT PHẦN MỀM
3.1. Giao diện phần mềm
Phần mềm viết trên VB6
Dim A(1 To 6) As Integer
Dim b(1 To 6) As Integer
Dim m1(1 To 6) As Integer
Dim m2(1 To 6) As Integer
Dim i, j As Integer
Private Sub Command1_Click()
MsgBox "day la phan mem cho card ghep noi RS232 7 kenh don"
End Sub
Private Sub Command2_Click()
For j = 1 To 7
A(1) = MSComm1.Input 'nhan bit cao nhat d7 tu adc
For i = 2 To 7
m2(i) = m1(i) + 4
MSComm1.Output = Chr(m2(i)) 'dua chan RTS len cao
MSComm1.Output = Chr(m2(i)) 'dua suon cao xuong thap
A(i) = MSComm1.Input 'nhan cac bit du lieu tu d6 toi d0
Next i
MSComm1.Output = Chr(m1(i)) 'gui du lieu chon kenh thu i
b(j) = A(0) * 2 ^ 7 + A(1) * 2 ^ 7 + A(2) * 2 ^ 7 + A(3) * 2 ^ 7 + A(4) * 2 ^ 7 +
A(5) * 2 ^ 7 + A(6) * 2 ^ 7 + A(7)
Next j
b(1) = b(1) / 6.4 'phuc hoi gia tri thang do 1
b(2) = b(2) / 12.8 'phuc hoi gia tri thang do 2
b(3) = b(3) / 25.6 'phuc hoi gia tri thang do 3
b(4) = b(4) / 0.128 'phuc hoi gia tri thang do 4
b(5) = b(5) / 0.256 'phuc hoi gia tri thang do 5
b(6) = b(6) / 0.512 'phuc hoi gia tri thang do 6
b(7) = b(7) / 1.28 'phuc hoi gia tri thang do 7
Text1.Text = Str(b(1)) & vol
Text2.Text = Str(b(2)) & vol
Text3.Text = Str(b(3)) & vol
Text4.Text = Str(b(4)) & milivol
Text5.Text = Str(b(5)) & milivol
Text6.Text = Str(b(6)) & milivol
Text6.Text = Str(b(6)) & milivol
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Form_Load()
MSComm1.Settings = "9600,N,8,1"
MSComm1.CommPort = 1
MSComm1.PortOpen = True
m1(1) = 0 'du lieu chon kenh 1
m1(2) = 1 'du lieu chon kenh 2
m1(3) = 2 'du lieu chon kenh 3
m1(4) = 3 'du lieu chon kenh 4
m1(5) = 4 'du lieu chon kenh 5
m1(6) = 5 'du lieu chon kenh 6
m1(7) = 6 'du lieu chon kenh 7
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub