Перехідник до материнської плати під лпт порт. Особливості та принцип роботи lpt порту принтера. Про особливості роботи LPT

Завантажити розпинування порту принтера:

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-контакт. 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 можна і у вигляді картинки-зображення

Одним із найстаріших портів комп'ютера є 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-х років. він зазвичай був присутній на розширення, що вставляється в слот, так званій мультикарті, на якій були також розташовані інші порти комп'ютера. Вихід порту є 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-порт є інтерфейсом персонального комп'ютера, який в даний час вважається застарілим і не має значної підтримки з боку виробників комп'ютерного обладнання та програмного забезпечення. Однак паралельний порт досі успішно використовується в багатьох застарілих моделях комп'ютерів та принтерів.

Комп'ютер обробляє сигнали паралельними потоками, тому йому легше спілкуватися з паралельними, а не з послідовними зовнішніми портами. У 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 МГц;

Якщо застосовується плоский стрічковий кабель, сигнальні проводи повинні фізично чергуватись із загальним проводом 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 підвищує достовірність передачі.

Доброго часу доби кодери та інші маніяки комп'ютерної промисловості. Сьогодні я розповім тобі, як можна керувати LPT портом і використовувати його в своїх цілях. Так що запасайся снікерсами та терпінням. Насамкінець я покажу цікавий приклад його використання.

LPT порт має 25 контактів, на яких може бути встановлено 0 або +5В (0 або 1). Встановлювати значення можна програмним шляхом або за допомогою зовнішнього пристрою. Давайте розглянемо наступний малюнок, який допоможе нам у роботі.
(Відразу зізнаюся, малюнок не мій, він взятий із сайту www.pcports.ru, де є багато інформації на цю тему).

Як бачимо, висновки порту можна розділити чотирма групи. Вісім красних висновків відносяться до регістру Data. Щоб до нього звертатися, треба знати його адресу: 378h - у 16-річній системі або 888h - у 10-річній. Біти цього регістру можуть бути встановлені (або скинуті) як програмно, так і зовнішнім пристроєм.
Висновки, позначені чорним кольором, є земляними. Всі вони з'єднані між собою і для наших цілей ми можемо використовувати будь-хто.
Зеленим кольором позначені контакти, встановлювати значення яких можна лише через зовнішній пристрій. Тобто, програмно ми їх змінити не можемо. Ми можемо лише зчитувати їхній стан. Вони відносяться до регістру Status, який має адресу 379h у 16-річній або 889 у 10-річній системі.
І регістр Control, висновки якого позначені синім кольором. Він як і регістр Status односпрямований, але його стан змінювати можна лише програмно.
Ну що, треба було б і на практиці закріпити. Давай згадаємо старий, добрий Асемблер. Для роботи з портами він надаємо нам дві команди: in та out. Команда in завантажує дані в акумулятор із порту пристрою вводу/виводу. Приклад:

n акумулятор, порт.

І тут можна виводити з портів з адресами до 255. Нам цього недостатньо. Використовуючи реєстрову адресацію, можна виводити з портів до 65536. Ось приклад:

в акумулятор, dx .

Тобто адреса порту має бути заздалегідь поміщена в регістр dx. Команда out навпаки – поміщає в порт дані з акумулятора. Приклад: out dx, акумулятор. Тут також використовується реєстрова адресація, що можна було б працювати з портами, адреси яких до 65536. Тепер запускаємо наш улюблений Делфі, ставимо на форму кнопку і за подією її натискання пишемо наступний асемблерний код (це називається асемблерна вставка (примітка Soffrick"а - Inline assembler) і вона записується між ключовими словами asm і end):
(Цей приклад не буде працювати в Windows NT. Потім розповім як це подолати)

procedure TForm1. Button1Click (Sender: TObject); asm //позначає, що далі піде асемблерний код mov dx, 888 //засилаємо в регістр dx адресу нашого порту в 10-й системі mov al, 00000001b //В акумулятор посилаємо "маску" в двійковій сис. out dx, al //Виводимо в порт (а точніше в регістр Data знач. 00000001 end;

Тепер поясню чого ми досягли. Давай подивимося на наш малюнок, а точніше на червоні роз'єми, які відповідають бітам від D0 до D7 регістру Data. А тепер вгадай який із них ми встановили в 1. Правильно, біт D0, а отже і контакт №2 встановлений в 1. А це означає, що на цьому контакті зараз знаходиться +5 Вольт. Перевіряється легко. Потрібно взяти світлодіод і його "+" засунути в другий контакт, а його "-" в 25-й (тобто заземлити). Ось тут я маю тебе попередити, що підключення до LPT порту будь-яких саморобних пристроїв (зроблених не грамотно) може обернутися виходом з ладу материнської плати. Зазвичай довгий вусик світлодіода – це "+" (краще перевірити це за допомогою батарейки). Наш світлодіод має спалахнути. Але не завдання. Наша програма при натисканні на кнопку свариться. Дай вгадаю, у тебе вінда не 9х.

Справа в тому, що ОС Windows NT (2000, XP) з метою забезпечення безпеки використання спільних апаратних ресурсів комп'ютера, забороняє до них прямий доступ із програм режиму користувача. І щоб звернутися до порту, необхідно усі операції проводити через драйвер. Я пропоную використати бібліотеку Inpout32.dll. Завантажити її можна тут http://www.pcports.ru/files/inpout32.rar. Ця бібліотека, під час роботи з NT, звернення до неї конвертує запити до стандартного драйверу ОС, якою і йде обмін даними з портом. Дізнатися більше про цю бібліотеку та її автора можна тут: http://www.logix4u.net/inpout32.htm . Ця бібліотека містить дві такі функції, які нам знадобляться. Ось їх опис:

Inp32(PortAdr: word): byte.

Їй передається адреса порту, а вона повертає значення, яке в ньому встановлено. Увага, значення передає у десятковій системі. Наступна функція:

Out32(PortAdr: word; Data: byte): byte.

З опису видно що вона теж може повертати якийсь результат, але нам це не знадобиться. Вона надсилає у вказаний порт зазначене значення (теж у 10-чної системи). Знову відкриваємо наш відчайдушно закритий після першої спроби Делфі та робимо таке. Нам необхідно оголосити функції бібліотеки. Для цього в нашому вихіднику після переліку модулів та перед оголошенням типів пишемо наступне:
...

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg; function Inp32(PortAdr: word): byte; stdcall; external "inpout32.dll"; function Out32(PortAdr: word ; Data: byte ) : byte ; stdcall; external "inpout32.dll"; type TForm1 = class (TForm)

...
Тут ми оголосили дві функції. Вказали, що викликатись вони будуть стандартним способом (написавши stdcall), а також ми вказали, що процедура зовнішня і знаходиться в бібліотеці (external "inpout32.dll"). До речі, ця бібліотека повинна знаходитися в папці разом з файлом, що виконується. Далі кидаємо на форму кнопку і по її натисканні пишемо:

Out32 (888,1);

Компілюємо, запускаємо і про диво, спалахнув наш світлодіод. А тепер давай згадаємо "маску" (00000001) із попереднього прикладу. Наша одиниця, яка передається в другому параметрі в порт 888 (реєстр Data) в 10-чної сис. рівносильна 00000001 у 2-чній. Тобто, якщо взяти ще два світлодіоди, і "+" одного засунути в 3-й контакт LPT порту, а "+" іншого, наприклад, у п'ятий, а їх мінуси звичайно заземлити підключивши до 25-го висновку, то для того що б їх все запалити, треба у другому параметрі функції Out32 відправити на порт 11: Out32(888,11), тому що 11, у двійковій системі виглядатиме так 00001011. Незрозуміло? Спробуй ці нулики та одиначки візуально накласти на малюнок, починаючи з дев'ятого контакту і до 2-го. Тепер не складно здогадатися, що на контактах 5,3 та 2 буде встановлена ​​напруга +5В і наші світлодіоди, які ми туди засунули, горітимуть. Тепер ми можемо зробити щось цікавіше, наприклад мигалку. Використовуючи таймер, це не складно зробити. Спробуй сам.

Ну от начебто б і все, що я хотів тобі розповісти сьогодні. У наступній статті я розповім як зробити так, щоб радіокерована машинка справлялася не з пульта, а з клавіатури. Успішної компіляції.

Written by: Kastor