Forum: Mikrocontroller und Digitale Elektronik 7segment anzeigen countdown mit 11Stellen


von Nik (Gast)


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

von Jürgen (Gast)


Lesenswert?

Was du vorhast ist garnicht so schwer :)
Woran haperts denn genau?
Ein Stichwort für dich zum lesen: Multiplexen

von Nik (Gast)


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?

von Jürgen (Gast)


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?

von Nik (Gast)


Lesenswert?

ok, darüber hatte ich noch nicht nachgedacht, welcher wäre dafür den 
besonders geeignet?

von Jürgen (Gast)


Lesenswert?

Ach, von den AVRs kann das eigentlich jeder.

Schau dich hier mal um:
http://www.mikrocontroller.net/articles/AVR-Tutorial

von Nik (Gast)


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 :)

von oldmax (Gast)


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

von Peter D. (peda)


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

von oldmax (Gast)


Lesenswert?

Hi
Wo du recht hast, hast du recht.... an die Segmente hab ich ja noch gar 
nicht gedacht...
Aber man lernt nie aus.
Gruß oldmax

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.