EL MCP23008 tiene entrada I2C, el MCP23S08 es SPI
http://ww1.microchip.com/downloads/en/DeviceDoc/21919e.pdfY por el circuito al tener A0 A1 y A2 corresponde a los pines del micro con I2C.
Ahora, solo con el 74HC595 podrias tener un conversor SPI / paralelo. Tal ves el puentear la habilitacion del SPI, hace que se mantenga en reset el MCP, y no espere un valor de I2C. Sino que todo vaya al Shitft Register.
El bus SPI es lo mas simple que hay, no es como el I2C, es decir, no tenes direcciones, no tenes señales de START, STOP, ACK, NACK, etc. Simplemente es poner el dato y al momento del flanco del reloj (puede ser acendente o descendete ) es cuando el receptor acepta el dato, asi realizado 8 veces y ya tenes tus 8 bits enviados. Se termino el secreto.
Pensalo asi, dato, pulso de clock para que el otro sepa que tiene que tomarlo, cambio dato, otro pulso.
La seleccion se hace mediante un pin que es el CS ( chip select ) que es algo asi como una habilitacion a tomar los datos.
El comportamiento del modulo SPI es un shift register, tenes una salida y una entrada, a medida que sacas datos ( que se van dando pulsos de CLK ) van entrando los datos tambien.
--------------------
En esta parte ahora si con tu problema.
Mirando el datasheet del EG8010
http://voron.ua/files/pdf/micoshema/EG8010_datasheet_en.pdfHabla de un LCD:
12832 lcd moduleEl cual busque y encontre algunos displays que usan los siguientes drivers:
I2C:
http://www.e-lab.de/downloads/DOCs/PCF8548_2.pdfSPI:
http://pdf.masters.com.pl/SITRONIX/ST7567.PDFEn este ultimo no veo que se maneje asi como plantea tu imagen, sino que todos datos D7-0 estan seguidos.
Realmente no se para que LCD esta implementado eso.