[C/C++] 7 segment anzeige

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von aggrosiv, 13. Juni 2012 .

Schlagworte:
  1. 13. Juni 2012
    7 segment anzeige

    ich hab mir selbst eine 7 segment anzeige mit leds gebastelt. leider fehlt mir dazu das programm.

    als treiber hab ich den uln2003 verwendet und eine schieberegister (74hc95).

    was ich möchte ist einfach per tastendruck die zahl um 1 erhöhen. also von 0-9 zählen. hab 4 solche segment.

    und bei 2 segmente soll die uhrzeit in min angezeigt werden.

    µc hab ich einen atmega32 von avr.

    hab schon etwas gefunden, allerdings nur in assembler. c wäre halt klasse.
     
  2. 13. Juni 2012
    AW: 7 segment anzeige

    Hier mal mein Code zum ansprechen eines 74HC1595. Lässt sich für das 74hc95 bestimmt recht leicht anpassen.
    Code:
    /*
     * Pollin_M8_74HC595.c
     *
     * Created: 11.05.2012 18:36:17
     * Author: Julian
     *
     * MR = High
     * OE = Low
     * PB0 = STCP
     * PB1 = SHCP
     * PB2 = DS
     */ 
    
    #include <avr/io.h>
    #include <util/delay.h>
    
    void shift_out(uint8_t data)
    {
     for(int i=0;i<8;i++)
     {
     if(data &(1 << i))
     {
     PORTB |= (1 << PB2);
     }
     else
     {
     PORTB &= ~(1 << PB2);
     }
     PORTB |= (1 << PB1);
     _delay_ms(1);
     PORTB &= ~(1 << PB1); 
     }
     PORTB |= (1 << PB0);
     _delay_ms(1);
     PORTB &= ~(1 << PB0);
    }
    Die Wartezeiten sind sehr großzügung und kannst du noch gemäß Datenblatt verkürzen. Das war allerdings nicht sehr schwer zu entwickeln, steht ja alles im Datenblatt des Schieberegisters und hat maximal eine halbe Stunde (wenn überhaupt) gedauert. Zum Ansteuern der richtigen Segmente kannst du der Logiktabelle folgen: Segmentanzeige – Wikipedia
     
  3. 13. Juni 2012
    AW: 7 segment anzeige

    Ja wo genau liegt das Problem?

    Damit solltest du erfahren wenn und wann eine Taste gedrückt worden ist.
    Tasten + Entprellung

    Der uln2003 Chip scheint ein einfaches Latsch zu sein, einfach mehrere Parallel an einem Port des ATmegas anschließen und bei einem Enable Signal am jeweiligen Latsch das Signal zu dem 7-Segement durchschalten.

    Pseudo:
    Code:
    
    main()
    {
     DDRB(Port b) auf Ausgang stellen an diesem Hängen die Latsches
     DDRC(Port b)auf Ausgang stellen an diesem Hängen die Enable Signale aller Latsches
     DDRA(Port b) auf Eingang stellen (Taster)
    
     while (1)
     {
     wenn taste gedrückt
     {
     portb = zahl die angezeigt werden soll
     portc |= (1 << PINLATSCH); -> impuls fürs jeweilige latsch
     portc &= ~(1 << PINLATSCH);
     ... genau so mit weiteren anzeigen verfahren
     }
     }
    }
    
    Mfg rushh0ur
     
  4. 14. Juni 2012
    AW: 7 segment anzeige

    tasten einlesen habe ich über den interrupt vor. ist doch viel einfacher.

    ich versuchs jetz einfach zu erklären:

    wenn ich zB. die taste drück dann soll 1 erscheinen (0110000b). das muss ich ja irgendwo definieren oder? oder weiß der uln das?

    oder machen wir es so. wie würde die software aussehen, wenn ich jetzt eine 5 schreiben möchte?
     
  5. 14. Juni 2012
    AW: 7 segment anzeige

    Taster einlesen über Interrupt macht nur dann Sinn, wenn die Interrupt Leitungen wirklich frei sind und wenn das Ganze kritisch ist (deswegen ja Interrupt). Deine Ziffer (z.B. 1) musst du natürlich in einer eigenen Funktion in den passenden Wert für das Schieberegister bzw dann für das Segment wandeln (den Wiki Link dazu habe ich bereits gepostet). Das ULN2003 ist laut Datenblatt nur ein einfaches Transistorarray und kein Decoder. Wie deine Software aussehen müsste, hängt ganz von deiner Verschaltung ab. Wenn du jemanden suchst der dir das Coded solltest du das im passenden Thread posten.
     
  6. 14. Juni 2012
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    schaltung sieht eigentlich gleich aus wie diese:

    Bild

    ------------------- hinzugefügter Beitrag --------------------

    kann da keiner mehr weiter helfen?
     
  7. 17. Juni 2012
    AW: 7 segment anzeige

    Du hast bis jetzt keine einzige Zeile Code gepostet und dein Schaltplan ist nicht beschriftet, was die Segmente angeht. Es wurden bereits genug Tipps gegeben wie du weiter vorgehen kannst. Mir kommt es so vor als wenn dir sämtliche Grundlagen fehlen würde. Wenn du jemanden suchst der dir den Code schreibt, stelle eine Anfrage!
     
  8. 17. Juni 2012
    AW: 7 segment anzeige

    Du musst dir doch vorher überlegt haben, wie du das machen kannst?!
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.