- Image: hiển thị biểu tượng hoặc hình ảnh cho mục chọn.
n tê sigal (dùg cho hardware)
quản lý và điều khiển quá trình trao đổi thông tin này. DATA port có 8 pins tức là 1 bytes.
STATUS port là nơi hiển thị các quá trình vận hành của parallel port. Một ví dụ đơn giản là giả sử bạn muốn in một bài viết ra printer, nhưng khi nhấn nút "print" thì lại thấy máy vi tính hiển thị một thông báo hết giấy! Trên thực tế phía sau những hành
động này là một chuỗi phối hợp giữa software và hardware. Khi bạn click "print" tức là bạn kích hoạt một trong những pins của CONTROL port bằng software để bảo cái printer in bài ra. Nhưng trước khi thực hiện việc in printer cũng tự biết nó hết giấy và tự
kích hoạt một trong số những pins của STATUS port để báo cho computer biết là hết giấy. Kết quả là software điều khiển quá trình in kiểm tra (trước khi in) thấy được cho nên nó hiện thông báo hết giấy cho bạn. Nhiều hoạt động tương tự như printer chưa on, printer hết mực, printer bị kẹt giấy...cũng do phối hợp giữa những pins này tạo nên.
Bảng địa chỉ LPT Port:
Port Address Address
Chú Thích
3BCh - 3BFh dùng cho prallel port vốn dính vào Video Card (cách cũ)
378h - 37Fh khu vực memory thường dùng cho LPT 1 278h - 27Fh khu vực memory thường dùng cho LPT 2
....
6.3 Chức năng các Pin trong parallel port (xem chi tiết [5])
Châ
n tên signal(dùng cho hardware) hardware) Direction/t ype (nhìn từ PC) Tên signal và thứ tự của bit (dùng cho software)
Normal signal line function
1 -STROBE OC/Pullup* Control register bit 0
kích hoạt thông báo gởi hoặc nhận data, 0 là đọc, 1 là viết
113
2 D0 hai chiều Data register bit
0 bit 0 chứa data 3 D1 hai chiều Data register bit 1 bit 1 chứa data 4 D2 hai chiều Data register bit 2 bit 2 chứa data 5 D3 hai chiều Data register bit 3 bit 3 chứa data 6 D4 hai chiều Data register bit 4 bit 4 chứa data 7 D5 hai chiều Data register bit 5 bit 5 chứa data 8 D6 hai chiều Data register bit 6 bit 6 chứa data 9 D7 hai chiều Data register bit 7 bit 7 chứa data 10 -ACK Input Status register
bit 6
Pulsed low by printer to acknowledge data byte
Rising (usually) edge causes IRQ if enabled 11 BUSY Input Status register
bit 7 kích hoạt khi printer đang bận (busy) 12 NOPAPER Input Status register
bit 5 kích hoạt khi printer hết giấy 13 SELECTED Input Status register
bit 4 kích hoạt khi printer đang hoạt động 14 -AUTOFEED OC/Pullup Control register
bit 1
kích hoạt thông báo data đã sẵn sàng để đọc hoặc viết
15 -ERROR Input Status register
bit 3 kích hoạt khi printer bị lổi (vì nhiều lý do) 16
-
INITIALIZE ZE
OC/Pullup Control register bit 2 kích hoạt để printer reset lại vị trí ban đầu 17 -SELECT OC/Pullup Control register bit 3 kích hoạt để đánh dấu printer nhận được valid address 18 Ground
... Ground chân (18-25) bỏ trống, dùng tùy ý 25 Ground
Chú ý: Ở một số dòng máy Dataport chỉ có chiều output * OC/Pullup: Ngõ ra để hở cần mắc thêm điện trở kéo lên.
114
6.4Viết chương trình truyền nhận song song đơn giản trên VB.NET (xem chi tiết [6]) tiết [6])
Trong VB hỗ trợ hàm xuất nhập qua cổng LPT là hàm inpout32.dll
Ta có thể tải hàm này từ internet vào google gõ tên hàm vào hoặc truy cập trực tiếp vào đường dẫn sau
http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.htm l
Sau khi tải về giải nén và mở thư mục:
inpout32_source_and_bins\inpout32_source_and_bins\binaries\Dll
Hình 6.2
Copy file inpout32.dll bỏ vào thư mục C:\WINDOWS\system32 Tiếp theo mở một dự án VB và tạo một giao diện như hình sau:
Hình 6.3: Giao diện giao tiếp LPT đơn giản
Bước kế tiếp là tạo 1 module để liên kết với thư viện liên kết động inpout32.dll
vừa tải về. Cách tạo một module như sau: trên thanh menu của VB vào Project -> Add module cửa sổ sau hiện ra
115
Click chọn nút Add, cửa sổ soạn thảo code cho module hiện ra, đánh đoạn code sau đây vào:
Ví dụ: Đoạn code cho Module giao tiếp LPT
Module porting
PublicDeclareFunction Inp Lib"inpout32.dll"Alias"Inp32" _ (ByVal PortAddress AsInteger) AsInteger
PublicDeclareSub Out Lib"inpout32.dll"Alias"Out32" _ (ByVal PortAddress AsInteger, ByVal Value AsInteger)
EndModule
Đoạn code trên khai báo cho chương trình biết đang sử dụng hàm Inport và outport trong thư viện "inpout32.dll"
Trở lại giao diện form
Click vào nút READ và viết lệnh sau: Ví dụ:
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
'Declare variables to store read information and Address values
Dim intAddress AsInteger, intReadVal AsInteger
'Get the address and assign
intAddress = 888 'Địa chỉ thanh ghi dữ liệu 378H 'Read the corresponding value and store
intReadVal = porting.Inp(intAddress) TextBox1.Text = intReadVal.ToString()
EndSub
Click vào nút WRITE và viết lệnh sau: Ví dụ:
PrivateSub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click Dim intVal2Write AsInteger
'Read the corresponding value and store
intVal2Write = Convert.ToString(TextBox1.Text) 'porting is the name of the module
porting.Out(888, intVal2Write) 'Địa chỉ thanh ghi dữ liệu 378H
EndSub
116
- Ví dụ trên trình bày việc ghi và nhận dữ liệu qua Data Register của cổng LPT. Ngoài ra ta có thể tác động đến các thanh ghi khác như Control Register, Feedback Register.
- PortAddress: là địa chỉ của thanh ghi dữ liệu, cũng là địa chỉ của cổng LPT - PortAddress+1: là địa chỉ của thanh ghi Feedback Register
- PortAddress+2: là địa chỉ của thanh ghi Control Register.
Như ví dụ trên cổng LPT của ta có địa chỉ 378H (hệ DEC là 888), vậy nếu thao tác trên Data Register ta chọn địa chỉ 888, Feedback Register: 889, Control Register:890
Hình 6.5: Giao diện một chương trình mẫu
6.5 Phần cứng giao tiếp (xem chi tiết [7])
- Khi ghép nối giữa máy tính và thiết bịđiều khiển cần phải qua IC đệm để tránh hư
hỏng main máy tính do chập mạch hay những sự cố khác. IC đệm hay dùng trong giao tiếp LPT là 74LS245.
117
Hình 6.7: Sơđồ giao tiếp điều khiển 8 led dùng IC đệm
Luyện tập trên lớp Câu hỏi lý thuyết