In order to achieve the desired speed and flexibility of the display a mixture of the serial subsystem, analog subsystem, interrupts, tasks was chosen the seamlessly output the data from memory to the display at the desired brightness.
To effectively and dynamically control the brightness of the display a potentiometer and being monitored by a task and providing Pulse Width Modulation (PWM) to the output enable pin on the shift registers was chosen.
The setup of the analog reading, the task and the storage of the PWM period for implementation during the update cycle are all covered on the brightness control page.
Display Update Cycle
The cornerstone of automating the display update is an interrupt which is executed on the completion of sending each byte of data.
This interrupt handles gathering the next byte of data to be sent, incrementing a stepping variable within it’s range, modulating the brightness of the display, latching the display when appropriate and multiplexing the LEDs controlled by the latest set of data. The whole update process is explained on the update cycle page.