Bueno, creo que como mencioné, es necesario usar un multiplexor para controlar todas las 40 columnas, pero si se tienen conocimientos de vhdl , se puede programar un cpld para realizar esta función (aunque creo que aumentará enormmente los costos), el microcontrolador encargado de los datos de las filas cada vez que realiza la visualización de las filas, mandará un pulso por un pin, este pulso será recibido por el cpld el cual seleccionará uno de sus 40 pines de salida y activará uno solo, de esta manera el dato que se envió por las filas se verá en una columna en particular, despues se genera un retardo los suficiente para que el dato sea visible por el ojo humano, de estamanera se pueden generar corrimientos repitiendo los pasos nombrados, asi que el proceso seri algo asi:
1. Se coloca en nivel cero filas y columnas.
2. Se coloca un dato en las filas(lo hace el microcnotrlador).
3. El microncontrolador envia un pulso al cpld.
4. El cpld recibe el pulso y aumenta un contador.
5. El cpld evalua el valor del contador y dependiendo su valor activa un solo pin en nivel cero(el resto en 1 logico).
6. El microcontrolador cambia el dato a visualizar en las filas
7. El micronocotrlador envia de nuevo un pulso por el pin de comunicacion con el cpld.
8. El cpld aumenta el contador y vuelve a evaluar el valor del contador, generardo la activacion de otro pin en cero y el resto en uno logico(incluyendo el anterior que pasará a uno).
9. Bis..bis..bis
De ahi en adelante se repite el proceso has ta qeu se llegue al pin 40, depues se vuelve a iniciar el proceso.