Hi, I2C is a multi drop bus, just 2 lines are used to connect to multiple devices, works like a lan. SPI is a little different with data in, data out, clock and chip select lines, you do not have to use both data lines if you only want to transmit or receive. You can connect the data out and clock lines to multiple devices on a shared bus (like !2C), and drive multiple devices with those two lines and then maybe use something like a 3 to 8 address decoder, 3 lines in which select one of 8 lines out, which would connect to the slave devices chip select pin, so you could drive eight slave devices from 5 pins of your micro controller, each one selectable. One thing you have to take note of though is that both I2C and SPI use pullups on their lines, this is something like a 10K resistor connected to the line from the power rail, with arduino that would be 5 volts I think, (I dont use arduino so you need to check) and both devices should be running at the same voltage level. I have used the MAX 7219 before so have some 'C' code to drive it, it is not difficult, the code may be compatible with arduino as I think its 'C' based, but again you would need to check.