Before the time circuits can display the time, step one is figuring out what the “proper” LED characters actually are. There is in fact no standard set of characters for segmented LEDs, and the Back to the Future series takes some liberties with the alphanumeric segments. Still, I can do my best to reproduce them as faithfully as I can.
It’s reasonable to assume the character set is the same between each readout (Hour, Minute, etc.) and each display. Each display only shows numbers, and luckily all ten of them show up through the course of the first movie.
Most of these numbers show up during the first hero shot (OCT 26 1985 01:20). ‘4’ and ‘7’ show up when Doc inputs the date for the Declaration of Independence (04 1776). The last remaining digit, ‘3’, is shown when Doc inputs the time for Marty to return to the future (01:35), before the final clock tower sequence.
You’ll note that, for lack of a better term, these are ‘sans-serif’ characters. The ‘6’ and ‘9’ are missing their tails, which are usually included in 7-segment displays.
As with every other part of the project so far, the alphanumeric displays are where things get wonky.
To show all 12 standard month abbreviations I need to know 19 / 26 letters in the alphabet (H, I, K, Q, W, X, and Z are unused). Unfortunately even with all of the time traveling only a few months are shown:
- JAN: When the time circuits ‘glitch’ in the second film (both times).
- JUL: When Doc inputs the time for the Declaration of Independence.
- SEP: Marty’s trip to 1885.
- OCT: “Present-day” in 1985 and the DeLorean’s first trip.
- NOV: Marty’s trip to 1955.
- DEC: When Doc inputs the time for the “birth of Christ”.
As there are multiple trips to/from OCT and NOV a few of these are duplicated throughout the series. From this list we’re still missing the letters B, F, G, M, R, and Y that are required to show the rest of the months.
It gets worse, though. Not only do the films not show all of the letters required, but many of the letters they do show are not possible to reproduce on alphanumeric (14 / 16) segmented LED displays. For example, the ‘D’ used for ‘DEC’ is impossible to reproduce; it uses half of a side bar and a non-existent diagonal going in the wrong direction. Some letters like ‘N’ and ‘V’ even change between films, going from possible to impossible.
Segmented LED Library
A few weeks ago I posted my own open-source library of segmented LED characters, which I put together in advance knowing that I would need at least some characters that weren’t in the films.
7-Segment Symbol Modifications
The seven-segment character list is almost perfect as-is. As I mentioned above, the characters for ‘6’ and ‘9’ are lacking their ‘serifs’, which are easy enough to remove.
Alphanumeric Symbol Modifications
The 16-segment character list also needs a few small modifications to make it work.
For one, the character shapes used for the ‘Month’ display in the film are as big as possible. As such, both ‘E’ and ‘F’ need to be extended to use both center segments. Continuing the ‘sans-serif’ theme from the 7-segment displays, I also changed the ‘Y’ character to the alternate vertical form. I wish ‘B’ and ‘D’ could be bigger, but the only way to do that is use the diagonal segments which, in my opinion, looks weird.
Since I also want the option to display numbers across the entire display, I’m going to edit the 16-segment number characters so they match their 7-segment counterparts. This mostly involves removing the ‘serifs’ added to distinguish the numbers from the letters, such as the diagonal on ‘0’ and the and the diagonal for ‘1’.
Of course, numbers and month abbreviations aren’t all that can be displayed on these segmented displays. For other purposes / projects I’m also including the other ASCII characters in the code, which covers all capitalized and lowercase English letters, numbers 0-9, and a number of symbols (!”#$%&'()*+,-./:;<=>?@[\]^_`). These can be shown on both the 16-segment and 7-segment displays (although the 7-segment symbols sometimes require a bit of imagination).
LED characters established! I’ve figured-out what the ‘proper’ characters are (within reason) and I’ve converted those characters into literals that can be read by a microcontroller. All that’s left is to write some code that will display them.
Next up: Programming the Time Circuit Display