You are on page 1of 41

PARALLEL PORT

Cổng máy in hay còn gọi là cổng LPT, cổng song


song hoặc giao diện Centronic có mặt ở hầu hết
các máy tính PC. Cấu trúc của cổng song song
rất đơn giản với tám đường dẫn dữ liệu, một
đường dẫn mass chung, bốn đường dẫn điều
khiển để chuyển các dữ liệu tới máy in và năm
đường dẫn trạng thái để truyền các thông tin về
trạng thái của máy in ngược trở lại máy tính. Tất
cả các đường dẫn của cổng này đều tương thích
TLL.
PARALLEL PORT
Trên các máy tính PC thông thường các cổng
máy in có địa chỉ cơ sở(Base Address: BA) là
3BCH, 378H,278H,2BCH…trong đó địa chỉ 378H
là địa chỉ thường gặp nhất ở các máy.
PARALLEL PORT
Các đường dẫn của cổng máy in được nối với ba
thanh ghi 8 bit khác nhau: thanh ghi Dữ liệu
(Data), thanh ghi trạng thái(Status) và thanh ghi
điều khiển(Control). Thanh ghi dữ liệu: có địa chỉ
bằng địa chỉ cơ sở, thanh ghi này có 8 đường
dẫn với giao diện hai hướng không đảo, nghĩa là
có thể xuất dữ liệu từ máy tính ra bên ngoài và có
thể nhận tín hiệu từ bên ngoài vào thông qua
thanh ghi này
PARALLEL PORT
thanh ghi Data được nối với các chân từ 2 – 9
trên cổng máy in, tuy nhiên khi ứng dụng trong
điều khiển và đo lường cần chú ý một đặc điểm
là không phải bất kỳ thanh ghi Data trên các cổng
máy nào cũng là giao diện hai hướng, thực tế
cho thấy đa số trên các cổng máy in thanh ghi
này chỉ có thể được sử dụng để xuất dữ liệu, tức
là chỉ có một hướng
PARALLEL PORT
Thanh ghi trạng thái: có địa chỉ bằng địa chỉ cơ
sở +1, là một thanh ghi 8 bit nhưng thực tế chỉ có
5 bit (5 bit cao) được nối với các chân của cổng
bao gồm các chân 10,11,12,13,15
Thanh ghi trạng thái chỉ có thể được truy xuất
theo một hướng.
PARALLEL PORT
Thanh ghi Điều khiển: địa chỉ bằng địa chỉ cơ sở
+2, cũng là một thanh ghi giao diện hai hướng, có
4 bit thấp được nối với các chân 1, 14,16, 17
trong đó đa số là các đường dẫn đảo ( chỉ trừ bit
C2, chân 16).
Tóm lại, với một cổng LPT kém lý tưởng nhất, ta
cũng có ít nhất 12 đường tín hiệu về và 9 đường
xuất tín hiệu. Con số này là đủ cho những ứng
dụng giao tiếp nhỏ và vừa.
PARALLEL PORT
Số nhị phân(Binary), số Thập Lục phân
(Hexadecimal), số Thập phân(Decimal):
Ví dụ: bạn mắc các Led vào Port Data của cổng
LPT như sau:
PARALLEL PORT
Bây giờ bạn muốn cho các Led sáng xen kẻ,
nghĩa là các Led 0,2,4,6 sáng và các Led còn
lại sẽ không sang, như vậy bạn phải xuất ra Port
Data một số có giá trị bao nhiêu ?
Trạng thái các Bit của Port Data phải là:
PARALLEL PORT
Giá trị cần xuất ra Port Data là 01010101, đó là
một số nhị phân. Số nhị phân là số được biểu
diễn chỉ bởi 2 ký tự 0 và 1 (số Bin hay số hệ 2).
Đây là một cách biểu diễn rất phù hợp trong
lĩnh vực kỹ thuật số Một số nhị phân mang một
giá trị được tính theo quy tắc sau:
an ...a1a0 = an * 2 + ... + a1 * 2 + a0 * 2 .
Nếu ta có một số nhị phân mang n chữ số thì giá
trị của số đó sẽ nằm trong khoảng từ 0 đến 2n-1
PARALLEL PORT
ví dụ : 01010101 = 0 * 27 + 1* 26 + 0 * 25 + 1* 2 4
+ 0 * 23 + 1* 2 2 + 0 * 21 + 1* 20 = 85
Như vậy, theo yêu cầu điều khiển như trên, ta sẽ
sử dụng lệnh PortOut của thư viện IO.dll với các
tham số như sau: PortOut &H378, 85
Trong đó 85 là giá trị thập phân được xuất ra,
tương ứng với giá trị nhị phân 01010101, còn
&H378 là địa chi của cổng cần xuất ra
PARALLEL PORT
địa chỉ của Port Data. &H là gì ? đó là một kí hiệu
dùng trong VB chỉ ra rằng con số đi theo sau đó
là một con số Thập Lục phân (Hexadecimal hay
Hex hay hệ 16). Số Thập Lục phân là số được
biểu biễn bởi 16 ký tự 0…9,A,B,C,D,E,F đại diện
cho các giá trị từ 0 đến 15. Việc quy đổi từ một số
hex sang một số thập phân được thực hiện theo
quy tắc sau : an ...a1a0 = an *16 n + ... + a1 *161 +
a0 *16 0 .
PARALLEL PORT
Nếu ta có một số hex mang n chữ số thì giá trị
của số đó sẽ nằm trong khoảng từ 0 đến 16n-1
Ví dụ: FA2 = 15 * 16 2 + 10 * 161 + 2 * 16 0 = 4002
Bạn để ý 16=24, vì vậy 1 chữ số (digit) hex có thể
được sử dụng thay thế cho một số Nhị phân có 4
digit, đồng thời việc quy đổi giữa số hex và số nhị
phân rất dễ dàng, chỉ cần quy đổi từng 4 digit của
số nhị phân, đây chính là ưu điểm lớn nhất của
số hex.
PARALLEL PORT
Sau đây chúng tôi sẽ tóm tắc cách biểu diễn của
16 số đầu tiên dưới dạng số thập phân, nhị phân
và thập lục phân để bạn có thể tham khảo và áp
dụng quy đổi các số bất kỳ khác. Bạn cũng có thể
sử dụng công cụ Calculator (calc.exe) có sẵn
trong Windows để thực hiện các phép quy đổi.
PARALLEL PORT
PARALLEL PORT
Kỹ thuật mặt nạ - Masking:
Kỹ thuật Masking là kỹ thuật “che” hoặc “hiện”
một số Bit mong muốn nào đó trong một hoặc
nhiều thanh ghi. Công cụ để thực hiện kỹ thuật
Masking là các phép toán Logic như: And,Or,
Xor…
PARALLEL PORT
Ví dụ dùng cổng LPT của máy tính để điều khiển
việc ổn định mức chất lỏng cần thiết trong một
bồn chứa, giả sử chỉ dùng thanh ghi điều khiển:
cảm biến mức dưới S1 nối với chân 14, cảm biến
mức trên S2 được nối với chân 1, chân 16 dùng
điều khiển động cơ Bơm, và chân 17 điều khiển
động cơ đóng mở van. Yêu cầu điều khiển chỉ
cần điều khiển động cơ M để mở hoặc tắt Bơm,
khi cảm biến S1 báo “cạn” (S1=0), cho Bơm chạy
(M=1), khi cảm biến S2 báo “đầy” (S2=1) cho
bơm tắt (M=0).
PARALLEL PORT
PARALLEL PORT
Như vậy sơ đồ kết nối thanh ghi điều khiển sẽ
như hình sau:

Vấn đề đặt ra bây giờ là làm sao đọc được trạng


thái của từng Bit để biết trạng thái của từng cảm
biến. Ta sẽ dùng kỹ thuật mặt nạ để “che” các Bit
không cần thiết và “hiện” Bit cần thiết.
PARALLEL PORT
Để đọc trạng thái S1, ta dùng lệnh ValIn= PortIn
&H37A ở đây ValIn là một biến tạm,lệnh trên sẽ
đọc toàn bộ thanh ghi điều khiển vào biến ValIn,
tuy nhiên nếu chỉ dựa vào ValIn ta sẽ không biết
được trạng thái của Bit C1, tức trạng thái của
cảm biến S1 bởi vì ValIn còn chứa trạng thái của
các Bit khác nữa.
PARALLEL PORT
Ở đây ta chỉ quan tâm đến Bit C1 vì vậy ta sẽ
dùng phép Logic And để Masking. Để biết trạng
thái của C1 ta sẽ And ValIn với “mặt nạ” Mask= 2
(00000010), kết quả phép And được giải thích
như sau:
PARALLEL PORT
Kết quả sau khi And chỉ có 2 giá trị: Res=0 tương
ứng C1=0, C1=1 khi Res=2. Nếu bạn muốn kết
quả nhận được chỉ mang 2 giá trị 0;1 bạn dùng
dòng lệnh Res=(ValIn And 2)/2 thay cho dòng
lệnh trên.
PARALLEL PORT
Cơ bản ta đã đọc được trạng thái của Bit C1
(chứa trong biến Res), tuy nhiên cần chú ý Bit C1
là 1 Bit đảo, trạng thái của C1 trái ngược với
trạng thái của cảm biến S1 đặt vào nó, để đảo
trạng thái của biến Res (chứa trạng thái của C1)
cho phù hợp với trạng thái của cảm biến S1 (điều
này thật sự rất cần thiết trong một số trường hợp)
ta dùng Phép Xor để Masking.
PARALLEL PORT
Từ bảng chân trị của phép Xor ta nhận thấy khi
Xor một Bit với 1, trạng thái của Bit đó sẽ đổi, nói
cách khác phép Xor một Bit với 1 chính là phép
“Not” của Bit đó. Vì vậy sau dòng lệnh
Res=Res Xor 1 trạng thái của Res sẽ đảo.
PARALLEL PORT
Ngoài ra trong một số trường hợp Masking ta còn
sử dụng phép Or
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT
PARALLEL PORT

You might also like