Have you considered making putting a 595 on each board and feeding through the three control signals instead of the 8 data lines? In this setup you would essentially have each shift register in parallel so that each one loads the same data. Yes it is duplication of hardware, but it does reduce the cable count to only 3.
You then have another shift register for row select. You could do this one by using discrete registers instead of a 595 ICs. Each board would have two registers. The first has a data input from the previous board and its output goes to the next - this then forms a shift register through each board. The second register acts as a latch for the row signal so that it doesn't change while you are loading the data.
This would reduce the number of cables you require between boards to only 4 + power. Plus it allows the number of modules to be increased pretty much indefinitely (limited by how long you have to load the data).
Here is a diagram of what I am proposing:
Another option to the design would be to split out the MCU part and have just one design for expansion modules that can then be connected to any MCU:
The jumper on the expansion board selects whether the data for the row select comes from the output of the 595 (i.e. on the first board), or from the row select of the previous board (i.e. on all subsequent boards).
This could actually then allow you to have multiple displays showing the same thing - after say 8 boards, you could connect a 9th board which uses the 595 output again to restart the sequence.
I am of course assuming from your original diagram that you are feeding in the row select data from the output of the 595. If this is not the case then you can omit the jumper and use the MCU to control the RDAT
signal (marked as optional).
Your computer does not see your device/hub because the CC1 (communication channel) pin A5 is not wired (or wired incorrectly). For the cable to be recognized as a device/hub, the CC1 pin must be pulled down with 5.1k resistor. Your connector even might have a placeholder for this resistor. Just make sure the CC1 is not pulled high to VCC, this will make the plug as "host", and your computer will switch into device mode (if it supports it).
This is the standard and fully legal captive cable configuration, see Section 3.4.3 and Table 3-11 of USB Type-C specifications.
Best Answer
If you are building a project (device) with "dumb Type-C" port and want it to get powered from a USB host with Type-C port, you need to do the following:
Use a "full-featured" Type-C to Type-C cable. The cables can be for USB2 only (which is hard to find), or a standard C-C cable with all USB 3.1 wires (which you will not use, so this would be some waste). The important thing with the C-C cable is the presence of CC wire between two ends of a cable, and, of course, GROUND wires, and VBUS wires.
Your device must have two 5.1k pull-downs on both CC pins of your connector. Without these resistors the Type-C port won't deliver any power.
Your USB Type-C host (or charger) will have a pull-up resistor on its CC pins. The value of resistor will indicate the port's power capability
Pull-up to 5V port capability
56 kOhm => 500 or 900 mA
22 kOhm => 1.5 A
10 kOhm => 3.0 A
If you need only 250 mA from the power source, you can just take it, up to 500 mA, and do nothing;
If you really need more than 500 mA, your device/project must check the voltage level on one of CC pin (whichever is active), to verify host power capability.
If the level is below 420 mV (+-20%), you shouldn't take more than 500 mA, the port can't supply more than that, and will likely drop off the VBUS; this level would correspond to 56k : 5.1k voltage divider;
If you sense the CC level as 940 mV +- 8%, you can take 1.5 A, from the cable. This level will come from 22k pull-up, if the host port supports 1.5 A current;
If you sense more than 1.7 V (+-8%), or 10 k pull-up on host side, you can take up to 3.0 A with no problem.
You can design this three-level comparator (and related logic) by yourself, or you can use any IC offered for this specific purpose by Texas Instruments, Maxim, Cypress, NXP, STMicro, etc.
Keep in mind that a typical Type-C receptacle needs a thin PCB (0.8 mm), which is fairly inconvenient for DIY projects. Alternatively there are vertical-mount Type-C receptacles that can go to any PCB, just they have the same small 0.5mm pitch which is challenging to solder.
If you are making a device/project with standard Type-B receptacle (or uB), you just need to use proper legacy cable, and do nothing. But you should restrict your power consumption to 500 mA.