Sky

Parallel IO Expansion

LCD Madness

2021

I had a project to create dynamic equipment labeling and implement a  "parking garage" type of checkout system. This led to the need for LCD screens. LOTS of LCD screns.

The primary constraint for this task was that there could only be one microcontroller, but every LCD screen requires 16 wires to make them functional. To overcome this, input-output expanders with 2-wire serial communication interfaces were used to control the data lines. Each expander could configure 7 LCD screens, while each expander could have one of 4 different addresses. Using a serial expansion port, the one microcontroller could control 4 IO expanders which would enable 8 different banks of 4 IO expanders, each of which governed their 7 respective LCD screens. This meant a total of almost 900 LCD screens could be uniquely and dynamically updated.

 

All in under 5 seconds.