+ Tiết kiệm đờng dẫn+ Có khả năng truyền đi xa Nhợc điểm của truyền tin nối tiếp: + Tốc độ chậm hơn các thiết bị thờng phải có khối chuyển đổi nối tiếp song song,và ngợc lại khi sử dụng
Trang 1GIớI THIệU CHUNG Về GHéP NốI MáY TíNH
Sự phát triển của ghép nối máy tính đã mở rộng đáng kể các lĩnh vực máy tính, đặc biệt là đo lờng và điều khiển thực tế cho thấy trong các công
ty hay xí nghiệp đã ứng dụng kỹ thuật ghép nối máy tính rất nhiều,ví dụ:
điều khiển CNC, dây chuyền công nghệ sản xuất xi măng, điều khiển các thiết bị từ xa
Máy tính có thể giao tiếp với các thiết bị khác nhau nhờ những phần cứng và chơng trình do ngời sử dụng viết, ngôn ngữ có thể là Pascal, C++, Assembler, VisualBasic
Có khả năng ghép nối máy tính có tính chính xác cao, thời gian thu nhập số liệu ngắn và quan trọng là mức tự động hoá trong quá trình thu thập
số liệu và xử lý kết quả
Đề tài “ Thiết kế Voltmet điện tử sử dụng cổng nối tiếp” đã đợc
chúng em lựa chọn và đa vào bài tập đồ án môn ghép nối nhằm tìm hiểu sâu sắc và thực tế hơn về cấu trúc, lý thuyết môn học
Nhóm chúng em đã tìm hiểu và thực hiện đề tài này, rất mong đợc sự góp ý và chia sẻ hơn về kiến thức bộ môn từ phía thầy cô cùng các bạn
Nhóm sinh viên thực hiện
Đoàn Đình Cả
Trần Thị Tân Trơng Thị Hơng
Phần I GHéP NốI TRUYềN TIN NốI TIếP
I Khái niệm về truyền tin nối tiếp.
1 Khái niệm
Truyền tin nối tiếp là phơng thức truyền tin trong đó các bit mang thông tin đợc truyền kế tiếp nhau trên một đờng dẫn vật lý Tại một thời
điểm phía bên truyền và bên nhận chỉ có thể truyền (hoặc nhận) 1bit
Trang 2+ Tiết kiệm đờng dẫn
+ Có khả năng truyền đi xa
Nhợc điểm của truyền tin nối tiếp:
+ Tốc độ chậm hơn các thiết bị thờng phải có khối chuyển đổi nối tiếp song song,và ngợc lại khi sử dụng phơng pháp này để trao đổi tin
2 Phơng thức truyền tin nối tiếp:
Có 3 phơng thức truyền tin nối tiếp:
+ Phơng thức đồng bộ: các byte chứa các bit thông tin đợc truyền liên tiếp trên đờng truyền và chỉ đợc ngăn cách(phân biệt) nhau bằng bit đồng
bộ khung(SYNC)
+ Phơng thức không đồng bộ: các byte chứa các bit thông tin đợc chứa trong một khung Một khung đợc bắt đầu bằng một bit start, tiếp theo là các bit mang thông tin, kế tiếp là các bit kiểm tra chẵn lẻ và kết thúc là 1 bit stop Khoảng cách giữa các khung là các bit dừng bất kì, khi đó đờng truyền đợc lấy lên mức cao
+ Phơng pháp lai: Đây là phơng pháp kết hợp của hai phơng pháp trên, trong đó các bit trong một khung đợc truyền theo phơng thức không đồng
bộ còn các byte đợc truyền theo phơng thức đồng bộ
ii cổng nối tiếp
1 Giới thiệu
Cổng nối tiếp RS232 là một giao diện phổ biến rộng rãi nhất, ta còn gọi là cổng COM1,COM2, để tự do trao đổi các ứng dụng khác nhau Giống nh cổng máy in, cổn nối tiếp RS232 cũng đợc sử dụng rất thuận tiện trong việc ghép nối máy tính với các thiết bị ngoại vi Việc truyền dữ liệu qua cổng RS232 đợc tiến hành theo cách nối tiếp, điều này có nghĩa là các bit dữ liệu đợc gửi nối tiếp trên một đờng dẫn
2 Cấu trúc cổng nối tiếp
DIP 9
(loại 9
chân)
DIP25
(loại 25 chân)
1
2
3
4
5
6
7
8
9
8 3 2 20 7 6 4 5 22
rcd rxd txd dtr gnd dsr rts ri
Lối vào Lối vào Lối ra Lối ra Lối vào Lối ra Lối vào Lối vào
Data Crrier Detect Receive Data Transmit Data Data Terminal Ready Nối đất
Data Set Ready Request to send Clear to send Ring indicator
Mức tín hiệu trên các chân của cổng nối tiếp thờng nằm trong khoảng -12v->+12v
Các bít dữ liệu đợc đảo ngợc lại Mức điện áp ở mức logic 1:
-12v đến -3v mức điện áp ở mức điện áp -12v bằng tốc độ baund ta thiết lập tốc độ truyền dữ liệu các giá trị thông thờng là:
300,600,1200,2400,4800,9600
3 Địa chỉ các cổng sau:
COM1: địa chỉ cơ bản là: 3F8H
Trang 3COM2: địa chỉ cơ bản là:2F8H
COM3: địa chỉ cơ bản là:3E8H
COM4: địa chỉ cơ bản là:2E8H
Sự trao đổi các đờng dẫn tín hiệu:
Trên máy tính các vi mạch đảm bảo truyền (nhận) dữ liệu thông qua cổng nối tiếp,vi mạch đó gọi là UART (bộ truyền nhận nối tiếp không đồng bộ).UART để điều khiển sự trao đổi thông tin giữa máy tính và các thiết bị ngoại vi, phổ biến nhất là vi mạch 8250 của hãng NSC hoặc các thiết bị tiếp theo, nh 16C550, bộ UART có 10 thanh ghi để điều khiển tất cả các chức năng của việc nhập vào, xuất ra dữ liệu theo cách nối tiếp
4 Các thanh ghi điều khiển
a)Thanh ghi điều khiển Modem(3F8 +4)
D0=0:đa DTR=1
D1=1:đa RTS=0
D1=0:đa RTS=1
OUT1,OUT2 điều khiển đầu ra phụ
b)Thanh ghi trạng thái Modem(3F8 +6)
Thanh ghi này nhiệm vụ thông báo về trạng thái các đờng dẫn bắt tay
điều chú ý ở thanh ghi này là:D4,D5,D6 chính là lối vào của các đờng dẫn CTS,DSR,RI đã đợc đảo
c)Thanh ghi điều khiển đờng truyền(3F8 +3)
C1,C0: đặt số bit trong mỗi từ
00: 5 bit
01: 6 bit
10: 7 bit
11: 8 bit
C2: các bit dừng
0:1 bit dừng
1: 1,5 bit dừng
C3: bit kiểm tra chẵn lẻ
0: không kiểm tra
1: có kiểm tra
C4: loại chẵn lẻ
0: bit lẻ
1: bit chẵn
C5: Stick bit
0: không có Stick bit
1: Stick bit
C6: đặt break
0: Normal output
1: gửi 1 break
C7(DLAB): bit phân chia truy nhập cho các thanh ghi cùng địa chỉ
Trang 4d)Thanh ghi trạng thái đờng truyền (3F8+5)
S0=1: khi có 1 byte mới nhận đợc
S1=1: khi ký tự trớc không đợc đọc ký tụ mới đến sẽ xoá ký tự cũ trong
bộ đệm
S2=1: khi có lỗi chẵn lẻ
S3=1: khi có lỗi khung truyền
S4=1: khi có gián đoạn đờng truyền
S5=1: khi bộ truyền rỗng cổng nối tiếp có thể truyền nhận
S6=1: khi bộ đệm truyền rỗng
S7=0: không sử dụng
e)Thanh ghi cho phép ngắt(3F8+1)
D0=1: cho phép ngắt khi nhận một ký tự
D1=1: cho phép ngăt khi bộ nhận truyền rỗng
D2=1: cho phép ngăt khi thay đổi trạng thái đờng truyền
D3=1: cho phép ngắt khi thay đổi trạng thái Modem
D4=0
D5=0
D6=0
D7=0
f)Thanh ghi nhận dạng ngắt (3F8+2)
g)Thanh ghi chứa số chia tốc độ baud (byte thấp- địa chỉ cơ sở)
Thanh ghi này gồm 8 bit,chứa phần thấp số chia của tốc độ baud, số chia tốc đô Baud tính theo công thức:
số chia tốc độ baud=1843200/(16*tốc độ baud cần thiết lập)
h)Thanh ghi chứa số chia tốc độ baud(byte cao -3F8+1)
Trang 5Phần II
giới thiệu các linh kiện
I AT89C51
- Là 1 sản phẩm của hãng ATMEL có 256 bytes RAM, 8Kbytes ROM, 32 chân vào ra, 2 bộ định thời, 6 nguồn ngắt và 1 cổng nối tiếp
- Kiểu bộ nhớ NV-RAM là kiểu bộ
nhớ mà có khả năng nạp chơng trình
vào ROM trên chip trong khi nó vẫn
ở trong hệ thống mà không phải lấy
ra,ngoài ra kiểu bộ nhớ này còn có
tính u việt cho phép thay đổi nội
dung ROM theo từng byte trong khi
bộ nhớ kiểu FLASH và EPROM
phải đợc xoá hết trớc khi lập trình
lại
-Vùng nhớ FLASH ROM có thể nạp
xoá khoảng 1000 lần
II IC MAX232:(dùng giao tiếp
với VĐK và máy tính)
Dùng để thực hiện giao tiếp với vi
điều khiển,ta phải chuyển mức logic
từ TTL=> 232 và ngợc lại
Tuy nhiên khi sử dụng mạch chuyển mức logic dùng vi mạch(232) thì phải dùng chung GND giữa máy tính và vi mạch
Điều này dẫn đến một trờng hợp có khả năng làm hỏng cổng nối tiếp khi xảy ra chập mạch ở mạch ngoài.Do đó,ta có thể dùng thêm opto 4N335 để cách ly về điện
Trang 6
IC Max232
III ADC0804
Chip ADC804 là bộ chuyển đổi tơng tự số thuộc họ ADC800 của hãng National Semiconductor Chip này cũng đợc nhiều hãng khác sản xuất Chip có điện áp nuôi +5V và độ phân giải 8 bit Ngoài độ phân giải thì thời gian chuyển đổi cũng là một tham số quan trọng khi đánh giá bộ ADC Thời gian chuyển đổi đợc định nghĩa là thời gian mà bộ ADC cần để chuyển một đầu vào tơng tự thành một số nhị phân Đối với ADC0804 thời gian chuyển đổi phụ thuộc vào tần số đồng hồ đợc cấp tới chân CLK và CLK IN và không bé hơn 110s
Trang 7Các chân của ADC0804 có chức năng nh sau:
a) CS (Chip Select) - chọn chip
Là chân chọn chip, đầu vào tích cực mức thấp đợc sử dụng để kích hoạt chip ADC804 Để truy cập ADC0804 thì chân này phải ở mức thấp
b) RD (Read) - đọc
Đây là một tín hiệu vào, “tích cực mức thấp” Các bộ ADC chuyển đổi đầu
vào tơng tự thành số nhị phân và giữ nó ở một thanh ghi trong RD đợc sử dụng để có dữ liệu đợc đã chuyển đổi tới đầu ra của ADC0804 Khi CS = 0 nếu có một xung cao-xuống-thấp áp đến chân RD thì dữ liệu ra dạng số 8 bit đợc đa tới các chân dữ liệu D0 - D7 Chân RD còn đợc coi là cho phép
đọc
c) WR (Write) - ghi
Thực ra, tên chính xác là “Bắt đầu chuyển đổi” Đây là chân vào “tích cực
mức thấp” đợc dùng để báo cho ADC0804 bắt đầu quá trình chuyển đổi.
Nếu CS = 0 khi WR tạo ra xung cao-xuống-thấp thì bộ ADC0804 bắt đầu
thời gian cần thiết để chuyển đổi thay đổi phụ thuộc vào tần số đa đến chân CLK IN và CLK R Khi việc chuyển đổi dữ liệu đợc hoàn tất thì chân INTR đợc ADC0804 hạ xuống thấp
d) CLK IN và CLK R
CLK IN là chân vào, đợc nối tới một nguồn đồng hồ ngoài khi đồng hồ ngoài đợc sử dụng để tạo thời gian Tuy nhiên 0804 cũng có một bộ tạo xung đồng hồ trên chip Để dùng đồng hồ trong (cũng còn đợc gọi là đồng
hồ riêng) của 804 thì các chân CLK IN và CLK R đợc nối tới một tụ điện
và một điện trở nh chỉ ra ở hình 12.5 Trong trờng hợp này tần số đồng hồ
đợc xác định bằng biểu thức:
RC
f
1 , 1
1
Giá trị thông thờng của các đại lợng trên là R = 10k, C= 150pF và tần
số nhận đợc f = 606kHz, còn thời gian chuyển đổi sẽ là 110s
e) Ngắt INTR (Interrupt)
Trang 8Ngắt hay còn gọi là “kết thúc việc chuyển đổi’ Đây là chân ra tích cực mức thấp Bình thờng, chân này ở trạng thái cao và khi việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết là dữ liệu đợc chuyển đổi
đã sẵn sàng để lấy đi Sau khi INTR xuống thấp, cần đặt CS = 0 và gửi một xung cao-xuống-thấp tới chân RD để đa dữ liệu ra
f) V in (+) và V in (-)
sẽ đợc chuyển đổi về dạng số
g) V CC
Là chân nguồn nuôi +5v Chân này còn đợc dùng làm điện áp tham chiếu
Chân 9 là điện áp đầu vào đợc dùng làm điện áp tham chiếu Nếu chân này
hở (không đợc nối) thì điện áp đầu vào tơng tự cho ADC804 nằm trong dải
các điện áp đầu vào có dải khác với 0 - 5V Ví dụ, nếu dải đầu vào tơng tự
Quan hệ điện áp V ref/2 với V in
Ghi chú: - VCC = 5V
* Khi V ref /2 hở thì đo đợc ở đó khoảng 2,5V
- Kích thớc bớc (độ phân dải) là sự thay đổi nhỏ nhất mà ADC có thể phân biệt đợc.
i) D0 - D7
D0 - D7 là các chân ra dữ liệu số (D7 là bit cao nhất MSB và D0 là bit thấp nhất LSB) Các chân này đợc đệm ba trạng thái và dữ liệu đã đợc chuyển
đổi chỉ đợc truy cập khi chân CS = 0 và chân RD đa xuống mức thấp Để tính điện áp đầu ra ta có thể sử dụng công thức sau:
buoc thuoc kich
V
out
tự và kích thớc bớc (độ phân dải) là sự thay đổi nhỏ nhất đợc tính bằng
Trang 9Từ những trình bày trên, có thể tóm tắt các bớc khi ADC0804 thực hiện chuyển đổi dữ liệu là:
1 Bật CS = 0 và gửi một xung thấp lên cao tới chân WR để bắt đầu chuyển
đổi
2 Duy trì kiểm tra chân INTR Nếu INTR xuống thấp thì việc chuyển đổi
đợc hoàn tất và có thể chuyển sang bớc tiếp theo Nếu INTR còn ở mức cao thì tiếp tục thăm dò cho đến khi nó xuống thấp
3 Sau khi chân INTR xuống thấp, bật CS = 0 và gửi một xung cao-xuống-thấp đến chân RD để nhận dữ liệu từ chip ADC0804
Phần III Sơ Đồ Mạch Nguyên lý
Trang 10Sơ đồ mạch in
Đề tài: Voltmet điện tử sử dụng cổng nối tiếp Trang
U 3
A D C 0 8 0 4
+ I N 6
- I N 7
A G N D 8
G N D
1 0
D B 7 1 1
D B 6 1 2
D B 5 1 3
D B 4 1 4
D B 3 1 5
D B 2 1 6
D B 1 1 7
D B 0 1 8
C L K R
C L K I N 4
I N T R 5
C S 1
R D 2
W R 3
D 0
D 2
D 4
D 6
W R
R D
D 7
I N T R
R 2
1 0 K
C 8
1 5 0 p F
U 1
A T 8 9 C 5 1
R S T 9
X T A L 2
1 8 X T A L 1
1 9
P S E N 2 9
A L E / P R O G 3 0
E A / V P P
3 1
P 1 0 1
P 1 1 2
P 1 2 3
P 1 3 4
P 1 4 5
P 1 5 6
P 1 6 7
P 1 7 8
P 2 0 / A 8 2 1
P 2 1 / A 9 2 2
P 2 2 / A 1 0 2 3
P 2 3 / A 1 1 2 4
P 2 4 / A 1 2 2 5
P 2 5 / A 1 3 2 6
P 2 6 / A 1 4 2 7
P 2 7 / A 1 5 2 8
P 3 0 / R X D 1 0
P 3 1 / T X D 1 1
P 3 2 / I N T 0 1 2
P 3 3 / I N T 1 1 3
P 3 4 / T 0 1 4
P 3 5 / T 1 1 5
P 3 6 / W R 1 6
P 3 7 / R D 1 7
P 0 0 / A D 0
3 9
P 0 1 / A D 1
3 8
P 0 2 / A D 2
3 7
P 0 3 / A D 3
3 6
P 0 4 / A D 4
3 5
P 0 5 / A D 5
3 4
P 0 6 / A D 6
3 3
P 0 7 / A D 7
3 2
C 6
1 0 u F
C 7
1 0 u F
Y 1
1 1 0 5 9 2 M h z
C 1
3 3 P
C 2
3 3 P
V C C
V C C
S W 1
R E S E T
C 3
1 0 u F
R 1
1 0 K
V C C
U 2
M A X 2 3 2
C 1 + 1
C 1 -3
C 2 + 4
C 2 -5
V C C 1 6
G N D 1 5
V + 2
V - 6
R 1 O U T
1 2
R 2 O U T 9
T 1 I N
1 1
T 2 I N
1 0
R 1 I N
1 3 T 1 O U T R 2 I N 8
1 4
T 2 O U T 7
P 1
C O M 1
5 4 3 2 1
C 4
1 0 u F
C 5
1 0 u F
V C C
D 0
D 2
D 4
D 6
R 8
1 0 K R 91 0 K
R D
R X
T X
R X
T X
R 3
1 0 K
R 4
1 0 K
R 5
2 2 K
R 6
4 7 K
J 1
C O N 2
1
W R
J 2
C O N N J A C K P W R
3 1
I N T R
C 9
2 2 0 u F / 1 6 V C 1 01 0 4
S W 2
S W R O T A R Y 2 P - 3 W D 1
L E D
V C C
V I N
V I N
R 7
2 2 0
V C C
V C C
T 2 5 V
T 2 5 V
T 2 5 V
T 2 5 V
Trang 11Giao diÖn ch¬ng tr×nh
Trang 12LËp tr×nh
1 LËp tr×nh cho vi ®iÒu khiÓn
#include<reg52.h>
#include<stdio.h>
unsigned long x,volt;
sbit INTR_ADC = P3^3;
sbit WR_ADC = P3^4;
sbit RD_ADC = P3^5;
sbit t1 = P2^0;
Đề tài: Voltmet điện tử sử dụng cổng nối tiếp Trang
Trang 13sbit t2 = P2^1;
//cac chuong trinh con
//tao tre ngan
void tre(unsigned char t)
{
unsigned char i;
for(i=0;i<t;i++);
}
//ghi so thuc
void ghisothuc(unsigned long number)
{
int j,n;
unsigned char M[4]; //khai bao mang de luu cac gia tri
j=0;
while(number!=0)
M[j] = number%10; //gan chu so hang dv, chuc, tram, nghin cho ca phan tu mang
number/= 10;
j++;
}
n=j-1; //sau cau lenh cuoi cung j da tang them 1 DV nua nen phai -1 de lay dung gia tri
for(j=n; j>=0; j ) //gui 5 phan tu cua mang ra
putchar(M[j]+ 0x30); //gui cac phan tu cua mang len may tinh
if(t1 == 0)
putchar('A');
if(t2 == 0)
putchar('B');
}
//////////////////////////////////////////
// chuong trinh chinh
void main()
{
unsigned long s;
unsigned int dem;
TR1=1;
RD_ADC = 0; //cho phep co the doc du lieu tu ADC moi luc WR_ADC = 1; //dat chan ADC o muc cao
Trang 14INTR_ADC = 1; //dat INT o muc cao
while(1)
{
for (dem=0;dem<500;dem++) //doc du lieu tu ADC 500 lan
{
WR_ADC = 0;
tre(10);
WR_ADC = 1;
while (!INTR_ADC);
x=P1;
s=s+x;
}
x=s/500; //tinh trung binh cong cua 500 lan doc
dem=s=0; //xoa bien
if(t1 == 0) //neu thang do la 2.5V
{
volt =x*100*5/255; //nhan dien ap len 100 lan de phuc vu cho ham ghisothuc
}
if(t2 == 0) //neu thang do la 25V
{
volt =x*10*500/255; //nhan 10 lan vi da phan ap chia 10 lan
}
ghisothuc(volt);
}
}
2 LËp tr×nh giao diÖn
Option Explicit ' khai bao bien toan cuc
Dim x As String
Dim temp As Integer
Dim dienap As Single
Dim X1 As Integer
Dim Y1 As Integer
Dim counter1 As Integer
Dim array_x(10000) As Integer
Dim array_y(10000) As Integer
Dim ve As Boolean
Dim mo As Boolean
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Const LWA_ALPHA = &H2
Private Declare Function GetWindowLong Lib "user32" Alias
"GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Đề tài: Voltmet điện tử sử dụng cổng nối tiếp Trang