Pfad: Home => AVR-Übersicht => Anwendungen => ATmehga16-Uhr
ATmega16-Uhr

Noch eine Digitaluhr mit ATmega16


Schon wieder was zum Verschenken: Diese Anwendung eines AVR ATmega16 beschreibt eine Digitaluhr mit 7-Segment-Uhrzeit- und Alarmanzeige. Die Digitaluhr hat folgende Eigenschaften:

0 Inhalt

1 Hardware

1.1 Prozessor-Hardware

Schaltbild Prozessor
Die Hardware besteht aus Zu der Anzeigeeinheit führen die acht Portleitungen vom Port B (Uhrzeit-Kathoden), die acht Portleitungen vom Port C (Weckzeit-Kathoden), die vier Anodentreiber-Ausgänge von der oberen Hälfte von Port A und die drei Tasteneingänge PD4, PD6 und PD7 von Port D.
Außerdem ist noch das Poti und der Treibertransistor BD137 für die Helligkeitssteuerung auf der Prozessorplatine untergebracht.

1.2 Display-Hardware

Schaltbild Display
Die Display-Hardware besteht aus

1.3 Netzteil

Schaltbild Netzteil
Das Netzteil ist ziemlich einfach gestrickt. Ein Netztrafo mit zwei Sekundärwicklungen mit je 7,5 V liefert die ca. 150 mA Strom der Schaltung. Die Wechselspannung wird mit zwei Dioden 1N4001 gleichgerichtet, mit einem Elko von 2200µF gesiebt und mit einem Stabilisator 7805 mit einem kleinen Kühlkörper auf 5 V gehalten.

Zum Inhaltsverzeichnis

1.4 Aufbau

Alle drei Teile sind auf einzelnen Rasterplatinen aufgebaut.

1.4.1 Prozessorplatine

Layout Prozessor
Die Prozessorplatine ist 6,4*10 cm groß.Die Anordnung der beiden 14-poligen Stiftleisten erfolgt allerdings nach unten, ihre Anschlüsse werden auf der Bestückungsseite verlötet. Daher wird für den Aufbau eine doppelseitig kaschierte Lochrasterplatine verwendet. Die Platine wird Rücken an Rücken auf die Anzeigeplatine auf gesteckt.
Bei den Anschlüssen der Stiftleiste bedeuten: Die Betriebsspannung vom Netzteil wird über einen zweipoligen Schraubanschluss zugeführt. Der Lautsprecher wird über zwei 1 mm-Steckpins angeschlossen. Die beiden Poti für Helligkeit und Zifferneinstellung sind über zwei dreipolige Steckpins angeschlossen. Zwei weitere Steckpins ermöglichen es, die durch Vier geteilte Quarzfrequenz zu messen, um sie mit dem Trimmer abzugleichen. Dazu wird die rote Taste beim Einschalten des Netzteils gedrückt gehalten.

Prozessorplatine Das Bild zeigt die Lötseite der Prozessorplatine. Die Stiftleisten zeigen nach unten.

1.4.2 Anzeigeplatine

Layout Anzeigen Die Anzeigeplatine ist auf einer 8*10 cm großen doppelseitig kaschierten Platine aufgebaut. Die Buchsenleisten zeigen diesmal nach unten und sind links-rechts-vertauscht belegt. An den Buchsen sind direkt die Widerstände platziert und von der Oberseite her mit dieser verlötet.
Die vier Anodentreibertransistoren BD137 sind über den Anzeigen platziert.
Verwendet wurden gelbe LED-Anzeigen und gelbe 3mm-LEDs für die beiden Doppelpunkte. Die LED-Anzeigen wurden auf Buchsenleisten gesetzt und können daher leicht ausgewechselt werden.

Anzeigeplatine Die Anzeigeplatine von unten gesehen. Die beiden Aussparungen unten links und rechts sind für die Potis. Die Buchsenleiste passt genau zum Gegenstück auf der Prozessorplatine. Die beiden Abstandshalter fixieren die Prozessorplatine.

1.4.3 Netzteil

Das Netzteil ist auf einer kleinen einseitigen Platine aufgebaut, die exakt in den freien Raum des Gehäuses passt. Es wird nicht viel Wärme produziert, so dass keine Lüftungsschlitze erforderlich sind. Zum Inhaltsverzeichnis

1.5 Einbau

Innenansicht Die einzelnen Teile sind in ein Gehäuse 10*15*6 cm eingebaut. Netzschalter (seitlich) und die beiden Potis sind direkt in Gehäuselöcher eingebaut.

Vorderseite Die Vorderseite wird noch ansprechend beklebt.

Seitenansicht Und auch die Seite kriegt noch ein semiprofessionelles Typenschild.

Zum Inhaltsverzeichnis

2 Bedienung der Tasten

Beim Einschalten ist die Uhrzeit und die Weckzeit auf 00:00 eingestellt und der Alarm abgeschaltet. Es ertänt die Eingangsmelodie aus dem Lautsprecher und der Doppelpunkt der Zeitanzeige blinkt sekündlich.

Taster

In diesem Modus ist die Einstellung der Uhrzeit durch Drücken der blauen Taste möglich. Die Stundenanzeige der Uhr zeigt den eingestellten Wert am linken Potentiometer zwischen 00 und 23 an. Durch ein weiteres Drücken der blauen Taste wird der eingestellte Wert &uuber;nommen und die Minuten können mit dem Poti zwischen 0 und 59 eingestellt werden. Durch ein weiteres Drücken der blauen Taste wird die Uhr gestellt.

Die Einstellung der Weckzeit wird mit der gelben Taste eingeleitet und genauso wie beim Stellen der Uhr durchgeführt. Wer einmal das Verstellen einer Uhr mit diesem Hilfsmittel gemacht hat, ärgert sich über das sinnlose Herumgeeiere mit anderen Methoden. Hat man die Weckzeit fertig eingestellt, wird automatisch auch der Alarm aktiviert. Man erkennt den aktiven Alarm daran, dass der Doppelpunkt der Weckanzeige ebenfalls im Sekundentakt blinkt. Will man die Weckzeit nicht neu einstellen, genügt es, die rote Taste zu drücken. Die rote Taste macht den Alarm an und aus.

Ist die Weckzeit erreicht, wird das nächste Lied abgespielt. Wird der Alarm nicht mit der roten Taste abgestellt, wiederholt sich das Wecken zu jeder vollen Minute erneut, jeweils mit dem nächsten Lied. Um fünf weitere Minuten Ruhe zu haben, kann man die gelbe Taste drücken, für 10 Minuten auch die blaue. Nach zehn erfolglosen Weckversuchen stellt sich der Alarm von selbst aus.

Zum Inhaltsverzeichnis

3 Software

3.1 Software Source

Die Software für den Timer ist im HTML-Format oder als Assembler-Quellcode verfügbar.

3.2 Codestruktur

Die Codestruktur umfasst:

3.3 Funktionen

Der Code funktioniert folgendermaßen:
  1. Anzeigen und Anzeigenmodi
  2. Display Multiplex
  3. Uhrzeit und Alarm
  4. Taster
  5. Weckalarm, Musik
Zum Inhaltsverzeichnis

3.4 Melodienprogrammierung

Die Programmierung von Melodien erfolgt folgendermaßen:
  1. Die Melodien sind als Tabellen im Programmspeicher abgelegt.
  2. Eine Begrüssung und sieben Weckmelodien sind programmiert.
  3. Jede Note belegt ein Byte im Speicher. Die Tontabelle reicht von 0 (Pause) über 1 (großes C) bis 63 (d'''') und damit über mehr als vier Oktaven.
  4. Die Töne sind als Symbole TtC, TC, TC1, TC2, TC3 und TC4 definiert, mit den entsprechenden Zwischentönen D, E, F, A, B und H. Auch Des- und Ges-Töne sind abgelegt.
  5. Verkürzte Töne sind durch Addieren von DH, DV oder DA kodierbar.
  6. Pausen sind als TP1, TP2, TP4 und TP8 kodierbar.
  7. Zum Ausgleich ungerader Bytezahlen am Zeilenende kann TDum verwendet werden.
  8. Jedes Lied endet mit TEnde.
  9. Die Reihenfolge der Lieder ist in der Liedtabelle abgelegt. Der erste Eintrag ist das Begrüßungslied.


Zum Inhaltsverzeichnis

3.5 Fuse-Einstellung

Fuse-Einstellung

Zwei Einstellungen sind an den Fuses vorzunehmen:
  1. Umstellung des Taktgenerators auf den externen Quarz,
  2. Abschaltung des JTAG-Interfaces.
ACHTUNG! Frische ATmega16 sind intern auf den internen RC-Generator eingestellt. Nach dem Schreiben des Flash und vor der Verwendung muss der ATmega16 durch Umprogrammieren der Fuses auf den externen Quarz eingestellt werden. Bei Umstellung der Fuse muss der ATmega mit einem externen Quarz bestückt sein, da sonst ein Abbruch des Brennvorgangs und Fehlermeldungen resultieren. Am besten in der Schaltung selbst die Fuse umprogrammieren!

Die zweite Einstellung betrifft das Abschalten des JTAG-Interfaces. Ohne diese Änderung bleiben einzelne Segmente der Weckzeitanzeige dunkel.

Die Fuses "SUT_CKSEL" (auf External Crystal/Resonator Medium Frequency"), "JTAGEN" und "EESAVE" sind entsprechend dem Bild zu ändern.

Zum Inhaltsverzeichnis

4. Dokumentation

Zu einem schönen Geschenk muss natürlich ein 16-seitiges Handbuch dazu. Großen Spaß machen schlecht übersetzte Werke, wie z.B. das hier.

©2014 by http://www.avr-asm-tutorial.net