- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Denke zu kompliziert > 7-Segment Multiplexanzeige

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    24.11.2005
    Beiträge
    15
    Anzeige

    Praxistest und DIY Projekte
    Habe ich das richtig verstanden, das du jede Ziffer in einer Schleife einzeln durchgehst? (Also nicht alles auf einmal darstellst, sondern jede Ziffer hinter einander)

    Kommt es da nicht zu einem sichtabaren Flimmern?

  2. #12
    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
    Das ist die Technik vom Multiplexen, das geht nicht anders und ist auch so im Sinne des Erfinders.
    Und Flimmern, mehr oder weniger, kommt auf die Frequenz sowie Ti/Tp an.

    Fernsehr, Kino, Anzeigen von DVD oder Vidreorecorder, ja sogar die Ledrücklichter der neueren PKW's arbeiten so.

    Jetz bist du Baff was?

    Erkennen kann man das eigentlich nur mit einem Trick (verrat ich nich).
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    ja sogar die Ledrücklichter der neueren PKW's arbeiten so.

    Das kann man aber gut sehen, das erste mal, wo ich so ein Auto vor der Nase hatte, dachte ich, daß ich zum Augenarzt muß, man sollte es verbieten!

    Gruß Sebastian

  4. #14
    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
    Also das hat mir jetzt keine Ruhe gelassen

    Hier der Source:

    Code:
    ' 4-Digit Multipexed Display an Port C
    ' PortC.4 = 1er
    ' PortC.5 = 10er
    ' PortC.6 = 100er
    ' PortC.7 = 1000er
    ' Portc.0 bis Portc.3 = BCD Code der Zahl &H00 bis &HFF
    ' Hierzu einen 7-Segmentdecoder (74LS48) zwischen PortC(0..3) und den Segmenten schalten
    ' Nicht vergessen die Treibersegmentausgänge mit 470R PullUp zu schalten.
    
    ' Der Baustein 74LS48 kann nur Zahlen (0-9) darstellen heine Hex Codes (ABCDEF)
    ' Falsche Werte (>9) (>&H09) (>&B00001001) führen zu Anzeigefehlern.
    
    
    
    $regfile = "m32def.dat"                           ' AT Mega 32
    $crystal = 16000000                               ' 16 MHz                                         
    $baud = 19200                                     ' Serielle Schittstelle einrichten
    
    Anzeigeport Alias Portc                           ' Hier einstellen an welchem Port
                                                      ' das Display angeshclossen wird
    
    Config Anzeigeport = Output                       ' Direction einstellen
    
    
    Declare Function Anzeige(byval B_speed As Byte) As Integer
    
    
    
    Dim X As Integer                                  ' Variable für For Scheife
    Dim Y As Integer                                  ' Variable für For Scheife
    Dim B_ar_zahl(4) As Byte
    
    Portc = 0                                         ' Port C initialisieren
    
    
    '               Die Anzeige soll "4321" darstellen
    B_ar_zahl(1) = 1                                  ' Hier die 1er Zahlen der Anzeige
    B_ar_zahl(2) = 2                                  ' Hier die 10er Zahlen der Anzeige
    B_ar_zahl(3) = 3                                  ' Hier die 100er Zahlen der Anzeige
    B_ar_zahl(4) = 4                                  ' Hier die 1000er Zahlen der Anzeige
    
    
    Do
      For Y = 0 To 9
        X = Anzeige(5)
      Next Y
    
    Loop
    
    End                                               'end program
    
    ' ******************************************************************************
    
    Function Anzeige(byval B_speed As Byte) As Integer
       Dim B_x As Byte                                ' Schleifen Variable
       Dim B_decade As Byte                           ' Aktivierung der Decade
       Dim B_select As Byte
    
       For B_x = 4 To 7                               ' Schleife für Decaden
                                                      ' Bit 4 bis 7 sind Decaden
          B_decade = 2 ^ B_x                          ' Bitmuster für Decade berechnen
          B_select = B_x - 3                          ' Feld des Array's bestimmen
    
          Anzeigeport = B_decade                      ' Nur Decade aktivieren
          Anzeigeport = Anzeigeport Or B_ar_zahl(b_select)
                                                      ' Decade + Anzeigewert aktivieren
                                                      ' Hiermit wird auch das Anzeigetiming
                                                      ' realisiert
    
          Waitms B_speed                              ' Anzeigedauer der einzelnen Decade
       Next B_x
    
       Anzeige = 0                                    ' Rükgabewert 0 = ok
    End Function
    
    ' ******************************************************************************
    
    End                                               'end program
    Dann noch der Schaltplan für Dein IC
    und der Beweis dass es geht....
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken mux-display_14315c_schematic.gif   mux-display_14315c_photo.gif  
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    54
    Beiträge
    2.807
    So, durch den ersten Tipp von PicNick bin ich zumindest bei der Segmentansteuerung sehr kompakt fertig.

    Nun hängt es noch bei der Dezimalstellenauswahl. Ich möchte eine vierstellige Variabel stellenweise aufsplitten, versuche dafür den "Mid"-Befehl - aber (mal wieder) komme ich mit den Variablenarten nicht richtig klar.


    Vereinfacht (und völlig erfolglos) versuche ich gerade :

    Code:
    x=3465 (anzuzeigende zahl)
    
    do
        y=mid(x,3,1)     (rechte Ziffer, einer/5, soll selektiert werden)
        pin1=1              kathode einer ein
        zeige segmente
    
        y=mid(x,2,1)     (zehner/6 soll selektiert werden)
        pin2=1              kathode zehner ein
        zeige segmente
    
        y=mid(x,1,1)     (hunderter/4)
        pin3=1
        zeige segmente
     
        y=mid(x,0,1)     (tausender/3, linke linke Ziffer)
        pin4=1
        zeige segmente
    loop

  6. #16
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Vom Wald sieht' man nix, überall stehen Bäume rum !
    Also, sagen wir mal: (ich weiß nicht, ob das jetzt mit deinen Pins so stimmt)
    Code:
    1. MID is nicht so gut, weil da ja wieder ein string rauskommt. Besser is:
    dim Instring  as string * 4
    dim onechar(4) as byte at Instring overlay
    2. Isses so ?  
    PORTD --> Segmente
    PORTB.0 --> Einer       ' ? 
    PORTB.1 --> zehner
    PORTB.2 --> hundert
    PORTB.3 --> tausend
    3. Geht aber besser mit Maske als über Pin-Nummer
    dim charmsk as byte   
    
    4. Arbeiten geht besser von tausend-->einer (dadurch kannst du später mal auch führende Nullen unterdrücken)
    dim charidx as byte   ' von 1 - 4   
    5. Hilfsbyte
    dim E   as byte   ' das aktuelle Zeichen 
    
    Auf geht's:
    '-----------------------------------------------------------------
          Instring  = "3465"
          charmsk = 8                 '(= pin.3)
          for charidx = 1 to 4
                PORTD = charmsk      ' kathode aufdrehen
                E = onechar(charidx)  '  ~ mid(instring, chardx, 1) 
                E = E AND &H0F         ' Reduzieren auf 0-9
                on e gosub 0,1,2,....... ' kennst du schon 
                shift charmsk, right, 1  ' nächste Kathode 
          next
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

LiFePO4 Speicher Test