You may use a seven segment to show time, temperature, voltage, etc. But, when you want to use it as an interface, specially on a simple computer, usual decoders (e.g. 7447) are not the best choice. You may need a shift-register or you may need to make a specific decoder for your computer display. If you watch Ben Eater’s video about EEPROM, You will find an Electrical Erasable ROM can be your decoder. But how? Imagine we have a common-cathode seven segment display. Then, We will have something like this for number zero :
dp | g | f | e | d | c | b | a |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
So, if we want to show a hexadecimal number, what will we need? Of course, we need to find which pins of our common cathode should be on for a specific number. In case of common anode displays, pins should be off. Now, let’s design our Truth Table.
Number | dp | g | f | e | d | c | b | a |
---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
2 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
3 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
5 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
6 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
7 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
8 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
9 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
A | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
b | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
C | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 |
d | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
E | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
F | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
This is our truth table. Fortunately, Logisim can make a circuit from a truth table, but I made this circuit before. It looks like this :
The inputs W, X, Y and Z represent the BCD input. But how can make this thing? if you are interested to make one of these for real, you can use a 2816 chip, which is actually an EEPROM.