PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp cổng COM và LPT

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 06-06-2007, 11:40 PM   #1
hoanganhtdh1
Nhập môn đệ tử
 
hoanganhtdh1's Avatar
 
Tham gia ngày: Jun 2005
Bài gửi: 2
:
Điều khiển cổng LPT trong Visual C++

Giao tiếp cổng máy in (cổng LPT) của máy tính, sử dụng thư viện liên kết INPOUT32. Có ai quan tâm ko nhẩy
hoanganhtdh1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-06-2007, 02:04 AM   #2
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
Bạn download thư viện INPOUT32 tại đây

Giải nén và vào thư mục \inpout32_source_and_bins\inpout32_source_and_bins \binaries\ocx

Trong thư mục đó, tạo một file .bat với nội dung như sau:
Code:
REGSVR32  hwinterface.ocx
Để đăng ký hwinterface. Các bạn có thể download file đính kèm, giải nén và chạy file bac.bat để đăng ký.

Khi đó bạn mở Visual C++. Mở menu Projects-> Add to project-> Components and control và chọn Registered ActiveX Controls và tìm đến hwinterface để cho nó vào projects.

Tiếp theo bạn khai báo và sử dụng lớp này bình thường với tên là: CHwinterface.

Lớp này có 2 hàm dùng để đọc và ghi dữ liệu:
Code:
	short InPort(short Address);
	void OutPort(short Address, short Data);
Chúc bạn thành công.
File Kèm Theo
File Type: zip inpout32_ocx.zip (10.1 KB, 729 lần tải)

thay đổi nội dung bởi: ngohaibac, 07-06-2007 lúc 10:21 AM.
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-06-2007, 12:57 AM   #3
hoanganhtdh1
Nhập môn đệ tử
 
hoanganhtdh1's Avatar
 
Tham gia ngày: Jun 2005
Bài gửi: 2
:
Mình muốn giới thiêu 1 project dùng cổng LPT điều khiển LCD, Qua đó ta biết cách tác động tới từng chân của cổng.
Hình Kèm Theo
File Type: jpg Schematic.JPG (45.2 KB, 255 lần tải)
File Kèm Theo
File Type: zip InterfaceLCD_VC++ V1.0.zip (278.5 KB, 2021 lần tải)

thay đổi nội dung bởi: hoanganhtdh1, 19-06-2007 lúc 01:05 AM.
hoanganhtdh1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-11-2010, 08:26 PM   #4
hatcatk32
Nhập môn đệ tử
 
Tham gia ngày: Nov 2010
Bài gửi: 1
:
Trích:
Nguyên văn bởi ngohaibac View Post
Bạn download thư viện INPOUT32 tại đây

Giải nén và vào thư mục \inpout32_source_and_bins\inpout32_source_and_bins \binaries\ocx

Trong thư mục đó, tạo một file .bat với nội dung như sau:
Code:
REGSVR32  hwinterface.ocx
Để đăng ký hwinterface. Các bạn có thể download file đính kèm, giải nén và chạy file bac.bat để đăng ký.

Khi đó bạn mở Visual C++. Mở menu Projects-> Add to project-> Components and control và chọn Registered ActiveX Controls và tìm đến hwinterface để cho nó vào projects.

Tiếp theo bạn khai báo và sử dụng lớp này bình thường với tên là: CHwinterface.

Lớp này có 2 hàm dùng để đọc và ghi dữ liệu:
Code:
	short InPort(short Address);
	void OutPort(short Address, short Data);
Chúc bạn thành công.
bạ tạp của em là diều khiển 4 role bàng 4 nút nhấn ngoài thông qua cổng lpt


em lam roj tuy chuong trinh ko bao lỗi nhưng không chạy dược (MFC c++ )
code của em đại loại thế này mong anh giup em sửa lỗi với.em cảm ơn nhiều!
#define DATA 0x378
#define STATUS 0x379




//////
int reg;
reg=STATUS;
if((reg&0x10)==0)
{
Out32(DATA,0x01);
}
hatcatk32 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-06-2007, 12:01 AM   #5
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
Tất cả các tài liệu về LPT mình sẽ upload tại đây:
http://www.esnips.com/web/ParallelPortLPT

Hiện tại bao gồm:
  • Parallel Port Complete(Jan Axelson).pdf
  • inpout32_source_and_bins.zip
  • LPT InpOut32.zip
  • GetPortAddress.zip

Chúc các bạn thành công.
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-07-2007, 04:09 PM   #6
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
Tài liệu, giới thiệu cổng song song, các dạng cổng

Đầu tiên, tôi xin đưa cho các bạn tài liệu Parallel Port Complete của Jan Axelson:
http://www.esnips.com/web/ParallelPortLPT/ (vào và download về nhé).

Website: www.lvr.com mục Parallel Port
**************
1. Định nghĩa cổng song song

Cổng song song( Parallel Port) là tập hợp các đường tín hiệu mà vi xử lí hoặc là CPU dùng để trao đổi dữ liệu với các thiết bị, thành phần khác. Điển hình nhất của loại giao diện này là dùng để giao tiếp với máy in, modems, keyboards và màn hình,.. Cổng song song truyền nhiều bít một lần, trong khi cổng nối tiếp chỉ truyền một bít một ở một thời điểm ( nhưng có thể truyền 2 chiều ở cùng một thời điểm).

Cổng song song của PC ban đầu có 8 đường ra, 5 đường vào và 4 đường vào ra. Những đường này là đủ để giao tiếp với nhiều dạng của các thiết bị ngoại vi. Ở nhiều máy tính mới hơn, 8 đường ra có thể thực hiện chức năng như là đường Input để đạt giao tiếp với tốc độ cao với máy scaner, thiết bị và các thiết bị khác gửi dữ liệu tới PC.

Cổng song song đã được thiết kế như là một cổng máy in.

2. Các dạng cổng

Một số nhà sản xuất máy tính đã giới thiệu các phiên bản cải tiến của cổng song song. Cổng mới này tương thích với thiết kế cũ nhưng có thêm nhiều chức năng mới, chủ yếu là để tăng tốc độ.

Tốc độ là một yếu tố quan trong bởi vì máy tính và thiết bị ngoại vi đã trở lên nhanh hơn rất nhiều, những công việc mà máy tính làm được đã phức tạp hơn, và tổng dung lượng thông tin mà chúng cần trao đổi tăng lên. Cổng song song truyền thống là đủ nhanh lắm rồi cho truyền byte dưới dạng kí tự mã ASCII tới một ma trận điểm hoặc là máy printer kiểu cũ. Nhưng với printer hiện đại cần nhận nhiều thông tin nhiều thông tin quan trọng hơn để in một trang như nhiều font, đồ hoạ chi tiết, thường trong màu sắc. Với tốc độ cao máy tính có thể truyền thông tin, cũng với tốc độ cao này máy tin có thể bắt đầu quá trình và in kết quả.

2.1. Original( SPP): dạng máy in chuẩn

SPP - Standard Parallel Port : cổng song song chuẩn
Cổng song song trong các máy PC cổ điển thiết kế dựa trên một giao diện máy in vẫn đang tồn tại là Centronic.

SPP có thể truyền 8 bít một lần tới thiết bị ngoại vi, dùng giao thức giống như được dùng trong giao diện Centronic gốc. SPP không có đường nhận dữ liệu rộng 1 byte, nhưng khi truyền từ PC tới thiết bị ngoại vi, SPP có thể dùng Nibble Mode để truyền mỗi lần 4 bít. Nibble Mode thì chậm nhưng đã trở thành phổ biến như là một cách để dùng cổng song song cho Input.

2.2. Dạng PS/2 ( Vào ra 2 chiều đơn giản - Simple Bidirectional)

Một sự cải tiến sớm cho cổng song song là cổng dữ liệu vào ra 2 chiều( Bidirectional Port) được đưa ra trong máy tính IBM: dạng PS/2. Cổng vào/ra cho phép một thiết bị ngoại vi truyền 8 bít một lần tới PC. Nhóm PS/2 bao gồm các cổng song song có một cổng dữ liệu vào ra nhưng không hỗ trợ các mode EPP hoặc ECP( sẽ giới thiệu dưới đây). Byte mode là một giao thức truyền dữ liệu 8 bít mà cổng dạng PS/2 có thể dùng để truyền dữ liệu từ thiết bị ngoại vi tới PC.

2.2.1. EPP

EPP( enhanced parallel port - cổng song song nâng cao) là cổng được phát triển ban đầu bởi nhà sản xuất chip Intel, sản xuất máy tính Zenith, và Xircom – nhà sản xuất sản phẩm mạng song song. Như một cổng dạng PS/2, các đường dữ liệu là các đường vào ra. Một EPP có thể đọc hoặc ghi 1 byte dữ liệu trong một chu kì của bus mở rộng ISA hoặc 1 micro giây, bao gồm bắt tay, trong khi với SPP hoặc PS/2 thì cần 4 chu kì. Một EPP có thể chuyển đổi chiều nhanh chóng, vì thế nó rất là hiệu quả khi dùng với đĩa hoặc là thiết bị dài và các thiết bị khác truyền dữ liệu trong cả 2 chiều. Một EPP có thể dùng thay cho SPP và một vài EPP có thể dùng thay cho cổng dạng PS/2.

2.2.2. ECP

ECP(Extended capabilities port - cổng có khả năng mở rộng) được đưa ra lần đầu tiên bởi Hewlett Packard và Microsoft. Giống với EPP, ECP cũng có các đường dữ liệu vào ra và có thể truyền dữ liệu ở tốc độ của bus ISA. ECP có bộ đệm và hỗ trợ DMA( direc memory access – truy cập bộ nhớ trực tiếp) truyền và nén dữ liệu. Các bộ truyền nhận kiểu ECP rất hữu ích cho printer, và các thiết bị ngoại vi khác truyền các khổi dữ liệu lớn. Một ECP có thể ECP có thể dùng như là một cổng SPP hoặc PS/2 và nhiều ECP có thể dùng thay cho cổng EPP rất tốt.

2.3. Các port đa chế độ (Multi-mode Ports).

Rất nhiều cổng mới hơn là các cổng với Multi-mode có thể cạnh tranh một vài hoặc tất cả các dạng trên. Các cổng này thường bao gồm các lựa chọn cấu hình để có thể sử dụng tất cả các dạng cổng hoặc cho phép một chế độ nhất định trong khi khóa các chế độ khác.

Chúc các bạn thành công.
__________________
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-07-2007, 04:10 PM   #7
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
3. Các tài nguyên hệ thống

Cổng song song dùng nhiều tài nguyên của hệ thống. Tất cả các cổng dùng một dãy địa chỉ, cho dù số lượng và vị trí của các địa chỉ thay đổi. Nhiều cổng có một mức IRQ (Interrupt request) xác định, và các cổng ECP có thể có một kênh DMA xác định. Các tài nguyên dành cho một cổng không thể dùng cho các thành phần khác của hệ thống, các cổng song song khác.

3.1. Địa chỉ (Addressing)

Cổng song song chuẩn dùng ba địa chỉ liền nhau, thường là một trong 3 dãy sau:

  • 3BCh, 3BDh, 3EEh
  • 378h, 379h, 37Ah
  • 278h, 279h, 27Ah


Địa chỉ đầu tiên trong dãy là địa chỉ gốc (base address) của Port thương được gọi là địa chỉ thanh ghi Dữ liệu (Data register) hoặc là địa chỉ của cổng.

Địa chỉ thứ 2 là địa chỉ của thanh ghi trạng thái (Status register).

Địa chỉ thứ 3 là địa chỉ của thanh ghi Điều khiển (Control register).

Chú ý: Các cổng EPP và cổng ECP dành một số địa chỉ bổ sung cho mỗi cổng.

EPP thêm 5 thanh ghi tại địa chỉ Base address + 3 tới Base address + 7, còn ECP thêm 3 thanh ghi tại địa chỉ base address + 400h tới base address + 402h.

Ví dụ: với Base address = 378h thì các thanh ghi của cổng EPP ở tại địa chỉ 37Bh tới 37Fh, và các thanh ghi cổng ECP tại địa chỉ 778h tới 77Fh.

Trong các máy tính PC cũ các cổng song song có Base address tại 3BCh. Nhưng trong các máy tính hiện nay phần lớn có Base address = 378h. Tuy nhiên tất cả 3 dãy địa chỉ là dành riêng cho các cổng song song, và nếu phần cứng của cổng cho phép bạn có thể thiết lập cổng song song ở bất cứ địa chỉ nào trong 3 địa chỉ trên.

Note:
Thế nhưng, bình thường bạn không thể có một cổng EPP có base address = 3BCh bới vì các thanh ghi EPP bổ sung tại địa chỉ này có thể được dùng cho hiển thị màn hình (video display).

Cổng PS/2 có 3 thanh ghi bổ sung ở địa chỉ base address + 3 tới base address + 5, và cho phép base address 1278h hoặc 1378h.

Thông thường, DOS và Windows coi cổng đầu tiên theo thứ tự số là LPT1, thứ 2 là LPT2, thứ 3 là LPT3. LPT1 thường ở vị trí 378h nhưng nó có thể ở một trong 3 địa chỉ. LPT2 nếu tồn tại có thể ở vị trí 378h hoặc 278h. LPT3 chỉ có thể ở vị trí 278h.

(còn tiếp).
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-07-2007, 04:10 PM   #8
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
Các ngắt

3.2. Các ngắt (Interrupts)

Phần lớn các cổng song song coâ khả năng phát hiện tín hiệu ngắt từ thiết bị ngoại vi. Thiết bị ngoại vi có thể dùng ngắt để thông báo rằng đã sẵn sàng để nhận byte hoặc có một byte để truyền.

Để dùng ngắt, cổng song song phải có một mức yêu cầu ngắt (Interrupt request - IRQ) xác định.

Theo qui ước LPT1 dùng IRQ7 và LPT2 dùng IRQ5. Thế nhưng IRQ5 được dùng bởi nhiều card âm thanh, và bởi vì các mức IRQ không được dùng bởi các thành phần hệ thống nào rất là hiếm trong hệ thống, thậm chí IRQ7 có thể được dành cho các thiết bị khác. Một vài cổng cho phép chọn các mức IRQ khác 2 mức trên.

Rất nhiều driver máy in hoặc nhiều ứng dụng và thiết bị khác truy nhập cổng song song không yêu cầu ngắt cổng song song. Nếu bạn không chọn mức báo ngắt cho cổng song song thì cổng này vẫn hoạt động trong hầu hết các trường hợp rất là hiệu quả và bạn có thể dành mức báo ngắt IRQ cho công việc khác.


3.3. Các kênh truy nhập bộ nhớ trực tiếp (DMA chanels).


DMA : direct memory access

Các cổng ECP có thể truy nhập bộ nhớ trực tiếp (DMA) đối với dữ liệu tại cổng song song. Khi DMA tro đổi dữ liệu thì CPU không cần kiểm soát đường truyền và có thể làm các công việc khác vì thế trao đổi dữ liệu bằng DMA làm tăng khả năng hoạt động cho toàn bộ hệ thông. Yêu cầu để dùng DMA là các cổng này phải có kênh DMA xác định, thay đổi từ 0 đến 3.
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-07-2007, 04:14 PM   #9
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
Mạch test LPT

Chào các bạn.

Mình đính kèm mạch giao tiếp cổng LPT với PIC16F877A hay là con PIC18 40 chân nào cũng good hết.

Hình ảnh mạch in:



Hình 1: Mạch in

Chương trình test nằm trong file LPT Tester. Giao diện chương trình:



Hình 2: Giao diện chương trình test.


Ngoài ra còn có source code - đĩa đính kèm của quyển Parallel Port Complete nữa.

Viết chương trình cho LPT không khó. Mình sẽ upload chương trình đơn giản sau. Để mình làm ngon lành rùi cho code lên ngay. Ai có ý kiến giơ tay nào .

Chúc các bạn thành công.
File Kèm Theo
File Type: rar LPT Test_Sch and PCB.rar (253.5 KB, 1311 lần tải)
File Type: rar LPT Tester.rar (189.4 KB, 1219 lần tải)
File Type: zip Parallel Port Complete - source.zip (158.0 KB, 1341 lần tải)
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-01-2008, 12:13 AM   #10
navy
Đệ tử 2 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 34
:
Trích:
Nguyên văn bởi ngohaibac View Post
Chào các bạn.

Mình đính kèm mạch giao tiếp cổng LPT với PIC16F877A hay là con PIC18 40 chân nào cũng good hết
.................................................. ..

Chúc các bạn thành công.
Bạn đã làm giao diện VB tạo các nút bấm để điều khiển 1 mạch PIC 877A nào chưa? Post lên cho anh em học và làm theo mới!Thankyou!

thay đổi nội dung bởi: ngohaibac, 11-01-2008 lúc 01:40 AM.
navy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-11-2007, 12:45 PM   #11
kid_1412ls
Nhập môn đệ tử
 
Tham gia ngày: Mar 2007
Bài gửi: 7
:
Question Em xin lạc đề một chút !

Vấn đề của em là lập trình ghép nối máy tính qua cổng máy in (LPT) , cụ thể là mở rộng ghép nối máy tính thu tín hiệu tương tự sử dụng ADC 8 bit 0809.
Em chưa biết mình phải làm kiểu gì, bác nào có thể hướng dẫn em sơ sơ chút không ạ, nhất là phần lập trình bằng C++ ạ ! Thank!
kid_1412ls vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-12-2007, 09:14 PM   #12
kid_1412ls
Nhập môn đệ tử
 
Tham gia ngày: Mar 2007
Bài gửi: 7
:
Question các bác quan tâm hộ em chút.

Không bác nào có thể hướng dẫn em chút ạ ?
kid_1412ls vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-05-2008, 08:24 PM   #13
dongpid64
Nhập môn đệ tử
 
Tham gia ngày: Apr 2008
Bài gửi: 1
:
Cho em hỏi, nếu mình truyền dữ liệu theo kiểu nối tiếp thì phải qua con MAX232 để chuyển đổi điện thế, vậy trong cách giao tiếp với mày tính theo kiểu song song thì mình dùng IC nào để làm việc này.Anh có thể cho em xin sơ đồ nguyên lý (kèm giải thích càng tốt) được không?
thanks
dongpid64 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2008, 10:38 AM   #14
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Trích:
Nguyên văn bởi dongpid64 View Post
Cho em hỏi, nếu mình truyền dữ liệu theo kiểu nối tiếp thì phải qua con MAX232 để chuyển đổi điện thế, vậy trong cách giao tiếp với mày tính theo kiểu song song thì mình dùng IC nào để làm việc này.Anh có thể cho em xin sơ đồ nguyên lý (kèm giải thích càng tốt) được không?
thanks
Mình mới được học vài tiết về giao tiếp qua LPT nên biết chút xíu. Ngõ ra cổng LPT 5V nên nối trực tiếp với Vi xử lý luôn, không cần qua bất cứ IC chuyển đổi nào. Còn nếu bạn nối vào PLC 24V thì phải qua con optocoupler chuyển mức 5V qua 24V.
Mới biết nhiêu đó thôi, để học thêm chút ít nữa đã rồi trao đổi tiếp. Heheheh
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-10-2008, 10:11 AM   #15
ittoc
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 1
:
có ACE nào đã từng viết soft điều khiển 20 LED qua cổng com chưa. Nếu có ý tưởng gì góp ý giúp em. E lần đầu tập tành, đang tích cực tìm hiểu.Vì mới học KT số thấy hay hay nên ...... Liên lạc em nha YM : Tinhco_2101
Thank
ittoc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 12:16 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam