Какие сигналы должны lpt порту. Особенности и принцип работы lpt порта принтера

Какие сигналы должны lpt порту. Особенности и принцип работы lpt порта принтера

Д. ЗАХАРОВ, г. Прокопьевск Кемеровской обл.

Овладев управлением интерфейсными портами компьютера, радиолюбитель может подключать к ним различные сигнальные и исполнительные устройства и датчики, превращая компьютер в центр управления бытовой электроникой, системой охраны квартиры или в измерительный прибор. Наиболее привлекателен для начинающего параллельный порт LPT, исходно предназначенный для подключения к компьютеру принтера. Отсюда происходит и аббревиатура LPT - Line Printer Terminal (первые принтеры печатали информацию "line by line" - построчно). Позже область применения этого порта значительно расширилась, к нему стали подключать самые разные периферийные устройства. К сожалению, сегодня его (как, впрочем, и другие порты компьютера) постепенно вытесняет быстродействующая универсальная последовательная шина USB.

Разъем порта LPT на системном блоке компьютера - 25-контактная розетка DB-25F. На ее контакты можно подавать и снимать с них логические сигналы уровней, характерных для микросхем структуры ТТЛ. Логически низким считается напряжение 0...0,8 В, высоким - 2,4...5 В. Соединять выходные контакты разъема с общим проводом или с источником напряжения, не превышающего +5 В, рекомендуется только через резисторы сопротивлением не менее 300 Ом. Не допускается подавать как на входы, так и на выходы порта отрицательное напряжение или положительное более 5 В. Подключать к порту и отключать что-либо от него можно только при полностью отключенном от сети 220 В компьютере (сетевая вилка вынута из розетки). Если подключаемое устройство имеет сетевое питание, оно тоже должно быть физически отсоединено от сети.

Несоблюдение этих требований может иметь тяжелые последствия. Если расположенная внутри компьютера микросхема контроллера параллельного порта выйдет из строя, потребуется ремонт или замена материнской платы.

При включении компьютера его параллельный порт работает в режиме Centronics - простейшем и традиционном для этого порта с момента его появления в компьютерах. Иногда этот режим называют Simple Parallel Port (SPP). Более сложные режимы ЕРР и ЕСР используются, как правило, для скоростного обмена информацией с лазерными принтерами и сканерами. Мы их рассматривать не будем, потому что программирование работы с портом в таких режимах доступно лишь опытным программистам.

С точки зрения программы порт LPT в режиме Centronics представляет собой три восьмиразрядных регистра в пространстве ввода-вывода микропроцессора: регистр данных DR по адресу &Н378, регистр состояния принтера SR по адресу &Н379 и регистр управления принтером CR по адресу &Н37А. Указанные адреса относятся к порту LPT1, обычно единственному в компьютере. Если в нем имеются другие параллельные порты, им также отводят по три регистра с последовательными адресами. Например, регистры порта LPT2 обычно имеют адреса &Н278-&Н27А.

Входы и выходы регистров порта (правда, не все) соединены с контактами интерфейсного разъема, как показано на рис. 1.

Поэтому, записывая в эти регистры определенные коды, можно устанавливать соответствующие логические уровни напряжения на выходных контактах разъема, а читая коды из регистров, определять уровни поданных на входы внешних сигналов.

Работать с портом LPT можно практически в любой среде программирования и операционной системе. Наиболее доступными считаются среды Visual Basic и Delphi, причем во всем, что требуется для программирования порта, они весьма схожи. Нужно сказать, что современные многозадачные операционные системы (в том числе семейства Windows) не допускают прямых обращений из прикладных программ к портам компьютера. Это сделано для того, чтобы избежать конфликтов между одновременно выполняемыми программами, если они случайно обратятся к одному и тому же порту в один и тот же момент времени. Связь с портами возможна лишь через специальные программы-драйверы, автоматически выполняющие все, что необходимо для разрешения конфликтов. Программисту остается лишь написать несколько управляющих команд.

Мы будем использовать одну из самых популярных библиотек таких программ - Inpout32.dll второй версии, которую легко найти в Интернете. Она применима в различных средах программирования и операционных системах. Работая в Windows 98, файл lnpout32.dll необходимо скопировать в папку C:\Windows\system\, а в Windows ХР - в папку C:\Windows\system32\. Во многих случаях достаточно просто поместить этот файл в папку исполняемой программы. Для программирования в DOS дополнительные драйверы не нужны, достаточно предусмотренных в используемом языке программирования обычных команд ввода-вывода в порт.

Дальнейшее изложение относится к работе с параллельным портом в системе программирования Visual Basic 6.0 под управлением Windows ХР. Для ее освоения разработана простая программа. Ее проект, в том числе исполняемый фаил test.exe и файл главной (и единственной) формы Form1.frm приложены к статье. При запуске этой программы на экране монитора появится окно, показанное на рис. 2.


Нажимая в нем на экранные кнопки и вводя числа в соответствующие поля, можно устанавливать уровни напряжения на выходах порта и считывать состояние его входов (оно будет отображено числом в соответствующем поле). Библиотеку для работы с портом LPT "подключает" к программе фрагмент файла Form1.frm, показанный в таблице.


Прежде всего, разберем работу с регистром управления CR (напомним, его адрес - &Н37А). В рассматриваемом случае ее выполняет подпрограмма

Private Sub Command4_click()
out &H37A, Text2.Text
End Sub

При нажатии на экранную кнопку Command4 ("Отправить") она записывает в регистр по адресу &Н37А двоичный код, соответствующий десятичному числу, введенному в поле над этой кнопкой.

Для наглядности соберем и подключим к разъему LPT светодиодный узел по схеме, изображенной на рис. 3.


Введем в нужное поле число 4 (двоичное 00000100) и нажмем на кнопку "Отправить". После этого все четыре светодиода окажутся включенными. Дело в том, что разряды CR, CR и CR соединены с контактами разъема через инверторы, поэтому при записи 0 в эти разряды уровни на соответствующих им контактах стали высокими. Чтобы включить только светодиод HL3, нужно ввести число 15 (двоичное 00001111), а при вводе числа 11 (двоичное 0001011) все светодиоды будут выключены. Старшие разряды регистра управления (CR-CR) с контактами разъема не соединены, поэтому их состояние в данном случае никакого значения не имеет.

Чтобы изучить работу с регистром состояния SR, подключим к разъему порта узел, схема которого изображена на рис. 4.


При разомкнутых выключателях SA1-SA5 через резисторы R1-R5 на контакты разъема поступает напряжение высокого логического уровня. Его источником могут быть любой сетевой адаптер с выходным напряжением 5 В, батарея из трех гальванических элементов и даже один из выходов порта LPT, на котором описанным ранее способом установлен нужный уровень напряжения. Во многих компьютерах резисторы, по назначению аналогичные R1- R5, уже имеются, в установке внешних резисторов в таких случаях нет необходимости.

При нажатии на экранную кнопку "Принять" будет выполнена подпрограмма

Private Sub Command5_c1ick()
Text3.Text = Inp(&H379)
End Sub

Она выведет в поле над кнопкой число, отображающее содержимое регистра SR. Если все выключатели (рис. 4) разомкнуты, это будет 126 (двоичное 01111110), а если они замкнуты - 134 (10000110). Значения разрядов SR- SR соответствуют уровням, поданным на соответствующие контакты разъема, а значение разряда SR инверсно уровню на контакте 11. Так как младшие разряды SR-SR на разъем не выведены, их значения не зависят от поданных на его контакты сигналов.

Главный регистр порта - регистр данных DR по адресу &Н378. Именно через него печатаемая информация побайтно передается на принтер. Все восемь разрядов регистра соединены с контактами разъема, причем без инверторов. Эти восемь цепей часто объединяют названием "шина данных". В исходном состоянии она работает только на вывод. Однако почти во всех современных компьютерах имеется возможность переключить ее на параллельный ввод восьмиразрядных двоичных кодов. Для этого достаточно записать единицу в разряд CR регистра управления.

К сожалению, в режиме Centronics никакие сигналы о том, в каком направлении работает шина данных порта LPT, на его разъем не выводятся. Поэтому необходимо соблюдать особую осторожность и подавать на эту шину внешние сигналы, только удостоверившись, что ее программное переключение "на прием" выполнено. Иначе могут быть повреждены интерфейсные микросхемы как самого компьютера, так и подключенного к порту источника сигналов. Этот недостаток устранен в режимах ЕРР и ЕСР, где предусмотрен полный набор сигналов управления направлением передачи информации по шине данных параллельного порта.

В рассматриваемой тестовой программе с регистром данных работает подпрограмма

Private Sub Command3_Click()
Out &H378, Text1.Text
Text1.Text = Inp(&H378)
End Sub

При нажатии на экранную кнопку "OK" она записывает в регистр данных число из поля, находящегося над кнопкой, а затем читает содержимое регистра и отображает его в том же поле. Естественно, если регистр работает как выходной (на экране отмечен пункт "Передача"), число в поле остается прежним. Чтобы убедиться, что логические уровни на контактах 2-9 разъема порта в этом случае соответствуют введенному в поле вручную и записанному в регистр данных числу, подключите к разъему узел, аналогичный тому, схема которого показана на рис. 3, но с увеличенным до восьми числом светодиодов и резисторов.

Операцию переключения шины данных на ввод выполняет подпрограмма

Private Sub Option1_Click()
Out &H37A, 32
End Sub

Ее вызов происходит при нажатии на экранную кнопку с зависимой фиксацией "Прием". Кнопкой "Передача" вызывают аналогичную подпрограмму, отличающуюся лишь тем, что она записывает в регистр управления не 32 (двоичное 00100000), а ноль, возвращая таким образом шину данных в режим вывода.

Когда шина данных переведена в режим ввода, процедура Out в рассмотренной ранее подпрограмме, вызываемой при нажатии на кнопку "ОК", фактически не работает. Однако функция Inp возвращает значение, соответствующее уровням на выводах 2-9, установленных подключенными к ним внешними цепями. В виде десятичного числа оно появляется в поле над кнопкой "ОК". Задавать логические уровни на линиях шины данных можно с помощью узла, подобного использовавшемуся для работы с регистром состояния (рис. 4).

Чтобы не усложнять программу, отображение в поле ввода над кнопкой "Отправить" изменений состояния регистра управления с помощью кнопок "Прием" и "Передача" не предусмотрено.

Освоив приведенные в статье примеры, мы научились выводить через порт из компьютера 12 и выводить в него 5 логических сигналов либо (в другом режиме) выводить 4 и вводить 13 таких сигналов. Теперь можно разрабатывать гораздо более сложные программы и устройства, подключаемые через порт LPT к компьютеру.

От редакции. Упомянутые в статье и другие необходимые для работы с тестовой программой файлы находятся на нашем FTP-сервере по адресу ftp://ftp.radio.ru/pub/2007/09/testlpt.zip

Радио 2007 №9

На Хабре об управлении лампой через интернет, появилась идея управлять освещением дома с компьютера, а так как у меня уже настроено управление компьютером с сотового телефона, то это значит, что и светом можно будет управлять с того же телефона. После демонстрации статьи одному из моих коллег по работе, он сказал, что ему это как раз и нужно. Так как он часто за фильмами, которые смотрит на компьютере, засыпает. Компьютер через некоторое время после окончания фильма тоже засыпает и отключает монитор, а вот свет в комнате остается включённым. Т.е. было решено, что вещь это полезная, и я начал собирать информацию и детали для этого чуда.
Остальная информация под habracut (осторожно много картинок - трафик).

Схема устройства

За исходную схему была взята одна из схем , найденных в Internet и выглядела она вот так:

Но только с небольшим изменением: между 1-ым пином оптопары 4N25 и 2-ым пином LPT был добавлен резистор на 390 Ом, и еще добавлен светодиод для индикации включения. Схема была собрана в тестовом режиме, т.е. просто соединена проводами так как нужно и проверена. В этом варианте она просто включала и выключала старый советский фонарик.
Было решено, что если уже делать управление, то не для одного устройства, а минимум на 4 устройства (из расчёта: одна лампа на столе, люстра на два выключателя, запасная розетка). На данном этапе стало необходимо построение полной схемы устройства, начался выбор различных программ.
Были установлены:

  1. KiCAD
  2. Eagle
Посмотрев все их них я остановился на Eagle, так как в его библиотеке были «похожие» детали. Вот что получилось в нем:

На схеме использован порт DB9 т.е. обычный COM порт, это сделано из соображений экономии как места на плате, так и самих разъёмов (COM"вские у меня были), а так как мы будем использовать только 5 проводников, то этого нам хватит с запасом. Таким образом делаем еще и переходник с DB25 (LPT) на DB9 (COM), в моем случае делается он следующим образом:
LPT 2-9 pin = COM 1-8 pin - это управляющие пины данных;
LPT 18-25 pin (зачастую они соединены между собой) = COM 9 pin - это наша земля.
Так же в схеме используется дополнительное питание на 12В для питания реле, по плану это будет простое китайское зарядное или может быть крона на 9В (одно реле срабатывает нормально, надо проверить на 4 одновременно). Отдельное питание и гальваническая развязка с помощью оптопары используется для того чтобы обезопасить порт компьютера. При желании можно конечно запитаться от 12В блока питания компьютера, но это каждый делает сам и на свой страх и риск.

Необходимые детали для создания устройства
  1. COM порт - 1 шт
  2. коннектор питания - 1 шт
  3. светодиод зелёный - 4 шт
  4. оптопара 4n25 - 4 шт
  5. посадочное место под оптопару (у меня было только на 8 ног) - 4 шт
  6. резистор 390 Ом - 4 шт
  7. резистор 4,7 кОм - 4 шт
  8. транзистор КТ815Г - 4 шт
  9. реле HJR-3FF-S-Z - 4 шт
  10. зажимы на 3 контакта - 4 шт
  11. фольгированный текстолит

Подготовка схемы печатной платы

Попытавшись использовать Eagle для подготовки печатной платы я понял, что это будет сложновато и решил найти более простой вариант. Этим вариантом стала программа sprint layout 5 пусть она и в исполнении для windows, но без проблем запускается в wine под linux. Интерфейс у программы интуитивно понятный, на русском языке и в программе имеется достаточно понятная помощь (help). Поэтому все дальнейшие действия по разработке печатной платы производились в sprint layout 5 (далее SL5).
Хоть и многие используют данную программу для разработки плат своих устройств, в ней не оказалось необходимых мне деталей (даже в куче скачанных коллекций макросов). Поэтому пришлось сначала создать недостающие детали:
  1. COM порт (тот что был не совпал с моим, по отверстиям крепления)
  2. гнездо питания
  3. зажим на три контакта
  4. реле HJR-3FF-S-Z
Вид этих деталей:

После добавления необходимых деталей началось само проектирование печатной платы. Проходило оно в несколько попыток, было их около пяти. Каждый вариант платы печатался на картоне прокалывались отверстия и в них вставлялись детали. Собственно так и было выяснено, что мой COM порт не совпадает с тем который был в SL5. Так же всплыла небольшая ошибка в схеме реле - реально корпус реле был сдвинут на 2-3 мм. Естественно все ошибки были исправлены.
На первом печатном варианте выяснилось еще и не правильное подключение транзистора, были перепутаны два контакта.
После всех исправлений и подгонок получилось плата следующего вида:

В SL5 есть функция «Фотовид» для просмотра платы, вот как она выглядит в нем:

На финальном варианте платы будут еще немного подправлены дорожки, а в остальном она выглядит так же.

В SL5 так же есть удобный вариант печати платы, можно скрывать не нужные слои и выбирать цвет печати каждого слоя, что очень пригодилось.

Подготовка печатной платы

Плату решено было делать методом ЛУТ (лазерно-утюговая технология). Далее весь процесс в фото.

Вырезаем необходимого размера кусок текстолита.

Берем самую мелкую наждачку и аккуратно зачищаем медную поверхность.

После зачистки поверхности её необходимо промыть и обезжирить. Промывать можно водой, а обезжиривать ацетоном (в моем случае это был растворитель 646).
Далее печатаем на лазерном принтере на мелованной бумаге нашу плату, не забыв в принтере установить самую жирную печать (без экономии тонера). Этот вариант получился немного не удачным, так как размазался тонер, но другая попытка была в самый раз.

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

Далее необходимо подготовить раствор для травления. Я использовал для этого хлорное железо. На банке с хлорным железом написано, что раствор необходимо делать 1 к 3. Я немного отступил от этого и сделал 60 г хлорного железа на 240 г воды, т.е. получилось 1 к 4, не смотря на это травление платы происходило нормально, только немного медленнее. Обратите внимание на то, что процесс растворения сухого хлорного железа в воде идёт с выделением тепла, поэтому всыпать его в воду необходимо небольшими порциями и размешивать. Естественно для травления необходимо использовать не металлическую посуду, в моем случае это была пластиковая ёмкость (вроде от селёдки). У меня получился вот такой раствор:

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

Весь процесс травления у меня занял 45 минут, хватило бы и 40 минут, но я был просто занят ещё одним делом.
После травления промываем плату с мылом отрываем скотч с леской и получаем:

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

Следующим шагом является сверление отверстий. У меня на плате предусмотрены были отверстия 1мм и 1.5 мм изначально, так как найти более тонких свёрл не удалось. Так же найти у нас в городе цанговый патрон для крепления его на электромоторчик не удалось, поэтому все делалось большой дрелью.

Первое устройство подошло

На первый раз я взял только два сверла, а при использовании такой дрели этого оказалось мало. Одно сверло сломалось, а второе погнулось. Все что я успел просверлить в первый день:

На следующий день я купил пять свёрл. И их как раз хватило, так как если они не ломаются (кстати из пятёрки сломал только одно), то тупятся, а при сверлении тупыми - портятся дорожки, медь начинает отслаиваться. После полного сверления платы получаем:

После сверления необходимо провести лужение платы. Для этого я использовал старый способ - паяльник, флюс ТАГС и олово. Хотелось попробовать с использованием сплава Розе, но его не найти у нас в городе.

После лужения получаем следующий результат:

Далее необходимо промыть плату для удаления остатков флюса, так как ТАГС водоотмывной, то делать это можно или водой или спиртом. Я сделал что-то среднее - отмывал старой водкой и протирал ватными палочками. После всех этих действий наша плата готова.

Монтаж деталей

Для проверки правильности платы изначально собираю только одну(из четырёх) линию деталей, мало ли где закралась ошибка.

После монтажа деталей идём и подключаем устройство к компьютеру через LPT, для этого спаян переходник с DB25(LPT) на DB9(COM) в следующем виде:

  • 2 пин DB25 к 1 пину DB9
  • 3 пин DB25 к 2 пину DB9
  • 4 пин DB25 к 3 пину DB9
  • 5 пин DB25 к 4 пину DB9
  • 6 пин DB25 к 5 пину DB9
  • 7 пин DB25 к 6 пину DB9
  • 8 пин DB25 к 7 пину DB9
  • 21 пин DB25 (можно любой с 18 по 25) к 9 пину DB9
Так как в качестве провода использовалась обычная витая пара, то не хватило одного проводка, но для данного устройства достаточно только пяти проводов, так что данный вариант подходит. В качестве включаемой нагрузки у нас выступает простой советский фонарик. Ну и в качестве блока питания - универсальный китайский блок питания (4 коннектора и питание от 3 до 12 в). Вот все в сборе:

А вот уже устройство работает:

На этом закончился ещё один вечер и монтаж остальных деталей был оставлен на следующий день.

А вот и уже полностью собранное устройство:

Ну и небольшое видео о том как это работает (качество не очень, не было чем снять нормально)

Вот и все, осталось только найти нормальный корпус для устройства и запускать его в дело.

Программная часть

Естественно для управления LPT портом нужно какое-то ПО, но так как у меня дома linux, то было решено просто написать простейшую программку самому, а в последствии её уже дописать и адаптировать как надо. Выглядела она примерно так:
#include
#include
#include
#include
#define BASE 0x378
#define TIME 100000
int main ()
{
int x = 0x0F;
int y = 0x00;
if (ioperm (BASE, 1, 1))
{
perror ("ioperm()");
exit (77);
}
outb (x, BASE);
return 0;
}

Данная программка отправляет в LPT порт 0x0F = 00001111, т.е. подает 1 на 2-5 пины (Data0-Data3), а это и есть наше управляющее напряжение между 2-5 пинами и землей (18-25 пины), таким образом будут включаться все четыре реле. Точно так же действует программа для отправки 0x00 в порт для отключения, просто вместо x отправляется y - outb (y, BASE). Еще можно прочитать состояние порта:
#define BASEPORT 0x378 /* lp1 */
...
printf("статус: %d\n", inb(BASEPORT));
...

Единственный нюанс этой программки в том, что её необходимо выполнять от root, так как простому пользователю не доступна функция ioperm. Думаю, как решать такую проблему можно не рассказывать, каждый выберет более подходящий ему вариант.

В последствии программа была доработана так, что бы передавая ей параметры командной строки можно было указывать с каким устройством и что сделать.
Вывод «sw --help»:
Программа для управления реле через LPT порт.
У программы может быть один или два параметра.
Формат параметров: sw [номер устройства] [действие]
номер устройства - от 1 до 8
действие - "on", "off", "st" - включение, выключение, статус
Пример: "sw 2 on" для включения второго устройства или "sw --help" для вывода помощи

PS если кому понадобится, то потом могу где-нибудь выложить файл схемы платы в sl5 и исходник программки управления.

Порт «LPT» редко встречается на современных компьютерах. Это специальный разъем компьютера для подключения принтера. Некоторые компьютеры были снабжены несколькими портами «LPT». Эти порты нумеровались: «LPT1», «LPT2» и так далее.

Параллельные порты

Исторически так сложилось, что порты для подключения компьютера разделены на категории: серийные и параллельные порты. «LPT» относится к параллельным портам. Это значит, что информация перемещается по восьми различным проводам, то есть одновременно и параллельно. Компьютеры имеют дело с двоичной информацией. Двоичность преобразует информацию в массивы нулей и единиц. Одно двоичное число (ноль или единица) называется битом. Группа из восьми бит называется байтом. Восемь бит каждого байта, которые перемещаются из компьютера в параллельный порт, перемещаются одновременно. Другой тип кабеля, подключенный к серийному порту, перемещает восемь бит каждого байта друг за другом.

Значение

У параллельного порта есть название. По умолчанию название для единственного параллельного порта компьютера «LPT1». Данный вид портов в основном используется для подключения принтера. К таким портам можно подключить и другие устройства, однако пользователи используют принтер гораздо чаще, чем другие устройства. Подключение принтера к компьютеру делает его «периферией». «Периферийным» может быть любое подключенное с помощью специального кабеля к компьютеру дополнительное устройство. Это «периферийное» оборудование одновременно может использоваться только одним компьютером. Единственный способ подключить уже подключенное «периферийное» устройство к другому компьютеру, чтобы использовать принтер, подключенный к первому компьютеру – с помощью сети и программного обеспечения. Этот процесс отличен от сетевого принтера, который подключается к сети, а не к одному компьютеру. В этом случае используется другой тип кабеля и другой тип порта.

Подключение

Параллельный порт «LPT» и соответствующий разъем имеет 25 штифтов и называется «DB-25», либо «D-Type 25». В разъеме штифты оголены. Они вставляются в 25 отверстий параллельного порта. Восемь из 25 штифтов отвечают за передачу данных, остальные несут либо данные управления, либо инструкции принтера вроде сообщений от принтера о отсутствии бумаги в принтере.

Будущее

Сетевые принтеры подключаются к компьютеру не с помощью порта «LPT», а с помощью порта «Ethernet». К порту «LPT» можно подключить не только принтер, но и другие устройства. Сегодня «периферийные» устройства не используют параллельные порты. И порты «LPT», и серийные порты сегодня ушли в историю и на смену им пришел «USB» порт, либо сетевой порт. Способность беспроводного подключения новых принтеров и периферийных устройств предоставляет еще одну альтернативу «LPT» порту, как способу подключения принтера к компьютеру.

Одним из самых старых портов компьютера является LPT-порт или параллельный порт. И хотя LPT-порт сейчас можно увидеть далеко не на всякой материнской плате, тем не менее, читателям, возможно, интересно было бы узнать, что он из себя представляет.

Прежде всего, разберемся с названием порта. Возможно, далеко не все знают, что обозначает аббревиатура LPT. На самом деле, LPT – это сокращение от словосочетания Line Print Terminal (построчный принтерный терминал). Таким образом, становится понятным, что LPT-порт предназначался, прежде всего, для подключения принтеров. Именно поэтому порт LPT имеет и еще одно название – порт принтера. Хотя теоретически могут подключаться к LPT и другие устройства.

LPT-порт имеет давнюю историю. Он был разработан фирмой Centronics (поэтому данный порт часто называют также портом Centronics), производившей матричные принтеры еще до начала эпохи персоналок, в начале 1970-х. А в начале 1980-х LPT-порт стал использоваться фирмой IBM в своих компьютерах и на какое-то время стал стандартным портом для подключения высокоскоростных (на то время) устройств.

Внешний вид параллельного порта на задней панели компьютера

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

Принцип работы параллельного порта

Порт LPT называется параллельным потому, что в подключаемом к нему кабеле данные передаются параллельно, то есть, одновременно по нескольким проводникам. Этим свойством параллельный порт отличается от другого порта компьютера –последовательного порта COM.

Проводников, передающих сами данные, в кабеле Centronics насчитывается 8. Кроме того, в кабеле присутствует несколько линий, по которым передаются управляющие сигналы.

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

Кабель для передачи данных между компьютерами - Interlink

Как и в случае многих других устройств на материнской плате, режимы работы параллельного порта часто можно настроить через BIOS Setup. Как правило, для этого используются такие опции BIOS, как Parallel Port, Parallel Port IRQ, Parallel Port DMA и т.п.

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

Разъем порта LPT обычно располагается непосредственно материнской плате, хотя до середины 1990-x гг. он обычно присутствовал на вставляемой в слот расширения так называемой мультикарте, на которой были также расположены другие порты компьютера. Выход порта представляет собой 25-контактный разъем типа «розетка», который называется разъемом DB25.

ISA мультикарта с LPT(DB25 - «мама») и игровым портом на борту.

Для подключения к принтеру используется специальный кабель ­­– кабель Centronics. Один конец (вилка) кабеля Centronics подключается к порту, другой (также вилка) – к специальному разъему принтера. Последний разъем имеет 36 контактов. Следовательно, особенностью кабеля Centronics является то, что он имеет разные разъемы с обеих сторон.

Внешний вид кабеля Centronics.

Хотя часто разъем кабеля для материнской платы называется разъемом Centronics, тем не менее, строго говоря, разъемом Centronics называется лишь 36-контактный разъем для подключения к принтеру, а не к материнской плате. Разъем кабеля для подключения к порту называется разъемом Amphenolstacker, от названия разработавшей его американской фирмы Amphenol, производящей разъемы.

Особенности работы параллельного порта

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

Максимальное напряжение, использующееся в сигнальных линиях порта, составляет +5 В. Для простой передачи данных требуется всего лишь десять сигнальных линий – это 8 линий собственно данных, линия строб-сигнала, то есть, сигнала о готовности порта к передаче данных, и линия занятости. Остальные линии используются для совместимости со стандартом Centronics.

LPT-порт типа «мама» с нумерацией контактов.

Назначение выводов разъема параллельного порта DB25:

  • 1 – Data strobe (Строб-сигнал)
  • 2-9 – Данные, биты 0-7
  • 10 – Acknowledge (Подтверждение от принтера)
  • 11 – Busy (Занят)
  • 12 – Paper Out (Кончилась бумага)
  • 13 – Select (Принтер активен)
  • 14 – Auto Feed (Автоматическая подача)
  • 15 – Error (Ошибка)
  • 16 – Init (Инициализация принтера)
  • 17 – Select Input (Выбор устройства)
  • 18-25 – Земля

Заключение

LPT-порт представляет собой интерфейс персонального компьютера, который в настоящее время считается устаревшим и не имеет значительной поддержки со стороны производителей компьютерного оборудования и программного обеспечения. Однако параллельный порт до сих успешно используется во многих устаревших моделях компьютеров и принтеров.

Порт параллельного интерфейса был введен в PCдля подключения принтера -LPT-порт (Line PrinTer -построчный принтер).

Адаптер параллельного интерфейса представляет собой набор регистров, расположенных в пространстве ввода/вывода. Регистры порта адресуются от­носительно базового адреса порта, стандартными значениями которого являют­ся 386h, 378hи 278h. Порт имеетвнешнюю 8-битнуюшину дан­ных, 5-битнуюшину сигналовсостояния и 4-битнуюшину управляющих сиг­налов.

BIOSподдерживает до четырех LPT-портов (LPT1-LPT4) своим сервисом -прерыванием INT 17h,обеспечивающим через них связь с принтерами по интерфейсу Centronics.Этим сервисом BIOSосуществляет вывод символа, инициа­лизацию интерфейса и принтера, а также опрос состояния принтера.

Интерфейс Centronics

Понятие Centronicsотносится как к набору сигналов и протоколу взаимодейст­вия, так и к 36-контактному разъему, устанавливаемому на принтерах. Назна­чение сигналов приведено в табл. 1.

Таблица 1.

Сигналы интерфейса Centronics

Назначение

Строб данных. Данные фиксируются по низкому уровню сигнала

Линии данных. Data 0(контакт 2) -младший бит

Acknowledge -импульс подтверждения приема байта (запрос на прием сле­дующего). Может использоваться для формирования запроса прерывания

Занято. Прием данных возможен только при низком уровне сигнала

Высокий уровень сигнализирует о конце бумаги

Сигнализирует о включении принтера

Автоматический перевод строки.

Ошибка: конец бумаги, состояние OFF-Lineили внутренняя ошибка принтера

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

Выбор принтера (низким уровнем). При высоком уровне принтер не воспринимает остальные сигналы интерфейса

Общий провод интерфейса

Направление

(вход/выход) применительно к принтеру.

Интерфейс Centronicsподдерживается большинством принтеров с параллель­ным интерфейсом, его отечественным аналогом является интерфейсИРПР-М.

Традиционный lpt-порт

Традиционный порт SPP (Standard Parallel Port)является одно­направленным портом, на базе которого программно реализуется протокол обмена Centronics.Порт обеспечивает возможность вырабатывания запроса ап­паратного прерывания по импульсу на входе АСК#. Сигналы порта выводятся наразъем DB-25S (розетка), установленный непосредственно на плате адаптера (или системной плате) или соединяемый с ней плоским шлейфом. Название и назначение сигналов разъема порта (табл. 2)соответствуют интерфейсу Centronics.

Таблица 2.

Разъем стандартного LPT-порта

Контакт DB-25S

Провод шлейфа

Назначение

18, 20, 22, 24, 26

* I/Oзадает направление передачи (вход/выход) сигнала порта; 0/Iобозначает выходные линии, состояние которых считывается при чтении из соответствующих портов вывода.

**Символом «\» отмечены инвертированные сигналы (1в регистре соответствует низкому уров­ню линии).

***Вход Ack#соединен резистором (10кОм) с питанием +5В.

Стандартный порт имеет три 8-битных регистра, расположенных по сосед­ним адресам в пространстве ввода/вывода, начиная с базового адреса порта(BASE).

Data Register (DR) -регистр данных, адрес= BASE.Данные, записанные в этот порт,выводятся на выходные линии интерфейса. Данные, считанные из этого регистра, в зависимости от схемотехники адаптера соответствуют либо ранее записанным данным, либо сигналам на тех же линиях.

Status Register (SR) -регистр состояния, представляющий собой5-битный порт ввода сигналов состояния принтера (биты SR.4-SR.7),адрес= BASE+1.БитSR.7инвертируется -низкому уровню сигнала соответствует единичное значе­нию бита в регистре, и наоборот.

Назначение бит регистра состояния (в скобках даны номера контактов разъема):

SR.7-Busy -инверсные отображения состояния линии Busy (11);

SR.6 -АСК (Acknowledge) -отображения состояния линии Ack# (10).

SR.5 -РЕ (Paper End) -отображения состояния линии Paper End (12).

SR.4-Select -отображения состояния линии Select (13).Единичное зна­чение соответствуетcигналу о включении принтера.

SR.3-Error -отображения состояния линии Error (15).

SR.2 - PIRQ -флаг прерывания по сигналу Ack#(только для порта PS/2). Бит обнуляется, если сигнал Ack#вызвал аппаратное прерывание. Единич­ное значение устанавливается по аппаратному сбросу и после чтения ре­гистра состояния.

SR -зарезервированы.

Control Register (CR) -регистр управления, адрес=ВА5Е+2. Как и регистр дан­ных, этот4-битный порт вывода допускает запись и чтение (биты 0-3),но его выходной буфер обычно имеет типоткрытый коллектор. Это позволяет более корректно использовать линии данного регистра как входные при программи­ровании их в высокий уровень. Биты О, 1, 3инвертируются -единичному зна­чению в регистре соответствует низкий уровень сигнала, и наоборот.

Назначение бит регистра управления:

CR -зарезервированы.

CR.5 - Direction -бит управления направлением передачи (только для портов PS/2).Запись единицы переводит порт данных в режим ввода.

CR.4 -ACKINTEN (Ack Interrupt Enable) -единичное значение разрешает пре­рывание по спаду сигнала на линии Ackff -сигнал запроса следующего байта.

CR.3 - Select In -единичное значение бита соответствует низкому уровню на выходе Selecting (17) -сигналу, разрешающему работу принтера по интерфейсу Centronics.

CR.2 - Init -нулевое значение бита соответствует низкому уровню на выходе Imt# (16) -сигнал аппаратного сброса принтера.

CR.1 - Auto LF -единичное значение бита соответствует низкому уров­ню на выходе Auto LF# (14) -сигналу на автоматический перевод строки(LF - Line Feed)по приему байта возврата каретки (CR - Carriage Return).

CR.O -Strobe -единичное значение бита соответствует низкому уровню на выходе Strobeff (1) -сигналу стробирования выходных данных.

Запрос аппаратного прерывания (обычно IRQ7или IRQ5)вырабатывается по отрицательному перепаду сигнала на выводе 10разъема интерфейса (АСК#) при установке CR.4=1. Прерывание вырабатывается, когда принтер подтвер­ждает прием предыдущего байта.

Процедура вывода байта по интерфейсу Centronicsчерез стандартный порт включает следующие шаги (в скобках приведено требуемое количество шинных операций процессора):

Вывод байта в регистр данных (1цикл IOWR#).

Ввод из регистра состояния и проверка готовности устройства (бит SR.7 - сигнал BUSY).

По получении готовности выводом в регистр управления устанавливается строб данных, а следующим выводом строб снимается (2цикла lOWRff).

Стандартный порт сильно асимметричен -при наличии 12линий (и бит), нормально работающих на вывод, на ввод работает только 5линий состояния. Если необходима симметричная двунаправленная связь, на всех стандартных портах работоспособенрежим полубайтного обмена - Nibble Mode.В этом режи­ме, называемым также и Hewlett Packard Bitronics,одновременно передаются 4бита данных, пятая линия используется для квитирования.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows