Build an 8-bit decimal display for our 8-bit computer


In this video, we’ll use an EEPROM (28C16) to create a decimal display for an 8-bit value. The display uses multiplexing to drive four digits using a single EEPROM. As a bonus it supports both unsigned and signed (twos complement) display modes.

Support me on Patreon:

The code used in this video for programming the EEPROM is available here:

See for more info.
Parts list for the finished decimal display:
– 1x 28C16 EEPROM
– 1x 555 timer IC
– 1x 74LS76 (Dual JK flip-flop)
– 1x 74LS139 (Dual 2-line to 4-line decoder)
– 4x Common cathode 7-segment displays
– 1x 1k resistor
– 1x 100k resistor
– 2x 10nF capacitors

Read more all post Computer Technology :
  1. Verian Woltmann says

    @06:15: Could you just bitwise XOR the data values with 0xff to convert from common anode to common cathode display?

  2. Jeffrey Jonas says

    Cute! There are other vintage ways to do that: 8 bit latch per display (software does the bitmap) so it's set-and-forget. Shift register (serial in parallel out) so 2 pins (data, clock) handle as many displays as you care to cascade. One of the Heathkits uses the bit-addressable 8: 1 bit latches (in one DIP) so each segment can be set/cleared individually. The MM5486N LED Display Driver is serial in, 33 current-regulated outputs (4 digits!), I got some recently surplus! I guess using Maxim or Holtek controllers is cheating since they're 'too new' 🙂

  3. 『Nado torn』 says

    You don’t need an arduino to code the eeprom? Can you just do it manually?

  4. Stephen Low says

    Thankyou for the video. It surprises me the chip outputs are able to drive that many leds without hurting the ram or the 139.

  5. e-vboy says

    The multiplexing of the digits is clever, and using the EEPROM for decoding is great — with a little more thought, you can get rid of leading zeroes if you want 🙂 The only thing I don't like is that you end up running the LED's at only a 25% duty cycle so they're pretty dim.

  6. BZValoche says

    For the negative, you should display the sign in lieu of the hundreds digit when it is zero 😉

  7. jlucasound says

    Ben. I will have to go back step by step, but you are stirring things in my memory that helps make sense. I can make sense of the same color jumpers. Thank you for these videos. You make it understandable for me. The biggest eye opener (which I knew is how it works) is the rapid clock signal which makes the display constant. I just didn't know how to wire it.

  8. Vikrinox says

    i like your careful wording of the alternate mode being simply the complement number, since a true signed mode would be -127 to 127. ( for those who don't know, signed values in computers usually uses a bit to dictate wether a number is positive or negative rather than being a hardcoded offset. meaning that we have -0 to -127, aswell as 0 to 127 in an 8-bit signed value)
    ora maybe im just wrong totally and ive been taught wrong since there can be several answers to one question, either case someone has learned something wether that be you or me 😛

  9. Michael Waiblinger says

    Oh boy, the HP-16c, now I'm seriously jealous.

  10. Jan Olucha says

    Even though I am not the one building the computer, I feel the same satisfaction when I see it working in the video as if I had built it myself. Outstanding job Mr. Eater!

  11. Samuel Dunlap says

    Mac: Pre-installed system
    Windows: Install the system
    Linux: Code system yourself
    Ben Eater: Make the system based off of every single component!

  12. Abdul Latif says

    You r the best from pakistan

  13. Tarik B. says

    Hi Ben. Thank you for this very nice video : IT ROCKS !

    A good tip to 'encode' negative numbers while strictly giving that signed mode wire the ability to just turn on/off the negative sign while displaying the same absolute value is to store negative numbers in reverse order in the Eeprom. For instance to represent -X in binary, you would have to flip all the bits and add one instead of substracting X from 256 (which happens when you toggle the sign bit only). This way you'll be able to display numbers ranging in [-255, 255] rather than classic [-254,255].

    For this same reason, binary signed intervals are expressed [ -(x-1) , x ] rather than [-x , x]. The fun fact about that is that zero is considered a negative number in signed intervals (even if the sign byte if off) to keep the interval balanced (half numbers population on the positive side [1,X] and the other half on the negative side [ -(x-1), 0 ]).

    Cheers man. Keep up these series : a pure delight !!!

  14. Harun Karamuklu says

    Thanksss perfect tutorial. Bravo ???

  15. Xriuk says

    Now you could set some "dynamic spacing" for negative numbers if you wanted, like displaying "-62" instead of "-062", would be cool

  16. Roger Banks says

    While I appreciate all the high level concepts presented here I want to get your opinion on a kind of low level question. Here you use a single resistor to connect the common cathode of the seven segment display to ground. I think I understand that the best practice is to connect each anode to it's own current limiting resistor. What is your guidance on this matter?

  17. Daniel Musat says

    What is the meaning of delayMicroseconds? Is that a real function in arduino or is it a wish-full thinking and it doesn't do anything actually?

  18. Ariel Suarez says

    I was wondering if it's possible to program an EEPROM, like what Ben did in this video, by using nothing but logic gates, instead of Arduino. So I simulated an EEPROM programmer with Logic Circuits app, I'm happy to report that it's indeed possible. Now I have an idea of how the old time programmers, back in the day when programming languages haven't been invented, did their job.

  19. Амир Мурзабеков says

    Этот трюк с EEPROM – гениален. А я вот думал, что нужно на логический схемах делать громоздкий дешифратор.

  20. cb meeks says

    74LS76 is obsolete these days…at least from Mouser. I know you can get "new old stock" in various places but do you know what a modern replacement would be?

  21. Madson Freitas says

    Fun fact is that you can build an adder out of eeproms

  22. Roscio RoscioTube says

    Compliments for your interesting videos. Multiplexing is the "cheap" solution for driving multiple displays. A most "professional" way is to use latch memory to store the current value of each display, and the user must write the latch with the new value only in case of change. It could be interesting to see an example of how implement latch.

  23. Ben Baselet says

    These whole series is wonderful but this episode rocks even harder 🙂

  24. Geoffrey Chandler says

    The EEPROM… Like a map for hardware!

  25. Mark_till Till says

    I know this teaches about eeprom, but it is useful to note 74LS47 i would never have thought about eeprom

  26. Taylor Black says

    Dude your jumpers are like the cleanest thing I have ever seen

  27. djd829 says

    Anyone notice the display working fine when the capacitor was pulled out, even before the new one was put in? Capacitance in the breadboard?

  28. Leland Clayton says

    Does driving a 7 segment in this fashion work the same way as a TIL311?

  29. Drew Seedot says

    Couldn't you combine the eight 'for' loops into just two?

  30. ophello says

    Cover the display with red cellophane and you’ll immediately get better readability!

  31. Marc Jacobi says

    Too bad this doesn't fit into a GAL22V10. Trust me, I just tried. Oh well, have to use a ATTiny then…

  32. Bunkersboys says

    instead of cycling through each digit faster than the dim and light up again, would running each digit through a register (like 2 74ls173's or 8 bit register 1 74ls273) yes i know this would add more chips (4 or 8 ) but it may add scalability. Yes i know this is an engineering trade off. I think i have all the components to try this so maybe after the holidays i will try it. and again a great video, and a great series; i am watching it again to see what i may have missed in the past.

  33. ggzh a Argue With Everyone says

    You do not need to write 4 times the same for-loop with different values, just make a nested for and in the outer you go from one digit to the next and calculate the module and divisor value.
    And please, to brackets that belong to each other should be either on the same vertical or horizontal line, it makes them much more readable.

  34. hadi reg says

    I did this in the past, without an arduino 🙂 real refresher training!! Thanks!

  35. joverstreet24 says

    I’m going to have to take your word for it on all of this code.?

  36. Mhurph says

    What do I need to study to learn this? Electrical engineering? Computer engineering? This is incredibly interesting

  37. mohamed hosny says

    rewatch video no.14 : Twos complement: Negative numbers in binary

  38. DrunkenKas says

    Anyone have trouble with the display being faint? I can't figure out what I'm doing wrong. Everything works perfectly except the display is faint

  39. flarn2006 says

    What's with the random bracketed words in the captions? And why are there so many errors in the captions if they weren't auto-generated?

  40. flarn2006 says


Leave A Reply

Your email address will not be published.