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 :)
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
"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
> 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.