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

OP #648092
Lesenswert?
• ▲
▼
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 #661732
Lesenswert?
• ▲
▼
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.
#661760
Lesenswert?
• ▲
▼
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 #1015887
Lesenswert?
• ▲
▼
"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 #1015923
Lesenswert?
• ▲
▼
> 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

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.

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.