PDA

Просмотр полной версии : [Начинающим] - Lpt порт.


Dimi4
15.02.2008, 14:30
Привет! Если вы хотели начать заниматься електроникой вместе с програмированием, ета статтья для вас. Расчитана она на новичков, которые хотят сделать девайс :D управляющийся компом. Для етого используем лтп порт. Наверника вы им не пользуется. Он использовался в старых версиях принтерах. Чаще всего он "закрашен" фиолетовым, и самый длинный. Думаю без проблем его найдете.
Он состоит из адресов H378, H37a. Есть еще другие, знать о них необязательно. Адреса H378, H37a могут выдавать и принимать сигналы, работают двунаправлено.Чаще всего , H37a предназначен для управления девайсом, а H378 для отправки и приёма сигналов.Сигнал - ето всего-лиш присутствие или отсутствие напряжения (5В) на порте. Допустим, если нам нужно включать всего 8 светодиодов. Ето означает, что нужно научить програму подавать напряжение 5В адреса H378, ножки 2. В етом и заключается суть управления.
Важно, чтобы девайс имели хрошою гальваническую развязку с компом, ELSE die(); PC. :)
У нас девайсом - будеть лампочка, точне: светодиод. Помните, он имеет полярность.http://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Diodos_LED_foto.png/180px-Diodos_LED_foto.png
(http://ru.wikipedia.org/wiki/Светодиод)
Проверьте полярность : горит - ок, не горит - поменяйте полярность и запомните правильный вариант.
Далее, ножки светодиода надо фтыкнуть в 2-й (тот вывод, который подключася к плюсу батареи) и 25-й ( тот который на "минусе" батареи) Важно! разьемы порта, не перепутайте!
Далее ПРОГРАМИРУЕМ:
Наша прога будет в консольном виде, на си++
Вот собсна и код:

#include "iostream.h"
#include "conio.h"
#include "stdlib.h"

void main()
{
int Address=888;
cout<<"Тестируем LTP port."<<endl;
cout<<"Жмякай '1' для активации и '0' для дезактивации диода ."<<endl;
cout<<"для выхода 'e'."<<endl;
cout<<" "<<endl;

while(1)
{
switch(getch())
{

case '0': cout<<"Дезактивация...."<<endl;
_outp(Address, 0);
break;
case '1': cout<<"Активация...."<<endl;
_outp(Address, 1);
break;
case 'e': exit(1);
}
}

getch();
}
Вот и всё! Диод Должен Загорется.
Ищо примерчик на новом языке LangMF:

<#Module=mdlDemo>
'---------------------------------------
Sub Load(cmdLine)
form.add "label",1
form.label(1).move 140,40
form.label(1).fontsize=16

form.add "command",1
form.command(1).move 130,100,80,30
form.command(1).caption="OK"

form.show
End Sub
<#Module>

<#Form=form>
'-----------------------------------------
Sub Command1_Click()
Dim numPort, byt

randomize timer


Do

rc = sys.dynapi.callfunction("dlportio","DlPortWritePortUchar", &H378, int(rnd*255))

byt = sys.dynapi.callfunction("dlportio","DlPortReadPortUchar", &H378)


form.label(1).caption = byt
DoEvents
Sleep 200

Loop until isend

End Sub

'-----------------------------------------
Sub Form_Unload()
endmf
End Sub
<#Form>

Для работы данного скрипта необходимо установить "DriverLINX Port I/O Driver".

Его можно скачать здесь: _http://atombyte.com/ftp/Dlpio_setup.exe

MegaDeth
15.02.2008, 15:27
так это конечно хорошо, на досуге все прочитаю а пока поправлю лог.1 это +12в у лаптя, а лог0 это отрицательное напряжение относительно массы, помоему -5В однако немогу утверждать точно. такчто резисторы... Кстате а где у тебя про них написано??? вообщем надо брать килоома 2 не меньше...
разчитывается так
R=(Напряжение_питания_свето иода-12/Максимальный_ток_для_свето иода)

а лучше вообще помимо светодиода последовательно воткнуть диод, пятивольтовый интегральный стабилизатор и резистор...
у светодиодов может быть маленький обратный ток, и от -5В ему хешельбе придет...
кстати автор и проверь заодно, воткни один прямо другой обратно светодиоды(с резисторами!!!), и посмотри при лог.0 будет ли гореть один из них =)))

Dimi4
15.02.2008, 15:37
кстати автор и проверь заодно, воткни один прямо другой обратно светодиоды(с резисторами!!!), и посмотри при лог.0 будет ли гореть один из них =)))
На данный момент немогу, у меня ноут а там нет лтп. Но как только буду иметь доступ к обычному попробую.
а лучше вообще помимо светодиода последовательно воткнуть диод, пятивольтовый интегральный стабилизатор и резистор...
Можно но проще светодиод--->резистор. Всё должно быть ОК

presidentua
16.02.2008, 02:14
Автор моего любимого программатора АВРеал тоже использует DriverLINX Port I/O Driver. Поэтому эта библиотека тоже установлена, но никогда даже не пробовал с ней разобраться. Но смотрю управлять с помощью ее ЛПТ портом очень легко. На досуге тоже поиграюсь с этой библиотекой.

Спасибо! :)

OMG!!
29.02.2008, 01:00
Я в lpt много девайсов собирал.. начиная от IR приемника.. потом надрачивал его на xmms, и все ок.. заканчивая джойстиком от PS One. схем в интернете море)