Electronics noobie here trying to work on some projects to learn something. I'm currently working on a 16bit breadboard computer, and I'm trying to figure out how to display the 16bit binary number as a decimal number on some seven segment displays.

I originally thought I could make a 32M EEPROM out of 64K EEPROMs, which is incredibly stupid of me.

What's the best way to do this? I don't really want to use a microcontroller, as to me that's kind of 'cheating' in the nature of this project, but if that's the best option I'll go with it.

  • \$\begingroup\$ You’re trying to make 32 Megabits out of 64 Kilobit devices? You realize that you’ll need 512 of them?! \$\endgroup\$ – DoxyLover Jul 21 '18 at 0:47
  • \$\begingroup\$ Ok so I think this falls under the "sorry for being dumb" part of my post. This is what I get for not paying too much attention in the last chapter of my digital logic design course... \$\endgroup\$ – Thomas Goleberski Jul 21 '18 at 0:48
  • \$\begingroup\$ Why bother with decimal at all? Use hex. Decimal is just a big distraction. \$\endgroup\$ – Janka Jul 21 '18 at 1:00
  • \$\begingroup\$ I don't really know, it's nice? Would it be easier to be a hex display? \$\endgroup\$ – Thomas Goleberski Jul 21 '18 at 1:06
  • \$\begingroup\$ Hex means you can use 4 identical decoder/drivers. \$\endgroup\$ – Spehro Pefhany Jul 21 '18 at 1:06

Decimal display is tricky. A decimal display will involve repeatedly dividing your number by 10 and extracting the remainder. Division by anything that isn't a power of two is non-trivial, and usually isn't implemented in designs for simple computers (and therefore probably isn't reasonably achievable with the one you're currently working on). You could do it as a program, but the program would be pretty large, and again the kind of computer you're talking about often doesn't have much space for interesting programs (what size memory do you have? 256 bytes? if so, division would probably use up most of that).

Much more achievable is either hexadecimal (base 16) or octal (base 8) display. These only require division by powers of 2, which (like division of decimal numbers by powers of 10) is much easier to implement: you can just take a bunch of bits and decode them: for hexadecimal take chunks of 4 bits starting from the least significant bit of your number, while for octal you'd take chunks of 3 bits.

You could then use an off-the-shelf chip to decode those bits to the correct signals to get the digit to show on a 7 segment display. For octal output, the 74LS47 (or 74LS247) is a reasonable choice, but it doesn't handle hexadecimal output. For hexadecimal, an ICM7212 is one way forwards, although it's a bit harder to interface as it's designed to drive a multi-digit display but only has a single digit input at a time. They're also not exactly cheap. You could also build a decoder from an EPROM, which may be easier and cheaper, if you know how to do that.

|improve this answer|||||
  • \$\begingroup\$ Yes, I'm planning on programming an EEPROM to display hexadecimal digits and I've already made some progress. Thanks for the help! \$\endgroup\$ – Thomas Goleberski Jul 23 '18 at 11:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.