7segment anzeigen countdown mit 11Stellen

Gast #2442088
Lesenswert?

Hallo,
Ich würde gerne einen CountdownTimer bauen mit 7 Segment anzeigen.
Der Timer soll von einer bestimmten Zeit auf 0zählen,
Die Sieben Segment anzeigen würde ich gerne so nutzen
JJ:DDD:HH:MM:SS
Ich bin nicht gerade ein Fachman und hab auch nur Grundkentnisse der 
Elektrotechnik, und die sind aus einem 6Monatigen Elektrolehrgang und 1 
1/2 Monaten Praktikum im Betrieb.

Über hilfe und ideen wie man soetwas umsetzt wäre ich sehr dankbar.

Mit freundlichen Grüßen Nik
Gast #2442092
Lesenswert?

Genaugenommen, es hapert schon daran wie ich anfangen soll.
Zum Multiplexen, soweit ich mich da eingelesen habe gerade, kann es 
unter anderem die benötigtenverbindungen für 7Segmentanzeigen 
reduzieren,was den bau des Timers erleichtern würde. Ich hoffe soweit 
liege ich richtig. Jede einzelne Anzeige wird dabei nacheinander mit 
Strom versorgt, und zeigt das an was sie soll, und dadurch das das 
schnell geschieht erkennt man nicht das sie für einen kurzen moment 
immer aus sind.

Ich schließe daraus das es Programmiert wird, also was wie zählen soll 
richtig?
Gast #2442094
Lesenswert?

Jop, ist richtig so.
Dein Progamm würde aus zwei Teilen bestehen.

1. Die Anzeige der verbleibenden Zeit. Funktioniert so wie von dir 
beschrieben.

2. Die Manipulation der verbleibenden Zeit. Wenn das ganze wirklich über 
Jahre laufen soll, würde ich dir ein RTC Modul empfehlen. Da kannst du 
mit deinem Controller die aktuelle Zeit abfragen und so die noch 
verbleibende Zeit errechnen.

Was für einen Controller möchtest du denn verwenden?
Gast #2442107
Lesenswert?

ok danke, hab mich für den ATmega8 16 MHz entschieden.
Die Tutorials dazu sind klasse, ich werd mich da erstmal richtig 
einlesen.
Soweit ich das bisher gesehen hab ist es wirklich leicht, wenn man sich 
den Stoff dazu durchliest und versteht.
Danke,ich meld mich bei gelegenheit wieder, wenn cih noch hilfe brauche 
oder wenn cih fertig bin :)
Gast #2442122
Lesenswert?

Hi
Ein (fast) gleiches Projekt hab ich jetzt aufgelegt. Ist ein Count-Down 
meiner restlichen Arbeitszeit... um die Kollegen etwas zu ärgern ....
Soll in 1/10 Sekunden bis zur Rente die Restzeit anzeigen und noch so 
ein paar "Spielereien" bieten. Allerdings, ich habe mich für die 
Codierung der Anzeigen über den Controller entschieden und bei 11 
Anzeigen war ich mir nicht sicher, ob der Multiplexer den Anzeigen genug 
Zeit läßt, aufzuleuchten. Immerhin, hat jede Anzeige nur 1/11 Zeit. 
Frühere Projekte mit 4 7-Segmentanzeigen habe ich im mSek. Takt 
durchgeschoben und so eine gleichmäßige Anzeige erhalten. Daher hab ich 
mich für einen Atmega16 entschieden, der nicht viel teurer als der 
Atmega8 ist, dafür aber 32 IO-Pins hat. So kann ich 2 Gruppen a 6 
7-Segmentanzeigen multiplexen und hoffe, das es anschaulich ist.
Nun zum Programm ein paar Worte:
Die Anzeige soll als Count-Down fungieren
Es soll eine Schlange oder fallende Balken dargestellt werden
Sie soll einfache Texte in Laufschrift anzeigen, so wie "HALLO"
und natürlich soll auch mal die Tageszeit dargestellt sein.
Daher werden die 7 -Segmente im einer Matrix vom Controller angesteuert 
und nicht über einen diskreten 7 Segment-Decoder.
Deine Vorgehensweise sollte in etwa so sein:
Liste der Funktionen aufstellen:
Eingabe von Werten, also Uhr stellen
Anzeige-Modus
Ansteuern der Anzeigen
Erfassen der Tastersignale
evtl. Relais schalten
evtl. Signaltöne ausgeben
sieht bei mir grob so aus:
Start
   Initialisierung
   Loop
     Read_IO       ; lesen der Eingänge, entprellen, Flanken erfassen
     Read_Ser      ; evtl. lesen der seriellen Schnittstelle
     Chk_Order     ; Befehle dekodieren
     Order_1       ; Uhr stellen ( Modus 1 )
     Order_2       ; Uhrzeit anzeigen
     Order_3       ; Lichtspiele
     Order_4       ; Countdown
     Chk_ISR_Flag  ; Flankenbits aus Timer-ISR auswerten
     Flag_1        ; Anzeige aktualisieren und ausgeben
     Send_Ser      ; Daten an PC senden
     Set_IO        ; evtl. Relaisausgänge oder Tonerzeugung aktivieren
   Go_Loop
------------------ end Program -------------------

------------------ Zeitinterrupt -----------------
Timer_ISR:
    Register_retten
    Zeitflag_1_setzen     ; Millisekunden^0
    Zeitflag_2_setzen     ; Millisekunden^1
    Zeitflag_3_setzen     ; Millisekunden^2
    Zeitflag_4_setzen     ; Sekunde
    Register_zurück
RETI
------------------End Interrupt -------------------

Sinn macht es, die Anzeige mit einem Flag aus der Timer-ISR zu triggern, 
damit diese schön gleichmäßig aufgerufen wird.
Gruß oldmax
#2442196
Lesenswert?

oldmax schrieb:
> Sinn macht es, die Anzeige mit einem Flag aus der Timer-ISR zu triggern,
> damit diese schön gleichmäßig aufgerufen wird.

Warum das denn???
Das Multiplexen macht man doch im Timerinterrupt.
Dann hat man keine Hektik mit der Mainloop, die kann sich soviel Zeit 
nehmen, wie sie lustig ist.

Für viele Digits kann man auch die Segmente multiplexen. Dann ist das 
Tastverhältnis immer 1:8.
Das Umsortieren in den Displayspeicher macht die Mainloop bei der 
Ziffernumwandlung mit.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren