mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeit auf Display Anzeigen


Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich programmiere einen LCD Display mit einem ATmega32 und benutze den
ICCAVR compiler. Soweit ist alles in Ordnung und funktioniert schon das
Schreiben... Möchte aber jetzt die Zeit auf dem Display anzeigen und
diese dann in sekunden takt runter zählen... Bedeutet, wenn ich jetzt
zum bsp 00:20 eingestellt habe, soll diese Zeit dann in sekunden runter
gezählt werden 00:19 00:18.....

Hat jemand eine Idee, wie ich das realisieren kann? Bin nicht sooo fit
in der Programmierung!

Autor: vorbeigeschlendert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du schon mal folgende Geschichten programmiert:
- Ausgabe beliebiger Zeichen auf einem Display
- Timerfunktionen

ja: dann ist das ja kein Problem
nein: dann fang mal mit den Grundlagen an, dann das Display und wenn du
die Anzeige bedienen kannst dann mach dir an die Timerfunktionen und bau
das zusammen

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man nehme einen Timer und stelle ihn so ein, dass er im Sekundentakt
oder in Vielfachen dessen einen Interrupt erzeugt.
In der Interrupt-Service-Routine setzt man dann ein Flag.
Dieses Flag wird in der Hauptschleife abgefragt.
Ist es nicht gesetzt, braucht nichts weiter passieren.
Ist es gesetzt, dann zählt man die Sekunden-Variable herunter,
aktualisiert das Display und löscht das Flag.
Dann wartet man wieder auf das Flag...

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bedeutet, wenn ich jetzt zum bsp 00:20 eingestellt habe, soll diese
>Zeit dann in sekunden runter gezählt werden 00:19 00:18.....

nimm lieber 1 Minute, dann kanst du noch weiter wegrennen bis es
knallt.
;-)

Deine Sekundenvariable zerteilst du in Minuten ,10 Sekundenanteile ,1
Sekundenanteile und gibst diese als Zeichen auf das Display aus.

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat jemand einen beispielprogramm wo einen ähnlichen Problem gelöst
wird?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> hat jemand einen beispielprogramm wo einen ähnlichen Problem gelöst
> wird?

Ja, aber es wird dir nicht gefallen, denn es zählt nicht runter (bis
zum großen Bumm), sondern hoch. Es benutzt auch nicht den
ICCAVR-Compiler.

http://www.hanneslux.de/avr/stopuhr/index.html

...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, ja. Das sind eigentlich Grundlagen. Die solltest
du schon alleine hinkriegen. Zumindest solltest du es
versuchen. Fang mal damit an, eine einzelne LED im
Sekundentakt blinken zu lassen. Das ist dein Einstieg.
Dann sollte es nicht weiter schwer sein: Anstatt
die LED einzuschalten, zaehlst du eine Vaiable herunter
Wenn die Variable heruntergezählt wird, aktualiserst du noch
das Display und bist fertig. Das schwierigste ist aber
den 1-Sekunden Takt hinzukriegen. Damit musst du anfangen.
(Keine Angst: soooo schwer ist das auch wieder nicht).

Wenn du konkrete Probleme hast, wie zb. Wie funktioniert
XYZ, dann wird dir sicher auch wer helfen. Aber so einen
Rundumschlag, ala: "Ich möchte ABC machen hab aber keine
Ahnung. Helft mir!" ist selten in einem Forum zielführend.

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Hanne
es hilft nicht weiter, da es in assembler ist :-) ich programmiere in C

Autor: Michael Kirsten (onkel_michi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gabriel,

ich bin auch noch ein "Frischling" auf dem Gebiet der AVR
Programmierung. Deshalb masse ich mir mal an, folgendes zu schreiben:

Schau mal mit der Suchfunktion durch das Forum und suche da nach
Fleury, HD44780 (Wenn Dein Display einen solchen Controller hat),
Timer, ...

Du wirst staunen, was Du da findest...

Wenn Du dann mal in Google nach der Peter Fleury LCD-Bibliothek suchst,
dann wirst Du staunen, wie einfach das ist, ein LCD zu steuern.

Solltest Du dann noch Probleme haben, wie man einen Algorhitmus (bei
falscher Schreibweise, bitte nicht hauen) entwickelt, der die Zeit
rückwärts zählt und den dann in C umzusetzen, dann mach es wie ich, als
ich mit dem AVR-Programmieren angefangen habe: Bücher lesen, Googlen,
Forensuche benutzen.

Das bringt Dir wirklich mehr, als wenn Du hier von jemandem einen
fertigen Code bekommst.

Ich kann Dir da auch nicht helfen, aber es ist eine schöne Aufgabe, die
ich mir wohl auch mal in einer oder zwei ruhigen Stunden vornehmen
werde.

So, nun kannst Du auf mir rumhacken.

Michael

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> es hilft nicht weiter, da es in assembler ist :-)

Das war mir von Anfang an klar :)

> ich programmiere in C

Ich befürchte, dass du "Programmieren" mit "Kopieren" verwechselst.
Falls ich mich irren sollte, kannst du mich/uns gerne vom Gegenteil
überzeugen.

...

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vervielfältigst du deine Programme nicht auch, indem du deine Controller
auf einen Kopierer legst? Mit Disketten und Festplatten geht das auch.
Disketten kann man auch 1-A faxen, wenn man sie aus der Hülle nimmt...

Autor: Gabriel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke zusammen, geht schon

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Solltest Du dann noch Probleme haben, ... der die Zeit
> rückwärts zählt und den dann in C umzusetzen, dann mach
> es wie ich, als ich mit dem AVR-Programmieren angefangen habe:
> Bücher lesen, Googlen, Forensuche benutzen.

Grade am Anfang reicht es auch sich ganz einfach hinzusetzen
und mal zu überlegen: Wie würde ich das machen, wenn ich nur
Papier und Bleistift zur Verfügung habe.

Eine Zeit rückwärts zu zählen ist eigentlich ganz einfach:
Zieh von der aktuellen Zeit 1 Sekunde ab.
Ist dadurch eine Sekundenzahl von -1 entstanden
Ja: Zieh von den Minuten 1 ab und fang bei den Sekunden wieder
    bei 59 an.
    Sind dadurch -1 Minuten entstanden
    Ja: Zieh von den Stunden 1 ab.

Jeder Mensch im westlichen Kulturkreis kann das ohne groß
darüber nachzudenken und macht es richtig. Beim Entwickeln
eines Verfahrens muss man sich sehr oft nur darüber klar
werden, wass man als Mensch in der gleichen Situation macht.
Und zwar bis ins letzte Detail. Programmierer sind darauf
geschult auch auf die kleinsten Details zu achten. Details
die Nichtprogrammierer oft übersehen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.