MIDIbox Hardware Platform, DIO_MATRIX Module

The MBHP_DIO_MATRIX module has been initially be designed for the MIDIO128 and MIDIbox KB project to simplify connections to keyboard matrices. It's compatible to the MBHP_DIN and MBHP_DOUT module, which means that it's for example possible to use it as a replacement when only two DIN and two DOUT shift registers are needed for a project, or when the special pinout of the digital in- and output pins lead to a better wiring to the frontpanel.

The digital input part consists of two 74HC165 based serial shift registers; every register provides 8 digital inputs which are sampled with the latch enable signal LD, and shifted out with the clock signal SCLK.
The digital output part consists of two 74HC595 based serial shift registers; every register provides 8 digital outputs which are updated with the latch enable signal RCLK, and shifted out with the clock signal SCLK.

The advantage of using such shift registers is, that they can be cascaded to a long chain without the need of more than 6 cables to the core module. This means that multiple MBHP_DIO_MATRIX modules can be connected in order to enhance the number of inputs and outputs. Normaly up to 16 DIN and up to 16 DOUT shift registers are supported by MIOS or MIOS32 based applications, MIDIbox NG even allows to connect up to 32 DIN and 32 DOUT registers in a chain!

By connecting multiple buttons to a matrix, it's possible to scan multiple rows as shown in this schematic.

Additional connection diagrams for Fatar keyboards can be found at the MIDIbox KB

project side.

Please note that the module could also be used for many other projects whenever they support matrices if not explicitely mentioned. Just translate "DIN shift register" and "DOUT shift register" to the schematic of the MBHP_DIO_MATRIX module! :-)

It's even possible to connect buttons (or encoders) and LEDs directly to the MBHP_DIO_MATRIX module as shown in this schematic.


PCB data, can be viewed, modified and converted with Eagle Light. The .pdf based schematic has been created with xcircuit. There are no special eagle schematics available, since components have been netlisted in the .brd file directly!
Module Schematic Layout Data Quick-view
MBHP_DIO_MATRIX_V1 mbhp_dio_matrix.pdf mbhp_dio_matrix_v1.brd mbhp_dio_matrix_v1.png
Additional informations
File Size Description
mbhp_dio_matrix_orderlist.txt 1k Reichelt orderlist
mbhp_dio_matrix_8x8buttons.pdf 23k How to connect a 8x8 Button matrix
mbhp_dio_matrix_8x16buttons.pdf 38k How to connect a 8x16 Button matrix
mbhp_dio_matrix_8x8leds.pdf 17k How to connect a 8x8 LED matrix
mbhp_dio_matrix_8x16buttons_8x8leds.pdf 50k How to connect a 8x16 Button and 8x8 LED matrix

Available Ports

Following interfaces are provided by the DIO_MATRIX module:

Name No. of pins Description
J1 10 Interface to CORE:J8/J9. DINX4:J1 provides two power pins for 5V/Ground, the serial clock, the latch enable and the serial input and output of the register chain.
This port can also be connected with J2 of another DIO_MATRIX, DIN or DOUT module.
J2 10 Interface to another DIO_MATRIX, DIN or DOUT module. DINX4:J2 provides nearly the same pins like J1, just only the serial in- and output of the last shift register is connected instead of the out- and input of the first one to realize a cascaded serial chain.
J3 and J4 16 8 digital inputs (I0..I7) and 8 digital outputs (O7..O0). Note that the outputs are reversed; all firmwares take care for this, means: with the first (leftmost) input pin is usually connected to I0, the first (leftmost) output pin is connected to O7.
J5 2 Provides a +5V (=Vd) and ground (=Vs) output.
While in a matrix configuration the ground isn't relevant, it becomes important when buttons and LEDs are directly connected
J6 3 A jumper has to be connected to this port to select pull-up or pull-down behaviour for the digital inputs. For most projects the pull-up behaviour should be selected! The pull-down behaviour might be required for adaption to existing keyboard matrices with reversed diodes.

Soldering Guide

It's always a good idea to start with the smallest components to simplify mounting.
So, start with the resistor networks and caps:
  • C1-C4 = 100 nF
  • RN1-RN4 = 5x10k
    Attention: take care for the polarity! The dot on the resistor network marks pin 1!
Continue with the IC sockets
Thereafter mount the connectors J1..J6.
You could already stuff the pull selection jumper at J6, because it's essential! For "normal" projects the Pull-Up option has to be selected.
Put the ICs into the sockets:
  • IC3 and IC4 = 74HC165 ("DINs")
  • IC1 and IC2 = 74HC595 ("DOUTs")
Prepare the 1:1 ribbon cable to the core module (resp. to the output of another DIO_MATRIX, DIN or DOUT module)
Please note that it's intended that the cable is somehow twisted by 180 degree!
When you turn the module at the side of the MBHP_CORE_LPC17 module, you will see the plan! ;-)
This picture shows a setup where a DINX4 and DOUTX4 module by SmashTV are connected after a MBHP_DIO_MATRIX module. The same 1:1 ribbon cable can be used here! :-)

Premade PCB

Premade MBHP_DIO_MATRIX PCBs can be purchased in Modular Addict's MIDIbox Shop for only US $7! :-)

Last update: 2023-04-23

Copyright 1998-2023, Thorsten Klose. All rights reserved.