Re: What decides the Mono LCD gray scale?

From: voidcoder (voidcoder_at_yahoo.com)
Date: 12/30/04


Date: Thu, 30 Dec 2004 14:31:05 +0100

Hi. I think something is wrong with Your palette
calculation. Just to show, tested for the clean white color:

RGB(255,255,255) = (255*299+255*587+255*114)*15/(1000*255) =0x0F

Thats not really right since You have to use 8bit palette, not 4bit palette.
XScale manual says that for monochrome mode palette has 16bit entries,
where low 8bits are grayscale value.

Please try with

pal[ i ] = 0xFF ^ (BYTE)(0.299f * R + 0.587f * G + 0.114f * B);

Just cheked. Looks really better than (R+B+G)/3, but not many.

Thanks

"cool_harber" <cool_harber@hotmail.com> wrote in message
news:#FYjO0m7EHA.128@TK2MSFTNGP15.phx.gbl...
> 3x,I have tested the palette as you said,but the display is also bad,
> Maybe my lcd just can be used in 4bpp.
> A few days ago,Someone told me another palette in newsgroup,here is the
> code:
> // RGB to YUV conversion is defined by CCIR 601 Standard as
>
> // Y = 0.299*R + 0.587*G + 0.114 B
>
> // Implementation :
>
> // scale= 15
>
> // Gray = (Red*299 + Green*587 + Blue*114)*scale/(1000*255);
>
>
> By the way,I use v_pPaletteBuffer->palette[ 0xFF - i ] to inverted
palette.
>
> "voidcoder" <voidcoder@yahoo.com>
写入消息新闻:ebnNysa7EHA.3820@TK2MSFTNGP11.phx.gbl...
> > Nothing special. Don't really sure that it is right, but
> > I'm using just everage RGB value for grayscale level.
> >
> > eg.
> >
> > for(i=firstEntry;i<end;i++)
> > {
> > v_pPaletteBuffer->palette[ i ] =
> > (((unsigned short)source[i].peBlue + source[i].peGreen +
> > source[i].peRed) / 3);
> > }
> >
> > The better result is using inverted average value, eg
> >
> >
> > v_pPaletteBuffer->palette[ i ] =
> > 0x00FF ^ (((unsigned short)source[i].peBlue +
source[i].peGreen
> > +
> > source[i].peRed) / 3);
> >
> > Please test it and come back with comments (since I think
> > this is not really right way to calculate grayscale palette).
> >
> > May be any1 can share some ideas on "how to calculate right
> > grayscale palette"?
> >
> >
> >
> > "cool_harber" <cool_harber@hotmail.com> wrote in message
> > news:OnQDrka7EHA.2124@TK2MSFTNGP15.phx.gbl...
> >> Thanks,But my lcd display looks so bad,
> >> the text is more clear than the blurred icon or image!~
> >> Can you share me your palette source code?
> >> email:cool_harber@hotmail.com
> >>
> >> "voidcoder" <voidcoder@yahoo.com>
> > 写入消息新闻:eLG5VDP7EHA.2316@TK2MSFTNGP15.phx.gbl...
> >> > If You want to use SA_Lcd driver for that - you are out of luck.
> >> > There are no support for true 4bpp mode. However you can use
> >> > 8bpp mode and turn on monochrome mode in the controller.
> >> > Then just setup your palette with grayscale entries
> >> > (modify DispDrvrSetPalette function). In this case You will have
> >> > 8bpp in frame buffer memory, 4bpp output and 16bit lookup palette
> >> > (where only lower 8bits are grayscale values). And of course
> >> > You have to setup other LCD contoller settings: timings, clocks etc.
> >> >
> >> > At least it works o.k. for me on PXA270.
> >> >
> >> >
> >> >
> >> > "cool_harber" <cool_harber@hotmail.com> wrote in message
> >> > news:eN2ZwbO7EHA.3076@TK2MSFTNGP15.phx.gbl...
> >> >> The mono lcd`s gray scale is decided by lcd controller or lcd
itself?
> >> >> I have a mono lcd with 4 data pins and about 70 Hz frame frequence
,I
> >> >> want to use PXA255 to controll it.Do I get 256 scale gray?
> >> >> Any suggestion is appreciated.
> >> >>
> >> >>
> >> >
> >> >
> >>
> >>
> >
> >
>
>