sonyps4.ru

Что такое «LPT» порт и для чего он нужен? Параллельный порт компьютера.

Не смотря на то, что на сегодняшний день прочно вошел в моду USB интерфейс - порт, для радиолюбительских целей LPT порт и поныне остается достаточно востребованным. Ведь на самом деле, не так уж и важно каким образом и через какой порт, будет происходить управление внешними устройствами от компьютера, важен результат. Почему я решил остановиться на изучении LPT порта? Ответ прост, это достаточно доступный и легко осваиваемый в плане программирования порт, для новичков, это пожалуй не плохое практическое руководство по освоению LPT, а в дальнейшем и других портов - интерфейсов. В данной статье, я постараюсь детально ознакомить начинающих радиолюбителей - программистов с принципами программирования LPT порта. Практическое программирование, будет показано опираясь на языки программирования Паскаль и Делфи. От вас требуются, базовые знания языка Паскаль и Делфи, ну и конечно же радиоэлектроники, в пределах 10 - ти уроков представленных на сайте.

Что такое LPT-порт?

LPT порт, это то место в компьютере, куда подключается принтер. Но туда можно воткнуть ещё много чего интересного. В том числе и придуманные вами схемы. У меня, например, через LPT порт, включался свет в комнате, реализовано управление поворотным уст-вом антенны и много было проведено других экспериментов (измерение некоторых параметров радиосхем с использованием порта и пр.).

Так выглядят разъемы на компьютере и соединительные разъемы.

Направление

Сигнал

Для простых схем управления нам понадобятся выводы:

2 - 9 - это выходы Data0-7. 18 - 25 - это земля (минус). Обычно(не всегда) они соединены с корпусом компьютера. Это основной набор контактов, необходимый для изготовления собственных схем. Также хочу обратить внимание на вывод - это "Data Strobe". Как я понял, положительный сигнал на этом выходе говорит устройству, что нужно произвести чтение очередной команды. Если мы не запитаем этот выход программно, то принтер просто не будет обращать внимания на остальные выходы. Для ввода информации в порт используются выводы 10-13, 15. Подробнее позже. Выходы порта могут принимать только 2 состояния - log0 и log1. При включении компьютера состояния выходов быстро меняются, потом переходят в log0. В зависимости от типа материнской платы один-два выхода могут перейти в log1. Далее, при загрузке ОС Windows состояния входов могут снова измениться. После окончания загрузки система не трогает выходы пока не начнется печать или "поиск оборудования. Примеры схем для отладки программ при работе с LPT портом и не только. В этом разделе, я попытаюсь привести несколько примеров схем управляемых при помощи LPT порта. Думаю, что этих схем вполне хватит для изучения принципов работы порта. Когда я начал программировать LPT порт, я спаял себе не большую схемку. Мне кажется, что это самый простой и самый наглядный пример для изучения, советую, не откладывая в долгий ящик спаять себе такую же схемку. Она нам пригодится на протяжении всех занятий:

Все резисторы на схеме по 270 - 470 ом, в зависимости от выбранных светодиодов. Резисторы здесь ограничивают потребляемый ток. По стандарту напряжение между сигнальным выводом и землей должен быть в не более 2,4V - 2.6 mA. Те. очень мало, но на самом деле современные материнские платы рассчитаны на большую нагрузку и очень часто имеют защиту от КЗ. В любом случае, с портом нужно обращаться очень аккуратно, т.к. без него материнская плата компьютера может вообще отказаться работать. Вот самая простая схема подключения реле:

Думаю, что объяснять здесь ничего не нужно. Data - это один из выходов LPT порта, например, вывод 2 (Data-0). Если на нем появится log1, транзистор откроется, сработает реле K1 и подключит какую-то более мощную нагрузку.. В этой схеме LPT порт напрямую подключен к транзистору и в случае его пробоя на выходе data может оказаться опасное для порта напряжение. Чтобы защитить порт нужно использовать гальваническую развязку. Схема с применением оптопары.

В данной схеме порт отделен от высоковольтной части и ему почти ничего не угрожает. В этой схеме я ставил оптоизолятор 4N25 - самый дешевый и маленький. Катушка на схеме - это реле на 12 вольт. Во время экспериментов я подключил к этой схеме реле РЭС22, а к нему настольную лампу. Для пробы написал программку, которая управляла лампой по часам...
Кстати, вот примерчик управления симистором:

Эту схемку я просто воткнул вместо выключателя от основного освещения в своей комнате. Итак, мы рассмотрели некоторые простейшие схемки, которые смело можно использовать в наших экспериментах с LPT портом, а в дальнейшем взять их за основу при разработке управляемых устройств. И так, из этой статьи вы узнали, что такое LPT порт и как его можно использовать в радиолюбительских целях. Так же были приведены примеры простейших радиосхем, которые будут нами использоваться для дальнейших экспериментов. Переходим к теории и практики программирования LPT порта.

|

Интерфейс LPT

Интерфейс LPT также часто называют параллельным (имеется ввиду параллельный порт). Из его названия следует, что обмн данными происходит в этом интерфейсе параллельно Это означает, что биты передаются не один за другим, как это делается в последовательных интерфейсах, а несколько бит передаются одновременно (паралельно), или, точнее, рядом, друг возле друга. То число бит, которое может быть передано за один такт, определяет разрядность интерфейса. Интерфейс LPT является 8-разрядным. Существует также множество других паралельных интерфейсов (например, SCSI, PCI и др.), поэтому название "параллельный" здесь не совсем корректно и оно вовсе не означает, что LPT "параллельнее" остальных - просто исторически сложилось такое название, и нет особых причин его менять.

Сегодня параллельный порт есть в каждом компьютере. Первоначально он предназначался исключительно для подключения принтера (LPT означает Line PrinTer), но впоследствии стали появляться и другие устройства: сканеры, мобильные дисководы, цифровые фотоаппараты, так что сейчас работа параллельного интерфейса не ограничивается только принтером, хотя в большинстве случаев это именно так и есть. LPT также часто называют Centronics в честь соответствующей фирмы, ставшей основным разработчиком параллельного порта. Соответственно и кабель для подключения принтера к РС тоже называется Centronics. Но это тоже не совсем правильно, так как разъем, непосредственно подключаемый к компьютеру, представленный в виде 25-контактной вилки (рисунок, верхняя часть), называют Amphenolstakcer, а собственно разъем Centronics находится на другом конце кабеля, идущего к устройству (нижняя часть рисунка), он тоже представлен в виде вилки, но имеет 36 контактов.

Передача данных по кабелю может вестись только в одном направении. Но некоторые устройства (современные принтеры, дисководы ZIP и т. д.) позволяют осуществлять и обратную связь. Для это го нужен другой кабель, называемый Bitronics. Внешне он (и его разъемы) ничем не отличается от кабеля Centronics, но там нужен еще и улучшенный параллельный порт (EPP/ECP), о котором речь пойдет дальше. Назначение контактов кабеля Centronics вы можете посмотреть в таблице.

25-контактный разъем 36-контактный разъем Обозначение сигнала Вход/выход Назначение
1 1 STROBE Выход Готовность данных
2 2 D0 (Data0) Выход 1 бит данных
3 3 D1 (Data1) Выход 2 бит данных
4 4 D2 (Data2) Выход 3 бит данных
5 5 D3 (Data3) Выход 4 бит данных
6 6 D4 (Data4) Выход 5 бит данных
7 7 D5 (Data5) Выход 6 бит данных
8 8 D6 (Data6) Выход 7 бит данных
9 9 D7 (Data7) Выход 8 бит данных
10 10 ACK (acknoledge) Вход Подтверждение приема данных
11 11 BUSY Вход Принтер не готов к приему (занят)
12 12 PE (Paper End) Вход Конец бумаги
13 13 SLCT (Select) Вход Контроль состояния принтера
14 14 AF (Auto Feed) Выход Автоматический первод строки (LF) после перевода каретки (CR)
15 32 ERROR Вход Ошибка
16 31 INIT (Initialize Printer) Выход Инициализация принтера
17 36 SLCT IN (Select In) Выход Принтер в состоянии On-Line
18 33 GND (Ground) - Корпус
19 19 GND (Ground) - Корпус
20 20 GND (Ground) - Корпус
21 21 GND (Ground) - Корпус
22 22 GND (Ground) - Корпус
23 23 GND (Ground) - Корпус
24 24 GND (Ground) - Корпус
25 25 GND (Ground) - Корпус
- 15 GND/NC (Ground/No Connect) - Корпус/свободный
- 16 GND/NC (Ground/No Connect) - Корпус/свободный
- 17 GND (Ground) - Корпус для монтажной платы принтера
- 18 +5 V DC (External +5 V) Вход +5 V
- 26 GND (Ground) - Корпус
- 27 GND (Ground) - Корпус
- 28 GND (Ground) - Корпус
- 29 GND (Ground) - Корпус
- 30 GND (Ground) - Корпус
- 34 NC (No Connect) - Корпус
- 35 +5 V DC/NC (External +5 V/No Connect) - +5 V/свободный

BIOS компьютера подерживает до трех параллельных портов (которые на практике редко кому требуются). Микросхема одного порта уже встроена в чипсет на материнской плате, другие могут находиться на картах расширения. Раньше такие карты широко использовались, потому что чипсет не имел соответствующих контролеров, но сейчас они вымерли и давно не производятся. Но если есть желание, можно покопаться на рынке в компьютерном хламе и найти такую карточку (на ней также есть два последовательных порта и, как правило, игровой порт и IDE-контроллер) и поставить ее в свой компьютер (правда, здесь может возникнуть проблема, куда ее вставлять, потому что они делались для шины ISA, а теперь хорошую материнскую плату со слотами ISA тяжеловато найти). При загрузке система анализирует наличие параллельных портов по трем базовым адресам: 03BCh, 0378h и затем 0278h. Первому найденному порту присваевается имя LPT1, второму LPT2 и третьему LPT3. LPT1 еще иногда называют PRN (сокращение от printer), потому что к нему, как правило, подключается принтер.

Как вы, наверное, догадались, название "LPT" тоже не совсем правильно. LPT - это название стандартного параллельного порта, самого первого, который сейчас уже вряд ли можно найти даже на рынке. Есть еще паралельные порты, называемые соответственно EPP и ECP. Но обо всем по порядку.

Стандартный парвллельный порт (LPT)

Стандартный параллельный порт, которым обладали самые первые персональные компьютеры, им оснащенные, был предназначен только для односторонней передачи данных от PC к принтеру. Он обеспечивает пропускную способность от 120 до 200 Kb/s. Как уже было сказано, он устарел.

Порт EPP

Фирмы Intel, Xircon, Zenith и ряд других совместно разработали спецификацию улучшенного параллельного порта, назвав ее EPP (Enhanced Parralel Port ).

Порт EPP является дуплексным, то есть обеспечивает передачу восьми битов данных в двух направлениям. Он поддерживает режим, при котором порт, за счет использования DMA, может пересылать информацию из RAM на устройство и обратно минуя процессор, что снижает нагрузку на последний.

EPP принимает и передает данные в несколько раз быстрее, чем стандартный LPT. Этому также способствует буфер, сохраняющий данные до того, как устройство будет способно их принять. Он позволяет подключать устройства количеством до 64 в цепочку, подобно SCSI. Для этого некоторые устройства (например, ZIP-дисковолы) имеют два разъема - один на вход, другой на выход для следующего устройства.

Порт EPP полностью совместим со стандартным портом. Для использования его спецфических функций нужна только BIOS, их поддерживающая. Максимальная скорость передачи может достигать 2 Mbps.

Порт ECP

Дальнейшим развитием параллельного порта явился порт ECP (Extended Capability Port ). Скорость передачи данных по сравнению с EPP немного возрасла, в ECP, также как и в EPP, используется метод DMА. Он позволяет создавать цепочку из 128 устройств.

Одной из самых важных функций, рализованных в ECP, является сжатие данных. Это позволяет еще больше повысить реальную скорость передачи. Сжатие возмодно как программно, путем применения драйвера, так и аппаратно самой схемой порта. Для сжатия используется метод RLE (Run Length Encoding ), при которм последовательность из повторяющихся символов передается двумя байтами: первый определяет повторяющийся байт, а второй - число повторений. Данная функция, однако, не является обязательной. Она работает только в том случае, когда и устройство поддерживает ее. Если таковой поддержки нет, то порт обменивается данными с устройством без сжатия.

Режимы параллельного порта (AT, EPP, ECP) можно выставить в CMOS Setup. Если вс работает нормально, то в любом случае ставьте EPP/ECP. Если порт поддерживает эти режимы (а это любой современный параллельный порт), то эта опция, как правило, уже установлена как оптимальное значение.

Стандарт IEEE 1284

Стандарты портов ECP и EPP были включены в стандарт Американского института инженеров по электротехнике и электронике IEEE 1284 (не путать с IEEE 1394). Большинство современных лазерных принтеров используют этот стандарт.

Стандарт IEEE 1284 определяет четыре режима работы: полубайтовый, байтовый, EPP и ECP, то есть поддерживает все ранее существовавшие стандарты параллельного порта. Все эти режимы также поддерживают двунаправленную передачу. Дополнительно к этим уже рассмотрененным функциям стандарт IEEE 1284 позволяет принтеру послать сигнал при аварии. Всякий раз при возникновении ошибки параллельный порт посылает сигнал прерывания (IRQ). (15-й контакт обычного паралельного порта не использовался для прерывания процессора, и ошибка могла быть обнаружена только если программа (драйвер) предусматривала контроль этой линии.)

Как уже упоминалось, к параллельному порту могут подключаться не только принтеры, но и другие устройства. Существуют даже конвертеры (правда, вряд ли они кем-либо используются) LPT to IDE, которые позволяют подключить к параллельному порту жесткий диск. Однако это, по-моему, уже извращение. Возможностей параллельного порта еле-еле хватает для принтеров, да и то лазерные принтеры заметно тормозят, а печать сложных графических изображений на них (да и на струйных, впрочем, тоже, хотя и в гораздо меньшей степени) будет идти с очень капитальными замедлениями. Например, картинка размером с лист A4 и разрешением порядка 600 точек на дюйм может иметь размеры не в одну сотню мегабайт (правда, лазерный принтер тогда должен иметь не меньшее количество оперативной памяти), и можно представить, сколько будет продолжаься ее передача по параллельному порту со средней скоростью 0.8-1.2 Mb/s. А что уж там говорить о мобильных дисководах, сканерах? А в случае с жестким диском прокачка нескольких гигабайт через параллельный порт может вдохновить разве что лишь самого отчаянного последователя господина Мазоха, да и то, наверное, ему надоест ждать. Так то подключать к LPT что-нибудь кроме принтера или переносного дисковода типа ZIP, когда требуется перенести не слишком большое количество данных на другой компьютер, я бы, честно говоря, не посоветовал бы. Лазерные принтеры в связи тем, что они формируют перед печатью страницу целиком, тоже очень желательно подсоединить к чему-то другому, например, к USB (если принтер не имеет возможности работы через USB, то можно воспользоваться переходником USB to LPT). А для сканеров и дисков существуют SCSI и Mobile Rack. Естественно, все это стоит денег, но тогда же зачем, простите, если нет денег, из всякого отстоя город городить. Да к тому же сейчас все РС имеют USB-разъемы, а периферии с соответствующим интерфейсом по вполне приемлимой цене в магазинах тоже хватает. Конечно, я не хочу сказать, что USB намного быстрее, чем LPT (для тех же сканеров, если вы не хотите наслаждаться притормаживаниями, нужен SCSI а не USB), но все же пропускная способность шины USB немного (на 30-35%) выше, чем пропускная способность параллельного порта. Следует еще отметить, что параллельный интерфейс уже устарел как таковой, и производители периферии давно начали потихоньку сворачивать ее выпуск в LPT-варианте, переходя на USB. Поэтому, когда вы идете в магазин за принтером (или за сканером, но не хотите платить за сканер со SCSI-контроллером), то подумайте, а стоит ли покупать антиквариат с целью выгодно продать его лет этак через 200, может все-таки лучше обзавестись чем-нибудь посовременнее?

Компьютер обрабатывает сигналы параллельными потоками, поэтому ему легче «общаться» с параллельными, а не с последовательными внешними портами. В 1984 г. в составе IBM PC впервые появился параллельный порт. Задуман он был как средство подключения матричных принтеров, отсюда и название LPT - Line PrinTer или Line Printer Terminal. В дальнейшем для принтеров стали использовать быстродействующий интерфейс USB, а LPT-порт начал постепенно вытесняться из компьютерных спецификаций. Остряки сравнивают LPT с чемоданом без ручки - и выбросить жалко, и тащить невозможно. Тем не менее, «ветеран» ещё на многое способен, если, конечно, он присутствует в конкретном компьютере.

Разъём LPT-порта имеет 25 контактов. Нормой «де-факто» считается розетка DB-25F в компьютере и вилка DB-25M в ответном кабеле (Табл. 4.2). Нумерация контактов вилок и розеток зеркальная (Рис. 4.7, а, б).

Таблица 4.2. Раскладка сигналов в 25-контактном разъёме LPT-порта

Расшифровка

Направление

Вход/выход

Вход/выход

Подтверждение

Готовность

Нет бумаги

Автоперенос

Вход/выход

Инициализация

Вход/выход

Выбор входа

Вход/выход

Рис. 4.7. Внешний вид спереди 25-контактных разъёмов LPT-порта: а) розетка DB-25F в компьютере; б) вилка DB-25M в соединительном кабеле.

Первоначально линии LPT-порта были однонаправленными SPP (Standard Parallel Port). Часть из них работала только на вход, часть - только на выход, что по набору сигналов и протоколу обмена соответствовало принтерному интерфейсу «Centronics». В 1994 г. был утверждён новый стандарт параллельного интерфейса IEEE 1284, предусматривающий двунаправленные линии и три режима работы: SPP, EPP (Enhanced Parallel Port), ECP (Extended Capabilities Port).

Уровни электрических сигналов LPT-порта совпадают с обычными «пятивольтовыми» логическими микросхемами. Раньше в компьютерах применялись буферные TTJl-микросхемы серии 74LSxx, позднее - КМОП-микросхемы и БИС, примерно эквивалентные серии 74ACxx. В последнем случае можно ориентировочно считать, что НИЗКИЙ уровень равен 0.1..0.2 В, а ВЫСОКИЙ - 4.5…4.9 В.

Стандартом регламентируется нагрузка 14 мА по каждому выходу при сохранении напряжения не менее +2.4 В ВЫСОКОГО и не более +0.4 В НИЗКОГО уровня. Однако в разных материнских платах выходные буферы LPT-порта могут иметь разную нагрузочную способность, в том числе и ниже стандарта («слабый» порт).

Требования к соединительным кабелям, подключаемым к LPT-порту:

Сигнальные провода должны быть свиты в пары с общим проводом GND;

Каждая пара должна иметь импеданс 56…68 Ом в диапазоне частот 4… 16 M Гц;

Если применяется плоский ленточный кабель, то сигнальные провода должны физически чередоваться с общим проводом GND (локальные экраны);

Уровень перекрёстных помех между сигналами не более 10%;

Кабель должен иметь экран, покрывающий не менее 85% внешней поверхности. На концах кабеля экран должен быть окольцован и соединён с «земляным» контактом разъёма;

В разъёме кабеля можно запаять на контакты 1…17 последовательные резисторы C2-23 (OMJIT-O.125) сопротивлением 100…300 Ом (Рис. 4.8). Это позволит защитить компьютер от случайных коротких замыканий в нагрузке и уменьшить высокочастотный «звон» на фронтах сигналов.

Рис. 4.8. Электрическая схема LPT-кабеля с «антизвонными» резисторами.

Схемы соединения MK с LPT-портом можно разделить на три группы:

Приём сигналов от компьютера (Рис. 4.9, а…з);

Передача сигналов в компьютер (Рис. 4.10, а…д);

Приём/передача сигналов одновременно (Рис. 4.11, a…e).

В схемах приняты некоторые упрощения. В качестве входного сигнала указывается в основном «DO», а в качестве выходного - «АСК», хотя могут быть и другие, перечисленные в Табл. 4.2. На каждом конкретном компьютере работоспособность самодельных схем необходимо проверять экспериментально, что связано с наличием «сильных» и «слабых» LPT-портов по нагрузочной способности.

Рис. 4.9. Схемы ввода сигналов из LPT-порта в MK (начало):

а) резистор R1 ограничивает входной ток. Элементы R2, C1 могут отсутствовать, но они уменьшают «звон» на фронтах сигналов при длинном кабеле;

б) буферный транзистор VT1 инвертирует сигнал. Диод VD1 не обязателен, но он защищает транзистор от ошибочной подачи большого отрицательного напряжения. Если не ставить резистор R2, то схема останется работоспособной, однако при отстыковке кабеля от LPT-порта возможны ложные срабатывания транзистора VT1 от внешних помех и наводок;

в) диод VD1 отсекает помехи и повышает порог срабатывания транзистора VT1. Резистор R1 надёжно закрываеттранзистор VT1 при НИЗКОМ уровне с LPT-порта;

г) буферный логический элемент DD1 имеет выход с открытым коллектором. Фронты сигналов формируются элементами R1, C1. Можно вместо инвертора DD1 поставить повторитель К155ЛП9, сделав соответствующие изменения в программе MK и компьютера;

д) триггер Шмитта DD1 (замена - К555ТЛ2) повышает помехоустойчивость. Чем меньше сопротивление резисторов R1, R2, тем больше крутизна фронтов сигнала. При отключённом кабеле от LPT-порта резистор R1 не даёт входу микросхемы DD1 «висеть в воздухе»;

е) последовательное включение двух логических элементов DD11, /)/)/.2увеличивает (восстанавливает) крутизну фронтов сигнала. Резистор R1 устраняет выбросы, «звон»;

Рис. 4.9. Схемы ввода сигналов из LPT-порта в MK (окончание):

ж) данные, поступающие от LPT-порта, предварительно помещаются в промежуточный регистр DD1. Запись производится при ВЫСОКОМ уровне на входе «С» микросхемы DD1, хранение - при НИЗКОМ. Такое решение устраняет помехи, поскольку в LPT-порт в зависимости от установленных в компьютере драйверов периодически могут выводиться случайные данные. Их устраняют программно, например, путём многократного считывания входного сигнала с линий MK;

з) буферизация LPT-порта мощными транзисторными ключами, находящимися в микросхеме DA1 фирмы Texas Instruments. Резисторы R1…R8 могут иметь в 10… 15 раз более низкие сопротивления, что позволяет подключить параллельно выходам микросхемы А4/другие узлы устройства.

Рис. 4.10. Схемы вывода сигналов из MK в LPT-порт (начало):

а) непосредственное подключение выхода MK без буферных элементов. Резисторы R1, R2 уменьшают отражение сигналов в линии. Кроме того, резистор R2 защищает выход MK от случайного короткого замыкания с цепью GND в проводах соединительного кабеля;

б) триггер Шмитта DD1 служит защитным буфером для MK при аварийной ситуации на выходе (короткое замыкание или подача большого напряжения);

в) микросхема DD1 имеет выход с открытым коллектором, что защищает её от короткого замыкания в проводах и разъёмах соединительного кабеля;

г) подача двух противофазных сигналов в компьютер. Цель - программная необходимость или организация дублирующего (контрольного) канала передачи данных;

д) опторазвязка на элементах HL1, BL1, которые применяются в компьютерных механических «мышах». Транзистор КГ/усиливает и инвертирует сигнал. Для нормальной работы устройства компьютер должен выставить ВЫСОКИЙ уровень на линии «D8».

Рис. 4.11. Комбинированные схемы ввода/вывода сигналов между MK и LPT-портом (начало):

а) если компьютер выставляет на линии «DO» ВЫСОКИЙ уровень, то MK в режиме выхода может генерировать сигнал «АСК» через резистор R1. Если MK переводится в режим входа, то компьютер может передавать ему данные по линии «DO» через диод VD1 при этом внутренний « pull-up» резистор MK формирует ВЫСОКИЙ уровень;

б) сигнал от LPT-порта вводится в MK через инвертор на транзисторе VT1 при этом компьютер должен выставить ВЫСОКИЙ уровень на линии «D2». Информация в MK вводится с линии «DO» через резистор R1 Высокое сопротивление резистора R1 физически развязывает входной и выходной каналы;

Рис. 4.11. Комбинированные схемы ввода/вывода сигналов между MK и LPT-портом (окончание):

б) сигнал от LPT-порта вводится в MK через инвертор на транзисторе VT1, при этом компьютер должен выставить НИЗКИЙ уровень на линии «DO». Информация в МК вводится через элементы R1, R3, VT2;

г) сигнал от LPT-порта вводится в MK через повторитель на транзисторе VT1, при этом компьютер должен выставить ВЫСОКИЙ уровень на линии «DO». Информация в MK вводится через повторитель на микросхеме DD1\

ж) сигналы «D0»…«D3» вводятся в MK при НИЗКОМ уровне на линии «INIT», при этом компьютер должен настроить линии «D4»…«D7» как входы. В настройках BIOS компьютера надо установить двунаправленный режим EPP или ЕСР для LPT-порта. Информация в компьютер из МК передаётся по линиям «D4»…«D7» при ВЫСОКОМ уровне на линии «INIT». Резистор R1 переводит выходы микросхемы DD1 в Z-состояние при отключённом кабеле от LPT-порта;

e) сигнал от MK в LPT-порт вводится через повторитель DD1.2, при этом компьютер должен выставить ВЫСОКИЙ уровень на линии «D2» и НИЗКИЙ уровень на линии «D5». Информация в MK вводится через повторитель DD1.1 при НИЗКОМ уровне налинии «D2». Стробирование сигналов по входам «Е1», «Е2» микросхемы DD1 повышает достоверность передачи данных.

Дмитрий Иванов, 21 Сентября 2009 Статья доработана и обновлена 23 Января 2012

За время существования этого сайта мне довольно часто задают один и тот же вопрос, который можно описать примерно следующим образом:



В итоге решил описать этот вопрос подробнее и написать статью. Да, действительно, сейчас стационарных PC с LPT портом нужно поискать (т.е. далеко не каждая "мать" сейчас идет в комплекте с LPT портом). Про ноутбуки вообще говорить не приходится. Современные модели LPT порт вообще не применяют. Только очень дорогие и специализированные машины, типа DELL, могут "похвастаться" наличием этого порта.

Также, сейчас в продаже можно свободно приобрести вот такие устройства, называемые LPT-USB переходниками.

Инстркуция гласит что этот прибор полностью совместим с различными принтерами, сканерами и т.д. Подключаем переходник к USB порту, устанавливаем драйвера. Смотрим диспетчер устройств. Скорее всего в ветке "Порты LPT/COM" ни чего не появилось (хотя бывают исключения). Скорее всего повится либо новая ветка со странным устройством с именем, например, LPT1USB либо в разделе USB устройств появится странная запись о "USB устройстве поддержки LPT принтеров" . Пробуем запустить какой-нибудь пример из статей выше. И ни тут то было - ни чего не работает. Пробуем адрес порта LPT1 - ни чего не работает. Пробуем адресс порта LPT2. К сожалению, такая модернизация адреса в запросах тоже ни к чему не приводит - светодиоды как не загорались так и не загораются.

Чтобы разобраться в чем тут дело давайте вернемся на время к обычному "родному железному" LPT порту - LPT1, который из материнской платы "торчит". Зайдем в диспетчер устройств, заглянем в свойства нашего порта. Там мы увидим вот такую картину. Отлично видно, что система прописала базовый адрес ввода-вывода 0x378 и запрос на прерывание номер 7. Все правильно.

Теперь погрузимся на уровень программирования. В примерах статей выше мы минуя систему защиты ввода-вывода легальными и нелегальными способами напрямую общались с реально существующим регистром ввода-вывода, которому присвоен адрес 0x378. Тут все понятно. Незабудем также о том, что Windows рекомендует работать с LPT портом используя вызовы API функций - OpenFile(), WriteFile(), ReadFile() . Приложения, которые используют LPT порт для обмена информацией по парралельному интерфейсу с внешними устройствами (принтер, например) так и делает. У него нет задачи установить на каком-либо бите регистра Data лигическую еденицу. Ему (приложению) нужно просто отправить пакет данных, а кто там будет какие линиии при этом "дергать" и считывать его не сильно интересует. Эти операции проводит системный драйвер LPT порта. Он подгружается в память при загрузке ОС. Когда мы вызываем функцию OpenFile("LPT1", ....) мы по сути дела обращаемся к драйверу порта, который имеет символическое имя LPT1. Драйвер делает кучу всякой работы - запрещает доступ к порту другим процессам, настраивает параметры протокола передачи данных, собственно реализует эту передачу, но в конечном итоге все это сводится к прямому управлению отдельными битами LPT порта на уровне ядра ОС.

А теперь попробуем поработать с нашим переходником USB-LPT. Начнем как не покажется странным, с API вызовов. Запускаем OpenFile("LPT1USB", ...) (смотря как этот переходник диспетчере устройств назовется, если вообще назовется). Что при этом происходит? Дело в том, что теперь мы будем работать не с драйвером LPT порта ОС а с драйвером этого переходника! Вот в чем фокус то! Он принимает пакет данных от нашего пользовательского приложения и в нужном формате через систмный драйвер USB отсылает этот пакет на USB контроллер, "ноги" которого торчат из внешней LPT розетки на проводе (ну это так, "грубое объяснение"). Видете, здесь нет ни какого намека на обращение к регистрам по адресам 0x378(0x278), т.к. их просто нет!

Поэтому, когда Вы патаетесь запускать примеры данного раздела и обращаться напрямую по адресам 0x378 (если этот "псевдо порт" назвался LPT1USB или что-то в этом духе), 0x278 (LPT2_...) и т.д. ни чего не происходит. Их просто нет! А вот программа котороая работает через API вызовы ни чего не заметит - вся низкоуровневая работа делается драйвером, а каким драйвером и куда пойдут пакеты данных (в реальный порт ввода-вывода или в USB хост-контроллер) - приложению неважно! Попробуйте открыть свойства "псевдопорта" в диспетчере устройств. Нет вкладки с ресурсами? Есть, но там каие-то неадекватные значения или вкладка деактивировнна? В том то и дело.



Почему 99%? Потомоу что есть самодельниые USB-LPT переходники, которые определяются Windows как полноценный порт LPT1 и ему присваивается вполне обыденный адрес 0x378. Обращения на прямую к пинам порта проходят успешно! Однако это очень нестандартная конструкция (в первую очередь драйвер, который занимается перехватом обращений по базовому адресау порта LPT1). Все это не очень надежно (обновление ОС - и конструкция теряет работоспосбность) и для использования рекомендовано быть может только с натяжкой.



Как ни покажется странным - решение ЕСТЬ. Вы всегда сможете добавить настоящий LPT порт в свой настольный компьютер или ноутбук. Во-первых, забудте сразу о переходниках с интерфейсом USB. Для решения этой задачи необходимо приробрести PCI-LPT переходник для настольного PC (необходимо наличие свободного PCI слота) или PCMCIA-LPT переходник для ноутбука (см. фото ниже).


В случае использования этих устройств ни каких проблем нет. Определяются они как настоящие "родные" LPT порты. Соответствующая запись будет добавлена в диспетчер устройств во вклдаку "LPT/COM порты" . Прямое обращение к пинам порта будет работать.

Lpt порт, нередко называемый параллельным — это один из наиболее старых портов ПК. Хотя, в наши дни такой порт имеется далеко не на всех материнских платах, однако он по-прежнему имеет некоторое распространение, в связи с чем многим пользователям компьютеров и оргтехники, в частности, принтеров, очень интересно узнать о том, что он собой представляет.

Для начала нужно разобрать, что подразумевает под собой аббревиатура lpt порт. Итак, под LPT подразумевается сокращение сочетания нескольких английских слов, а именно: Line Print Terminal. В переводе на русский язык LPT означает построчный принтерный терминал. Исходя из названия, становится понятно, что он в первую очередь предназначен для принтера. Но с теоретической точки зрения, к LPT можно подключать и некоторые другие аппараты. Для этой цели применяют специальный адаптер — переходник lpt. Следует добавить, что он имеет еще одно название, принятое в кругах пользователей – порт принтера.

В целом lpt порт обладает довольно длительной историей развития. Его разработали сотрудники компании Centronics, которая в начале 70-х годов прошлого века специализировалась на производстве матричных печатающих устройств. В начале 80-х годов данный порт принтера стал широко применяться со стороны фирмы IBM, которая использовала его на своих ПК. В то десятилетие lpt-порт даже успел стать стандартным вариантом, необходимым для осуществления подключения устройств с высокими скоростями, имеющихся в те годы.

Первоначально интерфейс LPT был представлен в нескольких отличных друг от друга редакциях. При этом в оригинальной версии он был однонаправленным, т.е. с его помощью можно было осуществлять передачу информации исключительно к периферийному устройству. Безусловно, подобного рода ситуация не устраивала многих пользователей, т.к. уже в те годы выпускались печатающие устройства, требовавшие осуществление передачи данных в двух направлениях. Именно поэтому некоторое время спустя, разработчикам пришлось несколько раз совершенствовать интерфейс LPTl. Данный процесс длился до тех пор, пока не был представлен его стандарт, получивший наименование IEEE 1284. Таким образом, разработчиками была представлена окончательная схема порта. Новый стандарт обладал поддержкой нескольких различных режимов работы. Кроме того, он был совместим с прежними стандартами. В своей финальной редакции интерфейс принтера мог поддерживать достаточно высокую скорость передачи информации на то время, которая достигала 5 Мб/с!

Как работает параллельный порт?

Название параллельный LPT получил вследствие того, что передача данных в подсоединяемом к нему кабеле осуществляется параллельным образом, для чего одновременно используется несколько проводников. Именно благодаря этому он существенным образом отличается от сом, который является последовательным. Количество проводников в кабеле, который подключается к LPT, как правило, восемь. Помимо этого, в нем может быть расположено несколько линий, предназначенных для передачи управляющих сигналов. Таким образом, использование порта com по сравнению с LPT имеет ряд сильных ограничений и недостатков.

Несмотря на то что порт Centronics в большей степени использовался для организации подключения между принтером и ПК, тем не менее его применяли и для других целей. К примеру, с помощью LPT можно непосредственным образом соединить друг с другом два персональных компьютера – для этого обычно используется кабель Interlink. До тех пор, пока сетевые карты Ethernet не приобрели широкое распространение, соединение подобного типа пользовалось большой популярностью. Конечно, оно не могло обеспечить пользователей действительно высокими скоростями передачи информации, но, несмотря на это, такой способ подключения двух компьютеров друг к другу в те годы был чуть ли не единственным возможным. Следует добавить, что есть даже специальные ключи электронного типа, которые предназначаются специально для подключения к параллельному порту.

Об особенностях работы LPT

Как было уже сказано выше, в отличие от com, LPT обладает поддержкой параллельной передачи данных. В первых моделях персональных компьютеров он являлся одним из наиболее скоростных. Его интерфейс благодаря возможности осуществления передачи информации по нескольким линиям, во многом схож по своей архитектуре с шинами, используемыми в ПК. Но именно обстоятельство подобного рода и ограничивает длину кабеля, которая не может превышать 5 метров. В противном случае в подключении между ПК и принтером постоянно будут возникать помехи.

Для организации обычной передачи данных, как правило, необходимо 10 сигнальных линий. Что касается остальных линий, то они применяют для совместимости со стандартом кабеля Centronics. Максимальный параметр напряжения, который применяется в сигнальных линиях LTP, обычно равен +5 В.

Разъем порта и кабель Centronics

Если говорить о разъеме параллельного порта, то он располагается на самой матплате, хотя до середины 90-х годов прошлого столетия данный элемент обычно располагался на т.н. мультикарте, которая вставлялась в слот расширения. Выходом LPT является разъем DB25 с 25-контактами.

Чтобы установить соединение между персональным компьютером и печатающей оргтехникой с помощью персонального порта необходимо воспользоваться кабелем Centronics. При этом разъем, имеющийся на оргтехнике, является 36-контактным. Таким образом, основная особенность данного кабеля заключается в наличии двух разных разъемов по обеим сторонам.
Также примите во внимание, что довольно часто разъемом Centronics называют тот разъем кабеля, который предназначен для матплаты персонального компьютера, но на самом деле им является разъем для принтера – т.е. тот, который включает в себя 36 контактов. Что касается разъема, предназначенного непосредственно для LPT, то он именуется Amphenolstacker. Подобные различия в названиях обязательно нужно знать, чтобы называть все вещи своими именами.

Итог

В заключение можно сказать, что параллельный порт Line Print Terminal является интерфейсом ПК, который к нашему времени уже порядком устарел. Несмотря на большое распространение в последние десятилетия прошлого столетия, на сегодняшний день данный порт не располагает большой поддержкой со стороны многих компаний, выпускающих компьютерное оборудование, оргтехнику и программное обеспечение. Несмотря на это, LPT по-прежнему с успехом применяется на многих устаревших к нашему времени моделях ПК и печатающих устройств. Но довольно часто для организации подключения между компьютером и старым принтером требуется наличие переходника com-lpt. Сегодня их в принципе можно найти в продаже, но при наличии необходимых знаний и навыков, спять такой переходник можно абсолютно самостоятельно.



Загрузка...