- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: 7 Segmentanzeige

  1. #11
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    60
    Beiträge
    1.305
    Blog-Einträge
    1
    Anzeige

    E-Bike
    Stell dich nicht so an...

    Code:
    Led_port Alias Portb                    ' Port An Den Die Segmente "hängen"
    Dim Wer As String * 1                   ' String einzelnes Zeichen der Zahl
    
    ' Port-Pin zu 7-segement - g f e d c b a
    
    Select Case Wert
       Case "0" : Led_port = &B00111111     ' hier die Port-Pins ansteuern,
       Case "1" : Led_port = &B00000110     ' welche das Segment ansteuern soll
       Case "2" : Led_port = &B01011011
       Case "3" : Led_port = &B01001111
       Case "4" : Led_port = &B01100110
       Case "5" : Led_port = &B01101100
       Case "6" : Led_port = &B01111101
       Case "7" : Led_port = &B00000000
       Case "8" : Led_port = &B00000111
       Case "9" : Led_port = &B01101111
       Case Else Led_port = &B00000000
    End Select
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    ???
    wie - was meinst du damit: stell dich nicht so an?
    Also mein Prog. steht doch schon oben drinn! NUR das die Funktion nicht die gewünschte ist... siehe ersten Beitrag. (oder hab ich etwas falsch verstanden?)

    Tobias
    ...

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Ich habe das mal zu Fuss erledigt. Ist eigentlich nicht schwer. Zuerst wählen, welche der 4 Ziffern leuchten soll. Diese aktivieren, dann den Wert anzeigen. Ziffer deaktivieren, nächste aktivieren, Wert anzeigen, deaktivieren,...
    PRinzipiell machst du es auch so. Du solltest mal den Stack erhöhen, da ich keine Angabe darüber finden kannt.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    >>Du solltest mal den Stack erhöhen

    ? ääh damit hab ich noch nichts gemacht...
    deswegen taucht in meinem Programm auch nichts davon auf. was/wieviel soll ich denn nehmen?

    Tobias
    ...

  5. #15
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Hallo TobiasBlome,

    hab´ ich sofort geändert. Aber es macht keinen Unterschied ob 1 oder 0 und das merkwürdige 2 oder 3 geht auch! Bei 4 fehlt die erste Zahl...

    Aber vielleicht habe ich ja mehrere kleine Fehler!
    dann hilft es sicher, das bisherige korrigierte Programm nochmal zur Ansicht hier einzustellen.

    Gruß, Michael

  6. #16
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    60
    Beiträge
    1.305
    Blog-Einträge
    1
    ich glaub wir reden gerade total aneinander vorbei,

    • do
      ___aber warum fragst du denn wie es deodiert werden soll,
      ___wenn du das schon anders gelöst hast,
      ___was aber nicht funktioniert,
      ___und darum hier danach fragst wie du es lösen kannst.
      loop
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    ja richtig - hier mein aktuelles Programm!

    und der FEHLER:
    wenn Variable LED=1234 --> dann Anzeige 43
    wenn Variable LED=123 -> dann Anzeige 3321

    (In Zukunft soll noch ein Dezimalpunkt hinzukommen)

    Code:
    '7Segmentanzeige mit 4 Anzeigen
    
      $regfile = "ATtiny2313.dat"                               'ATTiny2313
          $crystal = 20000000                                   '20MHz Quarz
    
    
    $hwstack = 64                                               ' default use 32 for the hardware stack
    $swstack = 64                                               ' default use 10 for the SW stack
    
    
    
    
          Ddrb = &B11111111                                     'PortB = Ausgang (PB0=A usw.)
          Ddrd = &B1111111                                      'PortD = Ausgang (PD3=Anzeige1, PD4=A2, PD5=A3, PD6=A4)
    
          Dim Led2 As String * 5 At &H70
          Dim Z(5) As Byte At &H70 Overlay
          Dim Led As Word
          Dim X(5) As Byte
          Dim Test As Integer
          Dim Test2 As Integer
          Dim Anzeige_x As Byte                                 'für LED-Anzeige wählen...
    
          Enable Interrupts
    
    
    Do
    
     'LED:=:EZHT
      Led = 123                                                 'LED - Anzeigewert
    
    For Test2 = 1 To 5                                          'Wert sichern .....
     X(test2) = Z(test2)
    Next Test2
    
    
    
    
    'Anzeige durchwechseln (hochzählen)
    For Anzeige_x = 3 To 6                                      'Zaehler = PortD 3-6 Anzeige wählen)
     Test = X(anzeige_x)
     Select Case Test
    
    
    'Led-Segmente als Zahlen definieren:
       Case 48 : Portb = 63                                     'NULL
       Case 49 : Portb = 6                                      'EINS
       Case 50 : Portb = 91                                     'ZWEI
       Case 51 : Portb = 79                                     'DREI
       Case 52 : Portb = 102                                    'VIER
       Case 53 : Portb = 109                                    'FÜNF
       Case 54 : Portb = 125                                    'SECHS
       Case 55 : Portb = 7                                      'SIEBEN
       Case 56 : Portb = 127                                    'ACHT
       Case 57 : Portb = 111                                    'NEUN
       Case 58 : Portb = 128                                    'DP -> geht das als PORT zu setzen???
       Case Else : Portb = 0
      End Select
    
    
    'Anzeige auswählen und Ein- / Ausschalten
      Portd.anzeige_x = 1                                       'Anzeige AN
      Waitus 100                                                'Zeit für jede Anzeige
      'Waitms 100                                                'waitus 100           'Zeit für jede Anzeige
      Portd.anzeige_x = 0                                       'Anzeige AUS
    Next Anzeige_x
    
    
    Led2 = Str(led)
    
    
       If Z(4) = 0 Then                                         'Führende Nullen eliminieren
        Do
         Z(5) = Z(4)
         Z(4) = Z(3)
         Z(3) = Z(2)
         Z(2) = Z(1)
         Z(1) = 0
        Loop Until Z(5) > 0
      End If
    
    
    
    Loop

    Tobias
    ...

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    oh entschuldigung, ich habe noch einen Wichtigen Fehler vergessen:
    Auf der Anzeige mit der der 1 (LED=123 -> dann Anzeige 3321) taucht manchmal eine 3 auf...
    ...

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Hat denn keiner eine Idee?
    Och nee - jetzt stehe ich wieder wie am Anfang vom Betrag...

    Tobias
    ...

  10. #20
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Ich weiss nicht, wie du das verdrahtet hast. Ich würde erstmal nur eine Ziffer aktivieren und alle Zahlen einzeln durchlaufen lassen. Dann die Nächste usw.

    Meine Ziffern sehen so aus:

    Dim Zahl(10) As Byte
    Zahl(10) = &B01000000
    Zahl(1) = &B01111001
    Zahl(2) = &B00100100
    Zahl(3) = &B00110000
    Zahl(4) = &B00011001
    Zahl(5) = &B00010010
    Zahl(6) = &B00000010
    Zahl(7) = &B01111000
    Zahl(8) = &B00000000
    Zahl(9) = &B00010000

    Die 10 ist natürlich die Ziffer 0.

    Dann halt

    Portb = Zahl(1)

    usw
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen