Here is my attempt at creating a propellor display, I started out with PIC then moved to AVR for speed and then to dsPIC when this became available again for the speed and extra number crunching capabilities.
The PIC and AVR boards had quite large LEDs which meant that at 32 LEDs the board was quite big. You got a steady display but going near it with your hand was dangerous

For the dsPIC board I found much smaller RGB LEDs and reduced the count to 24 so the board became much smaller and therefore spun without requiring anywhere near as much force and electrical power.
(32 x 3) / 8 = 11 Buffer ICs + 8-bit Port
(36 x 3 x 240) / 8 = 3240 bytes @ 3 bit colour
(24 x 3) / 8 = 8 Buffer ICs + 8-bit Port
(24 x 3 x 240) / 8 = 2160 bytes @ 3 bit colour
Here is an image of the AVR board These images are of the dsPIC board The code was all written and design for use with v4 so I'm not sure if it will work correctly with v5 though I don't see any reason why not.
The code can be adopted for use with a PIC, AVR or ARM but obviously you will need a bit of C knowledge to be able to do this. You should also be able to replicate the functionality directly in Flowcode. I believe I started out like this and then moved the Flowcode C code into a custom component to provide a bit of optimisation on the code in order to get the fastest refresh possible.
I can only seem to find the dsPIC custom component at the minute but I will have a dig and see if I can find anything else.
There are basically 2 interrupts that drive the display and a further interrupt which drives the variables used for time keeping which can be used to display a clock etc.
Macros
PWM control - Called by a timer interrupt to switch between display segments during the revolution, controls all the LED I/O and reads from the display buffer.
Spin Sync - Called by a hall effect driven INT interrupt to synchronise a full revolution and adjust the pwm control interrupt frequency.
Tick 100hz - Called by a timer interrupt to give a known frequency output which is translated into ticks per second to allow the time variables to be updated.
The rest of the functions are manually called by the User's application rather then called directly from an interrupt.
Clear display - clears the display buffer
rotate display - moves the start segment offset, allows the display image to rotate in either direction
reset display - resets the start segment offset back to factory default
modify pixel - allows a single RGB pixel to be assigned data within the buffer, addressed by segment and then position
modify pixel xy - allows a single RGB pixel to be assigned data within the buffer, addressed by x and y on the display, not sure if I got this fully working
draw circle - sets a led on every segment to a specific colour in the buffer and provides fill options
draw axle - sets a full or partial segment to a specific colour in the buffer
draw arc - same as draw circle but allows segments to be left out
draw text - draws circular text to the display buffer
read temp - calls on a look up array of real work celcius data to allow the temp to be printed to the display
get count - returns number of revs of the display per second
update time date - allows the time and date to be set
read time date - alows the time and date to be read
The anode pins of the LEDs are all driven from buffer chips which are chained together with the output of one going to 8 LED signal lines and the input of the next buffer. This requires that the buffer has a latching output which is driven from a clock signal. This setup allows me to output a byte to a port and then clock it into the first buffer and then along to the end buffer.
I also use a mosfet on the cathode pins and this is switched off while manipulating the buffer chain otherwise the LEDs that are meant to be off will glow slightly as the data for the other LEDs moves along the chain.
I power and spin the display board by modding a £0.30 motor from Rapid so that it passes the 3 phase motor voltage through the front of the motor to the board. With the addition of 6 rectifier diodes on the display board this guarentees a continuous suppy voltage and ground while the display is rotating. The downside to this is that it is hard to control the speed of the motor without effecting the amount of current the board has to play with. I generally provide enough power to allow the motor to run fast enough and for all the LEDs to glow white and then try to stick to this setting.
By running the segment mechanism at a faster multiple speed it would be possible to allow for more then simple 3 bit colour by multiplying the buffer size by the number of extra bits you want to add to each colour and then modifying the pixel manipulation routines to match. You could maybe even spin the display fast enough so you overlay colour channels rather then use more basic PWM techniques as this tends to smear the pixels. Think this may be the next investigation next time I fire up the board.
At the moment my main stumbling block is getting data to the display from outside eg using IR or wireless to allow reprogramming of the firmware and for dynamic data to be fed in from a PC. I briefly tried IR and passing data via the motor windings but there were problems with both which I can't quite remember now.
Unfortunatley I fried the dsPIC board trying to perfect the communication technique so I have to rebuild it from scratch which is fairly labour intensive
