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
Source: https://jamesmartinlive.com
Read more all post Computer Technology : https://jamesmartinlive.com/computer/
@06:15: Could you just bitwise XOR the data values with 0xff to convert from common anode to common cathode display?
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' 🙂
You don’t need an arduino to code the eeprom? Can you just do it manually?
Thankyou for the video. It surprises me the chip outputs are able to drive that many leds without hurting the ram or the 139.
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.
For the negative, you should display the sign in lieu of the hundreds digit when it is zero 😉
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.
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 😛
Oh boy, the HP-16c, now I'm seriously jealous.
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!
Mac: Pre-installed system
Windows: Install the system
Linux: Code system yourself
Ben Eater: Make the system based off of every single component!
You r the best from pakistan
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 !!!
Thanksss perfect tutorial. Bravo ???
Now you could set some "dynamic spacing" for negative numbers if you wanted, like displaying "-62" instead of "-062", would be cool
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?
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?
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.
Этот трюк с EEPROM – гениален. А я вот думал, что нужно на логический схемах делать громоздкий дешифратор.
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?
Fun fact is that you can build an adder out of eeproms
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.
These whole series is wonderful but this episode rocks even harder 🙂
The EEPROM… Like a map for hardware!
I know this teaches about eeprom, but it is useful to note 74LS47 i would never have thought about eeprom https://www.electronics-tutorials.ws/combination/comb_6.html
Dude your jumpers are like the cleanest thing I have ever seen
Anyone notice the display working fine when the capacitor was pulled out, even before the new one was put in? Capacitance in the breadboard?
Does driving a 7 segment in this fashion work the same way as a TIL311?
Couldn't you combine the eight 'for' loops into just two?
Cover the display with red cellophane and you’ll immediately get better readability!
Too bad this doesn't fit into a GAL22V10. Trust me, I just tried. Oh well, have to use a ATTiny then…
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.
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.
I did this in the past, without an arduino 🙂 real refresher training!! Thanks!
I’m going to have to take your word for it on all of this code.?
What do I need to study to learn this? Electrical engineering? Computer engineering? This is incredibly interesting
rewatch video no.14 : Twos complement: Negative numbers in binary
https://youtu.be/4qH4unVtJkE?list=PLowKtXNTBypGqImE405J2565dvjafglHU
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
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?
ООП