Forum: Projekte & Code einfache Uhr (AVR, BCD-7-Segment-Decoder)


von Philz S. (philz)


Angehängte Dateien:

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 :)

von Maddin (Gast)


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.

von Peter D. (peda)


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

von dani (Gast)


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

von Mike (Gast)


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.

von Holger K. (krulli) Benutzerseite


Lesenswert?

4543 hat noch ordentliche 6 und 9. Jedenfalls die von Philips/NXP
http://www.nxp.com/acrobat/datasheets/HEF4543B_CNV_3.pdf

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.