This is only a preview of the August 2026 issue of Silicon Chip. You can view 33 of the 104 pages in the full issue, including the advertisments. For full access, purchase the issue for $10.00 or subscribe for access to the latest issues. Items relevant to "Adjustable Ultrasonic Cleaner, Part 2":
Items relevant to "Phenomenal Pinball Machine, Part 3":
Items relevant to "Destination Display":
Articles in this series:
Articles in this series:
Items relevant to "Transceiver Test Set":
Items relevant to "Is this the end of the NE5532?":
Purchase a printed copy of this issue for $14.00. |
By Tim Blythman
μDCC Decoder
Accessory Decoder
I2C Controller
Destination Display
Model Headboard
Destination Display
Background source: https://unsplash.com/photos/
train-tracks-with-trees-on-either-side-3TXv9NJZZTk
Miniature electronics have come a long
way and are now at the point that it is possible
to create displays compact enough to fit into small (HO
or N) scale models. This tiny display can be controlled by our
microDCC (μDCC) Decoder, an infrared remote control, or a serial port.
M
ovement is a key aspect of giving
realism to models; the motion of
trains in a model railway is
much of what makes them so engaging. Signals and points also add to an
authentic nature. Much of this series
has been devoted to adding movement
to a DCC (digital command control)
model railway. Lights and sound also
add to engagement and don’t require
moving parts.
We noted in the microDCC Decoder
article (May 2026 issue, siliconchip.
au/Article/20239) that some modellers are now adding small displays
to their trains. We showed an example
of an LCD (liquid crystal display) fitted to one HO-scale model to emulate
a headboard. This Model Headboard
Destination Display project provides
something similar.
While this board can be used without the microDCC decoder, once the
graphical data has been loaded onto
the chip, with it you will be able to
send DCC commands to the loco and
have it update the display (eg, select
a new destination). Otherwise, you
siliconchip.com.au
could use an IR remote control aimed
at a receiver on the loco to perform
the same task.
Headboards and destination
displays
“Headboard” is a term originally
used to describe a painted timber
Features & Specifications
🛤 The 19 × 12mm PCB drives a tiny OLED
panel
🛤 Serial input for control (eg, from our
microDCC Decoder)
🛤 Infrared remote control
🛤 8kiB+ NFC EEPROM chip for display
data
🛤 3.3V operation; 6mA typical draw at
full brightness
🛤 Suits a variety of monochrome display
panels and sizes
🛤 Display contents (graphics and
animations) are configurable
Australia's electronics magazine
board placed at the front of a train to
indicate its line or destination. Later,
adjustable mechanisms using handpainted linen scrolls on rollers were
used. Photo 1 shows an example of a
scroll from an old Ballarat tram and
a Geelong tram, showing how this
appears in use. The translucent linen
allows effective backlighting.
Originally adjusted by hand, these
mechanisms later received electronic
controls and plastic screen-printed
scrolls. Other variants include airport-
style split-flap displays and flip-dot
mechanisms. We created our own version of a flip-dot display, published in
the April 2019 issue (siliconchip.au/
Article/11520). Many modern displays
use LED matrices.
This sort of display is what the
Destination Display is intended to
replicate. You might wonder about
our claims that this unit will fit in an
N-scale model, but we have found a
tiny 0.32-inch (8.1mm) OLED (organic
LED) display panel that is one of a few
that can be used for this project.
Photo 2 shows the Destination
August 2026 51
Display fitted to the same N-scale
chassis that we used for testing the
DCC Decoder project. The OLED and
PCB assembly has an outline that fits
within the profile of an N-scale unit.
The 8.1mm dimension is the active
area; the OLED panel itself is about
10mm wide and 9mm tall, with the
total assembly being about 20mm long.
We expect that readers will find
other uses for the Destination Display.
Its size would suit other model railway applications, such as departure
boards or even advertising signs. The
Destination Display offers animations
that include the scrolling motion that
would be seen in a changing sign, and
it has a mode that emulates the alternating screens of modern digital signs.
The video at siliconchip.au/Videos/
Destination shows the Destination Display and a 0.32in OLED panel inside
a 3D-printed N-scale model tram. The
model is 22mm tall.
OLED panels
Fig.1: these
diagrams
show the
mapping of
the pixels in
the displays;
the mauve
numbers 1-8
indicate the
codes used
to program the different display
orientations. So, to arrange the
0.50in display in landscape with
the FFC on the left, you would
set the orientation to 2 and the
x-value to 40 or higher to ensure
the bitmaps are in the active area.
52
Silicon Chip
We found several small panels that
we have tested with nominal display
sizes of 0.32in, 0.50in and 0.54in.
Since they offer comprehensive data
sheets, we sourced all these from
www.buydisplay.com
These OLED panels all use a similar controller to the SSD1306 that is
found on the common 0.96in and 1.3in
OLED modules. The controller types
on our panels include the CH1115 and
the SSD1315.
Like the SSD1306, these display
controllers feature a 128 × 64 pixel
display memory, but for these small
units, not all the pixels map to active
elements. For example, the 0.32in
panel’s matrix only has 60 × 32 pixels. So the Destination Display must
be configurable to work with these
limitations.
Ample EEPROM memory in the
microcontroller allows all manner of
graphics and settings to be loaded and
displayed.
To give you an idea of the scale of
these displays, their pixel pitch is
about 0.12mm. That means a seven-
pixel font will be displayed less than
one millimetre in height.
Fig.1 shows the different panels that
we have tested and how their matrices
are mapped to their internal memories.
We will provide some sample display
data sets, but understanding Fig.1 will
be important if you wish to generate
your own display data.
Australia's electronics magazine
Fig.1 also shows the main dimensions of the panels (to the nearest
0.1mm); there are detailed dimensional diagrams in the panel data
sheets. The panel sizes, model numbers, data sheets and sources are:
● 0.32in panel: ER-OLED0.32-1W
data sheet: siliconchip.au/link/acbu
> siliconchip.au/link/acc0
● 0.50in panel: ER-OLED0.50-1W
data sheet: siliconchip.au/link/acbv
> siliconchip.au/link/acc1
● 0.54in panel: ER-OLED0.54-1W
data sheet: siliconchip.au/link/acbw
> siliconchip.au/link/acc2
The “W” suffix indicates that these
panels have white light-emitting elements; this colour appears to be the
only available variant for panels this
small. Importantly, they also feature
the same narrow 14-way FFC (flat flexible cable) connector, making them
electrically equivalent.
We tested some other panels with
the same connector that were not compatible or did not work. This included
some variants of the 14-way connector
that use a different pad arrangement.
That’s why we have chosen the three
displays noted above.
Circuit details
For this project, we are using a bare
OLED panel, which means that our
circuit needs to provide the support
circuitry that is typically seen on the
modules that we have used for other
projects. Fig.2 shows the circuit of the
Destination Display.
IC1 is an 8-bit PIC16F18115 microcontroller from the same family as the
PIC16F18126 and PIC16F18146 that
we have used in other projects from
the DCC series. The ‘15’ suffix indicates that it is an 8-pin part with 1kiB
of RAM and 14kiB of flash memory;
this is the largest available memory
option for 8-pin parts in this series.
Pins 1, 4, 6, 7 & 8 connect to the ICSP
programming header (CON1-CON5),
which is also used as the main power
and data interface during operation.
IC1 receives power from CON2 and
CON3 and expects serial data to be
delivered to pin 7 via CON4.
The header is simply a row of
surface-mounting pads, much the same
as we have used for the Decoders in this
series. The 10kW resistor pulls up pin
4 (MCLR) to allow normal operation.
The 3.3V supply (pin 1 of IC1) is
bypassed by 1μF and 10μF capacitors
to ground (pin 8). Pins 2 and 3 of IC1
siliconchip.com.au
are used for the I2C serial interface,
so they have 4.7kW pullup resistors
to 3.3V. That’s already most of IC1’s
pins allocated!
CON7 connects the remaining I/O
pin on IC1 (pin 5) to a three-way pad
header that also includes ground and
power. An infrared receiver module
can be connected here to allow IC1
to receive commands from a remote
control. The pinout matches common
IR receivers, so they can be soldered
directly to the PCB.
The I2C bus also connects to pins
on 8-pin IC2; this is a chip from the
ST25DV NFC family. These parts are
effectively an EEPROM that can be
read or written over an I2C bus or via
NFC (near-field communication, such
as with a device like a mobile phone).
The Dynamic NFC Tag from July 2023
(siliconchip.au/Article/15860) demonstrates these features.
Unlike the Dynamic NFC Tag, the
Destination Display does not use
NDEF (NFC Data Exchange Format).
Since the data format is unique to this
application, it is not important to mark
the data with its type.
Our prototypes used the ST25DV64KC, which has 8kiB of EEPROM,
but we also think that the 2kiB ST25DV16KC part has enough storage to be
practical. We’ll look at the memory
requirements later.
A pair of pads, CON9 and CON10,
allow the connection of an external
antenna for the NFC interface. We
have designed a small, flexible antenna
PCB that we tested on our prototypes.
We also tested a small coil made from
Photo 1: these destination scrolls, seen
at the Ballarat Tramway Museum,
demonstrate how a tall bitmap can
be used to implement the Destination
Display.
Photo 2: when fitted in this fashion, the
assembly is 20mm tall & 12mm wide.
This is small enough to fit into the
profile of an N-scale model and display
a line or two of text at roof level.
a length of enamelled copper wire
(ECW).
The I2C interface is used to read
from the EEPROM in IC2 and also to
communicate with the controller in
the OLED panel connected at CON6.
CON6 is simply a row of pads on the
PCB, and the OLED panels have an
FFC (flat flexible cable) connector that
is intended to be soldered directly to
the PCB.
The OLED panel consists of a controller chip and OLED matrix mounted
to the panel glass using a so-called
COG (chip on glass) construction. The
connections are made with conductive traces of transparent indium tin
oxide (ITO).
The remaining circuitry is to support the controller chip for the display
panel. Two of the 1μF capacitors are
part of a charge pump circuit used to
generate the voltages needed to drive
the OLED matrix. Two of the 10μF
capacitors store the voltages generated
by the charge pump. The remaining
capacitors bypass the 3.3V rail for the
ICs and OLED panel.
The third 4.7kW resistor pulls up the
RESET pin of the controller to allow
it to operate, while the 560kW resistor
connected between the Iref pin and
ground sets the OLED matrix drive
current. The 3.3V supply and the I2C
signals also connect via the FFC.
Software
Fig.2: the circuit is fairly straightforward, with most of the passives being
needed for the OLED panel’s operation.
siliconchip.com.au
Australia's electronics magazine
Apart from the firmware that runs
on the microcontroller to manage the
Destination Display, we have also
written an application in the cross-
platform Processing language. That
means that you can use a Windows,
Linux or macOS computer to generate data for the Destination Display.
The program delivers data as a single file, which is simply copied to
the EEPROM on IC2 using a suitable
NFC-equipped device such as a mobile
phone. Information about the program
August 2026 53
can be found on page 56
(see “Destination Display
Configuration for Processing”), while the
file upload process is
described later.
Firmware
The firmware on
IC1 loads configuration data from IC2;
this contains information
about the display format and
where the display data can be found
on the EEPROM. The display data is
simply a tall monochrome bitmap that
is laid out in the fashion of the hanging scroll seen in Photo 1 and a display pointer sets a window so that only
a small part of the bitmap is visible.
IC1 then waits for commands from
either the serial or IR interfaces. The
command sets which specific item is
to be displayed. The item has an index
between 0 and 255, which corresponds
to the byte received over the serial line.
Being a single byte means there are no
concerns with data framing or the like.
The IR interface is programmed to
respond to NEC codes addressed to
device ID 0 or device ID 1. That means
it should be easy to build a controller
using basic hardware such as an Arduino board and IR transmitter.
A data byte for device ID 0 is
treated the same as a serial data byte
and simply indicates the item index.
Compact IR transmitters such as Jaycar’s XC3718 send compatible codes,
although the data bytes do not have
any obvious correspondence to the
button markings (see Table 1).
Signals addressed with device ID 1
are treated as increment, decrement,
or zero commands and simply update
the index. This command set has
been chosen to allow a suitably programmed NFC IR Keyfob (February
2025; siliconchip.au/Article/17730)
to control the Display. A data file to
suit the Fob (to use device ID 1) is
included in the software downloads
for this project.
The indexed item contains information about the graphics to be displayed and how it is to be updated.
For example, one mode causes the
display pointer to steadily increment
or decrement until the desired item is
reached; this emulates the behaviour
of older scroll-type displays. There are
several scroll rates that can be selected.
Another mode causes the pointer
to immediately jump to a specific display, while other modes allow animation, with the display alternating
between two or three bitmaps, like
a modern LED sign. There are three
different speeds for the alternating
options. A Destination Display can
be programmed with any combination
of these modes, since each individual
item has a mode setting.
Whenever the selected item is
changed, the new index is saved into
the internal EEPROM on IC1 so that
the most recent display is shown if
the power is cycled.
Construction
This project is on a tiny PCB (19
× 12mm, coded 09111252) fitted
with very small
parts, packed pretty
tightly. We recommend patience and
experience with
surface-m ounting
components, as
well as all the gear
commonly used
for manual SMD
assembly.
The PCB is 0.8mm thick and
has numerous vias inside pads.
This is not recommended for automated assembly, since the vias can
draw away solder from the joint
(although there are techniques to cap
the vias to prevent issues). We found
that this made the PCB quite thermally
conductive, so we had to wait longer
for the solder to solidify as we worked.
We used a fairly wide-tipped (2mm)
iron as we normally recommend for
most SMD work. But since the PCB
holds heat well, a fine tip may be better
in this case, especially to get between
the components to avoid forming solder bridges. We did create a couple of
accidental bridges, even between the
passives, so keep an eye out for that.
We have managed to place all the
SMD components on one side of the
PCB (see the Fig.3 overlay diagram).
Here’s how we worked through our
prototypes. We started by applying
flux to all the pads on the component side.
Start with the two ICs, which have
their pin 1s at opposite ends. We found
that the Microchip part had a dimple,
but the ST parts have a less-obvious
bevelled edge. Refer to our photos to
check the part markings to confirm
their orientations. These are the only
polarised parts (apart from the OLED
panel).
Parts List – Model Headboard Destination Display
Fig.3: we have kept the components
on one side of the PCB. Observe this
overlay diagram carefully, since there
is no room for silkscreen component
designators. This diagram is shown
at 400% actual size, and the PCB is
shown at actual size in the parts list
1 0.8mm-thick, 19 × 12mm double-sided black PCB coded 09111252
1 OLED panel with a 14-way solderable FFC connector [Buy Display
ER-OLED0.32-1W, ER-OLED0.50-1W or ER-OLED0.54-1W; see text]
1 PIC16F18115-I/SN micro programmed with 0911125D.HEX, SOIC-8 (IC1)
1 ST25DV16KC or ST25DV64KC NFC tag chip, SOIC-8 (IC2)
1 antenna to suit IC2 (flexible PCB coded 06101233
or made from 1m of enamelled copper wire)
3 10μF 50V X5R SMD M2012/0805-size MLCC capacitors
3 1μF 50V X5R SMD M2012/0805-size MLCC capacitors
1 560kW ±1% ⅛W SMD M2012/0805-size resistor
1 10kW ±1% ⅛W SMD M2012/0805-size resistor
3 4.7kW ±1% ⅛W SMD M2012/0805-size resistors
1 3.3V-compatible infrared receiver module (optional) [Vishay TSOP33436]
54
Australia's electronics magazine
Silicon Chip
siliconchip.com.au
With the OLED panel fitted, flat against the back of the PCB,
the unit is only 20mm tall, 12mm wide and about 4mm thick
(shown at twice actual size). We preferred the hand-wound
coil antenna to easily communicate with the NFC chip. The
narrow neck between the PCB and OLED panel is flexible,
which should help with trying to fit the assembly into a
small model. In comparison, the flexible PCB antenna
is simple to use but not as sensitive as the coil antenna.
Subjectively, we thought that 0.54in panels were
not as bright as the others.
Next, fit the three 10μF capacitors,
paying close attention to Fig.3, since
there is no room for markings on the
PCB silkscreen. Follow with the three
1μF capacitors.
Despite the resistors being thinner,
we found that it was easier to solder
these last, since their profile seems
to capture the solder better; you can
confirm their locations against the
photo.
Use a solvent to clean away the flux
residue and allow the board to dry.
Each of the OLED panels can be fitted
in one of two orientations, as seen in
the photos above, so be aware of this
when planning how you will use the
Destination Display. Just make sure
the pin 1 markers align.
We found soldering the panels to
be quite easy; the 0.62mm pitch is
comparable to that of SSOP (small
shrink outline package) IC leads.
If possible, set the FFC back from
the edge of the PCB so you can visually confirm the alignment of the FFC
traces with those on the PCB. Clean
up the joints with additional flux if
necessary and check again for bridges
before proceeding.
Loading the firmware
If you need to load the firmware
onto the microcontroller (which
shouldn’t be necessary if you have
purchased the chip from the Silicon
Chip Online Shop or as part of a kit),
we recommend soldering a standard
five-way pin header to the five pads in
a row. The pads are placed at slightly
less than 2.54mm/0.1-inch, but close
enough that this is doable.
This header should then plug
directly into the socket header of a
programmer like a Snap or PICkit. Be
sure to align the pins marked with a
chevron (>) on the Display and programmer. You’ll need to find a way to
provide 3.3V power to the chip if the
programmer isn’t able to do so.
Table 1: Jaycar XC3718 IR Remote Control codes
Button
Code
100+
25 (0x19)
CH-
69 (0x45)
200+
13 (0x0D)
CH
70 (0x46)
1
12 (0x0C)
CH+
71 (0x47)
2
24 (0x18)
PREV
68 (0x44)
3
94 (0x5E)
NEXT
64 (0x40)
4
8 (0x08)
PLAY/PAUSE
67 (0x43)
5
28 (0x1C)
VOL-
7 (0x07)
6
90 (0x5A)
VOL+
21 (0x15)
7
66 (0x42)
EQ
9 (0x09)
8
82 (0x52)
0
22 (0x16)
9
74 (0x4A)
siliconchip.com.au
Australia's electronics magazine
You can use the other
pads marked “3” and “G” to
apply power if this is easier. Program and verify the chip. You should
see some activity on the panel; a test
pattern of stripes is shown for half a
second if the EEPROM is blank or its
contents are invalid. Disconnect the
programmer when finished.
Antenna options
The RFID Antenna flat flex PCB
(coded 06101233) can be soldered
directly to the main PCB. It worked
fine during our testing, but we found
that the handmade wire loop antenna
was more forgiving. Since it would
also be easier to form into a specific
shape to be fitted inside an item of
model rolling stock, we prefer it.
We started with just over 1m of
0.25mm diameter enamelled copper
wire. The diameter is not critical, but
much finer would be finicky to handle.
Wind five turns around a former with
a 5cm diameter (we used an isopropyl
alcohol spray bottle) and gently twist
the trailing leads together.
Use some tape or glue to secure
the turns against each other; we used
short pieces of Kapton tape, as you
can see from the photos. Remove the
coil from the former, trim the trailing
ends to the same lengths and tin their
ends to remove the enamel coating.
Solder to the antenna pads on the
main PCB.
Wiring
Fig.4 shows the wiring needed for a
comprehensive installation, including
a microDCC Decoder and IR receiver.
For clarity, we have not shown the
OLED panel.
The microDCC Decoder provides
the 3.3V supply and a serial signal,
while the IR receiver takes its 3.3V
supply from the Destination Display
board and sends its data back via the
pin labelled IR.
August 2026 55
Fig.4: you may not need all the parts shown
here; as long as you can supply 3.3V power
and ground and one of the control signals, the
Destination Display will be fully operational.
We soldered the receiver directly
to the PCB for our testing and had no
problems receiving signals. Some IR
receiver data sheets recommend extra
components for power supply filtering, so you should consider that in the
case of longer wiring runs.
If you plan to use only the serial
input, the IR receiver can be left off.
Alternatively, if you only wish to use
the IR receiver, the serial connection
can be left off, and you can supply 3.3V
power into either 3.3V pad and similar for the ground connection. If you
wish to use the Destination Display as
a fixed sign, only power needs to be
applied. The Display will use index
zero initially.
The antenna is only needed to
upload data to the EEPROM and it
can be removed after uploading if it
would be awkward to leave it in place.
We made a few antennas and moved
them around to test the different OLED
sizes that we had attached to our prototype PCBs.
We did most of our testing with a
USB-to-serial adaptor. That would be
ideal for a fixed application, such as
an advertising sign or station departure board.
A suitably programmed microcontroller could even be used to coordinate several different signs, such as the
56
Silicon Chip
multiple departure screens at a model
railway station.
We have not tested this, but it should
also be possible to connect multiple
Displays to the same serial and IR
sources, since they are simply inputs
to the Display.
Remember that the microDCC
Decoder has limited capacity on its
3.3V regulator, so check that the load
is suitable if connecting multiple Displays to a single Decoder. Naturally,
any power supply used must be stable
for proper operation.
The default data should also result
in an image on the 0.50in and 0.54in
displays. We don’t think it will be
usable (for a model) with these displays, but should give you confidence that the hardware is working
as expected.
If you want to just load our sample
datasets onto the NFC chip then you
can skip these next few sections and go
straight to the heading labelled “NFC
chip” overleaf.
Defaults
We used the Processing language to
create the configuration programming
sketch. The Processing IDE (preferably
version 4.4.7 or later) can be downloaded from their website, see: https://
processing.org
The sketch presents as a windowed
application with buttons, text fields
and the like. Processing does not provide these graphical user interface
(GUI) features, so we have had to create them from scratch.
There is no image editing and only
very basic text editing capabilities, so
we recommend using other programs
to do this. You might find edge cases
in the sketch that will cause it to crash,
but it should be well-behaved with
sensible inputs.
The internet is a wonderful thing,
and on it we found a list of Australian
railway station names that are duplicated (or triplicated) in different states.
We have used this list as the basis for
our default demo. The list is shown
in Screen 1.
The flash memory of IC1 is loaded
with these default graphics that are
used if the EEPROM does not carry
valid data. It is designed to be usable
on the 0.32in panel, and should
respond to commands on the serial
line or from the recommended remote
controls. The data corresponds to the
DEFAULT 0.32in.bin file in the software downloads, so you can view and
edit this data.
Australia's electronics magazine
Destination Display
Configuration for Processing
siliconchip.com.au
Open the sketch file (Destination_
Config.PDE) and click the Play button
at the top of the window to run the program; this will open in a new window.
The File Menu also has an option to
export a standalone application, which
will only work on the same operating
system on which it is created.
Screen 1 shows this window in use.
There are three main steps. Firstly,
the image data on the left is created
or loaded. Secondly, the individual
index items are created based on the
image. Finally, the data is generated
and exported to a file.
Image data
You can load image data via a file
(eg, PNG, GIF or JPEG formats). The
image is converted to monochrome
using a threshold (“thresh.” text box)
between 0 and 1. A lower value will
result in more white pixels, and a
higher value more black pixels. The
image width is cropped at 128 pixels and the “w” and “h” fields are set
based on the image.
If you need to adjust the threshold,
click on the number box and enter
a new value, then reload the image
using the “Load image” button. If the
image is taller than the window, you
can scroll up and down using the up
and down arrows at top left.
Alternatively, you can enter text in
the box under “Load text”. This is a
simple multi-line field, so you can’t
move around within the field using
The prototype
being controlled
by a μDCC decoder
on a loco chassis.
siliconchip.com.au
the arrow keys; the text can only be
edited at the end.
You can use Backspace to remove
the last character and paste from the
clipboard with Ctrl-V. Delete all text
with the Delete key. Use the “Load
text” button to generate an image from
the text in this field.
This step responds to the threshold field as well as the “w”, “y pitch”
and “cond.” fields. The “w” field sets
the width (in pixels) of the generated
graphics, while the height depends on
the number of lines of text and the “y
pitch” value.
The “cond.” (condensed) field can
be used to narrow the text if it is too
wide. For example, the data generated
in the adjacent screen uses the value of
0.7. You can use a value larger than 1
to expand the text if desired. The “Save
img” button can be used to export this
image to a PNG file; there is no prompt
for a filename – it is simply saved in
the sketch folder with a name based
on the current timestamp.
Index items
The “Create fixed” buttons will
do most of the work of generating
the single-screen index items. Press
“CLEAR ALL” if necessary to clear
any existing entries.
If you want the indices to start at a
specific value, you can enter this in
the “index” field. You should also set
the “type” field to suit the scroll rate
(or FIXED for non-scrolling items), or
click the button below it to view the
options.
Any animated or multi-screen items
need to refer back to a single-screen
item, so these items will need to be
generated anyway. You should see
the sample views at right populate
when the “Create fixed” button is
pressed, and you can scroll up and
down through these with the “UP”
and “DOWN” buttons.
Dual-screen items can then be generated by setting the index, type and
index 1 and index 2 values before
pressing “Create #”. The index 1 and
index 2 values can be entered manually
or loaded by pressing the “<1” or “<2”
buttons next to the desired images.
For example, to generate an animation showing “ADELAIDE AIRPORT”
over two screens, click the “1X MED”
button until it shows one of the 2X
types, then click “<1” next to “ADELAIDE” and “<2” next to “AIRPORT”
at right. Finally, click “Create #31” to
generate the item, which can be previewed by scrolling down the list at
right.
Triple screen items are created in
a similar fashion by choosing one of
the 3X types and ensuring that all
three pointers are loaded correctly.
Note that triple items can only use an
index up to 31, since there are only 16
bits available for indexing. The index
will increment after each item is created, so it is not hard to create several
similar items.
Screen 1: the Silicon Chip Destination Display Configuration sketch provides an
easy way to generate the data file necessary to create custom displays and can
mix and match different styles of animation.
Australia's electronics magazine
August 2026 57
Silicon Chip
PDFs on USB
¯ A treasure trove of
Silicon Chip magazines on a
32GB custom-made USB.
¯ Each USB is filled with
a set of issues as PDFs –
fully searchable and with
a separate index – you just
need a PDF viewer.
¯ Ordering the USB also
provides you with download
access for the relevant
PDFs, once your order has
been processed
¯ 10% off your order (not
including postage cost) if
you are currently subscribed
to the magazine.
¯ Receive an extra
discount If you already
own digital copies of the
magazine (in the block you
are ordering).
Exporting
Check that values such as the x, y,
w, h, rotation (from Fig.1) and “bright.”
(brightness from 0 to 255) values are
correct. The scale values are ignored
by the current version of the software,
while the x bytes and pointer values
are updated automatically. It’s easy to
change any header data later using the
ST25 NFC Tap app.
Press “UPDATE DATA” to generate the dataset. The file size will be
reported at the bottom of the column,
so you can check that it will fit in IC2’s
EEPROM. If all is well, press “SAVE
DATA”, which will create a BIN file
named for the current timestamp in
the sketch directory.
You can now transfer the file to
your NFC device (such as an Android
mobile phone with the ST25 NFC Tap
app) to program the EEPROM chip
on the Destination Display using the
instructions in the main article.
EEPROM capacity
If you do wish to view or modify
the exported file on your computer,
we suggest using the HxD hex editor, which can be downloaded from
https://mh-nexus.de/en/hxd
Since the data is a monochrome,
uncompressed bitmap, a byte of data
can hold eight pixels. Our sample
file is 3776 bytes, of which the
headers are 192 bytes
and the image
EACH BLOCK OF ISSUES COSTS $100
NOVEMBER 1987 – DECEMBER 1994
data is 3584 bytes, corresponding to a
bitmap of 56 pixels by 512 pixels. This
effectively contains 32 unique screens
that each measure 56 × 16 pixels.
The 0.50in panel has the most pixels, with 4224 pixels, requiring 528
bytes. The 8kiB ST25DV64KC can
store 15 full-sized images to suit the
0.50in panel, with room to spare for
64 index items and the header.
NFC chip
To program the NFC chip, we
strongly recommend ensuring the
Destination Display is powered off,
since the NFC chip cannot handle
the EEPROM being accessed via both
channels (I2C and NFC) at the same
time. This will also ensure that the
EEPROM data is properly reloaded
after changes have been made.
We used the ST25 NFC Tap mobile
app on an Android device (siliconchip.
au/link/ac38). There is also a version
on the Apple App Store (siliconchip.
au/link/ac39) but we have not tested
it. Presumably, it works identically.
We have created several data files
so that you can perform this step
without using the configuration program. These files are in the software
download package (siliconchip.au/
Shop/6/3629).
Although they may be suited to a
specific display type, the ST25 NFC
Tap App allows individual bytes to be
edited, so parameters like the display
orientation and size can be adjusted
easily to suit different panels.
One file has small bitmaps of the
numbers from 000 to 255 with
matching indexes, so this
can be used to make
a simple test that
your control signals are working
correctly. This is
JANUARY 1995 – DECEMBER 1999
JANUARY 2000 – DECEMBER 2004
JANUARY 2005 – DECEMBER 2009
JANUARY 2010 – DECEMBER 2014
JANUARY 2015 – DECEMBER 2019
OUR NEWEST BLOCK COSTS $150
JANUARY 2020 – DECEMBER 2024
OR PAY $650 FOR THEM ALL (+ POST)
WWW.SILICONCHIP.COM.
AU/SHOP/DIGITAL_PDFS
58
Silicon Chip
Only three wires are required for
the Destination Display: GND, 3.3V
and the serial line for control. The
μDCC decoder can supply enough current to
run the Display. You can also use a USB/serial
adaptor to control fixed Displays.
Australia's electronics magazine
siliconchip.com.au
EEPROM data format
While many of the details of the data format
are not critical to use the Destination Display, some are worth knowing so you can
tweak the data files to suit different displays or even to suit specific installations.
For example, we envision that some
uses of the Display will involve placing it
behind a window cut out of a model so that
only a small part of the Display is visible.
Being able to make small adjustments to
the location of the graphics within that window is handy and straightforward.
The data file starts with a block of 16
bytes. After this, there are several four-byte
index items, followed by the bitmap data.
Organising the data in blocks of four bytes
makes it easier to navigate in the ST25
NFC Tap App, since it displays the data in
four-byte rows. The adjacent screen grab
shows the start of a simple data file with
four index items.
The table directly below summarises
the data structures. The first four bytes
are simply a file type check, used to confirm that the EEPROM has been correctly
loaded. The x and y fields determine the
position of the top-left corner of the where
the graphics are displayed.
The w and h fields determine the extent
of the area in which the graphics are displayed, while the orientation field is the
value noted in Fig.1, where it indicates
the corner that would be at upper left.
The x-bytes field after that is used to know
how many bytes of data to read for each
row of pixels to be displayed. The y-pitch
field is not used, although it should match
the h field.
Brightness is simply a raw value (0-255)
that is written to the OLED controller’s
brightness (or contrast) register. The
bitmap pointer field holds the absolute
address of the start of the bitmap data. It
is a little-endian value (LE, the least significant byte is first), so the bytes “20 00” in
the adjacent screen grab are read as the
value 0x0020 or decimal 32.
The first three index items (starting at
addresses 16, 20 and 24) are single-screen
types and will be activated with commands
0, 1 and 2 respectively (values in the first
byte of each row). Their pointer fields
(0x0000, 0x0010 and 0x0020) are offsets
from the bitmap pointer field, so their bitmap data will be at decimal addresses 32,
48 and 64 respectively.
The fourth index item (at address 28)
responds to command 3 and is type 6,
meaning there are two displays and they
update every second. The pointers refer
to item 0 and item 1. So it will alternate
between displaying bitmap data from
address 32 and address 48. The table at
lower right shows the meaning of the other
item types.
Editing
We mostly found ourselves changing the
x, y and orientation fields to quickly modify
a file to suit different displays. There would
be little need to change the other parameters, although it’s easy enough to change
the brightness if this is needed.
Note from Fig.1 that the 0.32in panel
uses different orientation values. This
also encodes information to ensure that
the data is ordered correctly for display.
Values other than 1-8 are not valid and the
display will not show any output if this is
not observed.
Data Format – 16-byte header
You don’t need to know about the data
format to use the Processing sketch,
but it can help to understand how to
make changes if things aren’t working as
expected.
Value
Type description
0 (0x00)
Null, used to mark an entry as
invalid.
1 (0x01)
Single display, slow scroll (7
lines/sec)
2 (0x02)
Single display, scroll (10
lines/sec)
3 (0x03)
Single display, fast scroll (20
lines/sec)
0x44 ‘D’
0x45 ‘E’
0x53 ‘S’
0x54 ‘T’
8-bit x-field
8-bit y-field
8-bit w-field
8-bit h-field
0x01 (unused)
0x01 (unused)
8-bit orientation
8-bit x-bytes field
4 (0x04)
Single display, fixed
8-bit y-pitch field
8-bit brightness
16-bit (LE) bitmap pointer field
5 (0x05)
Two displays alternating
every 500ms
16-bit (LE) pointer field
6 (0x06)
Two displays alternating
every 1s
7 (0x07)
Two displays alternating
every 2s
8 (0x08)
Three displays alternating
every 500ms
9 (0x09)
Three displays alternating
every 1s
10
(0x0A)
Three displays alternating
every 2s
One 4-byte single-screen item
8-bit entry
0x01-0x04 type
One 4-byte double-screen item
8-bit entry
0x05-0x07 type
8-bit entry index
8-bit entry index
One 4-byte triple-screen item
8-bit entry
0x08-0x0A type
Three 5-bit entry indices padded with a
leading zero. [0cccccbb bbbaaaaa]
Bitmap data
Each visible row of bitmap data consists of x-bytes count of bytes, with the left-most pixel
being the MSB of the first byte. There should be h rows of bitmap data.
siliconchip.com.au
Australia's electronics magazine
August 2026 59
Screen 2: choose the Memory tab from
the main page of the ST25 NFC Tap
app and use “Fill memory from file”
to upload a data file.
Screen 3: select the source file,
ensure that the destination offset is
zero and tap OK. It may take up to
10 seconds for the memory view to
appear, confirming that the write has
completed.
Screen 4: the Read memory option
allows the EEPROM on IC2 to
be edited directly. Note that the
displayed memory contents are in
hexadecimal.
the “256 Entries.bin” file. The screen
seen in Photo 2 is one of these bitmaps.
Open the ST25 NFC Tap App and
place the device over the antenna.
When the tag is detected, switch to
the MEMORY tab (Screen 2) and select
“Fill memory from file”. Select the
source file and ensure that the Destination offset is zero. Press OK to transfer the file. This might take up to ten
seconds, so wait until it completes
and the memory contents are shown
as in Screen 3.
At this point, you can power up
the Destination Display and see that
it shows the screen that would be
expected from index item zero. If you
need to tweak the parameters, power
off the Display and rescan the antenna
with the App. From the MEMORY tab,
choose the Read memory window.
Press OK to perform a read and then
hold your finger on a memory location
to edit it; a row of four memory locations will pop up as seen in Screen 4.
You can edit the values and then press
Write bytes.
The values are in hexadecimal,
although they do not have a leading base marker like 0x or &H. The
EEPROM data format panel has more
detail about specific values that you
might want to change.
DCC PROJECT KITS
DCC Destination Display (SC7697, $22.50)
includes everything in the parts list, except for the screen (see below). The
kit includes 1m of enamelled copper wire for the antenna
0.32in OLED Screen (SC7698, $5.00)
0.50in OLED Screen (SC7699, $6.50)
60
Silicon Chip
Australia's electronics magazine
Other uses
While we intended this design to
be used in model railways and the
like, we think it could be useful anywhere that a small, simple display is
needed. It can interface directly with a
3.3V device and only needs one signal
wire. With the right bitmaps loaded,
it could be used in much the same
way as single-digit devices like Nixie
tubes, although the control interface
is quite different.
Any device that needs a small status display could do so with an appropriately programmed Destination
Display, providing dozens of different outputs (or more). These could
include numbers, text, images, or
anything else that can be encoded in
SC
a small bitmap.
siliconchip.com.au
|