It only needs two pins to control the display (three if you would like to control latch too). With two seven segments it can display up to 0xFF as hex. That is the whole 8bit range, what is the most used variable-width for small uCs.
I built it because the final application doesn't have a display and I wanted to know what's happening before I finished it.
You need two 74HC959 shift registers, two seven-segment displays and 14 (16) resistors You need 16 if you want to use the dots, which are not implemented in the software. But using the dots would expand the displayable values to 10bit or 0-1027. I leave it up to you to figure this out.
Step 1: The schematic
The shift registers work this way:
Each time you apply a pulse at the shift input, the current state of the serial input pin is shifted in the memory of the 74HC595. Each time a pulse at the latch input arrives the state of the internal memory is used to drive the outputs.
After 8 shift cycles the first input is shifted out at pin9 again and could be used as an input to another 74HC595. This is also called a daisy chain.
The 74HC595 can drive up to 70mA in total, so we have to adjust the resistors in a way that the current through each LED-segment stays below 9mA, which is about 470 Ohm for 5V and the used displays.