Forum: Projekte & Code Multifunktionsdisplay, Uhr, AD-Wandler


von Manuel B. (jackson02)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte hier mal meine erweiterte (verbesserte) Version meiner 
kleinen LCD-Uhr vorstellen.
Dabei handelt es sich um ein Programm, mit dem Uhr-/Datumsausgabe auf 
dem LCD (über 4 Drähte angesteuert) erfolgt. Des weiteren lässt sich 
über ein an PC2 angeschlossenes Potentiometer ein Wert auf dem Display 
von 0-1024 darstellen, was später einmal beispielsweise für lineare 
Temperaturbauteile genutzt werden könnte. Demnächst folgt jedoch eine 
Temperaturausgabe auf dem Display, die über einen weiteren Baustein in 
Form eines binären Codes an den µC geschickt wird.
Die Uhr lässt sich vor der Inbetriebnahme über zwei Taster abgleichen 
und bedarf dann im Betrieb in der Regel keinem weiteren Abgleich. Werde 
noch daran arbeiten, dass das Stellen auch während dem Betrieb (z.B. 
durch langes Drücken eines Tasters) ermöglicht wird.
Ansonsten hoffe ich, dass sich jemand findet, dem das Projekt, das vor 
allem für Einsteiger gedacht ist, als brauchbar erscheint und dies dann 
als ganzes oder Teile davon nutzen kann.
Falls jemand Anregungen oder Verbesserungsvorschläge bzgl. meines 
kleinen Projektes (das ja schließlich noch im Anfangsstadium ist) hat, 
dann zögert bitte nicht mir eine Antwort darauf zu geben ;)

Mit dem besten Grüßen

Manuel

von Thomas Kiss (Gast)


Lesenswert?

Bisschen Schade...geschrieben in C..

von Uwe S. (de0508)


Lesenswert?

Hallo Manuel,

ich finde den Code super leserlich und auch sehr brauchbar.

Jeder Anfänger und Fortgeschrittene kann sich so an deinem Programm 
weiterbilden.

Was der Kommentar von Thomas soll, verstehe ich nicht !

Vielleicht mag er das selbe Problem in Prolog oder Forth beschreiben und 
sein Programm hier einstellen ?

von Uwe S. (de0508)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe mir jetzt dein Programm angesehen und habe noch eine Anmerkung 
zum Prescale des ADC, dieser soll laut Datenblatt atMega48 so gewählt 
werden, dass der ADC zwischen 50kHz und 250kHz läuft.

Das erreiche ich nur mit:
1
void init_ADC(void)
2
:
3
ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (0<< ADPS0);  //Frequenzvorteiler auf 64

Des weiteren würde ich mehr mit #defines arbeiten um den Code lesbarer 
zu machen.

Z.B. die Positionen auf dem LCD-Display
1
lcd_setcursor (8,2);

Die Variable
1
Timer_anhalten
 wird in der ISR verändert und hat kein 'volatile' in der Deklaration. 
Gibt das keine Probleme ?

Für was der ADC Wert gebraucht wird, habe ich noch nicht verstanden.

Mein avr-gcc läuft nun für den atMega48 durch.

.

von Martin S. (Gast)


Lesenswert?

Super Programmcode, Danke fürs reinstellen.

Mich würde auch noch der Schaltplan interessieren, oder habe ich ihn 
übersehen?

von Uwe S. (de0508)


Lesenswert?

Hallo Martin,

ich habe den Info.txt erweitert, dort kannst Du alle Ports nun finden.

von Martin S. (Gast)


Lesenswert?

Super, Danke.

Ein echter Schaltplan wäre mir zwar lieber, aber so komme ich auch 
zurecht.

Gruß
Martin

von Manuel B. (Gast)


Lesenswert?

Guten Abend,

sorry, ich war in den letzten Wochen aufgrund mehrerer Projekte, Schule 
und Arbeit recht eingespannt.
Wenn noch jemand Interesse an einem Schaltplan hat, werde ich naütrlich 
einen Erstellen.
Dabei ist jedoch auch alles im Quellcode enthalten (LCD.H und .C gibt 
an, wie das LCD angeschlossen wird, was man natürlich auch beliebig 
verändern kann). Auch, wie Taster etc. angeschlossen sind, könnte man 
über PXxx leicht finden. Natürlich wäre es sinnvoller alles über DEFINES 
zu gestalten, da es die Lesbarkeit nochmals erhöht. Wenn ich Zeit finde, 
werde ich mal am Wochenende über einen Schaltplan gehen und die 
Schaltung nochmal ein wenig lesbarer machen.

Bei Interesse an weiteren Infos oder den Schaltplan bitte "antworten" 
oder ne Mail an mb001@hotmail.de

Mit freundlichen Grüßen

Manuel B.

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.