Yes, TPIC6B595 can handle these currents:
Segments A, D & G = 7 x 8 (rows) of LEDs = 8x15 = 120mA each
Segments B, C, E & F = 7 x 7 (rows) of LEDs = 105mA each
Need one shift register per digit.
15 digits, daisy chain them all and send out 15 bytes when an update is needed.
I often use a data array to hold the value, 0 to 9, for each digit, and a font look up array to map the value to the needed segments.
byte dataArray[15]; // 15 bytes holding 0-9 for each digit, time, score, period, whatever
byte fontArray[] = {
0b00111111, // 0, with DP-g-f-e-d-c-b-a, 1 = segment on
0b00000110, // 1 a
etc. f b
0b01101111, // 9 g
}; e c
d DP
// time for an update?
digitlalWrite (ssPin, LOW); // D10 to RCLK pin, D11 to Ser data, D13 to SRCLK
for (x=0; x<15; x=x+1){
SPI.transfer (fontArray[dataArray[x]]);
}
digitlalWrite (ssPin, HIGH); // outputs updated on this rising edge
// MRCLR tied High, OE/ tied Low, or to a PWM pin for brightness control