Heho,
da du nun ja den Bereich des Aurduino zu verlassen scheinst und versuchst mit den "Großen" spielen zu wollen, indem du selbst Schaltungen aufbaust und die Controller versuchst richtig zu Programmieren, möchte ich dir gerne ein paar wirklich nützliche Seiten mit auf deinen Weg geben.
Die Grundlagen zu AVR µC'S einschlieslich Standardaufbau und Beschaltung.
http://www.mikrocontroller.net/articles/AVR-TutorialDie Grundlagen zum Programmieren eines µC in C.
http://www.mikrocontroller.net/articles/AVR-GCC-TutorialDie Grundlagen zu den Schieberegistern.
http://www.mikrocontroller.net/articles/AVR-Tutorial:_SchieberegisterInteressant für dich auch der Abschnitt "
Acht LEDs mit je 20mA pro Schieberegister"
Porterweiterung mittels Schieberegistern.
http://www.mikrocontroller.net/articles/Porterweiterung_mit_SPIDie IDE schlechthin um µC zu programmieren. Wirklich sehr sehr komfortabel.
http://www.atmel.com/microsite/atmel_studio6/Zur Shiftout Library möchte ich dir den Tipp geben das du dich eher an das Datenblatt des Schieberegisters hältst als an diese wirklich schlechten beispiele. So ist es absolut unnötig den "Latch" Pin die ganze Zeit auf High zu halten und fürs Schreiben auf Low zu ziehen. Das kann dir außerdem noch einige Schwierigkeiten bereiten, wenn zum Beispiel durch eine Störung das Signal kurz auf Low fällt, wie es der Verfasser des tutorials ja selber erlebt als "flackern" der LED's.
Halte den Pin auf Low und nachdem du die Daten reingeschoben hast gibst du einen kurzen High impuls auf den Latch pin, das reicht. So ist es in jedem anderen Tutorial sowie im Datenblatt des Registers beschrieben und macht auch Sinn.
Dann brauchst du auch nicht diesen komischen Kondensator. Der ist für mich der größte Irrsinn den ich je gesehen habe. Datenblatt Falsch gelesen, den Begriff "Latchpin" mit CS verwechselt und das ganze Problem dann auch noch verschlimmbessert indem man einen Kondensator dazuklatcht der im Schlimmsten Fall das Tempo vermindert. Im Code sähe die änderung dann so aus:
Aus:
digitalWrite(latch_1,LOW);
shiftOut(data_1,clock_1,MSBFIRST,shift[8]);
digitalWrite(latch_1,HIGH);
Wird:
shiftOut(data_1,clock_1,MSBFIRST,shift[8]);
digitalWrite(latch_1,HIGH);
digitalWrite(latch_1,LOW);
Schon brauchst du keinen Kondensator und hast auch kein Flackern mehr auf den LED's. Warum das dem Verfasser des Tutorials noch keiner gesagt hat und warum das seit Jahren so falsch da drinn steht entzieht sich meiner Kenntnis.
Wenn du es noch schneller haben möchtest dann nimm nicht die Shiftout Lib sondern gleich Hardware SPI dann machst du richtig Tempo. Auf LED Matrizen lassen sich so hervorragend Animationen abspielen

Nurmal zur verdeutlichung der Geschwindigkeit
http://www.youtube.com/watch?v=vyWbqJPbMe4&feature=youtu.be Hier Besteht das ganze aus zwei 74hc595n am Arduino. Da Bild ergibt sich aus der zeilenweisen Darstellung. Im Video ist ein ganz kleines Flackern zu erkennen. In RL jedoch nichts davon zu sehen. Es Schaut aus wie ein stehendes Bild.
Grundsätzlich ist zu sagen das die Lernkurve am Beginn wirklich recht Steil ist, wenn du dich mit µC'S befasst. Hast du das aber ersteinmal hinter dir dann steht dir die ganze Wellt offen. Wichtig ist dabei nur das du lernen willst und vorallem das du keine Angst davor hast auch mal Fehler zu machen. Die kleinen Chips Kosten ja nicht viel

Am besten du bestellst die immer gleich im Mehrfachpack

Da sind sie meist günstiger.
Bleibt dir nur noch ein Tipp zu geben.
DATENBLÄTTER SIND AB SOFORT DEINE BESTEN FREUNDE

So nun ein wenig zur Offtopic

Der Bootloader ist vermutlich für den Erfolg der Arduino-Plattform verantwortlich.
Würde ich so nicht ganz unterschreiben. Bootloader gibt es einige. Sogar wesentlich bessere, schlankere für spezielle Einsätze besser geeignete. Klar ist der Arduino Bootloader ein Teil des ganzen und trägt mit zum erfolg bei, der ganz große Erfolg des Arduino liegt jedoch in seinen Librarys.
Der Arduino flacht die Oben genannte Lernkurve gerade für einsteiger extrem ab. Man muss sich weder darum kümmern ob die Beschaltung des µC ordentlich ist, noch darum welches Register eingestellt werden muss und erstrecht nicht um die Fuses. Dies ermöglicht es unerfahrenen einsteigern relativ schnell und einfach ein Erfolgserlebniss zu haben und dinge zum laufen zu bewegen. Der Arduino ist halt ursprünglich nicht für Informatiker oder Elektroniker entwickelt wurden, sondern für Künstler um ihren Installationen Leben einzuhauchen ohne das diese sich großartig mit Mikrocontrollern befassen müssen. Das ganze merkt man heute noch. Dort liegt für mich der Erfolg des Arduino's.
Stellt euch mal vor wir müssten dem TE das rausschieben der Byte's über Software SPI oder Hardware SPI erklären ohne die Arduino Lib's dafür zu haben. Also alle Konfigurationen Per Hand machen in den Registern

Na, wer könnte das?

Jetzt wünsche ich dem TE noch viel erfolg bei richtigen Einstieg in die µC welt und hoffe das er sich von ein paar rückschlägen nicht aufhalten lässt. Wie schon von anderen Gesagt wurde: Angefangen hat jeder von uns. Das einzige dumme was man machen kann ist nicht zu fragen, wenn man selbst nicht mehr weiter weiß.
MFG
His