A 16-bit hexadecimal display module.
I’ve been wanting to take on more advanced digital design projects. I also like making multi-purpose tools and modules. It occurred to me that having something that can display a human-readable value from a digital bus could be pretty handy. I call it HexOut, and it’s a simple little module that can be plugged into an 8-bit or 16-bit bus, and display the current value. It’s a very rough prototype, and if it proves useful, I may rebuild it cleaner and smaller.
As you can see, the module is a three-layer design. The architecture is broken down into three parts- input, output, and display. This article will cover the top layer (display). Subsequent articles will cover the Output and Input layers. Let’s get into it!
The Display layer is the simplest. It has four seven-segment displays wired in a specific pattern to a 32-pin header which connects to the layer below. Here’s the schematic:
Here’s the Eagle file for the schematic, if you’re interested.The Display was developed simultaneously with the Output layer, which will be covered in the next article. As usual, I started by mocking it up on the breadboard, to make sure it works. If you look closely, you may notice my Bread Head and Juice Bridge projects are pitching in here.
Once I knew this general approach to displaying my data was going to work, it was time for the PCB:
Here’s the Eagle file for the PCB. Like all my boards so far, it’s a simple one-layer design that relies on jumpers for the top layer. In this case, a lot of jumpers. It was a bit tedious to construct, but thanks to the jumper technique described above, everything was connected correctly on the first try. One interesting thing to note on this PCB is that the fill plane is actually Vcc. I’m using common-anode seven-segment displays, because it’s what I had on hand. It was much easier to lay out the PCB for these displays using a Vcc fill plane instead of the usual ground plane. The displays are ultimately driven by 74HC595 shift registers, which are better at sinking current than sourcing it, but they can still drive these displays just fine. However, it does mean the LEDs are effectively active-low, which means we need a low voltage to turn them on, and a high voltage to turn them off. That oddity is easy to correct for, as we’ll see later.
Something else to note on this PCB- there are no drill holes for standoffs in the corners, even though it’s part of a PCB stack. This was a mistake on my part, which I had to rectify with some creative rejiggering later. More on that after we go through all the boards.
Once I had the PCBs, it was off to etch. A little spoiler here- I actually designed and laid out all three PCBs at the same time, since that was much easier. For the purposes of these articles, however, we’ll just focus on one at a time. I etched the board using my usual process. The acetate for this layer is available here, and all the acetates together look like this:
That wraps up part 1 of HexOut. In part 2, we’ll dig into the next layer down, which is where some real digital design starts to happen.