einfache Uhr (AVR, BCD-7-Segment-Decoder)

OP #648092
Hallo,

mein erstes komplett selbst programmiertes Programm.
Eine einfache Uhr mit 24-Stundenanzeige.
Es werden nur Stunden und Minuten angezeigt (ist aber leicht 
erweiterbar) und als jede Sekunde blinkt eine LED.

Mir kam es v.a. auf einen geringen Verbrauch an Registern an und die 
allgemeine Codegröße an.
Weniger als 6 Register habe ich nicht geschafft, obwohl sowahl die Zeit 
selbst, als auch die Vergleichswerte (siehe Quellcode) im SRAM liegen.

Die Codegröße beträgt laut AVR-Studio 188Byte.

Extras, wie Sommerzeit usw. sind nicht berücksichtigt, ebensowenig wie 
die Möglichkeit, die Uhr zu stellen 8ausser per Voreinstellung im 
Quellcode)

Zur Hardware: Atmega8. Multiplex-Transistoren werden über PB0-PB4 
angesteuert (invertierend) und die Zahlenübertragung erfolg über PC0-PC4 
an einen BCD-zu-7-Segment-Decoder.

Kommentare und Verbesserungsvorschläge sind willkommen :)
Angehängte Dateien:
Gast
Hallo Philz S.,

eine Uhr die eigentlich selbstständig läuft und sich nicht selbtständig 
stellen lässt ist doch weniger sinnvoll, oder!?

Hast du dich mal mit der genauigkeit beschäftigt, das allein kann eine 
herausforderung sein.

m.
Philz S. wrote:

> Kommentare und Verbesserungsvorschläge sind willkommen :)

Naja, Multiplexen per Delay macht man höchstens zum Lernen, in der 
Praxis ist sowas nicht verwendbar.

Selbst bei einfachen Programmen sind Helligkeitsunterschiede durch die 
Rechenzeit bemerkbar.
Ganz abgesehen von dem riesigen Performanceverlust durch die Delays.

Multiplexen gehört in den Timerinrterrupt.


Und externe Dekoderchips nimmt man schon lange nicht mehr.
Der MC ärgert sich sonst, daß er so winzige Aufgaben (6 Zyklen, 10 
Words) nicht selber machen darf.


Peter
Gast
"Und externe Dekoderchips nimmt man schon lange nicht mehr.
Der MC ärgert sich sonst, daß er so winzige Aufgaben (6 Zyklen, 10
Words) nicht selber machen darf."

Wenn ich alle 4 Ziffern mit dem µC multiplexe habe ich nur noch 1/4 der 
Hellgkeit, oder ist das jetzt ein Denkfehler?

Deshalb verwende ich auch den 4511.
Allerdings wird die decodiert  "6" ohne das obere Segment "a" und die 
"9" ohne das untere Segmet "d" angezeigt. Ist das bei allen BCD-7Segment 
Wandlern so?

Dani
Gast
> Wenn ich alle 4 Ziffern mit dem µC multiplexe habe ich nur noch 1/4 der
> Hellgkeit, oder ist das jetzt ein Denkfehler?

Das ist im Prinzip richtig. Allerdings kannst du bei LEDs im gepulsten 
Betrieb den Strom und damit die Helligkeit erhöhen. Außerdem brauchst du 
nur noch einen Decoder bzw. sparst Ausgänge am uC.

> Allerdings wird die decodiert  "6" ohne das obere Segment "a" und die
> "9" ohne das untere Segmet "d" angezeigt. Ist das bei allen BCD-7Segment
> Wandlern so?

Es gibt auch welche mit:

Beitrag "Datenblatt  V40511 HEX zu 7-Segment"

Ich habe noch einen Decoder für LCD gefunden (CD4055). Ansonsten scheint 
so ein Verhalten eher rar zu sein.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.