Der uln2003 ist der Relaistreiber. Da ein Schieberegister keinen hohen Ausgangsstrom liefern kann (um ein Relais sicher anzusteuern) brauchst du einen Treiber. Der uln2003 ist eine sehr einfache Möglichkeit. Du kannst aber auch diskrete Transistoren mit einer Freilaufdiode verwenden.
Hier ein aktuelles 16 Bit Schieberegister:
http://www-s.ti.com/sc/ds/sn74ls673.pdf
Der 7805 macht eine stabile 5 Volt Versorgung für deine Schaltung. Wennst Glück hast, tut er auch mit 7,5 Volt, oder du brauchst eine "low drop" Version davon. Vergiss das mit dem Spannungsteiler, der bringt nur bei konstanter Last eine konstante Spannug. Bei jedem Schaltvorgang hast du Spannungspitzen und Spannungseinbrüche auf der Versorgung.
Kurze Bsechreibung: Der max232 stellt das Interface zum Rechner her. Du brauchst 1 Leitung zum Datensenden, eine Zweite für den Takt. Zuerst musst du ein definiertes Bitmuster senden um alle Schieberegister in einen definierten Zustand zu setzen. Geht auch einfacher mit einer dritten Leitung-Reset. Das Problem ist die Zuteilung der Datenströme zu den entsprechenden Schieberegistern. Da musst du beim seriellen Interface ziemlich tricksen. Einfacher geht es mit kaskadierbaren Schieberegistern, wie dem
http://www-s.ti.com/sc/ds/sn74ls299.pdf.
Die Schieberegister in Serie und einen langen Datenstrom senden. Ja eines brauchst du da auch noch: Chip Enable, das heisst, wenn der Datenstrom zu Ende ist, werden die Daten übernommen, und die Ausgänge aktiviert bzw. umgeschalten. Das kannst du über den Clock generieren.