Dec 29, 2011

Controllerless LCD display

After initially seeing these displays on ebay and seeing how much documentation was available for them at cafelogic I knew I had to try them out with a smaller lower power micro controller. Using the MSP430 line of micro controllers seemed a logical choice they are low power and even the small devices run at 16Mhz.

After some initial testing with a 14 pin 2kb flash device (MSP430g2231) running at 16Mhz it was obvious to get text output I would need alot more RAM than the measly 128bytes these tiny puppies house. Meet the MSP430F5438, If you ignore the errata sheet that's almost longer than the datasheet, these ICs pack alot in. 256kb of flash, 8kb RAM, 50+ IO pins and a stack of peripherals. I only really needed the extra RAM in this guy.

I had a spare IC and PCB from a previous project that's why I didn't use a smaller IC. Did I mention the 5438 only comes in 80 and 100pin variants? After wiring up the circuit as shown in the above schematic I set to work on the code. 

Source code: Download

The code is fairly basic. the main display loop dumps the contents of a 9600byte buffer 4 bits at a time onto the LCD then goes to sleep. once woken up by the watchdog timer it repeats. During this sleep phase one could process information and store it in the display buffer.

This flowchart descibes the specific driving of the LCD's signals in more detail. r15,r14,r6 are general purpose register in the MSP430's CPU. They are quicker to access than using space in RAM.

Since there is probably not enough free CPU in this design to do heavy computation between screen refreshes I'll probably attempt to create a serial character LCD with this circuit. creating a 60 by 20 character terminal.


  1. The flowchart is solid. The core components are coupled well and is clearly documented. That will serve for a good ED as a blueprint.
    audio brisbane

  2. Hi Greg,

    I have couple of these displays collecting dust on my table, I want to drive them with LPC1114 with 8k RAM.
    Can you please explain how did you manage 9600byte buffer in 8k RAM? I'm not speaking asm.

    And it would be great if you can share your booster circuit.

    Thanks, Zoltan

    1. The IC I ended up using, the MSP430F5438, actually has 16kb of RAM. so I just used a static 9600 byte frame buffer. I was only running this at 12Mhz so I needed a quick way to push data to the screen.

      If you can run that arm faster (50Mhz :D) then you set the LCD up as a text only display. Keeping a buffer for the text to be rendered, then rendering it on every display refresh.

      I only used a 3x5 font here because that was faster to render on these slow ICs. If you have the speed you could use a standard 7x5 font. Or even larger.

      Goodluck, Greg

  3. touch lcd monitor Another unique feature of the front-facing screen is that it can be used to play animations that will help you get the attention of children when you want to take their photos. The camera's 'Child Mode' will display a video of an animated clown, among others.