Driving 7 Segment led's

Here's one way to drive 4 displays as a standalone project.
The TPIC6B595 is a nice driver because it can also control segments that are 3-4-5 LEDs in series and powered by 12V, and can sink more than 20mA per pin continuously.
74HC595 is only good for 5V and not much current as pointed out.

Easy to send data to:

// define these in pre-setup code
byte dataArray[] = {digit0,digit1,digit2,digit3};  // data that will be displayed

byte fontArray[] = {  // fonts that make up the numbers, 1 is an On segment
B00111111, // 0        a
B00000110, // 1    f        b
B01011011, // 2        g
B01001111, // 3    e        c
B01100110, // 4        d       DP
B01101101, // 5
B01111101, // 6
B00000111, // 7
B01111111, // 8
B01101111, // 9
B00000000, // Off 0x0A
};

// data is stored in an dataArray[], update when needed then call this code:

digitalWrite(ssPin, LOW);
for (x=0; x<4; x=x+1){
SPI.transfer(dataArray[fontArray[x]]);  
}
digitalWrite(ssPin, HIGH; // data changes on this rising edge