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
Was du vorhast ist garnicht so schwer :) Woran haperts denn genau? Ein Stichwort für dich zum lesen: Multiplexen
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?
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?
ok, darüber hatte ich noch nicht nachgedacht, welcher wäre dafür den besonders geeignet?
Ach, von den AVRs kann das eigentlich jeder. Schau dich hier mal um: http://www.mikrocontroller.net/articles/AVR-Tutorial
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 :)
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.