Цю статтю я написав років чотири тому. А зараз раптово знайшов її, і вирішив викласти в блог. Досить кумедно :) Попереджаю, я не несу відповідальності за те, що може статися з вашою технікою в результаті застосування даної інформації.
Завдання стоїть дуже тривіальна: навчитися керувати мерехтінням світлодіода, підключеного до ПК через LPT-порт. Чому саме LPT. Тому що він досить простий і в міру цікавий.
Поїхали!
підготовка
Отже, що нам потрібно для втілення цього жаху в реальне істота:
- ПК
- Компілятор якої-небудь мови програмування (Assembler, С, С ++, Pascal, etc ...).
- Деякий програмний інструментарій
- Світлодіод на 5В
- LPT-шнур
Шнур у мене був тільки розрізаний, але ви можете використовувати будь-який, головне все правильно поєднувати. Ось мій шнур, з уже виведеними контактами для підключення світлодіода (про це мова піде далі):
Ось, власне, світлодіод, куплений на найближчому базарі за кілька грошей. Він який буде світитися яскравим синім світлом:
Перш ніж приступити до практики, трохи теорії.
Як працюєте LPT-порт? Про це досить багато написано, проте я все-таки коротко розповім як обстает справи.
Паралельний порт ПК зазвичай використовується для підключення принтерів, але на цьому його можливості не обмежуються. До нього можна підключати будь-який зовнішній, саморобний пристрій. LPT-порт має 25 пінів, але не всі 25 необхідні. У нашому прикладі, наприклад, потрібно тільки 2. Розглядати призначення всіх не будемо.
Підключати світлодіод будемо плюсом до 2 піну, а мінусом - до піну 18. Дивіться, не переплутайте, в іншому випадку світлодіод може згоріти. Краще заздалегідь перевірити де у нього плюс, де мінус на малопотужної батарейці.
Якщо у вас шнур тато-мама, тобто при підключенні до комп'ютера, на вашому кінці шнура залишаються входи, справа проста - просто увіткнути в потрібні Піни діод. Слід бути обережним, неправильно підключив, можна пошкодити LPT-порт.
Особисто я, розкурочив шнур, визначив, який відноситься до D0, який до землі, і у мене все виглядає приблизно так, як показано на наступному малюнку. Я сидів з пробником, і обчислював, яка лінія відноситься до D0. Дуже цікаво! Ви можете знайти більш удочное рішення.
У запобіжні заходи можна послідовно до діода припаяти опір. Рекомендують 470 Ом. На рахунок заземлення: хтось заземляє нема на пін GRD, а на корпус коннектора, але я віддаю перевагу пін.
На цьому етапі ви повинні уявляти собі, як можна підключити світлодіод до LPT-порту.
програмна частина
Розберемо, як впоратися з ОС Windows, тому що це трохи складніше.
Перед тим, як перейти безпосередньо до програмування своїми силами, перевіримо, чи працює все це справа, зібране в минулій частині статті. Для цього я використовую чудову програму моніторингу паралельного порту, так і названу: Parallel Port Monitor by Neil Fraser.
Як роблю я: запускаю програму, вимикаю в ній все Піни з 2 до 9, потім підключаю світлодіод до LPT-порту (в нашому випадку в другій пін, в D0). Після цього в Parallel Port Monitor подаю одиницю на D0. Світлодіод повинен загорітися. Якщо нічого не сталося, можливо, ви неправильно його підключили або ж в програмі вибрали не той LPT-порт. Спробуйте LPT1, LPT2, LPT3, якщо у вас їх декілька.
Світлодіод блимає? Відмінно. Тепер можна побавитися з ним своїм програмним кодом. Як було сказано раніше, це робити ми будемо обхідним шляхом. Якщо ви використовуєте Windows 95/98 / ME, можете відразу перейти до написання програми, обхідні шляхи вам не потрібні, ці версії ОС Windows дозволяють безпосередньо звертатися до портів.
1) Використання драйвера UserPort
Напишемо тестову програму, миготливу светодиодом раз в секунду. Оригінальний текст приведений нижче. Тут я використав С ++ з вставками ассемблерного коду і компілятор Visual C ++. Ви можете використовувати свій улюблений мова програмування і компілятор, суть не змінюється.
Компілюємо, запускаємо, перевіряємо. Якщо світлодіод став блимати, значить все ОК, все працює, і можна знущатися далі. Якщо ж з'явилося повідомлення про помилку, наприклад «First-chance exception at 0x00411524 in program.exe: 0xC0000096: Privileged instruction», значить, ви неправильно запустили або налаштували UserPort. Зверніться до документації по ньому, там є приклад.
2) Використання бібліотеки inpout32.dll.
Ось як виглядає вихідний текст програми, з використанням цієї бібліотеки:
Наче все. Ідею можна розвинути, і зробити якісь більш корисні або цікаві програмні рішення.
висновок
Як видно, LPT-порт один з найбільш простих в роботі портів, і з ним можна досить-таки цікаво працювати. Умільці збирають і підключають роботів через LPT-порт, роблять в деякому роді систему управління квартирою, включають / вимикають світло в кімнаті з комп'ютера і ще багато цікавих речей.
P.S. Я десь чув, що люди збирають LPT- і USB-ліхтарики, і вирішив собі зробити щось подібне зі старого мікрофона від навушників. Ось що вийшло: