The serial 7 segments display
I have a bunch of vintage red seven segment led display. This kind of display is quite pin consuming. Even with multiplexing, the number of control is huge if the goal is to interface it with low range microcontrollers.
The solution is not new: use a shift register. The principle is to control the display with four wires:
- Shift in clock
- Data in
To get a simple module, I developed a tiny PCB to plug in the Led display and at the back of it the shift register with current limitation resistors. The challenge is to fit all these components on such small area, and to get these modules stackable. Then, it allows building a one to N seven segments display. Only few changes are expected in the microcontroller code.
To do so, I chose:
- 74HC164: For the shift register, in SOIC16. The output current is rated over 20 mA, a sufficient value in this application. This version works properly down to 2V, so the modules can be used in 3.3V applications.
- 150 ohms resistors: for current limitation. The package is 0805.
The Schematic and PCB The schematic consist in few components:
The PCB required that the right side must connect to the left to propagate the data and the clock. It is so tiny that I don’t succeed to propagate the shift clock through the single layer. So a small strap over the shift register is needed. The results:
Application: a minimal voltmeter
Six bricks of this display and one ATtiny13A are needed.
- PB2 : serial 7 segment clock
- PB4 : serial 7 segment data
- PB3 : ADC input
The breadboard is very noisy due to bad contacts, but the result is good enough for the example. The value is displayed in millivolts:
The complete frame is executed in less than 200µs with an internal ATtiny frequency of 9.6 MHz.