Cascaded MAX6957's

I have a project that uses 3 MAX6957 display drivers to drive 9 7-segment displays (3 per IC, each group wired the same). I managed to adapted a sketch I found to get a counter working just to test things out. The sketch counts from 0-9 then resets and is displayed properly on the first device's first display (all I expected it to do). Unexpected, the first digits on the next 2 drivers also have some segments lit, though 1 then 2 less segments than the first device. See video.

My question is, how do I write data to the 2nd and 3rd devices? I don't have any experience with SPI or these display drivers. I've included a photo of how the displays are mapped with register adresses.

#define DATAOUT 11//MOSI
#define DATAIN 12//MISO - not used, but part of builtin SPI
#define SPICLOCK  13//sck
#define SLAVESELECT 10//ss



byte led=12;

char spi_transfer(volatile char data)
{
 SPDR = data;                    // Start the transmission
 while (!(SPSR & (1<<SPIF)))     // Wait the end of the transmission
 {
 };
 return SPDR;                    // return the received byte
}
int TMR=0;
int SH=0; //Speedo Hundreds
int ST; //Speedo Tens
int SO; //Speedo Ones

void setup()
{
 Serial.begin(9600);
 byte clr;
 pinMode(DATAOUT, OUTPUT);
 pinMode(DATAIN, INPUT);
 pinMode(SPICLOCK,OUTPUT);
 pinMode(SLAVESELECT,OUTPUT);
 digitalWrite(SLAVESELECT,HIGH); //disable device
 // SPCR = 01010000
 //interrupt disabled,spi enabled,msb 1st,master,clk low when idle,
 //sample on leading edge of clk,system clock/4 (fastest)
 SPCR = (1<<SPE)|(1<<MSTR);
 clr=SPSR;
 clr=SPDR;
 delay(10);
 
   write_data(0x04, 0x01);  //puts a 1 in the configuration register for normal operation. 0 for shut down mode.
 
 //SET ALL PINS TO LED DRIVER MODE
 write_data(0x09, 0); //0000000000001001, 0  Port Configuration P7, P6, P5, P4
 write_data(0x0A, 0); //0000000000001010, 0  Port Configuration P11, P10, P9, P8
 write_data(0x0B, 0); //0000000000001011, 0  Port Configuration P15, P14, P13, P12
 write_data(0x0C, 0); //0000000000001100, 0  Port Configuration P19, P18, P17, P16
 write_data(0x0D, 0); //0000000000001101, 0  Port Configuration P23, P22, P21, P20
 write_data(0x0E, 0); //0000000000001110, 0  Port Configuration P27, P26, P25, P24
 write_data(0x0F, 0); //0000000000001111, 0  Port Configuration P31, P30, P29, P28
 
 
 //write_data(0x02, 0xFF);  //SET GLOBAL CURRENT LEVEL TO FULL
 //write_data(0x02, 0xF6);  //SET GLOBAL CURRENT LEVEL TO about half
 write_data(0x02, 0xF0);  //SET GLOBAL CURRENT LEVEL TO 1/16
 
 
 //TAKE OUT OF SHUTDOWN MODE

 
 //TURN ALL LEDs ON
 
 write_data(0x44, 0xFF);  //01000100, 11111111 (command address, data) Ports 4-11
 write_data(0x4C, 0xFF);  //01001100, 11111111 (command address, data) Ports 12-19
 write_data(0x54, 0xFF);  //01010100, 11111111 (command address, data) Ports 20-27
 write_data(0x5C, 0xFF);  //01011100, 11111111 (command address, data) Ports 28-31
 delay(500);
 //turn all leds off 
 write_data(0x44, 0);  //01000100, 0 (command address, data) Ports 4-11
 write_data(0x4C, 0);  //01001100, 0 (command address, data) Ports 12-19
 write_data(0x54, 0);  //01010100, 0 (command address, data) Ports 20-27
 write_data(0x5C, 0);  //01011100, 0 (command address, data) Ports 28-31
 delay(500);
}

byte write_data(int address, int value)
{
 Serial.print(address, BIN);
 Serial.print('|');
 Serial.println(value, BIN);
 digitalWrite(SLAVESELECT,LOW);
 //2 byte opcode
 spi_transfer(address);
 spi_transfer(value);
 digitalWrite(SLAVESELECT,HIGH); //release chip, signal end transfer
}


void loop()

{
 //turn display off
 write_data(0x44, 0);  //01000100, 0 (command address, data) Ports 4-11
 write_data(0x4C, 0);  //01001100, 0 (command address, data) Ports 12-19
 write_data(0x54, 0);  //01010100, 0 (command address, data) Ports 20-27
 write_data(0x5C, 0);  //01011100, 0 (command address, data) Ports 28-31
 
 display(SH);
 SH++;
 if (SH>9){
  SH=0;
  }
 delay(1000);
}

int display (int SH) //Speedo Hundreds
{
switch (SH)
{
case 0:
write_data(0x29, 1); //a
write_data(0x2D, 1); //b
write_data(0x25, 1); //c
write_data(0x3F, 1); //d
write_data(0x24, 1); //e
write_data(0x2C, 1); //f
break;

case 1:
write_data(0x2D, 1); //b
write_data(0x25, 1); //c
break;

case 2:
write_data(0x29, 1); //a
write_data(0x2D, 1); //b
write_data(0x3F, 1); //d
write_data(0x24, 1); //e
write_data(0x28, 1); //g
break;

case 3:
write_data(0x29, 1); //a
write_data(0x2D, 1); //b
write_data(0x25, 1); //c
write_data(0x3F, 1); //d
write_data(0x28, 1); //g
break;

case 4:
write_data(0x2D, 1); //b
write_data(0x25, 1); //c
write_data(0x2C, 1); //f
write_data(0x28, 1); //g
break;

case 5:
write_data(0x29, 1); //a
write_data(0x25, 1); //c
write_data(0x3F, 1); //d
write_data(0x2C, 1); //f
write_data(0x28, 1); //g
break;

case 6:
write_data(0x29, 1); //a
write_data(0x25, 1); //c
write_data(0x3F, 1); //d
write_data(0x24, 1); //e
write_data(0x2C, 1); //f
write_data(0x28, 1); //g
break;

case 7:
write_data(0x29, 1); //a
write_data(0x2D, 1); //b
write_data(0x25, 1); //c
break;

case 8:
write_data(0x29, 1); //a
write_data(0x2D, 1); //b
write_data(0x25, 1); //c
write_data(0x3F, 1); //d
write_data(0x24, 1); //e
write_data(0x2C, 1); //f
write_data(0x28, 1); //g
break;

case 9:
write_data(0x29, 1); //a
write_data(0x2D, 1); //b
write_data(0x25, 1); //c
write_data(0x3F, 1); //d
write_data(0x2C, 1); //f
write_data(0x28, 1); //g
break;
}}

MAP.jpg

MAP.jpg