Page 1 of 1

GLCD BMP ARRYAY? / SHOW IMAGES

Posted: Sun Sep 19, 2010 5:33 am
by JMANN
I have been using the EB043 glcd, with no problems.
but now I wish to dispay an image on the LCD. what would be the process for this ?(132x132)
Im using an 18f4550(mchpusb) but I figure the size of the array would be to large so I think I would have to use an MMC/sd card for the DATA.
I thought I could plot each pixel, but how to get the colour right has me stuffed. The programs on the net I found to convert pictures seam to have 1 number (ie 0x00) per pixel. ?
here is an example of a 16x16 pixel bitmap?

Code: Select all

#define image_width (16)
#define image_height (16)


unsigned char bitmap[]= 
{
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 
0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 
0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 
0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0xE0, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0xE0, 0xFC, 0xFC, 0xFC, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0xE0, 0x6D, 0x6D, 0x6D, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
here is one from a different program

Code: Select all

// Image format {Width, Height, Bit Depth, Byte Count , Max Frame, ...
// Bit Depth:
//          8   bit: 0x02
//               RRRGGGBB
const unsigned char bmp[] = {
0xF, 0xF, 0x02, 0x01, 0x00, 
0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 
0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 
0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 
0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 
0xC4, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0xFC, 0xFC, 0xFC, 
0xFC, 0xFC, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC4, 0xC4, 
0xC4, 0xC4, 0xC4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x0, 
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0, 0x0, 0xC4, 0x0, 0x0, 0x0, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC4, 0x0, 
0x0, 0x0, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x0, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC4, 0x0, 0x0, 0x0, 0xC4, 0xC4, 
0xC4, 0xC4, 0xC4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC4, 0xFC, 0xFC, 0xFC, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x0, 
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xC4, 0x6D, 0x6D, 0x6D, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x0, 0x0, 0x0, 0x0, 0x0, 
0x0, 0x0, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
Is something like this possible, or am I look at this the wrong way
Anyone managed to display a picture on a glcd using flowcode?. If you have any ideas or input PLEASE POST.
Mark.

Re: GLCD BMP ARRYAY? / SHOW IMAGES

Posted: Sun Sep 19, 2010 12:19 pm
by JMANN
OK OK
So I found the C code examples. and have been playing around with Lcd_Drawimage. I changed it to make 2 different coloured lines on the lcd.

Code: Select all

void Lcd_drawimage (char X1, char Y1)
{
	char i;
	Lcd_window(X1,Y1,X1+129,Y1+129);

	for (i=0;i<130;i++)			//1
	{
		Lcd_sendbyte(PARAM, 0xFF);//white
	}
	for (i=0;i<130;i++)
	{
		Lcd_sendbyte(PARAM, 0X00);//black
	}
	for (i=0;i<130;i++)
	{
		Lcd_sendbyte(PARAM, 0xFF);//white
	}
	for (i=0;i<130;i++)
	{
		Lcd_sendbyte(PARAM, 0X00);//black
	}


}
All I have to do now is replace the colour with the image info. How do I do this, some kind of array?
Like the charaters?
Mark

EDIT
Alright I got the picture sorted
here is a simple Picture (Actualy from a descktop Icon).
nostromo1a.jpg
nostromo1a.jpg (771 Bytes) Viewed 1514 times
The convertor said it was 16x16 but I could only get it to look right on 15x15.
the picture data is char bmp []
Snipet from GFX_LCD_functions.c

Code: Select all

void Lcd_drawimage (char X1, char Y1)
{
//Icon pic
const unsigned char bmp[] = {
 
0x0, 0x0, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0x0, 0x0, 0x0, 0xD1, 0xD1, 
0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0x0, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 
0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 
0xCD, 0xCD, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0xCD, 
0xD1, 0xD1, 0xCD, 0x24, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x6D, 0xCD, 0xD1, 0xD1, 0xCD, 0x24, 
0xDB, 0xDB, 0xDB, 0x24, 0x24, 0x24, 0x24, 0x49, 0xDB, 0xDB, 0x6D, 0xCD, 0xD1, 0xD1, 0xCD, 0x24, 0xDB, 0xDB, 0xDB, 0x24, 
0xD1, 0xD1, 0x24, 0x49, 0xDB, 0xDB, 0x6D, 0xCD, 0xD1, 0xD1, 0xCD, 0x24, 0xDB, 0xDB, 0xDB, 0x24, 0xD1, 0xD1, 0x24, 0x49, 
0xDB, 0xDB, 0x6D, 0xCD, 0xD1, 0xD1, 0xCD, 0x24, 0xDB, 0xDB, 0xDB, 0x24, 0xD1, 0xD1, 0x24, 0x49, 0xDB, 0xDB, 0x6D, 0xCD, 
0xD1, 0xD1, 0xCD, 0x24, 0x24, 0x24, 0x24, 0xD1, 0xD1, 0xD1, 0x24, 0x24, 0xDB, 0xDB, 0x6D, 0xCD, 0xD1, 0xD1, 0xD1, 0xD1, 
0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0x24, 0x24, 0x24, 0x24, 0x24, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 
0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 
0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0x0, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 
0x0, 0x0, 0x0, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0x0, 0x0};

	char i;
	char j=0;
	Lcd_window(X1,Y1,X1+15,Y1+15);

	for (i=0;i<255;i++)
	

	{
		
		Lcd_sendbyte(PARAM, bmp[j++]);       // send data / increment bmp
	}
	for (i=0;i<4;i++)                                                // was missing a few pixels had to add this
	

	{
		
		Lcd_sendbyte(PARAM, bmp[j++]); .
	}

}
So because 16x16 is about the limit of the micro, how do I stream the info from say a MMC Card. I have a MMC card reader I Made and it works perfectly.
here is my demo code in full.