PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Giao tiếp cổng COM và LPT (http://www.picvietnam.com/forum/forumdisplay.php?f=44)
-   -   Điều khiển cổng LPT trong Visual C++ (http://www.picvietnam.com/forum/showthread.php?t=1171)

hoanganhtdh1 06-06-2007 11:40 PM

Đ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

ngohaibac 07-06-2007 02:04 AM

1 Attachment(s)
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.

hoanganhtdh1 19-06-2007 12:57 AM

2 Attachment(s)
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.

ngohaibac 27-06-2007 12:01 AM

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 25-07-2007 04:09 PM

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 25-07-2007 04:10 PM

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 25-07-2007 04:10 PM

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 25-07-2007 04:14 PM

Mạch test LPT
 
3 Attachment(s)
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:


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

http://i36.photobucket.com/albums/e4...A/BAC_0058.gif

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 :D.

Chúc các bạn thành công.

kid_1412ls 30-11-2007 12:45 PM

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 08-12-2007 09:14 PM

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 ạ ?

navy 08-01-2008 12:13 AM

Trích:

Nguyên văn bởi ngohaibac (Post 10328)
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!

dongpid64 09-05-2008 08:24 PM

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

uydanh 11-05-2008 10:38 AM

Trích:

Nguyên văn bởi dongpid64 (Post 16079)
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

ittoc 09-10-2008 10:11 AM

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

phonggiahuy 28-03-2009 08:05 PM

a Ngohaibac ơi,e đang làm đề tài giao tiếp LCD với cổng LPT nhưng e down file InterfaceLCD_VC++ V1.0.zip của a về thì thấy tlum hết,a làm ơn chỉ giúp e các bước thực hiên đc ko a.
yahoo:youandme_c5
mail: madkid69@gmail.com


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam