Hallo, ich muss für die Schule ein Projekt in Fach Mikrocontroller durchführen. Ich habe mir ausgesucht eine LED Uhr zu bauen und zu programmieren. Die Uhr besteht aus 132 LED's, die mit einem 74HC595 angesprochen werden sollen. Also Controller kommt ein ATmage32 zum Einsatz. Die Uhr selbst und die Platinen sind fertig, ich hänge momentan aber daran, wie ich diese an meinem Controller anschließe und wie ich ein Schieberegister in C "programmiere". Ich werde leider auch nicht aus den Tutorials schlau. Ich würde mich riesig freuen, wenn mir jemand bei der Initialisierung eines Schieberegisters in C helfen könnte und mir eventuell ein Beispiel geben kann, wie ich so eine LED anschalte. Die restlichen LED's wären dann ja nur noch Transferarbeit. Ich hoffe irgendjemand kann mir helfen. Anbei ein Bild der Uhr im inneren, sowie ein Bild des Schaltplans der einzelnen Platinen. Insgesammt habe ich 3 Platinen. Jeweils eine für Stunden, Minuten und Sekunden.
:
Bearbeitet durch User
Hast du denn deinem ATmega32 überhaupt schon etwas beigebracht, will sagen eine einzelne LED (ohne Schieberegister) zum Blinken gebracht?
:
Bearbeitet durch User
Ja habe ich. Habe auch schon das Uhr System, mit timer, aber ohne dcf77. Nur ich weiß einfach nicht wie ich das mit den Schieberegistern mache.
Ein paar Denkanstöße: An deinem Schieberegister hängen mehrere LEDs, du brauchst also mehrere Bits an Information um die LEDs unabhängig anzusteuern. Du musst dein Programm also etwas mehrfach machen lassen um das Schieberegister einmal komplett mit neuen Informationen zu füllen. So ein Schieberegister hat einen Dateneingang und einen Takteingang.
Die Frage ist, wo genau dein Problem ist, bei der Ansteuerung des Schieberegisters oder bei der Abstraktion der Daten und was du in das Schieberegister hineinschreiben sollst. Hast du schon etwas in das Schieberegister hineinbekommen, also 0/1/0/1 oder so etwas ähnliches und das bei den LEDs gesehen? Im wesentlichen solltest du dir klar machen, was folgende Pins am Schieberegister bewirken, wie sie angeschlossen sind und was du dort vom Mikrocontroller aus gesehen anlegen must, das etwas passiert. MR 10 master reset (active LOW) SHCP 11 shift register clock input STCP 12 storage register clock input OE 13 output enable input (active LOW) DS 14 serial data input Insbesondere, wann muss bei SHCP, STCP etwas passieren und wie, wie muss MR und OE im normalen Betrieb beschaltet sein. Am Besten du schreibst einmal runter, was du mit diesen Eingängen machen würdest, dann kann dich jemand hier korrigieren, wenn du es falsch machst. Alles vorkauen ist aber auch nichts, denn du sollst es auch verstehen.
So ein 595 Schieberegister ist eigentlich eine ganz einfache Sache. Lies dir doch hier http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister mal die Beschreibung durch, wie das ganze prinzipiell funktioniert. > Ich würde mich riesig freuen, wenn mir jemand bei der > Initialisierung eines Schieberegisters in C Am 595 gibts nichts zu initialisieren. Der Baustein arbeitet nach dem Anlegen der Versorgungsspannung einfach so. Wenn du ihn komplett per Software ansteuerst, brauchst du einfach nur die Pins am Mega, an denen die SR-Eingänge liegen auf Ausgang schalten und schon kannst du loslegen. Wenn du das Hardware SPI Modul zur Ansteuerung nimmst, dann musst du eben das im Mega initialisieren. In deinem Fall würde ich allerdings erst mal zu einer Software Ansteuerung greifen. Denn die kannst du leicht verstehen und vor allen Dingen kannst du, falls die Ansteuerung nicht funktioniert, das Pinwackeln dann so langsam wie notwendig machen um dir mit ein paar LED an den Leitungen die Zustände anzeigen zu lassen und mit dem vergleichen wie es eigentlich sein sollte.
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.