Работа с LPT портом |
|
LPT порт - это то место куда подключается принтер. Но туда можно воткнуть ещё много чего интересного. В том числе и придуманые вами схемы. Нужно только разобраться что к чему... 1 - выход. Его используют принтеры и другие устройства. Если на нем нет сигнала, принтере не выполнит ни одной команды от других выводов. 2 - 9 - сигнальные выводы. Именно ими мы и будем пользоваться. 18 - 25 - это земля (минус). Обычно(не всегда) они соединены с корпусом компа. Это основной набор контактов, необходимый для изготовления собственных схем. Для ввода информации в порт используются выводы 10-13, 15. Подробнее в конце. Когда я начал программировать LPT порт, я спаял себе небольшую схемку. Мне кажется, что это самый простой и самый наглядный пример для изучения :
выводы 18-25 можно не замыкать между собой, резисторы можно подключить к любому из них. Все резисторы на схеме по 470 ом. Резисторы здесь ограничивают потребляемый ток. Напряжение между сигнальным выводом и землей должен быть в не более 2,4V - 2.6 mA. Те. очень мало. LPT порт (как и COM) очень чуствителен к прегрузкам и с ним нужно обращаться очень осторожно !!! Вот самая простая схема подключения реле: Думаю, что объяснять здесь ничего не нужно. Data - это один из выходов LPT порта, например, вывод 2 (Data-0). Если на нем появится log1, транзистор откроется, сработает реле K1 и подключит какую-то более мощную нагрузку.. В этой схеме LPT порт напрямую подключен к транзистору и в случае его пробоя на выходе data может оказаться опасное для порта напряжение. Чтобы защитить порт нужно использовать гальваническую развязку. Для того, чтобы не повредить его, если произойдет пробой в высоковольтной части вашей схемы, нужно использовать оптоизолятор. В данной схеме порт отделен от высоковольной части и ему почти ничего не угрожает. В этой схеме я ставил оптоизолятор 4N25 - самый дешевый ималенький. Катушка на схеме - это реле на 12 вольт. Во время экспериментов я подключил к этой схеме реле РЭС22, а к нему настольную лампу. Для пробы написал программку, которая управляла лампой по часам... Есть спец. микросхемы работы с LPT портом. Они обеспечивают гальваническую развязку, инвертируют выходной сигнал и тд. Мне известна пока только две 74HCT573 и 74ALS373 Это схема подключения 74ALS373. Как она работает я не знаю, я не использовал микросхемы вобще, обходился просто связкой оптопара+транзистор или оптопара+симистор.
Кстати, вот примерчик управления симистором: Эту схемку я просто воткнул вместо выключателя от основного освещения в своей комнате. Очень пригодилось когда настраивал LPT-стробоскоп. Можно было не вставая с места выключить на время свет. Ещё один пример практического использования LPT порта, наверно самый удачный. Это стробоскоп управляемый через LPT порт. Схем для ввода информации в порт пока нет :( Но тут, думаю, проблем возникнуть не должно. Порт может работать с обычной 5 вольтовой логикой. Я при экспериментах просто подрубал батарейку через резистор. Прогарммирование :Я пока изучаю только PASCAL и поэтому могу предложить программу только под DOS. Так выглядит простая программа на Паскале (7,0) : Uses Dos,CRT; Var data:byte; {переменная DATA типа byte} Begin Readln(data); {читаем переменную -ввод ентером} Port[MemW[$0040:$0008]:=data; {посылаем в порт} End. Эта программа посылает в порт введеное число. Какое число необходимо ввести : 1 выход - 1 Если нужно подать сигнал на все выходы, то нужно просто сложить числа обоих выходов. Пример (на св.диодах): у на горит 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 - число которое нужно послать. -------- Дополнение от 29.01.02: ----- Эти примеры не работают в WinNT и Win2K :( Я нашел как можно запитать порт из Win2K. Я его ещё не испытывал поэтому только описание. Необходимо cоздать из программы фаил с именем порта, например "LPT" и просто писать в него числа. Этот метод даже описан где-то в хелпе к VC++ , но я не нашел. Программисты говорят, что такой способ работает во всех Win системах, но его нельзя использовать если нужна высокая точность. ----------------------------------------- Мои программы для управления LPT : 12.06.01 - Попробовал сделать программку под Windows 9x - вот что получилось lpt.zip (147kb) migalka (4 kB) - программа для создания эффектов (для 8 светодиодов) lpt_plus (9 kB) - при нажатии на клавишу (1-8) включает соответствующий выход, при повторном нажатии выключает. С помощью этой программы я управлял несколькими бытовыми приборами одновременно. Скачайте, разберетесь... Вот полная распайка LPT порта :
На этом пока все. Для того, чтобы работать с LPT в basic исполуют такие надписи: OUT $H378, a где a - значение от 0 до 255 (см. выше), ничего более просто я в жизни не видел. Если у вас есть материал по этой теме (исходники, схемы или документация на русском), пришлите пожалуйста. masterok@hot.ee
Страница удачно сдута с сайта http://electronics.dax.ru/ |