LED Micro-Readerboard, version 2.0: Technical Data

This article contains some reference data– pinouts and the font table– relevant to the LED Micro-readerboard, version 2.0.

To build your own kit from scratch, you need an a Atmel ATtiny2313 microcontroller, an AVR programming setup, the code downloaded from here, instructions downloaded from here, a battery box for two AA batteries with a switch (Digi-Key SBH-321AS-ND), and an alphanumeric display, e.g., Kingbright PSC08-11EWA.

Our microcontroller is the Atmel ATtiny2313; you can find the details about it and the data sheet on Atmel’s site.

This is a simplified drawing of the microcontroller pinouts, showing the pins as they are configured for the LED Micro-Readerboard project. All of the lines shown, except power, ground, and reset, are configured as general purpose outputs, and are capable of sourcing plenty of current to drive LEDs.

The alphanumeric LED display that we are using for the micro-readerboard is an industry standard size, a 0.8″ digit 16-segment (plus decimal point) display with 18 pins on the back and common-cathode configuration. A typical model is the Kingbright PSC08-11EWA, available here for $3.72 each. You can find the detailed datasheet for that display here.
(The display that we’ve actually sourced for the latest kits is a harder to get but extremely bright member of the same family: FYS-8013AUHR-11, by Foryard optoelectronics.)

Here are the pinouts for the alphanumeric display, following the naming conventions of the Kingbright displays:

In our assembled ornament, the microcontroller sits on the back side of the LED display such that most of the ATtiny2313 output pins go to inputs of the LED display. The microcontroller has 20 pins while the display only has 18, so microcontroller pins 1 and 20 do not directly line up with any pins on the display.

Pin 2 of the ATtiny2313 goes to pin 18 of the display,

pin 11 of the ATtiny2313 goes to pin 9 of the display,

and pin 19 of the ATtiny2313 goes to pin 1 of the display.

More completely, the layout looks like this:

The only tricky part is that the order of pins 9 and 10 on the microcontroller effectively need to be swapped to line up with the pins on the display; take a look at the assembly instructions to see how to deal with that problem. If you switch to a common anode display, the important point to note is that the positive voltage (+V) needs to be delivered to the common pin. This requires an extra wire in the project and some care to avoid short circuiting. (You will also need to flip a “switch” in the firmware to use a common anode display.)

With the default firmware, the decimal point (DP) is not actually used. Instead, that pin of the chip can optionally be connected to ground. The firmware senses that ground connection and uses that as a trigger to activate the “holiday” phrases in its program.

Font Table
For each letter that might be displayed on the readerboard, we determined which segments should be lit up. Those segments to be lit are marked by a binary #1, and those to be dark are marked with a binary #0. The sixteen binary digits that determine the state of the sixteen segments comprise two bytes worth of data, the order of the bits in the two bytes is determined by the physical location of the pins on the microcontroller and the pins on the LED display. For example, segment ‘a’ of the display is controlled by pin 1 of the display. Pin 1 of the display touches pin 19 of the microcontroller, which is output B7. Following similar logic, the format of the two bytes is as follows:

  Byte High Byte Low
Segment c p f e d r n b a m k h u s t g
I/O Pin A1 A0 D6 D5 D3 D2 D1 D0 B7 B6 B5 B4 B3 B2 B1 B0

With this definition of the two data bytes, it was possible to construct the data table, with its 16-bit binary representation of each letter. The decimal value (unsigned integer) corresponding to the binary number is also given; these are the ‘practical’ values that were used in the C code.

Character ASCII #d Segments Lit Byte High Byte Low Decimal Val.
A 65 ghkru 0000 0100 0011 1001 1081
B 66 abcdefmps 1111 1001 1100 0100 63940
C 67 abefgh 0011 0001 1001 0001 12689
D 68 abcdefms 1011 1001 1100 0100 47556
E 69 abefghu 0011 0001 1001 1001 12697
F 70 abghpu 0100 0001 1001 1001 16793
G 71 abdefghp 0111 1001 1001 0001 31121
H 72 cdghpu 1100 1000 0001 1001 51225
I 73 abefms 0011 0001 1100 0100 12740
J 74 cdefg 1011 1000 0000 0001 47105
K 75 ghnru 0000 0110 0001 1001 1561
L 76 efgh 0011 0000 0001 0001 12305
M 77 cdghkn 1000 1010 0011 0001 35377
N 78 cdghkr 1000 1100 0011 0001 35889
O 79 abcdefgh 1011 1001 1001 0001 47505
P 80 abcdghpu 1100 0001 1001 1001 49561
Q 81 abcdefghr 1011 1101 1001 0001 48529
R 82 abcghpru 1100 0101 1001 1001 30585
S 83 abdefhpu 0111 1001 1001 1000 31128
T 84 abms 0000 0001 1100 0100 452
U 85 cdghef 1011 1000 0001 0001 47121
V 86 ghnt 0000 0010 0001 0011 531
W 87 cdghrt 1000 1100 0001 0011 35859
X 88 knrt 0000 0110 0010 0010 1570
Y 89 kns 0000 0010 0010 0100 548
Z 90 abefnt 0011 0011 1000 0010 13186
* 42 kmnprstu 0100 0110 0110 1110 18030
(space) 32 0000 0000 0000 0000 0
/ 047 nt 0000 0000 0010 0010 514

Note about kit versions: Although the “big picture” of how the LED Micro-readerboard works has not changed much since the first version, there has been one important change to the hardware: Instead of using a common-anode LED display (the Kingbright PSA08-11HWA) as we were before, we now default to using a common-cathode display. The principal reason for this is just that of conceptual simplicity– if you want a segment to turn on, you now send a logical “on” signal instead of an “off” signal.

The two types of display are equally common, and if you’re building your own readerboards from scratch you can use either type. Note that if you want to change from one design to the other, you need to make minor changes to both the wiring and the firmware– wire the common pin to +V instead of ground, and invert the bits of the font table.