Sunlight readable display

A few people on here are aware of a NETMF project i have been working on that among other things includes a sunlight readable display.

It’s a very nice transflective SPI driven module from Sharp (LS027B7DH01LCD) that is being driven via RLP using a STM32F427

Here is a quick test in the full mighty power of the Hertfordshire sunshine (don’t snigger - it’s 25 deg C and blue skies…honest)

using System;
using System.Text;
using GHI.OSHW.Hardware.LowLevel;

namespace DisplayTest
{
    public class Program
    {
        private static MemoryLCD _display;
        private static Flash _flash;
        private static Random rnd;
        static StringBuilder _outputText;
        public static void Main()
        {
            byte[] binfile = Resources.GetBytes(Resources.BinaryResources.RLPnative); 
            AddressSpace.Write(0x20000000, binfile, 0, binfile.Length);
            _flash = new Flash();
            _display = new MemoryLCD(_flash);
            _outputText = new StringBuilder();
            rnd = new Random();
            while (true)
            {
                for (int i = 0; i < 100; i++)
                {
                    _display.ClearAll(0);
                    _outputText.Clear().Append(rnd.Next(99999999));
                    _display.DrawString(_outputText.ToString(), 10, 1, 2, true, 5, 380, 220, MemoryLCD.TextWrap.WRAP, MemoryLCD.TextAlign.CENTER, MemoryLCD.VerticalAlign.CENTER);
                    _display.Render();
                }
                for (int i = 0; i < 100; i++)
                {
                    _display.ClearAll(0);
                    _outputText.Clear().Append(rnd.Next(99999999));
                    _display.DrawString(_outputText.ToString(), 10, 1, 4, true, 5, 380, 220, MemoryLCD.TextWrap.WRAP, MemoryLCD.TextAlign.CENTER, MemoryLCD.VerticalAlign.CENTER);
                    _display.Render();
                }
                for (int i = 0; i < 100; i++)
                {
                    _display.ClearAll(1);
                    _outputText.Clear().Append(rnd.Next(99999999));
                    _display.DrawString(_outputText.ToString(), 10, 1, 2, false, 5, 380, 220, MemoryLCD.TextWrap.WRAP, MemoryLCD.TextAlign.CENTER, MemoryLCD.VerticalAlign.CENTER);
                    _display.Render();
                }
                for (int i = 0; i < 100; i++)
                {
                    _display.ClearAll(1);
                    _outputText.Clear().Append(rnd.Next(99999999));
                    _display.DrawString(_outputText.ToString(), 10, 1, 4, false, 5, 380, 220, MemoryLCD.TextWrap.WRAP, MemoryLCD.TextAlign.CENTER, MemoryLCD.VerticalAlign.CENTER);
                    _display.Render();
                }
            }
        }

    }
}
7 Likes

Interesting. Is it hard coded into the rlp where the display buffer is?

@ njbuch - what do you mean by display buffer?

@ Justin - Display buffer is the memory that stores the screen image

Im just trying to understand the code, and I cant understand how the display controller (which is a Runtime Loadable Procedure) knows where to look for the bits drawn in the memory by display.render() ::slight_smile:

There is a 8mb flux capacitor (SPI flash) that has font data on it.
When the render method is called it pulls the font off the flash, does some jiggery pokery and hey presto the bits get twiddled and the screen displays. Clear as mud? :smiley:

Who is the artist? :clap:

@ njbuch - i quite like Pablo :smiley:

Once the project goes live i will ask the client to do a write up.

Very nice, I’ve been looking for a sunlight readable display in that same size.

  1. Where did you get the LCD?
  2. Can you please post your RLP in codeshare?

Nice LCD! More information Justin :slight_smile:

Don’t forget Dave’s creation https://www.ghielectronics.com/community/creations/entry/29 which uses the Newhaven displays

Yes Dave’s display is nice :slight_smile:
Stu, when you come to the workshop you can play with the display :wink:

@ rocketbob - display from Mouser

Will post code after i remove other functionality…

Remove… you mean add other functionalities… :slight_smile:

I’m looking forward to the workshop.

1 Like