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

Так выглядит разъем на компьютере. У него 25 выводов
1 - выход. Его используют принтеры и другие устройства. Если на нем нет
сигнала, принтере не выполнит ни одной команды от других выводов.
2 - 9 - сигнальные выводы. Именно ими мы и будем пользоваться.
18 - 25 - это земля (минус). Обычно(не всегда) они соединены с корпусом
компа.
Это основной набор контактов, необходимый для изготовления собственных
схем.
Для ввода информации в порт используются выводы 10-13, 15. Подробнее в
конце.
Когда я начал программировать LPT порт, я спаял себе небольшую схемку. Мне
кажется, что это самый простой и самый наглядный пример для изучения :
выводы 18-25 можно не замыкать между собой, резисторы можно
подключить к любому из них. Все резисторы на схеме по 470 ом.
Резисторы здесь ограничивают потребляемый ток. Напряжение между сигнальным
выводом и землей должен быть в не более 2,4V - 2.6 mA. Те. очень мало.
LPT порт (как и COM) очень чуствителен к прегрузкам и с ним нужно обращаться
очень осторожно !!!
Для того, чтобы не повредить его, если произойдет пробой в высоковольтной
части вашей схемы, нужно использовать оптоизолятор.

В данной схеме я ставил оптоизолятор 4N25 - самый дешевый ималенький. Катушка
на схеме - это реле на 12 вольт.
Есть спец. микросхемы работы с LPT портом. Они обеспечивают гальваническую
развязку, инвертируют выходной сигнал и тд. Мне известна пока только одна
74HCT573.
Программирование :
Я пока изучаю только PASCAL и поэтому могу предложить программу только под
DOS.
Так выглядит простая программа на Паскале (7,0) : Uses Dos,CRT;
Var
data:byte; {переменная DATA типа byte}
Begin
Readln(data); {читаем переменную -ввод ентером}
Port[MemW[$0040:$0008]:=data; {посылаем в порт}
End.
Эта программа посылает в порт введеное число.
Какое число необходимо ввести :
1 выход - 1 2 выход -
2 3 выход - 4 4 выход - 8 5 выход - 16 6
выход - 32 7 выход - 64 8 выход -
128 0 - "гасит" все выходы
255 - включает все
Если нужно подать сигнал на все выходы, то нужно просто сложить числа обоих
выходов. Пример (на св.диодах): у на горит 2-й и 7-й, нам нужно зажечь 5-й, не
выключая 2и7. Считаем- у второго код 2, у седьмого -
64 => сейчас на порт послано число 64+2 =
66. Теперь зажигаем 5-й - 66+16(код пятерки) =
82. Посылаем на порт 82 и
у нас будут гореть 2,5,7. Но вдруг нам понадобилось погасить 7-й. Всё просто -
отнимаем от того что у нас сейчас "в порте" (82) часло этого 7-го вывода -
82-64 = 18
NB ! Если я не ошибаюсь, то так
во всех языках программирования. Отличается только запись самого порта, символ
присваивания и тд. Например, в "C" Это будет примерно так : outportb(0x378,data); где data - число которое
нужно послать.
Эти примеры не работают в WinNT и Win2K :( Я нашел как можно запитать
порт из Win2K. Я его ещё не испытывал поэтому только описание.
Необходимо cоздать из программы фаил с именем порта, например "LPT" и просто
писать в него числа. Этот метод даже описан где-то в хелпе к VC++ , но я не
нашел. Программисты говорят, что такой способ работает во всех Win системах, но
его нельзя использовать если нужна высокая точность.
Мои программы для управления LPT :
Попробовал сделать программку под Windows 9x - вот что получилось lpt.zip (147kb)
lpt (4
kB) - эта программа описана в примере.
migalka
(4 kB) - программа для создания эффектов (для 8 светодиодов)
lpt_plus
(9 kB) - при нажатии на клавишу (1-8) включает соответствующий выход, при
повторном нажатии выключает. С помощью этой программы я управлял несколькими
бытовыми приборами одновременно. Скачайте, разберетесь...
Вот полная распайка LPT порта :
N |
Направление |
Сигнал |
1 |
Выход |
Data Strobe |
2 |
Выход |
Data 0 |
3 |
Выход |
Data 1 |
4 |
Выход |
Data 2 |
5 |
Выход |
Data 3 |
6 |
Выход |
Data 4 |
7 |
Выход |
Data 5 |
8 |
Выход |
Data 6 |
9 |
Выход |
Data 7 |
10 |
Вход |
Acknowledge |
11 |
Вход |
Busy |
12 |
Вход |
Paper Out |
13 |
Вход |
Select |
14 |
Выход |
Auto feed |
15 |
Вход |
Error |
16 |
Выход |
Init |
17 |
Выход |
Select Input |
18-25 |
|
Ground |
Источник electronics.dax.ru
От себя:
Делал. Работает.
А вот архив моих программ-мигалок на QBasic`е: |  | lpt_mig.zip (2 kb) |
|