I've decided to use a dedicated LED driver to drive six 7 segment displays. I was going to use MAX7219 but have found the AS1106/7 devices that are much cheaper.
Austriamicrosystems also produce the AS1115. This device has keyscan circuitry for up to 64 switches or buttons, 16 of these switches generate an interupt.
I am going to add circuitry for Quadrature encoders and inputs for chinese vernier scales.