Puedes usar, por ejemplo, un pic como el 18f1550 conectado via USB y usar 2 puertos del pic en forma saliente.
las 8 salidas del puerto B serian las salidas a multiplexar para 2 motores simultáneos y con las salidas del puerto A del bit 0 al 3 decodificas con un decoder 4 a 16 (como el 74ls154), ya tienes 32 motores.
Ahora bien, si le pones otro decoder con las mismas 4 salidas del puerto A pero usando las salidas 4 y 5 puedes controlar 2 decodificadores respectivamente, con lo que obtienes el control de 64 motores.
Luego las salidas de 8 bits deben conectarse a 32 quad latch (como el 74lc574, este es doble) para recoger los 8 bits del puerto B y la línea decodificada de alguno de los dos decoders.
en total necesitas 1 pic 18f2550, 2 74ls154 y 32 74ls574 para los 64 motores, en tu caso solo 24 74ls574.
yo he hecho esto pero con hasta 32 motores pero es un proyecto bastante grande y tedioso.
He usado el puerto usb porque es necesario mucha información muy rápido para controlarlos con efectividad.
Otro problema que se me planteó es donde ponía la inteligencia del control del motor, y elegí darle parte del trabajo al Pic al cual le pasaba los parámtros con los que se iba a mover el motor, es decir solo le actualizaba el estado, si estaba quieto asi permanecía, solo le doy ordenes de cambiar a tantos pasos por segundo.
Para la programacion del Pic te recomiendo usar
www.mikroe.com en pascal, c ó basic.
Use ese pic por la memoria ram, ya que tube que mantener el estado de 32 motores al mismo tiempo, pero creo que para 48 te debe alcanzar, sinó puedes cambiar de pic y el compilador te lo seguirá soportando.
Si puedes haz la simulación con por ejemplo Proteus, ya que largarte a construir sin probar no es buena idea.
Si no se entendió ( no soy un buen escritor ops: ) por favor hazmelo saber...