Announcement

Collapse
No announcement yet.

LED über LPT-Port

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • LED über LPT-Port

    Hallo Leute,

    ich möchte gerne zwei verschiedene LEDs über den LPT Port ansteuern
    Wenn ich Button eins betätige soll licht eins angehen wenn ich button2 betätige LED2.

    Da ich aber keine Ahnung habe wie ich es anstellen soll wäre es sehr nett wenn ihr mit es erklären würdet

    Schon jetzt Danke Drazhar

  • #2
    Hi !!!

    Schau mal unter Diverses|Schnittstellen Problem nach.

    Grüße H

    Comment


    • #3
      Danke für den Hinweis aber ich komme mit dem Quellcode nicht klar weil mir die Einbindung der Buttonkomponente nicht klar ist

      Kannst du mir das erklären?

      Danke vielmals

      Sve

      Comment


      • #4
        Huhu !!! Angenommen, die beiden LED's werden über die beiden lsb (D0, D1) gesteuert; dann sollte folgender Code funktionieren...(Hab's nicht getestet).

        Viele Grüße HP

        <b>procedure</b> WritePort(Adr: Word; Value: Byte);<br>
        <b>asm</b> <br>
        mov dx,Adr <br>
        mov al,Value <br>
        out dx,al <br>
        <b>end;</b> <br> <br>

        <b>function</b> ReadPort(Adr: Word): byte; <br>
        <b>asm</b> <br>
        mov dx,Adr <br>
        in al,dx <br>
        mov result,al <br>
        <b>end;</b> <br> <br>

        <b>procedure</b> TForm1.Button1Click(Sender: TObject);<br>
        <b>var</b> <br>
        Value: Byte; <br>
        <b>begin</b> <br>
        Value := ReadPort($378); // Datenregister lpt1 lesen; <br>
        <b>if</b> Button1.Caption = 'Aus' <b>then</b><br>
        <b>begin</b> <br>
        // LED1 ausschalten <br>
        WritePort($378,Value and 254); <br>
        Button1.Caption := 'An'; <br>
        <b>end</b> <br>
        <b>else</b> <br>
        <b>begin</b> <br>
        // LED1 einschalten <br>
        WritePort($378,Value or 1) <br>
        Button1.Caption := 'Aus'; <br>
        <b>end;</b> <br>
        <b>end;</b> <br> <br>

        <b>procedure</b> TForm1.Button2Click(Sender: TObject);<br>
        <b>var</b> <br>
        Value: Byte; <br>
        <b>begin</b> <br>
        Value := ReadPort($378); // Datenregister lpt1 lesen; <br>
        <b>if</b> Button2.Caption = 'Aus' <b>then</b><br>
        <b>begin</b> <br>
        // LED2 ausschalten <br>
        WritePort($378,Value and 253); <br>
        Button2.Caption := 'An'; <br>
        <b>end</b> <br>
        <b>else</b> <br>
        <b>begin</b> <br>
        // LED2 einschalten <br>
        WritePort($378,Value or 2) <br>
        Button2.Caption := 'Aus'; <br>
        <b>end;</b> <br>
        <b>end;</b> <br> <br&gt

        Comment


        • #5
          Danke ersteinmal ...
          es funktioniert alles soweit. Ich kann die LEDs ansteuern.
          Aber wie kann ich jetzt eine bestimmte (zB 10) Impulse auf die LEDs schicken? Also das sie 10 mal blinken?

          Gruß Drazha

          Comment


          • #6
            Na, indem Du Eine LED über einen Schreibzugriff auf den Port einschaltetst, den Wert eine gewisse Zeit im Portregister stehen läßt (Pulsdauer), über den nächsten Schreibzugriff die LED ausschaltest, diesen Wert wieder hälst (Pausendauer) und das ganze 10x wiederholst:

            <b>procedure</b> Blink10;<br>
            <b>const</b> t1=100; // 100 ms Puls<br>
            t2=150; // 150 ms Pause<br>
            <b>var</b> i: integer; value: byte;<br>
            <b>begin</b><br>
            value:=ReadPort($378);<br>
            <b>for</b> i:=1 <b>to</b> 10 <b>do</b><br>
            <b>begin</b><br>
            WritePort($378,value <b>or</b> 1);<br>
            sleep(t1);<br>
            WritePort($378,value <b>and</b> 254);<br>
            slepp(t2); <br>
            <b>end;</b><br>
            <b>end;</b> <br> <br>
            Nachteilig ist natürlich, daß Du während des Sleep-Aufruf das Programm "blockierst". Also, wenn's nicht nur zu Demozwecken dient, entweder einen Timer im Hintergrund, der a) Blinkimpulse zählt und b) den Port uzmschaltet (wenn's nicht so sehr auf Genauigkeit ankommt) oder das ganze in einen Thread packen

            Comment


            • #7
              Hallo
              das funktioniert irgendwie nicht!?!
              habe ich denn eine möglichkeit ein einzelnes Datenkabel anzusprechen?
              So das ich am 1. eine LED habe die Blinkt und am 2. eine die Dauerhaft blink und an der 3. wieder eine die Blinkt!?! ich hoffe das geht.

              Würde mich freuen wenn mir einer helfen kann

              Danke Sve

              Comment


              • #8
                Du mußt das Bit, welches die LED wo blinkt ansteuert rhythmisch auf 0 und auf 1 setzen, während die anderen Bits dadurch nicht beeinflußt werden dürfen. Deshalb die Verknüpfungen mit And bzw. O

                Comment


                • #9
                  hi ... bitte halten sie mich jetzt nicht für doof aber ich bin anfänger und bekomme das nicht hin. haben sie schon mal ein so ein program geschrieben das sie mir schicken können damit ich mir den ganzen quellcode ansehen kann denn ich bekomme bei dem obenstehende Quellcode kein LED-leuchten

                  Vielen Dank Sven

                  [email protected]

                  Comment


                  • #10
                    Beispiel kommt (demnächst), leider kann ich es nicht testen, ich hab' kein Win95/98.
                    Folgendes mußt Du (auch bei obigen Bsp) beachten:
                    1) Das ganze läuft nur unter Win95/98
                    2) Ich bin davon ausgegangen, daß Du LPT 1 verwendest und daß diese die Adresse $378 hat
                    3) das die LED(s) mit D0 (D1, D2) verbunden ist (sind

                    Comment

                    Working...
                    X