Tải bản đầy đủ (.doc) (7 trang)

CHƯƠNG 5 GIÁO TIẾP máy TÍNH với VI xử lý

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (78.94 KB, 7 trang )

CHƯƠNG V:

Giao Tiếp Máy Tính Với Vi Xử Lý.

I. Truyền nhận qua cổng nối tiếp :
Việc truyền nhận qua cổng nối tiếp được thực hiện bởi UART. Nguyên
tắc cho chip UART hoạt động như sau:
 Để truyền đi một ký tự, đầu tiên ký tự đó sẽ được đưa vào thanh ghi đợi
truyền ( Transmit Holding Register ), sau đó được đưa qua thanh ghi dòch của bộ
phát ( transmit Shift Register ). Sau khi ký tự trước đã truyền xong, từng bit của
ký tự đươcï truyền sẽ dòch vào kênh dữ liệu.
 Khi nhận một ký tự, đầu tiên các bit của nó lần lượt được nạp vào thanh
ghi dòch của bộ thu ( Transmit Shift Register), sau đó chúng được đưa vào thanh
ghi dữ liệu của bộ thu ( Receive Data Register ) sau khi đã loại bỏ các bit start,
stop, parity.
 Để thực hiện việc truyền dữ liệu qua cổng nối tiếp ta phải thực hiện các
bước sau:
o Chọn cổng truyền Com 1, hay Com 2. Đòa chỉ của Com 1 thường là
3F8H, còn Com 2 là 2E8H. Đối với một số loại máy tính thì đòa chỉ của cổng
Com có thể vào BIOS để set lên, nên khi viết chương trình truyền cần vào
BIOS để xem đòa chỉ cổng Com cụ thể. Nếu ta chọn COM 1 là 3F8 H, Com 2 là
2F8 H thì đòa chỉ các thanh ghi khác là:
Thanh ghi
Data register
Interrupt enable register
Interrupt identification register
Line control register
Modem control register
Line status register
Modem control register
o Đặt tốc độ baud



Đòa chỉ
Com 1
3F8H
3F9H
3FAH
3FBH
3FCH
3FDH
3FEH

Đòa chỉ
Com 2
2F8H
2F9H
2FAH
2FBH
2FCH
2FDH
2FEH


o Đặt cấu hình truyền : data bit, stop bit, parity (em chọn 8 bit data, 1 bit
stop, không có parity).
o Cho phép ngắt nếu sử dụng.
 Để thực hiện việc truyền dữ liệu trước hết chúng ta phải khởi động cổng
COM, sau đó thực hiện việc truyền phát với chương trình truyền và phát trình
bày ở dưới đây dược viết theo kiểu API:
o Chương trình khởi động cổng COM: Chọn Com 2 với đia chỉ 2F8H để
thực hiện việc truyền dữ liệu. Cần chú ý đến Bit DLAB.

(………………………………………………………………………….)
const
pathsl ='c:\my documents\delphi\';
com2=$2F8;
Reg2F8=com2+0;
Reg2F9=com2+1;
Reg2FA=com2+2;
Reg2FB=com2+3;
Reg2FC=com2+4;
Reg2FD=com2+5;
(………………………………………………………………………….)
procedure Tform2.Initcom;
begin
xuat(Reg2FB,$80);{DLAP=1}
xuat(Reg2F8,$30);{baudrate=2400}
xuat(Reg2F9,$00);{khong su dung ngat}
xuat(Reg2FB,$03);{8 bit data, 1 bit stop, no parity}
end;
(………………………………………………………………………….)
o Nhập dữ liệu với hàm nhập viết bằng pascal.
(………………………………………………………………………….)
function Tform2.nhap(addr:word):byte;
var
TEMP : byte;
begin
asm


PUSH Ax
PUSH DX

MOV DX,addr
IN AL,DX
MOV TEMP,AL
POP AX
POP Dx
end;
(………………………………………………………………………….)
Xuất dữ liệu với hàm xuat:
(………………………………………………………………………….)
procedure Tform2.xuat(addr:word;data:byte);
begin
asm
PUSH AX
PUSH DX
MOV DX,addr
MOV AL,DATA
OUT DX,AL
POP AX
POP DX
end;
end;
(………………………………………………………………………….)
o Trong việc truyền dữ liệu nếu sử dụng các tín hiệu RTS, CTS … thì
chúng ta cần phải viết chương trình cho chúng . Trong việc truyền tín hiệu cho
đề tài của em có sử dụng tín hiệu RTS, được viết như sau:
(………………………………………………………………………….)
o

procedure Tform2.setRTS;
var

a: byte;
begin
a:=nhap(Reg2FC);


a:=a or $02;
xuat(Reg2FC,a);
end;
procedure Tform2.RESETRTS;
var
a : byte;
begin
a:=nhap(Reg2FC);
a:=a and $FD;
xuat(Reg2FC,a);
end;
(………………………………………………………………………….)
 Có hai phương pháp để điểu khiển việc thu phát dữ liệu qua UART:
phương pháp hỏi vòng và phương pháp tạo ra một trình điều khiển tạo ngắt.
Phương pháp hỏi vòng chờ dữ liệu nhận xong hoặc phát xong, tốc độ chậm
khoảng 34.8 Kbps.
o Phát ký tự: Với phương pháp hỏi vòng, khi gởi đi 1 ký tự ta phải kiểm
tra xem thanh ghi đợi truyền có rỗng hay không bằng cách xem Bit 6 của thanh
ghi LSR ( Line Status Register ) có bằng một hay không. Chương trình viết cụ
thể bằng Delphi 5.0 như sau:
(…………………………………………………………)
repeat
test3:=nhap(Reg2FD);
application.ProcessMessages;
until (test3 and $40)=$40;

xuat(Reg2F8,t);
(…………………………………………………………)
o Để thu một ký tự : Để biết có ký tự vào hay chưa kiểm bit 0 của thanh
ghi LSR ( Line Status Register ). Nếu bằng ‘1’ thì có một ký tự nhận vào. Với
chương trình cụ thể viết như sau:
(………………………………………………………………………….)
repeat
begin


test6:=nhap(Reg2FD);
test6:=test6 and $01;
end;
until (test6=$01);
(………………………………………………………………………….)
 Tuy nhiên ta có thể sử dụng nhũng cách khác để thực hiện việc truyền dữ
liệu với phương pháp đơn giản hơn về giải thuật.
Sau đây là một phương pháp có thể sử dụng mà em tham khảo được trong
giáo trình Lập trình ghép nối máy tính trong Windows của tác giả Ngô Diên
Tập
Để thực hiện việc mở cổng Com ta chỉ việc gõ một lệnh đơn giản là
OpenCom(pchar(‘còm:9600,N,8,1’));
Để truyền dữ liệu đi:
SendByte();
Để nhận dữ liệu về:
Temp:=ReadByte;
Xuất trực tiếp ra các đường dẫn
DTR();
RTS();


Dể thực hiện được nhũng lệnh trên trong Delphi chúng ta phải có một tệp tin tài
nguyên hỗ trợ có tên là port.dll do tác giả cung cấp. Sau đó ta phải soạn một
unit (được chỉ dẫn rất rõ trong giáo trình) để giúp Delphi nhận ra được tài
nguyên này. Hơi rắc rối một tý nhưng mà bù lại ta sẽ gặp rất nhiều thuận lợi
trong lập trình.
Trong luận văn này, em sử dụng một phương pháp khác đó là dùng
MSComm. Phương pháp này lập trình rất đơn giản và hỗ trợ rất mạnh và được
nhiều người sử dụng. Trong Visual Basic MSComm đã được nhà lập trình cung
cấp sẵn. Còn trong Delphi muốn sử dụng thì ta phải” dùng ké” tài nguyên này
của VB bằng cách copy têp tin “mscom.ocs” vào trong system của Window sau
đó vào Component của Delphi để khai báo.
Về phương pháp khai báo và sử dụng sẽ đươc trình bày cụ thể ở trong
phần phụ lục của em.
II. Các phương pháp kết nối :


1. Kết nối máy tính với một Kit vi xử lý: Khi máy tính giao tiếp với
một kít vi xử lý thì ta chỉ dùng RS-232 là đủ , vì nó cho phép chuyển đổi từ
+12V đến +5V phù hợp với nguồn cung cấp cho kit vi xử lý. Nhưng điểm hạn
chế của phương
pháp này là khoảng cách truyền ngắn , tối đa chỉ 15 m. Biểu diễn giao tiếp ở
hình dưới :
RS-232

Kit vi xử


2. Kết nối máy tính với N (tối đa N=32) kít vi xử lý :
 Để kết nối máy tính với nhiều vi xử lý chúng ta phải thực hiện các bước
chuyển đổi sau :

o Chuyển đổi từ chuẩn RS-232 sang RS-485 để có thể truyền tín hiệu trên
khoảng cách lớn khoảng 1.2km.
o Chuyển đổi từ RS-485 sang RS-485 sang TTL để phù hợp với áp vào
của vi xử lý.
 Mức điện áp:
o RS-232 truyền theo kiểu không cân bằng ( áp lệch so với đất ).
o RS-485 truyền theo kiểu cân bằng ( điện áp sai lệch giữa hai dây).
o RS-232 : -3V  -12V : mức logic 1.
+3V +12V :mức logic 0.
o RS-485 : VA –Vb = -1.5V -5V : mức logic 1.
VA –VB= +1.5V+5V : mức logic 0.
 Hình vẽ minh họa :
RS232/RS485

RS-485
Kít vi xử
lỳ
RS-485
Kít vi xử





×