1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

7 274 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 82 KB

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

Nội dung

 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 Da

Trang 1

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à:

Com 1 Địa chỉ Com 2

Interrupt identification register 3FAH 2FAH

o Đặt tốc độ baud

Trang 2

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

Trang 3

PUSH Ax PUSH DX MOV DX,addr

IN AL,DX MOV TEMP,AL POP AX

POP Dx end;

(……….)

o 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:

(……….)

procedure Tform2.setRTS;

var a: byte;

begin a:=nhap(Reg2FC);

Trang 4

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

Trang 5

test6:=nhap(Reg2FD);

test6:=test6 and $01;

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 :

Trang 6

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 :

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 :

Kit vi xử lý

RS-232

Kít vi xử lỳ

Kít vi xử lý

RS232/RS485

RS-485 RS-485

Ngày đăng: 16/11/2015, 11:12

TỪ KHÓA LIÊN QUAN

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

w