HomePage
Меню: LPT
 Главная
 Для компа
 Радиоволны
 Остальное
 Ссылки

SV Laboratory - только проверенные схемы!


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

Попробуем разобраться :

lpt.jpg (9978 bytes)

Так выглядит разъем на компьютере. У него 25 выводов

1 - выход. Его используют принтеры и другие устройства. Если на нем нет сигнала, принтере не выполнит ни одной команды от других выводов.

2 - 9 - сигнальные выводы. Именно ими мы и будем пользоваться.

18 - 25 - это земля (минус). Обычно(не всегда) они соединены с корпусом компа.

Это основной набор контактов, необходимый для изготовления собственных схем.

Для ввода информации в порт используются выводы 10-13, 15. Подробнее в конце.

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

lpt_leds.gif (3947 bytes) выводы 18-25 можно не замыкать между собой, резисторы можно подключить к любому из них. Все резисторы на схеме по 470 ом.

Резисторы здесь ограничивают потребляемый ток. Напряжение между сигнальным выводом и землей должен быть в не более  2,4V - 2.6 mA. Те. очень мало.

LPT порт (как и COM) очень чуствителен к прегрузкам и с ним нужно обращаться очень осторожно !!!

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

lpt_isol.gif (2367 bytes)

В данной схеме я ставил оптоизолятор 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)


  © 2002-2006, Simonov Vitaliy