Main Site Documentation

Different LCD


I’m afraid I’m not going to be able to use the CP7 display with my Cobra II; as I had hoped.

The CP7 is a nice display, but it is simply not bright enough for my application.

Could someone point me in the right direction for connecting another LCD and getting NetMF to work with it? I have not picked an LCD yet but it’ll be 7-8", touchscreen, and capable of (in)direct sunlight.


I like the optical properties of this LCD. The downside is, I don’t have as much development time to do a direct RGB connection, so I have to go through VGA to get it to run.


I’d prefer to stay away from the VGA solution.

I’m not afraid of the wrench time (if needed). I’d rather get it done right. I will take the display out tomorrow in the proper conditions (there is some available shading) and see if CP7 is acceptable.

I’m just looking to understand what the other choice might be, if the CP7 is a wash-out.


I’ve tried the CP7. To call it a wash-out is an understatement. Totally unusable for outdoor viewing as far as my application was concerned.


Pretty much any LCD with RGB interface will do it.

  1. Pick a LCD (I believe there’s a resolution limitation of 800x600);
  2. Wire signals: G0-G5, B0-B5, R0-R4, HSYNC, VSYNC, CLK, ENABLE and, of course, the power pins.
  3. Configure LCD controller of the G120 for your display. Something like this (this is for Newhaven 5" display with capacitive touch):
  var lcdConfig3 = new Configuration.LCD.Configurations();

                    lcdConfig3.Width = 800;
                    lcdConfig3.Height = 480;

                    lcdConfig3.OutputEnableIsFixed = true;
                    lcdConfig3.OutputEnablePolarity = true;

                    lcdConfig3.HorizontalSyncPolarity = false;
                    lcdConfig3.VerticalSyncPolarity = false;
                    lcdConfig3.PixelPolarity = true;

                    lcdConfig3.HorizontalSyncPulseWidth = 1;
                    lcdConfig3.HorizontalBackPorch = 88;
                    lcdConfig3.HorizontalFrontPorch = 40;
                    lcdConfig3.VerticalSyncPulseWidth = 3;
                    lcdConfig3.VerticalBackPorch = 32;
                    lcdConfig3.VerticalFrontPorch = 13;

                    lcdConfig3.PixelClockRateKHz = 25000;

                    if (Configuration.LCD.Set(lcdConfig3)) PowerState.RebootDevice(false);

You will need to dig in the LCD datasheet for the correct timing values. And, you only need to do this once, those settings are remembered after reboot. Remember, G120 has 16bit RGB interface (5 bits for blue and red and 6 bits for green),and if you LCD has 24bit (8 bits for each color) interface, you have to remap pins G8->G5, G7->G4,…, etc., and the ground G0, G1, R0-R2, B0-B2 pins on the LCD.

Pretty much it! I’ve done that a couple of times recently, as I was also looking for a suitable display. PRototypes aren’t looking pretty — but works :slight_smile:


Oh, and for backlight, I use the same schematics based on LT1932 as in GHI’s T43:


Regarding the 24bit interface LSBs, I think it is better not to ground them. This will not let you achieve true white. I think that shorting the MSBs with the LSBs is better. This way the LSB will become ‘1’ when the MSB does.


@ Simon - Wow thanks!


I am also trying to get the G120 working with the 5" Newhaven display. Can someone post where you connect the STBYB and DE pins of the Newhaven display to on the G120? Thanks.


I’m a little confused as well.

There doesn’t seem to be any 16bit Displays available through mouser or digi. So I guess I better figure out the 24bit ones

What did Simon mean by this exactly:

if you LCD has 24bit (8 bits for each color) interface, you have to remap pins G8->G5, G7->G4,…, etc., and the ground G0, G1, R0-R2, B0-B2 pins on the LCD.

Is this a wiring thing or a programming thing?
What exactly is happening when we remap 8-5, 7-4, etc?
Does he really mean to ground r0-r2 & b0-b2?

It might be helpful if I someone could explain the theory behind what he’s suggesting. It seems like we are interleaving bits or something?


@ JustinKScott – Perhaps this might help?

See “16-bit RGB565 interface to 18bpp LCD panel TFT example” about 3/4th of the way into this document:

The example shows an 18-bit panel mapped to a 16-bit controller, but the idea should be clear. It simply shows one way you can deal with the unused bits. The unused least-significant bits of the panel may be tied to Gnd. Alternatively, the LSBs of each color on the panel can also be tied to the most-significant bits of the same color on the LCD controller output to allow full color range (full black or full white), per this discussion at this forum: and also as @ S.B.D said.

The mapping is wiring, not programmatic.


Hi Charlie,

I have connected the 5" to a ChipworkX and G400 and it works well. The STBYB I connected to 3V3 and the DE input was connected to PIN 146 on the ChipworkX and was marked BMS.

I also have a design with the G120 and DE was connected to PIN 3 (LCDenable) I have still to test with this as I am waiting for the PCB to arrive from DFRobot but it should work fine. :slight_smile:


I personally grounded those least significant bits. GHI does the same on their displays.

And yes, for G120, DE goes to pin3 (P2_4). But I believe it does not matter much, it may be tied to logic “1” (it depends on the display if it’s GND or +3.3), because there’s a setting in LCD controller:

 lcdConfig3.OutputEnableIsFixed = true;


Thanks everyone, I just got the LCD working. I tied the STBYB high and connected DE to the LCD_EN pin (P2_4) of my G120.

The only other issue I had was I kept getting system out of memory exceptions. But once I updated the SDK/firmware version it worked.

Now to work on getting touch running.