Forum: Mikrocontroller und Digitale Elektronik Newbie: LCD-Display und Mikrocontroller


von Markus Krötz (Gast)


Lesenswert?

Hallo,

für meine Freundin möchte ich gerne einen "Tageszähler" basteln, der
auf nem gewöhnlichen LCD-Display anzeigt, wie viel Tage wir schon
zusammen sind.

Da ich ein absoluter Anfänger bin, eine Frage: Mache ich das am besten,
wie im AVR-Tutorial beschrieben mit einem Mikrocontroller, Breadbord
und nem LCD-Display oder gibt es bessere/einfachere/andere Lösungen?

Vielen Dank für Eure Hilfe

Markus

von Markus Krötz (Gast)


Lesenswert?

Habe gerade im Onlineshop (http://shop.mikrocontroller.net) die AVR
Entwicklungsplatine (ATmega16) gefunden - spare ich mir damit die
"Zusammenbauerei" auf das Breadbord und kann dafür gleich anfangen
mit dem Anschließen des LCD?

von jochen (Gast)


Lesenswert?

Soweit ich die Paltine vom Shop hier in erinnerung habe sollte das damit
kein Problem sein.

Gruß Jochen

von Chris (Gast)


Lesenswert?

Hallo,

welche Freundin hat da Spaß daran, wenn man ihre Tage zählt? Freundin
und Elektronik. Paßt das zusammen?

Falls Du im Programmieren fit bist, würde ich die
Mikrocontroller-Lösung empfehlen, damit könnte man menügeführt alle
möglichen Ereignisse damit zählen. Falls nicht, würde ich einen
konventionellen Aufbau empfehlen. Drei- oder Vierstellig liegt dann in
Deinem Ermessen. Ein auf Lochraster gelöteter Aufbau kann jahrelang
funktionieren.

Gruß

von Frank Herrmann (Gast)


Lesenswert?

kauf Dir ein Tamagotchi...

von Markus Krötz (Gast)


Lesenswert?

Ok, danke.
Dann kann ich also mit dieser Platine meine Idee des "Tageszählers"
realisieren?

Was brauche ich denn alles?
ATmega16 16MHz 7.20 Euro,
AVR Entwicklungsplatine (ATmega16)  24,50 Euro,
AVR Entwicklungsplatine (ATmega16) 14 Euro,
Parallelport-Verlängerung 1,8m 2,50 Euro (?),

und einen LCD:
Kann ich mit dem ATmega16 auch Grafik-LCDS mit einem
HD6120FS-Controller ansteuern?

von Markus Krötz (Gast)


Lesenswert?

Ich weiß, ich schein Euch zu nerven, aber ich bitte Euch noch wenigstens
um eine Auskunft:
Wenn ich mit Timer arbeiten muss (will ja alle 24 Stunden einen Wert
erhöhen) ist dann der ATMEL AVR Typ ATmega32-16PI nicht geeigneter als
der ATMEL AVR Typ ATmega16-16-PI, weil in der Beschreibung steht, dass
der 32er 2x 8-Bit-Timer, 1x 16-Bit-Timer hat - hat das irgendwas mit
Stundenzählen zu tun, oder ist das auf was anderes bezogen?

Vielen Dank

Markus

von Tobias A. (Gast)


Lesenswert?

Hi

zum Thema Freundin und Elektronik.
Ja das passt. Aber nur gaaanz selten...
Meine studiet (wie ich auch)
Elektrotechnik an der FH Giessen...


Gruß
  Tobi

von Tobias A. (Gast)


Lesenswert?

Hi

noch was zum Thema.
Wenn Du willst das der Tageszähler nicht ausfällt wenn ihm
mal der Saft ausgeht würd ich vorschlagen, das Du alle Stunde
oder so mal den Wert im EEPROM speicherst.
(Nicht öfter denn das EEPROM hat nur beschränkte Zyklen)
Solltest Du zuviel Zeit haben kannst Du auch ein DCF77 Modul
anschliessen, was die Tage stehts neu berechnet.

Gruß
  Tobi

von Fritz Ganter (Gast)


Lesenswert?

Und schreibe nie aus einer Interruptroutine (auch nicht über
verschlugene Pfade) in das EEPROM, sondern in der Hauptschleife, sonst
geht dir die Uhr ein paar Sekunden pro Tag nach, wenn man es jede halbe
Stunde schreiben lässt.

Wieso sagt mir das vorher keiner?

von Markus Krötz (Gast)


Lesenswert?

Danke Tobias für die Unterstützung ;-)

Aber wie ist das nun? Brauche ich unbedingt den ATMEL AVR Typ
ATmega32-16-PI, mit 2x 8-Bit-Timer, 1x 16-Bit-Timer (was bedeutet das
genau) oder reicht es auch ein ATMEL AVR Typ ATmega16-16-PI?

Gruß

Markus

von ...HanneS... (Gast)


Lesenswert?

Ich will ja nicht unhöflich sein, aber ich denke, du brauchst erstmal
ein Konzept und etwas mehr Grundlagenwissen...

Bit- & Bytebruch...
...HanneS...

von Stefan Gold (Gast)


Lesenswert?

Also, kurz zur Erklärung:

Ein 8-Bit bzw. 16-Bit-Timer ist beim Mikrocontroller ein Register,
welches im Falle von 8 Bit Breite einen der Werte 0 ... 255 bzw. bei 16
Bit 0 ... 65535 "speichern" kann. Das Besondere an diesen Registern
ist nun, dass sie entweder durch den Systemtakt (z. B. Quarz) oder auch
durch ein externes Rechtecksignal ihren Wert automatisch nach jeder
Periode um "1" erhöhen. Falls also z. B. der 16-Bit-Timer zu Beginn
den Wert 0 hat und der Quarz 65535 Rechtecksignale ausgegeben hat, so
ist der Wert des Timers dann 65535 . Beim nächsten Impuls nimmt der
Timer dann den Wert 0 an und zählt wieder bis 65535. Dieser sogenannte
Überlauf kann dann
benutzt werden, um in einer Interruptroutine zeitlich kritische
Ereignisse auszulösen. Hier kann dann z. B. ein Tagezähler
weitergesetzt werden.

Im Prinzip ist es egal, ob man dann einen Controller mit 8-Bit-Timer
oder 16-Bit-Timer zur Realisierung dieser Aufgabe einsetzt. Der Takt
für den Timer sollte auf jeden Fall mit den zur Verfügung stehenden
Vorteilern soweit wie möglich heruntergebrochen werden, d. h. der Timer
wird dann nicht mehr mit z. B. 16 MHz sondern bei einem Teiler von 1024
mit 15625 Hz getaktet. Eine Interruptroutine würde bei einem
8-Bit-Timer dann alle 16ms ausgelöst. Im Interrupt muss dann zuerst
eine Hilfsvariable erhöht werden. Soll der Controller sonst keine
besonders zeitkritischen Aufgaben lösen wäre es auch sinnvoll, einen
Quarz von z. B. nur 4 MHz einzusetzen.

Ein kurzes Beispiel:

>> Controller mit 8-Bit-Timer
>> angeschlossener Quarz 4 MHz
>> Vorteiler 1024
>> Timer wird mit 3906 Hz getaktet -> Periodendauer T = 256µs
>> Timerstartwert = 22
>> Überlauf erfolgt alle 0,000256s * 234 = 60ms

im Interrupt:
>> Timer mit Startwert 22 neu laden
>> wenn Sekundenzähler den Wert 1000 hat, dann Minutenzähler um eins
weitersetzen
>> wenn Minutenzähler den Wert 1440 hat, dann Tagezähler weitersetzen

von Matthias Friedrich (Gast)


Lesenswert?

Bis Du Dir das Grundwissen angeeignet hast, wäre wahrscheinlich wieder
Schluss, also investiere das Geld und die Zeit lieber in ein
romantisches Essen mit Ihr :)

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.