Схемы, программы, прошивки [Начинающим] - Lpt порт.

Discussion in 'Электроника и Фрикинг' started by Dimi4, 15 Feb 2008.

  1. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,045
    Reputations:
    291
    Привет! Если вы хотели начать заниматься електроникой вместе с програмированием, ета статтья для вас. Расчитана она на новичков, которые хотят сделать девайс :D управляющийся компом. Для етого используем лтп порт. Наверника вы им не пользуется. Он использовался в старых версиях принтерах. Чаще всего он "закрашен" фиолетовым, и самый длинный. Думаю без проблем его найдете.
    Он состоит из адресов H378, H37a. Есть еще другие, знать о них необязательно. Адреса H378, H37a могут выдавать и принимать сигналы, работают двунаправлено.Чаще всего , H37a предназначен для управления девайсом, а H378 для отправки и приёма сигналов.Сигнал - ето всего-лиш присутствие или отсутствие напряжения (5В) на порте. Допустим, если нам нужно включать всего 8 светодиодов. Ето означает, что нужно научить програму подавать напряжение 5В адреса H378, ножки 2. В етом и заключается суть управления.
    Важно, чтобы девайс имели хрошою гальваническую развязку с компом, ELSE die(); PC. :)
    У нас девайсом - будеть лампочка, точне: светодиод. Помните, он имеет полярность.[​IMG]
    (http://ru.wikipedia.org/wiki/Светодиод)
    Проверьте полярность : горит - ок, не горит - поменяйте полярность и запомните правильный вариант.
    Далее, ножки светодиода надо фтыкнуть в 2-й (тот вывод, который подключася к плюсу батареи) и 25-й ( тот который на "минусе" батареи) Важно! разьемы порта, не перепутайте!
    Далее ПРОГРАМИРУЕМ:
    Наша прога будет в консольном виде, на си++
    Вот собсна и код:
    PHP:
    #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(Address0);
                            break;             
                case 
    '1':     cout<<"Активация...."<<endl;
                            
    _outp(Address1);
                            break;
                case 
    'e': exit(1);
            }
        }

       
    getch();
    }
    Вот и всё! Диод Должен Загорется.
    Ищо примерчик на новом языке LangMF:
    PHP:
    <#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 numPortbyt

    randomize timer


    Do

        
    rc sys.dynapi.callfunction("dlportio","DlPortWritePortUchar", &H378int(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
     
  2. MegaDeth

    MegaDeth Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    192
    Likes Received:
    71
    Reputations:
    13
    так это конечно хорошо, на досуге все прочитаю а пока поправлю лог.1 это +12в у лаптя, а лог0 это отрицательное напряжение относительно массы, помоему -5В однако немогу утверждать точно. такчто резисторы... Кстате а где у тебя про них написано??? вообщем надо брать килоома 2 не меньше...
    разчитывается так
    R=(Напряжение_питания_светодиода-12/Максимальный_ток_для_светодиода)

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

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,045
    Reputations:
    291
    На данный момент немогу, у меня ноут а там нет лтп. Но как только буду иметь доступ к обычному попробую.
    Можно но проще светодиод--->резистор. Всё должно быть ОК
     
    1 person likes this.
  4. presidentua

    presidentua милиционер Античата

    Joined:
    4 Nov 2007
    Messages:
    305
    Likes Received:
    236
    Reputations:
    15
    Автор моего любимого программатора АВРеал тоже использует DriverLINX Port I/O Driver. Поэтому эта библиотека тоже установлена, но никогда даже не пробовал с ней разобраться. Но смотрю управлять с помощью ее ЛПТ портом очень легко. На досуге тоже поиграюсь с этой библиотекой.

    Спасибо! :)
     
    3 people like this.
  5. OMG!!

    OMG!! Elder - Старейшина

    Joined:
    25 Feb 2008
    Messages:
    230
    Likes Received:
    70
    Reputations:
    -3
    Я в lpt много девайсов собирал.. начиная от IR приемника.. потом надрачивал его на xmms, и все ок.. заканчивая джойстиком от PS One. схем в интернете море)