- LiFePO4 Speicher Test         
Ergebnis 1 bis 5 von 5

Thema: 7-Segment Display ansteuern

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.10.2007
    Ort
    San Jose
    Beiträge
    43

    7-Segment Display ansteuern

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Moin Moin,
    Ich habe eine Frage:

    Wie kann ich mit einem ATMEGA32 ein 8-Stelliges 7Segment-Display ansteuern?
    Geht das auch in C?

    Hier ein paar Daten über mein Display:
    8 Pins für die Digits
    8 Pins(0-9 und ein Punkt) für die Segmente
    Es hat die Leuchtfarbe rot.


    Ich hoffe, diese Angeben reichen euch.

    [schild=14 fontcolor=FF0000 shadowcolor=00FFFF shieldshadow=1]Danke für alle Antworten im Voraus!!![/schild]
    <!--
    Danke für alle Antworten im Voraus!!!-->
    Euer ts230
    [schild=14 fontcolor=008000 shadowcolor=FF0000 shieldshadow=1]Roboter sind cool[/schild]

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wenn keine extra hohe Helligkeit gefragt ist, könnte man die LEDs wohl gerade noch vom Controller aus treiben. Das hängt aber auch vom Display-typ ab. Da hilft eigentlich nur ausprobieren, wie viel Strom man brauch damit das Display hell genug ist. Wenn im mittel etwa 4 mA nicht reichen müßte man da auch noch Treiber zwischenschalten.
    Für die Displayauswahl wird man einen treiber brauchen, z.B. ULN 2803 bei gemeinsamer Kathode oder UDN2981 bei gemeinsamer Anode. Den Strom wird man auf das maximum setzten müssen, den der Mega32 verträgt, also rund 25-30 mA, für den Punkt eventuell etwas weniger.

    Die Ansteuerung geht natürlich auch in C. Schließlich ist das keine wirklich zeitkritische Sache. Code habe ich allerdings nur für 5 Stellen an einen MEGA48 und etwas durcheinander liegende Portpins (um die UART frei zu lassen).

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    24.10.2007
    Ort
    San Jose
    Beiträge
    43
    Ich denke, Man sollte die Anzeigen über Transistoren ansteuern.Ein Lehrer hat mir grade gesagt, ich soll es mit Transistoren und nem ATMEGA32probieren.Ich brauche jetzt nur einen Code, derein LED-Display ansteuernkann.Der Controller-Typ ist erstmal egalEin Segment zieht 7 mA.Danke für alle Antworten im Voraus!!!---
    Euer ts230
    [schild=14 fontcolor=008000 shadowcolor=FF0000 shieldshadow=1]Roboter sind cool[/schild]

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    53
    Beiträge
    2.803
    ...juchuu...da hat Jemand die Tags für Farbe gefunden - herzlichen Glückwunsch ! Aber vielleicht lieber ein bisschen mehr Motivation und Kraft in die Forumssuche setzen....

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    24.10.2007
    Ort
    San Jose
    Beiträge
    43
    Hallo,
    Ich habe eine Basic-Programm zur Ansteuerung geschrieben.
    Hier ist es:
    Code:
    
    $regfile = "2313def.dat"                
    $crystal = 4000000
    
    Dim Temp_ziffer As Byte                
    Dim Bcd_aus As Byte                    
    
    Dim Ausgang As Byte                   
    Dim Sek_blink As Bit                    
    
    Dim A_sekunde As Byte                 
    Dim A_minute As Byte                  
    Dim A_stunde As Byte                   
    Dim B_sekunde As Byte                
    Dim B_minute As Byte
    
    
    Config Portb = Output                  
    Config Portd = Output                   
    'Ddrd = &B0111100                         
    'Portd = &B1000011                      
    Data &B0000000             
    Segment_a Alias Portb.0
    Segment_b Alias Portb.1
    Segment_c Alias Portb.2
    Segment_d Alias Portb.3
    Segment_e Alias Portb.4
    Segment_f Alias Portb.5
    Segment_g Alias Portb.6
    Dezimalpunkt Alias Portb.7
    Ziffer_1 Alias Portd.0
    Ziffer_2 Alias Portd.1
    Ziffer_3 Alias Portd.2
    Ziffer_4 Alias Portd.3
    Ziffer_5 Alias Portd.4
    Ziffer_6 Alias Portd.5
    Ziffer_7 Alias Portd.6
    Ziffer_8 Alias Portd.7
    
    
    
    
    Const Load_timer1 = 62755                
    
    
    
    On Timer0 7segment                      
    Config Timer0 = Timer , Prescale = 256   
    Enable Timer0                          
    
    
    Sekunde_plus:
    
    
    Load Timer1 , Load_timer1          
    
    Incr _sekunde                      
    
    
    Return
    '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    On Timer1 Sekunde_plus                 
    Config Timer1 = Timer , Prescale = 64   
    Enable Timer1                          
    Enable Interrupts                        
    Load Timer1 , Load_timer1           
    
    Do
    If A_sekunde = 9 then
    A_sekunde = 0
    B_sekunde + 1
       Incr A_sekunde
       Incr B_sekunde
    End If
    '++++++++++++++++++++++++++++++++++
    If B_sekunde = 6 then
    A_sekunde = 0
    B_sekunde = 0
       Incr B_sekunde
       Incr A_sekunde
    End If'++++++++++++++++++++++++++++++++++
    If A_minute = 9 then
    A_minute = 0
    B_minute + 1
       Incr B_minute
       Incr A_minute
    End If'++++++++++++++++++++++++++++++++++
    If B_minute = 6 then
    A_minute = 0
    B_minute = 0
    A_stunde + 1
       Incr B_minute
       Incr A_stunde
       Incr A_minute
    End If'++++++++++++++++++++++++++++++++++
    If A_stunde = 9then
    A_sekunde = 0
    B_sekunde = 0
    A_minute = 0
    B_minute = 0
    A_sekunde = 0
    B_sekunde = 0
       Incr B_minute
       Incr A_minute
       Incr B_sekunde
       Incr A_sekunde
       Incr A_stunde
    End If
    
    End
    '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    7segment:
    
    If Temp_ziffer = 8 Then Temp_ziffer = 0           '
    Incr Temp_ziffer                                 
    Portb = &B11111111                                
    
    
    Select Case Bcd_aus
        Case 1 : Ausgang = Lookup(1 , Segmentfolge)
        Case 2 : Ausgang = Lookup(2 , Segmentfolge)
        Case 3 : Ausgang = Lookup(3 , Segmentfolge)
        Case 4 : Ausgang = Lookup(4 , Segmentfolge)
        Case 5 : Ausgang = Lookup(5 , Segmentfolge)
        Case 6 : Ausgang = Lookup(6 , Segmentfolge)
        Case 7 : Ausgang = Lookup(7 , Segmentfolge)
        Case 8 : Ausgang = Lookup(8 , Segmentfolge)
        Case 9 : Ausgang = Lookup(9 , Segmentfolge)
        Case 0 And Temp_ziffer = 1 : Ausgang = Lookup(10 , Segmentfolge) 
        Case 0 And Temp_ziffer > 1 : Ausgang = Lookup(0 , Segmentfolge)  
    End Select
    
    
    Segment_a = Not Ausgang.0                         'Segment A
    Segment_b = Not Ausgang.1                         'Segment B
    Segment_c = Not Ausgang.2                         'Segment C
    Segment_d = Not Ausgang.3                         'Segment D
    Segment_e = Not Ausgang.4                         'Segment E
    Segment_f = Not Ausgang.5                         'Segment F
    Segment_g = Not Ausgang.6                         'Segment G
    
    
    Return
    
    
    
    
    
    
    '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    Segmentfolge:                
    Data &B0111111               
    Data &B0000110               
    Data &B1011011               
    Data &B1001111               
    Data &B1100110              
    Data &B1101101               
    Data &B1111101               
    Data &B0000111               
    Data &B1111111               
    Data &B1101111               
    Data &B0000000              
    Data &B1011100               
    Data &B1000000              
    Data &B0001000              
    Data &B0000001              
    Data &B1110100              
    Data &B1111000
    Wenn Fehler drinstecken,dann seit so nett und postet sie.
    Euer ts230
    [schild=14 fontcolor=008000 shadowcolor=FF0000 shieldshadow=1]Roboter sind cool[/schild]

Berechtigungen

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

Labornetzteil AliExpress