This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

A totally new 8 or 16 char Moving Message Display with LPC2138

My project is finished (for the present)

This is a new Moving Message Display with a LPC2138 and 8(16) x 5x7 led matrix, working.

It uses a new and fast algorithm, written in C.

It is modular: it uses one or two same 8 char display unit(s).

Online commands (via rs232, in Virtual Terminal)

- scrolling by pixel or by character or by graphic
- pause/continue scrolling
- on/off one pixel gap between fonts
- home function (back to the begin)
- max. 127 chars displayable text
- - - stored in the memory
- scrolling speed up/down
- single step left/right
- ASCII char test
- multi language characters (also full American)
- default settings via switches
- get/store settings from/to memory

Latest addition

- - - last typed char is deletable (backspace function), this was very difficult to code.

I'm going to attach here the two projects (for 8 and 16 chars) with the hex firmware only, beacuse I wrote
the program in C but with many (70%) hard and hand optimalisation in C (for the speed).
It is not a human readable program, sorry...

Please study also my next posts at this thread if you want to build this!

Try it!

About the source look at my next posts here!

Parents
  • Sounds like a nice project.

    But why do you need huge hand-optimization making the code hard to read? Have you thought about the memory layout for the font data, and the bitmap data in relation to how you emit the computed image?

    You have 16*5*7 = 560 LED.

    I use a LPC23xx at 48MHz and have 960*32 LED and manage with time remaining render+emit. I did test with assembler but found out that readable C was fast enough. For maintainance reason, I then threw away the assembler code and stayed with 100% C. For bandwidth reasons, the emit code contains extra nop instructions to get enough settle and hold times for older displays that has a bit much capacitance on the signal lines.

    Lookup tables can be highly useful, and the ARM has many registers supporting efficient indexed memory accesses.

Reply
  • Sounds like a nice project.

    But why do you need huge hand-optimization making the code hard to read? Have you thought about the memory layout for the font data, and the bitmap data in relation to how you emit the computed image?

    You have 16*5*7 = 560 LED.

    I use a LPC23xx at 48MHz and have 960*32 LED and manage with time remaining render+emit. I did test with assembler but found out that readable C was fast enough. For maintainance reason, I then threw away the assembler code and stayed with 100% C. For bandwidth reasons, the emit code contains extra nop instructions to get enough settle and hold times for older displays that has a bit much capacitance on the signal lines.

    Lookup tables can be highly useful, and the ARM has many registers supporting efficient indexed memory accesses.

Children