Lpt порт назначение. LPT-port: особенности и принципы работы. Подготовка схемы печатной платы

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

Овладев управлением интерфейсными портами компьютера, радиолюбитель может подключать к ним различные сигнальные и исполнительные устройства и датчики, превращая компьютер в центр управления бытовой электроникой, системой охраны квартиры или в измерительный прибор. Наиболее привлекателен для начинающего параллельный порт 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

LPT EEE 1284 (англ. Line Print Terminal) - международный стандарт параллельного интерфейса для подключения периферийных устройств персонального компьютера. Название LPT образовано от наименования стандартного устройства принтера LPT1 (Line Printer Terminal или Line PrinTer) в операционных системах семейства MS-DOS.

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

В основном LPT-порт используется для подключения к компьютеру принтера, сканера и других внешних устройств. Также LPT-порт часто использовался для подключения внешних устройств хранения данных. Может применяться для организации связи между двумя компьютерами, подключения каких-либо устройств телесигнализации и/или телеуправления.

В настоящее время стандарт IEEE-1284 не развивается. Окончательная стандартизация параллельного порта совпала с началом внедрения интерфейса USB, который позволяет подключать также МФУ и обеспечивает более высокую скорость печати и надёжную работу принтера. Также альтернативой параллельному интерфейсу является сетевой интерфейс Ethernet.

История/History

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

Параллельный порт Centronics - порт, используемый с 1981 года в персональных компьютерах фирмы IBM для подключения печатающих устройств, разработан фирмой Centronics Data Computer Corporation. Изначально данный порт был разработан только для симплексной (однонаправленной) передачи данных, так как предполагалось, что порт Centronics должен использоваться только для работы с принтером. Впоследствии разными фирмами были разработаны дуплексные расширения интерфейса (Byte Mode, EPP, ECP). Затем был принят международный стандарт IEEE 1284, описывающий как базовый интерфейс Centronics, так и все его расширения.

Общие сведения

Стандарт IBM определяет 3 параллельных порта ввода/вывода, которые предусмотрены в BIOS PC и во всех версиях DOS. В адресном пространстве компьютера резервируются базовые адреса данных портов: 3BCh , 378h , 278h .

В IBM-совместимых компьютерах за параллельными портами закреплены специальные логические имена, поддерживаемые системой: LPT1 , LPT2 , LPT3 . Данные логические имена не обязательно должны совпадать с указанными адресами портов ввода/вывода. При загрузке система анализирует наличие параллельных портов по каждому из трех базовых адресов. Поиск портов всегда выполняется в следующем порядке: 03BCh , 0378h , 0278h . Первому найденному параллельному порту присваивается логическое имя LPT1, второму - LPT2, третьему - LPT3. В результате реализации такой схемы назначения имен в системе всегда будет порт LPT1, независимо от присвоенного ему адреса порта ввода/вывода, при условии, что компьютер физически имеет данный параллельный порт.

Bios

Адреса портов, присвоенные каждому слоту LPTx, можно определить путём чтения области данных BIOS по адресу 0000:0408.

Onboard Parallel Port - Данная опция задает адрес ввода/вывода и номер прерывания для параллельного LPT-порта. Данная опция в зависимости от версии BIOS, задает либо адрес и прерывание, используемые параллельным (LPT) портом, либо только адрес (прерывание задается отдельной опцией, расположенной рядом).

Значения опции:

378H/IRQ7 – адрес 378H и прерывание IRQ7;

278H/IRQ5 – адрес 278H и прерывание IRQ5;

3BCH/IRQ7 – адрес 3BCH и прерывание IRQ7;

Auto – автоматическое определение адреса ввода/вывода и номер прерывания;

Disabled – отключает порт LPT.

Parallel Port Mode - Данная опция устанавливает режим работы параллельного LPT-порта.

Пример страницы настроек Phoenix - Award Bios

Значения опции:

Normal или SPP - простейший однонаправленный или стандартный (Standard Parallel Port);

Bi-Dir, Bi-Directional или BPP - двунаправленный (Bi-Directional);

EPP - усовершенствованный параллельный порт (Enhanced Parallel Port);

ECP - порт с расширенными возможностями (Enhanced Capabilities Port);

ECP+EPP - поддержка двух режимов - Enhanced Capabilities Port и Enhanced Parallel Port.

Оптимальным выбором является выбор значения «Enhanced Capabilities Port - ECP», что обеспечит максимальную скорость обмена данными между компьютером и периферийным устройством.

В случае если подключенное оборудование к данному параллельному порту ПК работает нестабильно, можно последовательно снизить используемый режим вплоть до стандартного. В некоторых случаях помогает установка двунаправленного (Bi-Directional) или комбинированного (Enhanced Parallel Port и Enhanced Capabilities Port) режимов.

ECP DMA Select - В случае если параллельный порт функционирует в режиме высокоскоростного порта с расширенными возможностями ECP (Enhanced Capabilities Port) или ECP+EPP (Enhanced Capabilities Port и Enhanced Parallel Port ) , ему необходимо выделить канал прямого доступа к памяти (DMA). Стандартным значением является канал с номером 3.

Свойства системы - Оборудование - Диспетчер устройств - Ports (Com & LPT) - LPT Port - Ресурсы

Примечание: В версиях Windows, которые не используют ядро Windows NT (типа DOS и некоторых других операционных систем), программы могут получить доступ к параллельному порту с помощью подпрограмм outportb() и inportb(). В операционных системах Windows NT и Unix (NetBSD, FreeBSD, Solaris, 386BSD) задействован встроенный в процессор 80386 механизм безопасности, и доступ к параллельному порту запрещён, если не указан нужный драйвер. Данное ограничение повышает безопасность и способствует разрешению конфликтов при доступе к устройству.

Режим работы порта

Стандарт позволяет использовать интерфейс в нескольких режимах:

  • SPP (Standard Parallel Port) - однонаправленный порт, полностью совместим с интерфейсом Centronics.
  • Nibble Mode - позволяет организовать двунаправленный обмен данными в режиме SPP путём использования управляющих линий (4 бит) для передачи данных от периферийного устройства к контроллеру. Исторически это был единственный способ использовать Centronics для двустороннего обмена данными.
  • Byte Mode - редко используемый режим двустороннего обмена данными. Использовался в некоторых старых контроллерах до принятия стандарта IEEE 1284.
  • EPP (Enhanced Parallel Port) - разработан компаниями Intel, Xircom и Zenith Data Systems - двунаправленный порт, со скоростью передачи данных до 2 МБайт/сек (1991г.)
  • ЕСР (Extended Capabilities Port) - разработан компаниями Hewlett-Packard и Microsoft - в дополнение появились такие возможности, как наличие аппаратного сжатия данных, наличие буфера и возможность работы в режиме DMA.

Распиновка LPT DB25F

Распиновка LPT Centronics (CN36)

Эмуляция LPT-порта (IEEE 1284) под OC Windows

#1: Использование PCI совместимой платы расширения для персонального компьютера.

Пример платы расширения PCIe с LPT-портом EPP

PCI (англ. Peripheral Component Interconnect) - шина ввода/вывода для подключения периферийных устройств к материнской плате компьютера.

Свойства системы - Оборудование - Диспетчер устройств - Ports (Com & LPT) - PCI LPT Port - Ресурсы

Примечание: Чаще всего при установке PCI Card LPT адреса ввода/вывода будут отличны от стандартных/базовых, вследствие чего практически все программаторы и LPT-ключи не будут работать или будут работать некорректно.

Реальный адрес ввода-вывода зависит от операционной системы и будет выбран случайно. Адрес ввода-вывода не будет изменен, в случае если не будет осуществлена перестановка PCI карты в другой PCI слот.

В продаже имеются 1- и 2-портовые PCI платы IEEE1284.

В техническом описании к PCI платам расширения с интерфейсом LPT указывается возможность использования стандартного адресного пространства для I/O (ввода/вывода), однако возможность задания ресурсов ввода-вывода определяется типом используемой операционной системы.

В операционных системах MS Windows 95/98/ME, DOS возможна установка параметров, соответствующих стандартным LPT-портам ISA. В более современных операционных системах (например, Windows 2000/XP/Vista) распределение ресурсов ввода-вывода происходит без участия пользователя или администратора. В некоторых случаях это может приводить к невозможности работы контроллера в некоторых режимах, и во многом зависит от конфигурации оборудования и типа используемой операционной системы.

Интерфейсный порт LPT (другие названия параллельный или принтерный порт) используется в персональных компьютерах для подключения различных периферийных устройств. На практике с его помощью чаще всего обслуживались принтеры. Фокусная область применения интерфейса прямо отражается в его англоязычном наименовании: сокращение LPT образовано от Line Print Terminal.

После появления интерфейса USB быстро начал терять свою популярность и в настоящее время по своему прямому назначению применяется редко.

Исполнение LPT-порта

Порт LPT выполнен по параллельной схеме на основе интерфейса Centronics и физически выполнен как 25-контактный двухрядный разъемный соединитель DB25. Кабельная часть выполнена по схеме вилки, соответственно розетка образует приборную часть интерфейса.

Фото LPT разъема на материнской плате

В нижнем ряду помещается 13 контактов, тогда как оставшиеся 12 располагаются в верхнем.

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

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

Схема раскладки проводов по контактам

Распиновка lpt порта , несмотря на большое количество контактов интерфейсного разъема оказывается достаточно простой и приведена в таблице.

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

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

В качестве кабеля могут применяться обычные или защищенные индивидуальными экранами витые пары. Допустимо использование плоского шлейфового кабеля. Общая длина шнура не должна превышать 3 м.

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

В тексте вы встретитесь с общепринятой аббревиатурой записывания чисел. Например, 1010 2 - двойка в нижнем индексе указывает, что число 5 представлено в двоичном исчислении, 124 10 – десятка в нижнем индексе, говорит о том, что число 124 десятичное. Это так… на всякий случай

Как показала практика, все программы, правильно написанные и дополненные соответствующими библиотеками (vbio32.dll, inpout32.dll, dlportio.dll и т.д.) работают на большинстве компьютеров с операционными системами семейства Windows. Я проверял работу всех своих программ (Visual Basic5.0, 6.0) на Win95, 98, Me, 2000, XP HE, XP Prof и даже в DOS6.22 (QBasic) – все работает прекрасно. В DOS-е вообще никаких библиотек не надо, там все и так работает. Сразу оговорюсь, что vbio32.dll и inpout32.dll НЕ БУДУТ РАБОТАТЬ ПОД Win2000 , но совершенно спокойно будут работать под Win95, 98, Me.

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

Для inpout32.dll

Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer

Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

Для dlportio.dll

Private Declare Function DlPortReadPortUchar Lib "dlportio.dll" (ByVal Port As Long) As Byte

Private Declare Sub DlPortWritePortUchar Lib "dlportio.dll" (ByVal Port As Long, ByVal Value As Byte)

Чем отличается Private от Public я писать не буду.

Параллельный порт для связи с принтером (или другим устройством) имеет базовый адрес &H378 (LPT1), &H278 (LPT2), &H3BC (LPT3). В данной статье мы будем рассматривать только LPT1. Адресное пространство данного порта занимает диапазон &H378-&H37F.

· Адрес & H378 называется базовым и служит для записи (чтения, но об этом попозже) данных в порт, на линии D0-D7.

· Адрес & H379 (базовый+1 ) предназначен для чтения битов состояния с устройства, подключенного к LPT-порту (принтер, сканер и т.д)

· Адрес & H37 A (базовый+2 ) служит для записи битов управления устройства, подключенного к LPT-порту (принтер, сканер и т.д.).

На приведенных ниже таблицах «расшифрованы» контакты и сигналы каждого из адресов

Контакты 18-25 – «земля» (общий, GND, GROUND и т.д.)

Рассмотрим программирование каждого из адресов.

· Базовый адрес &H378 (LPT1) позволяет записывать данные в порт на линии D0-D7 в диапазоне от 0 до 255.

· Записываем в порт число 69

· Адрес &H379 служит для чтения битов состояния.

· Читаем состояние порта по адресу &H379

При чтении адреса &H379 необходимо помнить, что первые три бита – не используются и всегда имеют значение лог. «1», а 7-й бит – инверсный. В результате если все контакты 15, 13, 12, 10, 11 посадить на «землю», то при чтении информации вы получите на первых трех битах (которые не используются) 1+2+4 и на 7-м бите (контакт 11-инверсный, значит, при замыкании на землю будет лог. «1») +128 итого 135. Об этом не надо забывать. Во второй части статьи мы остановимся на этом более подробно.

· Адрес & H37 A служит для записи битов управления.

· Записываем сигнал -STROBE (бит управления 0)

Почему 10? Давайте посмотрим в табличку.

Сигналы STROBE, AUTO, SELECT IN – инверсные, значит, чтобы на выходе контактов разъема 1, 14, 17 получить логическую «1» надо подать на эти биты логический «0», т.е. подали одно – получили противоположное. Сигнал INIT прямой (не инверсный), поэтому логическая «1» на контакте 16 появится тогда, когда мы подадим на этот бит логическую «1», т.е. что подали, то и получили.

Попытаемся получить на контактах 1,17 – низкий уровень сигнала «0», а на контактах 14 и 16 высокий уровень сигнала «1», т.е. на выходе контактов 1,14,16,17 будет присутствовать 0 1 1 0 (610).

На нулевой бит (-STROBE) подаем «1» (на контакте 1 будет «0»), на первый бит (-AUTO) подаем «0» (на контакте 14 будет «1»), на второй бит (INIT) подаем «1» (на контакте 1 будет «1») и, наконец, на третий бит (-SELECT IN) подаем «1» (на контакте 17 будет «0»), т.е. мы записали по адресу &H37A число 10112,-это 1310. Значит, чтобы на выходе получить 6 надо подать 13.

Для удобства привожу таблицу со всеми возможными комбинациями чисел от 0 до 15

Подаваемый сигнал

Получаемый сигнал

Десятичное число

(- STROBE ) 2 0

(-AUTO) 2 1

(INIT) 2 2

(-SELECT IN) 2 3

контакт 1

контакт 14

контакт 16

контакт 17

Десятичное число

Ну и, наконец, последнее в этой части статьи. Если ваш компьютер поддерживает стандарт EPP, то четвертым битом по адресу & H37 A вы сможете разрешить прерывание (для LPT1 это IRQ7) от принтера, только не спрашивайте меня что это такое, я все равно ничего не знаю про прерывания. А вот пятым битом 110101 2 , например, подав число 43 10 , вы устанавливаете шину D0-D7 в режим ПРИЕМА данных. При этом все разряды (контакты 2-9) принимают значение логической «1». Чтобы подать на нужный контакт логический «0» надо замкнуть его через сопротивление 240 – 360 Ом на «землю». Таким образом, через LPT порт компьютера мы получаем в стандартном виде устройство с 12-ю выходными сигналами и 5-ю входными, а при переводе порта в режим EPP мы получаем 4 выходных сигнала и 13 входных сигналов.

Режим SPP (12 выходов и 5 входов)

Режим EPP (4 входа и 13 выходов)

Сигнал

Направление

Сигнал

Направление

Выход

Вход

Выход

Вход

Выход

Вход

Выход

Вход

Выход

Вход

Выход

Вход

Выход

Вход

Выход

Вход

Вход

Вход

Вход

Вход

PAPER END

Вход

PAPER END

Вход

Вход

Вход

- BUSY

Вход

- BUSY

Вход

- STROBE

Выход

Выход

Выход

- AUTO

Выход

Выход

Выход

-SELECT IN

Выход

-SELECT IN

Выход

Конец первой части.

Во второй части статьи мы будем подключать к порту различные электронные штучки.

Скачать распиновку порта принтера:

IEEE 1284 (порт принтера, параллельный порт, англ. Line Print Terminal, LPT) - международный стандарт параллельного интерфейса

В основе данного стандарта лежит интерфейс Centronics и его расширенные версии (ECP, EPP).

Название «LPT» образовано от наименования стандартного устройства принтера «LPT1» (Line Printer Terminal или Line PrinTer) в операционных системах семейства MS-DOS. Интерфейс Centronics и стандарт IEEE 1284

Параллельный порт Centronics - порт, используемый с 1981 года в персональных компьютерах фирмы IBM для подключения печатающих устройств, разработан фирмой Centronics Data Computer Corporation; уже давно стал стандартом де-факто, хотя в действительности официально на данный момент он не стандартизирован.

Изначально этот порт был разработан только для симплексной (однонаправленной) передачи данных, так как предполагалось, что порт Centronics должен использоваться только для работы с принтером. Впоследствии разными фирмами были разработаны дуплексные расширения интерфейса (byte mode, EPP, ECP). Затем был принят международный стандарт IEEE 1284, описывающий как базовый интерфейс Centronics, так и все его расширения.

Виды Разъёмов паралельного порта

Кабельный 36-контактный разъём Centronics для подключения внешнего устройства (IEEE 1284-B)

25-контактный разъём DB-25, используемый как LPT-порт на персональных компьютерах (IEEE 1284-A)

Порт на стороне управляющего устройства (компьютера) имеет 25-контактный 2-рядный разъём DB-25-female ("мама") (IEEE 1284-A). Не путать с аналогичным male-разъёмом ("папа"), который устанавливался на старых компьютерах и представляет собой 25-пиновый COM-порт.

На периферийных устройствах обычно используется 36-контактный микроразъем ленточного типа Centronics (IEEE 1284-B), поэтому кабели для подключения периферийных устройств к компьютеру по параллельному порту обычно выполняются с 25-контактным разъёмом DB-25-male на одной стороне и 36-контактным IEEE 1284-B на другой (AB-кабель). Изредка применяется AC-кабель с 36-контактным разъемом MiniCentronics (IEEE 1284-C) .

Существуют также CC-кабеля с разъёмами MiniCentronics на обоих концах, предназначенные для подключения приборов в стандарте IEEE 1284-II, который применяется редко.

Длина соединительного кабеля не должна превышать 3 метров. Конструкция кабеля: витые пары в общем экране, либо витые пары в индивидуальных экранах. Изредка используются ленточные кабели.

Для подключения сканера, и некоторых других устройств используется кабель, у которого вместо разъема (IEEE 1284-B) установлен разъем DB-25-male. Обычно сканер оснащается вторым интерфейсом с разъемом DB-25-female (IEEE 1284-A) для подключения принтера (поскольку обычно компьютер оснащается только одним интерфейсом IEEE 1284).

Схемотехника сканера построена таким образом, чтобы при работе с принтером сканер прозрачно передавал данные с одного интерфейса на другой. Физический интерфейс

Интерфейс разъема

Базовый интерфейс Centronics является однонаправленным параллельным интерфейсом, содержит характерные для такого интерфейса сигнальные линии (8 для передачи данных, строб, линии состояния устройства).

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

Скорость передачи данных может варьироваться и достигать 1,2 Мбит/с.

Стандартные шнуры провода кабеля Centronics IEEE 1284 Printer lpt:

Упрощённая таблица - схема сигналов интерфейса Centronics LPT - разъема

Контакты
DB-25 IEEE 1284-A
Контакты
Centronics IEEE 1284-B
Обозначение Примечание Функция
1 1 Strobe Маркер цикла передачи (выход) Управление Computer
2 2 Data Bit 1 Сигнал 1 (выход) Данные Computer
3 3 Data Bit 2 Сигнал 2 (выход) Данные Computer
4 4 Data Bit 3 Сигнал 3 (выход) Данные Computer
5 5 Data Bit 4 Сигнал 4 (выход) Данные Computer
6 6 Data Bit 5 Сигнал 5 (выход) Данные Computer
7 7 Data Bit 6 Сигнал 6 (выход) Данные Computer
8 8 Data Bit 7 Сигнал 7 (выход) Данные Computer
9 9 Data Bit 8 Сигнал 8 (выход) Данные Computer
10 10 Acknowledge Готовность принять (вход) Состояние Printer
11 11 Busy Занят (вход) Состояние Printer
12 12 Paper End Нет бумаги (вход) Состояние Printer
13 13 Select Выбор (вход) Состояние Printer
14 14 Auto Line Feed Автоподача (выход) Управление Computer
15 32 Error Ошибка (вход) Состояние Printer
16 31 Init Инициализация (выход) Initialize Printer (prime-low) Управление Computer
17 36 Select In Управление печатью (выход) Select Input Управление Computer
18-25 16-17, 19-30 GND Общий Земля

Распайку порта Centronics IEEE 1284 Printer Cable lpt - com9 можно и в виде картинки-изображения