Тёмный

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

Ben Eater
Подписаться 1,2 млн
Просмотров 959 тыс.
50% 1

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: / beneater
The code used in this video for programming the EEPROM is available here: github.com/beneater/eeprom-pr...
See eater.net/bbcpu8-output-register 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

Опубликовано:

 

17 мар 2017

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 674   
@junkmail4613
@junkmail4613 5 лет назад
I'm 70. Love these videos. FORGOT I KNEW and worked with much of this stuff. Arduino is much more capable than I recognized before. Ben. You might draw me back out of retirement. THANKS
@0xgoinglower761
@0xgoinglower761 4 года назад
Have you started a project? Am looking at Ben's 6502 kit to start with...
@benbaselet2026
@benbaselet2026 4 года назад
The Arduinos are fine for a little doodling like this but look what an ESP32 can do for instance for a couple of bucks.. crazy stuff nowadays.
@BerenES
@BerenES 4 года назад
Love how your parents made “Junk Mail” your name!
@junkmail4613
@junkmail4613 4 года назад
Beren 57 minutes ago Highlighted reply,"Love how your parents made “Junk Mail” your name!" They had great foresight. US Postal Service has recognized I can legally claim nationally all 3rd class mail, delivered by tractor trailer directly to my basement. In 50 years, I have never wanted for winter fuel for my furnace.(FREE!!!) Dad's name was "POST NO BILLS" Saved a lot of money.
@jlucasound
@jlucasound 4 года назад
@@junkmail4613 Priceless! :-)
@AstAMoore
@AstAMoore 7 лет назад
What I especially love about Ben’s videos is the production quality. The editing-both audio- and video-wise-is outstanding. Notice how seamlessly he joins together different video cuts (at normal framerate and sped up) with his audio commentary. Lots of clever L- and J-cuts there.
@scitwi9164
@scitwi9164 7 лет назад
What are L-cuts and J-cuts?
@giantneuralnetwork
@giantneuralnetwork 7 лет назад
L-cut: audio continues but visuals change. J-cut: audio changes but visuals don't. According to wikipedia the names come from the way the cuts appear due to how audio and video are arranged in non-linear video editing programs. Typically the video track is above the audio, so if you imagine the top of the L is the video, and the bottom the audio, you see the audio cut appear later than the video cut (the bottom of the L juts out to the right). Same with the J cut, you can see the audio cut (bottom part of J) occurs before the video cut. Kinda cool!
@scitwi9164
@scitwi9164 7 лет назад
Thanks for your explanation, now it's very clear to me :)
@st0rmforce
@st0rmforce 7 лет назад
Ben edits in the way these kinds of videos should be edited. Unobtrusively. You hardly notice the editing, which is a sign of a good editor.
@possumcode
@possumcode 5 лет назад
I can imagine myself doing some parts of Ben's work on his videos as good as he does it. But he does it ALL near perfect)
@TheYouTubeCuber888
@TheYouTubeCuber888 7 лет назад
Yay my name is in the video!
@RussellTeapot
@RussellTeapot 7 лет назад
:D :D OH, now I finallly got what you were talking about in the previous episode, using a counter to multiplex the digits in the correct position. Didn't thought about using a separate clock with a speed so high that you can't tell it's cycling through the SSDs. Very clever and neat!
@notyou6264
@notyou6264 7 лет назад
TheRU-vidCuber I read this message just as it popped up in the video lmao
@masaratech
@masaratech 5 лет назад
@@TheeCK1357 me too
@tf3confirmedbuthv54
@tf3confirmedbuthv54 4 года назад
Herro, I work fo him and I can shay dis is tru
@jlucasound
@jlucasound 4 года назад
@plushoom You will. I have a hard time wrapping my head around it, too.
@fdist04
@fdist04 7 лет назад
Dammit, everytime he says EEPROM I am reminded of "you done messed up ay-ay-ron"
@skyc3560
@skyc3560 4 года назад
Roasted Lemon yes, thank you.
@liamkelly3583
@liamkelly3583 4 года назад
now thats all i can think of
@riteshkakkar7112
@riteshkakkar7112 2 года назад
Pakistann
@MrJoerT
@MrJoerT 5 лет назад
The fact that you don't edit out the small mistakes that you managed to correct (like leaving one of the 'address' variable names when changing them to 'value'), makes this video a lot better. We all do stuff like that, and to me it makes you real. Keep it up!
@garydunken7934
@garydunken7934 7 лет назад
26:10 I like the way you highlighted the bug and fix it on the video, rather than editing it out. It makes the learning even more interesting!
@HelloKittyFanMan.
@HelloKittyFanMan. 4 года назад
He still edited "it" (them) out... of the program.
@riteshkakkar7112
@riteshkakkar7112 2 года назад
Pakistann
@jtsiomb
@jtsiomb 7 лет назад
To avoid bugs like that off-by one in the for loop, it's best to stick with the idiomatic use for(i=0; i
@H2CO3Szifon
@H2CO3Szifon 7 лет назад
Exactly, half-open intervals are the way to go.
@scitwi9164
@scitwi9164 7 лет назад
But what if you want to go through the entire bit range, smarty pants? ;) Then there's no way to encode the size, because it doesn't fit into any register ;> (it's one bit too big)
@H2CO3Szifon
@H2CO3Szifon 7 лет назад
there's a better way for that (which is arguably a special case): uintXX_t n = 0; do { fiddle_bits(n); } while (++n); - this also avoids having to spell out the exact (size-dependent) bit pattern.
@scitwi9164
@scitwi9164 7 лет назад
I know that one can do it with a while loop and base on the mod 2³² arithmetics. But this is an entirely different solution, not related to the for loop and `
@jtsiomb
@jtsiomb 7 лет назад
You missed my point. I didn't say "never use anything other than the idiomatic form". I said that if you always use the idiomatic form *when it's possible*, then when you see non-idiomatic forms of for loops, you will immediately notice it and try to think if there's a reason for it. So you will find bugs immediately in code you read, and you will not introduce such off-by-one bugs in your own code.
@Prlaba
@Prlaba 2 года назад
Ben, this is great stuff! Here’s a couple of enhancements: 1. It’s possible to program the eeprom to blank any leading zeros, so 001 would be displayed instead as 1. For signed numbers, the “-“ sign could appear in the display to the left of the most significant digit’s display, so -007 would be displayed as -7. It’s all a matter of programming the eeprom. 2. By using a 4K x 8-bit eeprom, the additional address line would allow you to display values in unsigned decimal, signed decimal or hexadecimal format (hexadecimal format would only use the two rightmost displays; the two leftmost displays would always be blank). To differentiate between hexadecimal and decimal values (necessary for values like 23), the rightmost display’s decimal point could be lighted for signed and unsigned decimal formats (the value 23 would be displayed as “23.”); and unlighted for hexadecimal formats (the value 23 would be displayed as “23”). 3. A simple (debounced) momentary push button could be used, together with a 2-bit counter, to cycle through the three display formats. Paul
@DanDart
@DanDart Год назад
+= 1 Thank goodness you programmed this. Just the positive parts would require 1676 NAND gates.
@samh1022
@samh1022 7 лет назад
I love that instead of editing out the bug, you just owned and took it in your stride.
@HelloKittyFanMan.
@HelloKittyFanMan. 4 года назад
He did edit the bug out, actually... in his program.
@karthikv4022
@karthikv4022 4 года назад
I too have same doubt
@kartechindustries3069
@kartechindustries3069 4 года назад
Hello everyone
@scitwi9164
@scitwi9164 7 лет назад
Some more ideas to consider: 1. Since we are multiplexing the display anyway, we could factor out the part which controls the multiplexed display, and the part which decodes the byte into 7SEG code, into two separate circuits. This way, the display could be used for other purposes as well (I'll describe some of them in a moment) and make the display to be a more universal output device. 2. For example, we could use a two-step decoding process in which the byte is decoded into character numbers, and then those character numbers are decoded by a separate EEPROM into the bits controlling the segments. This way we can either: a) set up all the bits of the display separately by the CPU for full control over the LEDs; b) set up a character number for each digit, which would then be decoded into the bits of the display; c) set up a byte value which would then be decoded to a character code, and in another stage into the 7SEG code. The mode of operation (along with the style of display) can be controlled by a separate register mapped somewhere in the address space (along with four other registers for storing either the character codes for each digit, or the bits controlling the LEDs directly, or just a single number to decode). It would take two EEPROMs as in your first design, but this time one would be for decoding the numbers into digits (encoded as character numbers), and the other one would be for decoding those character numbers into 7SEG code. Plus a bank of 4...5 registers for "video memory" ;) 3. This would also simplify the decoding logic, because we can then use the same general "pattern" for the decoding tables, and generate different styles of displaying them by simply search&replacing the character numbers with their different-style codes. Or, with a clever organization of those characters in the second EEPROM, we could perhaps even do it on the fly, by switching the character sets in the second EEPROM without any change in the decoding logic :) 4. This would allow to extend the character set with some additional fancy characters, such as: a) 6 characters with a cycle through all 6 segments around the centre (good for "waiting icon" / processing indicator / display test / demo mode); b) two different versions of hex digits (lowercase, semi-uppercase); c) 6 characters for comparison operators (, ≤, ≥, =, ≠) encoded, for example, like this: --- --- --- --- | | | | --- --- --- --- --- | | --- --- --- d) some other fancy stuff you can imagine ;) 5. With some additional characters, we could also decode the byte as bits, using the display style kinda resembling a dip switch :) Something like this: | | | | | | | | might be decoded from 11010001. This would use all 4 digits, one for each two bits, and would require just four additional characters (one for each combination of high/low lines). 6. Adding two more characters, we can turn the display into a bar graph / progress bar :) 7. Such approach would also make it easy to upgrade the display circuit from 7-segment display to some more fancy, alpha-numeric segment displays or dot matrix displays, because now it suffices to replace the second EEPROM which decodes the character numbers into their display representations, and all the decoding logic stays the same (because it decodes into the same character codes). 8. There's one cool use of an EEPROM if one wants to upgrade our CPU to be able to do some more advanced arithmetics, like multiplication or division :) We can use a 64 KiB 28C512 chip (or two 32 KiB 28C256 chips) to encode the entire 256×256 multiplication table :D (Actually, one 32 KiB chip should suffice if we can simply swap the factors when one is greater than the other, because the multiplication table is symmetrical along its main diagonal). Just use the lower 8-bit half of the address as the A factor, and the upper 8-bit half of the address as the B factor, and the value stored at that address in the EEPROM would store the product A·B. Then we can extend the ALU in such a way that a certain opcode would pass the data bytes through these EEPROMs' address lines instead of through the adders. And voila! We've got a multiplier circuitry without the need of building 8 separate adders :) (or cycling through one, which is slow). With two more EEPROMs we can make a divider: one chip for the quotient byte, the other for the remainder byte.
@IronLotus15
@IronLotus15 5 лет назад
What do you mean by character code? Like an ASCII or Unicode thing?
@rennleitung_7
@rennleitung_7 3 месяца назад
@SciTwi9164 Did you ever try the other way round? I consider to add some kind of printing capability to a TI-57. At the moment it looks like demultiplexing the display is the easiest way. Did you ever try something like this?
@edgeeffect
@edgeeffect 7 лет назад
These videos are brilliant... nice stable camerawork... edited to keep the pace going well... good clear screenshots... well prepared materials... well explained... and topics that go beyond the very basic basics! A rare treat on RU-vid... keep up the great work. I wish there was more stuff like this on RU-vid.
@thomasgipson7120
@thomasgipson7120 Год назад
As my boss once said(surely a popular phase), "There are only three truly difficult problems in software engineering. Cache validation, and off by one errors" :) Thank you so much for these immensely high quality videos! I'm enjoying this series and learning more in depth the hardware side of things.
@xrayer4412
@xrayer4412 7 лет назад
Ben you deserves much more subscribers, your videos are so inspiring. You are so clear in your explanations, keep up the work!
@scitwi9164
@scitwi9164 7 лет назад
There's nothing Ben can do to get more subscribers. But there's something _you_ can do: tell more people about his videos :)
@DarthZackTheFirstI
@DarthZackTheFirstI 7 лет назад
his topic is in a very technical area; most topics like this are with less subscribers, even when they are good. and it requires a lot of other knowledge to follow his verbal explanations. would amd present their graphics chip in such a detailed way (without their marketing blabla, which draws most of the attention), many wouldnt know what to do with it or just get bored. we are not here for the marketing, right :D .
@patprop74
@patprop74 6 лет назад
I agree, And being a new sub, Indicates Ben's channel just needs time of other like minded subs like us, to land on the channel.I pretty much understood everything Ben explained but don't ask me to make it, ill be lost after minutes hahaha.
@jkuebler89
@jkuebler89 5 лет назад
You are by far my favorite electronics instructional RU-vidr. Well thought out, clearly explained, and you don't cut corners to save time, like building the logic circuit for the 7 segment display with all those gates! Thanks for what you do. Hope you continue forever!
@0815mkl
@0815mkl 7 лет назад
That HP16C is great. Nearly unaffordable these days. Keep up your great videos, they are perfectly produced and with high value content. Thanks for taking the time to make them.
@aaro1268
@aaro1268 7 лет назад
Well done Ben! A very informative video and I enjoyed watching you design this peripheral, and the addition of a two's complement decoder was a pleasant surprise
@Daxiel-vk7wj
@Daxiel-vk7wj 2 года назад
Your channel is a gold mine!! You got me interested in building my own circuits, and whenever I get stuck on a problem I need to look up, you always come back up with the solution I need even if I wasn't looking specifically on your channel.
@murasaki848
@murasaki848 2 года назад
Similar to this BCD decoder, two devices I encountered come to mind. One was an ALU built in the 1970s that did Fourier calculations (had two interconnected ALUs, one for real and one for imaginary components), and one of the coolest things was it multiplied two 8 bit integers in a single step by simply having all the possible answers programmed into PROMs. Another device was a radar display console (also 70s tech as I recall) with maps and characters drawn by vector graphics. Both the X and Y axes were identical devices. To draw a line segment, one axis was put in "max delta" mode, meaning the coils deflecting the beam changed as fast as possible, and the other axis was in "Tan theta" mode, meaning a 4 bit number was applied to a ROM that had the rate of change for that axis programmed into one of 16 memory locations. A digital to analog converter converted the number output of the ROM into a voltage that controlled the rate of change of the beam deflection for that axis. This resulted in a line drawn at a fairly precise angle on the screen.
@gabriels5885
@gabriels5885 5 лет назад
0:20 I'm just learning electronics, and realizing how you used an EEPROM for a segmented display just blew my mind. I'm new to all this stuff, but's it's just such a clever use of an EEPROM I'd never seen before. :)
@esenkhandildabek3911
@esenkhandildabek3911 2 года назад
Holy crap, this is the first educational content on RU-vid, or probably overall that just sucked me in. It is like favorite show series, I can’t just get off these videos. Amazing content, Ben, keep up your amazing work!
@ajibadesamuel4578
@ajibadesamuel4578 2 года назад
Just recently stumbled upon your videos, and they've been excellent. Everyone of them I watched help my programming skills. Thanks Ben.
@topilinkala1594
@topilinkala1594 Год назад
Love that you have a HP-calculator. I've never used any but (HP-25, HP-41C, HP-41CV, HP-33s and HP-50g). Have those two last ones still with me. The HP-33s I bought because I needed light calculator when I worked as an electrician. The HP-50g I bought just because.
@lucasbraun5242
@lucasbraun5242 5 лет назад
I just discoverd your channel and I am so satisfied how you explain this
@raymondheath7668
@raymondheath7668 7 лет назад
A very well explained and thought out video. Brings me back to my Old days at Boeing. I watched it with one of my grandsonsons and then we broke out some parts and played around with some digital stuff, great fun. Everyt boy likes to see an LED light!
@irgski
@irgski 6 лет назад
I was (probably) one of many screaming at you regarding the “value < 255” coding. Good you caught it and showed how it was incorrect. Excellent series!
@MattRiddell
@MattRiddell 5 лет назад
These videos are beyond epic man - so so simple to understand - and I last till the end of the videos - the combination of hardware and software makes it so much more interesting - and apparently I like hyphens...
@coolthought8456
@coolthought8456 3 года назад
This video is a gem of not-so-basic digital knowledge and probably will be timeless
@kaydendeason9534
@kaydendeason9534 7 лет назад
keep up the great work, I look forward to these all week
@JasonMasters
@JasonMasters 7 лет назад
Congratulations on figuring out a way to do more with less. :) I did that once, when I was trying to figure out how to interface to an old Commodore disk drive which used the General Purpose Interface Bus. My first circuit was built in a hurry and the I/O ports appeared at several different addresses, but I later figured out that by rewiring the interface, I could not only completely decode the address so the ports only appeared at one address, but I could also get rid of two of the ICs I'd been using.
@KX36
@KX36 7 лет назад
Brilliant! There's many ways to skin this cat, but I like the way you've done it. You may want to consider adding a red filter to the 7 segs to increase contrast e.g. red acetate film.
@kentrothermel5242
@kentrothermel5242 7 лет назад
Outstanding use of an EEPROM! Also, Glad to see I'm, not the only one with an HP-11C!
@jlucasound
@jlucasound 4 года назад
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.
@jeanmorin4580
@jeanmorin4580 Год назад
I'm always fascinated that you have all those wires with the correct length and bent! My circuits always look like a pasta dish :D Cheers, love these videos, brings back memories...
@ZeedijkMike
@ZeedijkMike 5 лет назад
Didn't find your channel until today - but you got yourself a new subscriber. Great content and presentation.
@TaylorBlack0
@TaylorBlack0 4 года назад
Dude your jumpers are like the cleanest thing I have ever seen
@ItsGosho
@ItsGosho Год назад
That is brilliant idea to decode 8 bit binary numbers. The combinations in the EEPROM with the other chips are amazing!
@hesham1216
@hesham1216 5 лет назад
I like the way you explain things. You first give the initial thought then modify it until we see what we see in real life. I wish professors at my university did that. I am really thankful for your work and I wish you make a series of electronics basics course. You can even do that on Udemy (paid courses). I will be your first student. Thank you.
@Geek_Chef
@Geek_Chef 3 года назад
Ben.....just amazing teaching skills...! Am not looking forward to finishing this group(because they are incredible)....but I can't stop watching them..!! It's like Netflix Crack for Geeks....!! Keep up the great work!
@Regular6782
@Regular6782 5 лет назад
Awesome. I don't usually comment on videos, but you totally deserve the comment and like, these videos are great!
@saddle1940
@saddle1940 4 года назад
Thankyou for the video. It surprises me the chip outputs are able to drive that many leds without hurting the ram or the 139.
@okovermekeamglight4563
@okovermekeamglight4563 4 года назад
I'm glad you connected the decimal point, it was bugging me last time
@dn_panic
@dn_panic 7 лет назад
Really cool stuff! Technically, that cast to a byte is relying on signed overflow, which is undefined in C. Something like (value >= 0 ? value : 256 + value) is more certain to work on all compilers.
@bermchasin
@bermchasin 2 года назад
is that supposed to be a questionmark?
@dn_panic
@dn_panic 2 года назад
@@bermchasin yes, it's a ternary operator: en.wikipedia.org/wiki/%3F%3A
@sillymel
@sillymel 2 года назад
While signed overflow might not _technically_ be defined in C (also, this is actually C++, not C, so that might change things, but I don't feel like reading through the standard to verify either way), the simplest way to cast from an int to a byte is going be just reinterpreting the least significant byte of the int as an unsigned integer, which, as long as the architecture you're compiling for uses two's complement signed integers (pretty much every architecture under the sun), will give you the desired result.
@JeffreyJonesRecumbentRider
@JeffreyJonesRecumbentRider 7 лет назад
I knew there was a reason why I bought more than 3 triple 5's when I ordered parts. These are the best videos I have found for learning about TTL logic. Keep them coming Ben. Happy to be a Patreon sponsor.
@alyxferrari8793
@alyxferrari8793 2 года назад
@@riteshkakkar7112 ???
@alyxferrari8793
@alyxferrari8793 2 года назад
@@riteshkakkar7112 huh
@riteshkakkar7112
@riteshkakkar7112 2 года назад
@@alyxferrari8793 give me money
@alyxferrari8793
@alyxferrari8793 2 года назад
@@riteshkakkar7112 get your own money dumbass
@riteshkakkar7112
@riteshkakkar7112 2 года назад
@@alyxferrari8793 give me money
@holyngrace7806
@holyngrace7806 7 лет назад
Simply excellent Ben. Thank you.
@lucasmontec
@lucasmontec 7 лет назад
all those loops could be a single loop for each case :0
@7imbrook
@7imbrook 5 лет назад
As a software engineer this was painful, but also I'm very impressed by this whole series and am loving the whole thing :)
@jackdavenport5011
@jackdavenport5011 3 года назад
@@7imbrook I was screaming the whole time waiting for him to refactor it into one loop and he never did. **And then he implemented two's compliment with another 4 loops...**
@jamesmnguyen
@jamesmnguyen 3 года назад
Actually Ben's way makes sense in that your write each location in the EEPROM sequentially. If you combined the loops, you'd jump addresses a lot. Granted this only matters in memory systems that use caches, but Ben's code is not wrong.
@johnSmith-up5ey
@johnSmith-up5ey 5 лет назад
I had a go at this, and the wiring became impossibly tight until I lifted the display modules and ran some of those connections UNDER the modules. For example, connecting pins 3 and 8 becomes a simple link across the middle of the breadboard
@sjair6526
@sjair6526 10 месяцев назад
Another great video! It took me a hot minute to figure out that the 74LS76 was substituted by the 74LS107 in the kit. The only reason I was so hesitant to stick it in was I was unsure if I was going to need the 74LS107 elsewhere in the build. The Pinout is a little different but functionally the same. After getting it all hooked up I see that he clearly mentions the sub on his website. Good learning experience though. I’ll never complain about learning something.
@trentjackson4816
@trentjackson4816 3 года назад
Ben, you are so so good. I mean that in all honesty friend. You are way better than I ever was. Twice as good. The Tafe colleges here in Australia would highly regard you as a teacher. The pay is good too. Perhaps you should consider Australia sometime in your future. Incidentally, I could have done all of this with a PIC 16F628a (my favourite) - and some C firmware in less than an hour. BUT your audience would not learn even half as much as they would by doing it the hard way here using an EEPROM plus errata discrete parts. Complex.
@peachmizuki
@peachmizuki 2 года назад
I find it's easier when adding those numbers that represent the higher order bits on the address pins to use 0x100 instead of 256, 0x200, 0x300, 0x400 etc. It's certainly easier for me at least to remember 0x700 instead of 1792, and it makes the code more readable as well.
@JoeBurnett
@JoeBurnett 7 лет назад
I absolutely love your videos! Thank you for making such great content!
@Archnemesis88
@Archnemesis88 3 года назад
Your videos are awesome, really cool projects!
@kingshahzad78
@kingshahzad78 4 года назад
You have created real soul for exploration the working of chips. God bless you
@e-vboy1454
@e-vboy1454 4 года назад
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.
@ivarnordlkken8082
@ivarnordlkken8082 Год назад
The normal solution is to insert a driver to increase the current 4 times. All multi-digit displays are run the same way.
@amber1862
@amber1862 7 лет назад
Thanks again Ben, we so so so appreciate these :).
@profesorjan7614
@profesorjan7614 4 года назад
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!
@MasterHigure
@MasterHigure 7 лет назад
You could interpret it as the clock itself really being the 1's bit for the counter, and then the JK flip flops gives you the 2's and 4's bit. That way seems to require less of a hassle and wiring. Also, if you want more multiplexing, that would let you use the final adress pin on the EEPROM without adding another flip-flop.
@riteshkakkar7112
@riteshkakkar7112 2 года назад
Pakistann
@AlberTesla1024
@AlberTesla1024 7 лет назад
thank you so much. now i came to know that this technique also works with LED matrix displays. and reduces the amount the current drawn by the circuit and reduces the number of pins to control the display..
@jeffnay6502
@jeffnay6502 7 лет назад
Can you share a link to a pic of your matrix display?
@Philip8888888
@Philip8888888 5 лет назад
Nice video. It's crazy the microcontrollers are so cheap now, that you can replace all the complication with a single cheap uC to do all the LED multiplexing. I was looking at a similar problem and figured that instead of buying dedicated chips, it was cheaper and easier to use a uC to do it.
@benbaselet2026
@benbaselet2026 4 года назад
These whole series is wonderful but this episode rocks even harder :)
@ratchet1freak
@ratchet1freak 7 лет назад
You could feed the output of the clock straight into one input of the decoder. that leaves the other jk flipflop free to store the signed mode
@fifaham
@fifaham 2 месяца назад
@23:55 this is called persistence of vision, meaning that the eye has memory effect preventing human eye from catching the sudden jump of one image to another, it is similar to filtering effect also. The eye tends to keep the previous image at time of (T-0
@nefalas_
@nefalas_ 7 лет назад
I've been waiting for this, thanks! :D
@Blendedasian
@Blendedasian 4 года назад
If you feed your binary number to a BCD decoder it will take just 10 bytes without having to repeat the digits. But damn that is some clever stuff you did to have all this set up with just the EEPROM! Considerably less wiring than on the classic way.
@hadireg
@hadireg 4 года назад
I did this in the past, without an arduino :) real refresher training!! Thanks!
@oblivion_2852
@oblivion_2852 7 лет назад
I love this video. Its good to use more of the available programable data on the chip instead of using only a portion of 3
@paveljelinek772
@paveljelinek772 7 лет назад
I think this is the way the simple digital calculator works.. Now I can make one by myself! Great!
@dingodog5677
@dingodog5677 2 года назад
Wow🤯 I watch all the episodes. Learned heaps, didn’t get everything. I’ll watch it again I guess. 👍👍👍👍👍
@Tofomy
@Tofomy 7 лет назад
Yet another outstanding video.
@matferro
@matferro 7 лет назад
When I started to watch this video I thought with my self "what an ugly solution he had there". I thought you would do something like add 6 to each number greater than 9 or something like that. But your solution really grown on me. It is so simple and easy to execute. And you even were abble to show negative number. Awesome work you did there.
@prachethire812
@prachethire812 7 лет назад
I really admire your work.
@xriuk
@xriuk 4 года назад
Now you could set some "dynamic spacing" for negative numbers if you wanted, like displaying "-62" instead of "-062", would be cool
@kazii_the_avali
@kazii_the_avali 5 месяцев назад
omg watching this in 2024 the old youtube nastalga of your comment section in the vod.
@riddler2kone
@riddler2kone 7 лет назад
wow, just wow. Great Video! Thank you!
@percyvile
@percyvile 3 года назад
Great video, awesome explaination as usual
@SamandAlexHappyBrothers
@SamandAlexHappyBrothers 7 лет назад
Can't wait a new video !
@tuxcode7344
@tuxcode7344 3 года назад
Another solution would be to use a shift register that loads the value in parallel and then shifts around, connecting the serial output to the serial input, and connect the 4 least signifficant bits with a hex to 7 segment decoder (for instance an EEPROM or 20 pin PLD like the ATF16V8B - seems most 7 segment decoders only support BCD: values 0-9) and then use an 8 bit D-latch to keep the output for each digit or just run it fast enough so you don't notice it blinking. If you want a decimal readout then you could add a binary to BCD function by including an adder that will increase the value by 6 (0110) if the value of the least signifficant 4 bits together is higher than 9, then feed that into the 7 segment decoder and store the output for the 7 segment digit. After decoding the value of the 4 least signifficant bits you shift the position of the input data 4 positions to the right and repeat (adding 6 to each nibble if the value of that nibble > 9 when you want BCD). Besides a shift register you could also use a couple of 4 bit selectors that selects the low order or high order nibble as input to the 7 segment decoder. And as alternative to using an adder for the conversion to BCD, the DM74185A is a 6 bit binary to BCD converter IC that (if I understand the datasheet correctly) can be used multiple times for bigger binary words, though I can't find any suppliers and as the date on the datasheet I found is 1989, I guess it's no longer produced. Considering the added complexity and availability of hardware, I think I'd just do the conversion to BCD in software before sending it to the 7 segment display.
@kotaprolucharan4032
@kotaprolucharan4032 7 лет назад
You are awesome man you have good knowledge thank you for sharing this with us in youtube
@adri4931
@adri4931 7 лет назад
Ben, can you tell me how exactly do you cut your wires so perfectly?
@KX36
@KX36 7 лет назад
There's a sweatshop of wire cutters and benders behind the camera.
@AceBruuDofSpades
@AceBruuDofSpades 7 лет назад
I found that getting the wires just right is a lot more tricky than I expected! I'm using a small exacto knife (the one that looks like a surgeon tool) to strip them - placing the knife on the isolation, then rolling the wire around a few times - which seems the fastest way to strip them accurately.
@Pipiopy
@Pipiopy 7 лет назад
use your teeth
@anullhandle
@anullhandle 7 лет назад
TheCreepyBox Few ways. They used? to sell precut pre stripped lengths. There are also strippers with an end stop. iow strip an end cut to length and strip the other end. You get two even stripped ends on a cut to length wire. Good ones aren't cheap. One jaw grabs the wire the other jaw grabs into the insulation end pulls a pc off. The two jaws spread apart when you squeeze the handles. Sort of the opposite of regular strippers.
@rich1051414
@rich1051414 7 лет назад
Flush clippers and a good stripper I guess. I use one made by vise-grip. It's a neat mechanism. A million times better than cheapo strippers. It's heavy though, could be used as a weapon. (Part number: 2078300)
@amikhimji
@amikhimji 7 лет назад
very nice explanation I am impressed. great job thanks
@mahekshah9337
@mahekshah9337 4 года назад
You are doing a great job sir .
@wazaDev
@wazaDev 5 лет назад
Amazing videos, simply outstanding.
@ScientificSolutions
@ScientificSolutions 3 года назад
Not trying to steal any thunder here but this design looks suspiciously (exactly) like the design I won an award for in the September 1989 issue of Radio Electronics magazine. Man, that's more than 31 years ago; I feel old now, must go for a coffee break.... Thanks for the well done trip down memory lane
@DarkZeros
@DarkZeros 7 лет назад
very good video as always. informative and clear. but as a programmer, those 4 for loops with same parameters hurt my eyes.
@TheSpyFishMan
@TheSpyFishMan 7 лет назад
DarkZeros seriously XD
@GRBtutorials
@GRBtutorials 6 лет назад
True! At least use copy and paste, Ben, don’t waste your time. Not optimal (he could have put all of them in the same loop... oops), but better. That’s probably why he takes so long in uploading new videos...
@masaratech
@masaratech 5 лет назад
well, a function could make it ease
@NikZapp
@NikZapp 5 лет назад
yeah
@anubis9139
@anubis9139 4 года назад
Yeah. I kept thinking he was going to go back and add something to it to justify looping through 8 times, but he didn't. And watching him type it out each time, WHY!!!!
@Bianchi77
@Bianchi77 2 года назад
Nice video clip, keep it up , thank you for sharing :)
@nulltrope
@nulltrope 3 года назад
I'm so jealous of Ben's HP 16C calculator, those things are $100+ for one in good condition! Now i'm tempted...
@shadowmil
@shadowmil 5 лет назад
as a programmer, seeing you use loop 4 times when you could've done it with one loop hurts my soul.
@Econcrafter
@Econcrafter 5 лет назад
I'm glad I'm not the only one.
@timmorris1432
@timmorris1432 5 лет назад
I was close to screaming at the screen.
@MrJoerT
@MrJoerT 5 лет назад
Same. Tho in the end, it worked out nicely, giving intuitive progress messages while it was programming the ROM.
@ExEBoss
@ExEBoss 5 лет назад
The if statement could also be reduced into a ternary expression within the `writeEEPROM(…)` call.
@tahvohck
@tahvohck 5 лет назад
Don't lie, we all know programmers sell their souls for programming skills. It hurts the hole where your soul used to be. It hurts mine too. So, so much. And ExE Boss, it could, but it's not a great idea for tutorial videos, ternary expressions don't read as well.
@UncleKennybobs
@UncleKennybobs Год назад
Love these videos
@rogerjones8809
@rogerjones8809 2 года назад
Love that programmable HP calculator, I had a TI-58 back in the day! Great video, very useful. Could you do one showing in more detail about the arduino EEPROM programmer and the software?
@JeffreySJonas
@JeffreySJonas 4 года назад
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' :-)
@geraldopontes37
@geraldopontes37 3 года назад
Excellent vídeos! I loved
@lztx
@lztx 3 года назад
Demonstrating some of The two hardest parts of computer science: cache invalidation, naming things and off-by-one errors.
@MrRohanrocker
@MrRohanrocker 7 лет назад
you're a legend
@harunkaramuklu1460
@harunkaramuklu1460 4 года назад
Thanksss perfect tutorial. Bravo 👏👏👏
@Blacklab412294
@Blacklab412294 6 лет назад
Crazy thought- Your Address A10 could be a switch between BCD and HEX. That way you could use this EPROM in more places then just one in your computer and still multiplex your address for your displays.
@forbiddenera
@forbiddenera 5 лет назад
I just want to say these videos are great. Awesome explanations. Love the use of the eeprom..but I wonder if, since you pointed out when you flashed the rom that the data is basically just the digit segments repeating, if you could somehow store the bits once and use a shift register to do the repitition?
@AtomicShrimp
@AtomicShrimp 7 месяцев назад
I've been binge watching this series because I'm thinking of starting a project which will use some of the same techniques; I noticed you're just using single resistor on the common pin of the 7 segment display - most of the guides I have seen about this insist that it's necessary to use one resistor for each segment on the input pin, but it seems like you are not experiencing any problems the way you're doing it. Does it matter as much as they say it does? (I think common wisdom is that with a single resistor, brightness will vary depending on how many segments are lit).
@leosbagoftricks3732
@leosbagoftricks3732 3 года назад
Great video, lots of neat ideas presented. I do cringe at the idea of LED's connected to logic outputs with no resistors, then using that same output to drive another input. the LED's clamp the output to the LED's Vf, reducing the available drive to a potentially marginal level. Bypass capacitors on every chip is never a bad idea either.
@user-wn4nl7bp9h
@user-wn4nl7bp9h 3 года назад
I watch this in amazement . Most of the time I have the feeling I will never learn this but every now and then I have this "AHA!" moment. Then I go back to the first video and start watching the whole series again, armed with new knowledge and understanding.
@gillesbisson199
@gillesbisson199 5 лет назад
Once again really great video. On little advice : you may want to watch the current you are asking that 'LS139 to sink. Seems the chip can only sink 8mA per output. When all segments are lit (to display "8") for any given display, you are probably exceeding that (even if each display runs only 25% of the time). I'm not sure what is the chip's maximum for all 4 outputs but that might be a factor as well.
Далее
8-bit computer build: Connecting the bus
19:11
Просмотров 251 тыс.
The world's worst video card?
32:47
Просмотров 6 млн
Visualizing Data with 7-Segment Displays
34:26
Просмотров 1,2 млн
I Made A Water Computer And It Actually Works
16:30
Making a computer Turing complete
18:20
Просмотров 535 тыс.
8-bit CPU control logic: Part 1
27:52
Просмотров 1,3 млн
Hacking a weird TV censoring device
20:59
Просмотров 2,9 млн
Posy’s designs ➔ REAL DISPLAYS
8:50
Просмотров 389 тыс.
Let's build a voltage multiplier!
16:32
Просмотров 1,9 млн
I Made a Working Computer with just Redstone!
15:37
Просмотров 746 тыс.
I built my own computer. by hand.
13:03
Просмотров 1,1 млн