nokia 6610 da renkli resim basma

Başlatan berkay_91, 14 Ocak 2015, 13:34:31

berkay_91

merhaba elimde philips sürücülü Nokia 6610 ekranı var renkli resim basma hariç proteusta bir çok şey yaptım ve çok güzel çalıştı acaba renkli resim nasıl basabilirim? c kütüphanesinde şöyle bir loop var anlamadığım nokta bu döngü hangi pixel in hangi renkte olucağına nasıl karar veriyor?

void resim_ciz_RGB12( char *Bitmap, char X, char Y)
{	

        char Width;
	char Height;
	int ByteCount;
	
	Width = Bitmap[1];
	Height = Bitmap[2];
	ByteCount = Bitmap[3] + ((int)Bitmap[4] << 8);
	Glcd_komut_yaz(PASET);
	Glcd_veri_yaz(X);
	Glcd_veri_yaz(X + Width - 1);
	Glcd_komut_yaz(CASET);
	Glcd_veri_yaz(Y);
	Glcd_veri_yaz(Y + Height - 1);
	Glcd_komut_yaz(RAMWR);
	WriteRomDataToLCD(Bitmap + 5, ByteCount);
	Glcd_komut_yaz(NOOP);
	DeselectLCD();
}

Kabil ATICI

#1
char *Bitmap

ByteCount = Bitmap[3] + ((int)Bitmap[4] <<  8 );

buradan geliyor gibi görünüyor..
Programı daha iyi incele... Resmi veri tabanından alan bir bölüm olması gerekir.
ambar7

leblebitozu

Genelde bitmap bir utility aracılığıyla C header dosyasına çevriliyor. Sonra da header dosyasında'ki array'den bitmap renk değerleri okunup ekrana basılıyor.

berkay_91

resimlerin RGB kodlarını pixel pixel çevrebilecek bir program biliyormusunuz? Google dan aradım ama aradığımı bulamadım  kütüphane dosyalarını
ekledim onada bakabilirmisiniz ben işin içinden çıkamadım

/*****************************************************************
*  isim : Nokia 6100 lcd (PCF8833) sürücü                        *
*  Düzenleyen/Geliş


tiren : Erhan YILMAZ		                     *
*  tarih   : 26.09.2010                                          *
*  Sürüm   : 1.0   
*  Hafıza kullanımı : 2768 byte flash ,101 byte ram              *
*****************************************************************/

// Bu sürücü dosyası piyasada 6100 lcd diye bilinen Phlips PCF8833 entegreli renkli 
// glcdleri sürmek için kullanılır.Microchip firmasının kendi denetleyicileri için geliştirdiği
// sürücü tarafımca düzenlenip geliştirilerek winavr uygulamaları için geliştirilmiştir.
// Epson S1D15G00 entegreli ekranları sürmek için aşağıdaki fonksiyonlarda değişiklik yapmak gerekmektedir.
//		LCDDriverInitialize()
//		LCDSelectColorMode()
//		LCDSetContrast()
//		Glcd_komut_yaz()
//		Glcd_veri_yaz()
// 	PCF8833 entergesi dökümanı aşağıdaki bağlantıdan incelenebilir.
// 	http://www.nxp.com/acrobat_download/datasheets/PCF8833_1.pdf

// ------------------------------------------------------------------------------
//
//
// The LCD controller can be configured for different coordinate systems.  I choose
// to mount the display with the connector tab on the top, and I setup the coordinate
// system with 0,0 in the upper left corner.  X moves down and Y moves to the right.
// With this display, the X=0 and X=131 columns, along with the Y=0 and Y = 131 rows 
// are not visible and are not used.  
//
//
//                     ----------- Y ----------->
//                                        ___
//                    _ _ _ _ _ _ _ _ _ _|_ _|_ _
//                   |                           |
//             (0,0) |---------------------------| (131,0)
//        |          |                           |
//        |          |                           |
//        |          |                           |
//        |          |                           |
//        |          |    Nokia 6100 display     |
//        X          |                           |
//        |          |                           |
//        |          |                           |
//        |          |                           |
//        |          |                           |
//       \|/         |                           |
//           (0,131)  ---------------------------  (131,131)
//
//
// The auto increment and wrap feature of the RAMWR command is configured
// to write bytes in the Y direction, going from top to bottom, then wrapping  
// left to right. As a result, bitmap data should be stored in arrays with the  
// first byte representing the pixel in the upper left corner, then advancing 
// downward and to the right.
//

/* ------------------------------------------------------------------------ */


#include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include "LCDDriver.h"


/* ------------------------------------------------------------------------ */


//
// command set for the Philips PCF8833 LCD controller
//
#define NOOP 	0x00 		// nop
#define SWRESET 0x01 		// software reset
#define BSTROFF 0x02 		// booster voltage OFF
#define BSTRON 	0x03 		// booster voltage ON
#define RDDIDIF 0x04 		// read display identification
#define RDDST 	0x09 		// read display status
#define SLEEPIN 0x10 		// sleep in
#define SLEEPOUT 0x11 		// sleep out
#define PTLON 	0x12 		// partial display mode
#define NORON 	0x13 		// display normal mode
#define INVOFF 	0x20 		// inversion OFF
#define INVON 	0x21 		// inversion ON
#define DALO 	0x22 		// all pixel OFF
#define DAL 	0x23 		// all pixel ON
#define SETCON 	0x25 		// write contrast
#define DISPOFF 0x28 		// display OFF
#define DISPON 	0x29 		// display ON
#define CASET 	0x2A 		// column address set
#define PASET 	0x2B 		// page address set
#define RAMWR 	0x2C 		// memory write
#define RGBSET 	0x2D 		// colour set
#define PTLAR 	0x30 		// partial area
#define VSCRDEF 0x33 		// vertical scrolling definition
#define TEOFF 	0x34 		// test mode
#define TEON 	0x35		// test mode
#define MADCTL 	0x36 		// memory access control
#define SEP 	0x37 		// vertical scrolling start address
#define IDMOFF 	0x38 		// idle mode OFF
#define IDMON 	0x39 		// idle mode ON
#define COLMOD 	0x3A 		// interface pixel format
#define SETVOP 	0xB0 		// set Vop
#define BRS 	0xB4 		// bottom row swap
#define TRS 	0xB6 		// top row swap
#define DISCTR 	0xB9 		// display control
#define DATOR 	0xBA 		// data order
#define TCDFE 	0xBD 		// enable/disable DF temperature compensation
#define TCVOPE 	0xBF 		// enable/disable Vop temp comp
#define EC 		0xC0 		// internal or external oscillator
#define SETMUL 	0xC2 		// set multiplication factor
#define TCVOPAB 0xC3 		// set TCVOP slopes A and B
#define TCVOPCD 0xC4 		// set TCVOP slopes c and d
#define TCDF 	0xC5 		// set divider frequency
#define DF8COLOR 0xC6 		// set divider frequency 8-color mode
#define SETBS 	0xC7 		// set bias system
#define RDTEMP 	0xC8 		// temperature read back
#define NLI 	0xC9 		// n-line inversion
#define RDID1 	0xDA 		// read ID1
#define RDID2 	0xDB 		// read ID2
#define RDID3 	0xDC 		// read ID3

 
static const unsigned char PROGMEM Font5x7[] = {
	0x00, 0x00, 0x00, 0x00, 0x00,// (space)
	0x00, 0x00, 0x5F, 0x00, 0x00,// !
	0x00, 0x07, 0x00, 0x07, 0x00,// "
	0x14, 0x7F, 0x14, 0x7F, 0x14,// #
	0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
	0x23, 0x13, 0x08, 0x64, 0x62,// %
	0x36, 0x49, 0x55, 0x22, 0x50,// &
	0x00, 0x05, 0x03, 0x00, 0x00,// '
	0x00, 0x1C, 0x22, 0x41, 0x00,// (
	0x00, 0x41, 0x22, 0x1C, 0x00,// )
	0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
	0x08, 0x08, 0x3E, 0x08, 0x08,// +
	0x00, 0x50, 0x30, 0x00, 0x00,// ,
	0x08, 0x08, 0x08, 0x08, 0x08,// -
	0x00, 0x60, 0x60, 0x00, 0x00,// .
	0x20, 0x10, 0x08, 0x04, 0x02,// /
	0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
	0x00, 0x42, 0x7F, 0x40, 0x00,// 1
	0x42, 0x61, 0x51, 0x49, 0x46,// 2
	0x21, 0x41, 0x45, 0x4B, 0x31,// 3
	0x18, 0x14, 0x12, 0x7F, 0x10,// 4
	0x27, 0x45, 0x45, 0x45, 0x39,// 5
	0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
	0x01, 0x71, 0x09, 0x05, 0x03,// 7
	0x36, 0x49, 0x49, 0x49, 0x36,// 8
	0x06, 0x49, 0x49, 0x29, 0x1E,// 9
	0x00, 0x36, 0x36, 0x00, 0x00,// :
	0x00, 0x56, 0x36, 0x00, 0x00,// ;
	0x00, 0x08, 0x14, 0x22, 0x41,// <
	0x14, 0x14, 0x14, 0x14, 0x14,// =
	0x41, 0x22, 0x14, 0x08, 0x00,// >
	0x02, 0x01, 0x51, 0x09, 0x06,// ?
	0x32, 0x49, 0x79, 0x41, 0x3E,// @
	0x7E, 0x11, 0x11, 0x11, 0x7E,// A
	0x7F, 0x49, 0x49, 0x49, 0x36,// B
	0x3E, 0x41, 0x41, 0x41, 0x22,// C
	0x7F, 0x41, 0x41, 0x22, 0x1C,// D
	0x7F, 0x49, 0x49, 0x49, 0x41,// E
	0x7F, 0x09, 0x09, 0x01, 0x01,// F
	0x3E, 0x41, 0x41, 0x51, 0x32,// G
	0x7F, 0x08, 0x08, 0x08, 0x7F,// H
	0x00, 0x41, 0x7F, 0x41, 0x00,// I
	0x20, 0x40, 0x41, 0x3F, 0x01,// J
	0x7F, 0x08, 0x14, 0x22, 0x41,// K
	0x7F, 0x40, 0x40, 0x40, 0x40,// L
	0x7F, 0x02, 0x04, 0x02, 0x7F,// M
	0x7F, 0x04, 0x08, 0x10, 0x7F,// N
	0x3E, 0x41, 0x41, 0x41, 0x3E,// O
	0x7F, 0x09, 0x09, 0x09, 0x06,// P
	0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
	0x7F, 0x09, 0x19, 0x29, 0x46,// R
	0x46, 0x49, 0x49, 0x49, 0x31,// S
	0x01, 0x01, 0x7F, 0x01, 0x01,// T
	0x3F, 0x40, 0x40, 0x40, 0x3F,// U
	0x1F, 0x20, 0x40, 0x20, 0x1F,// V
	0x7F, 0x20, 0x18, 0x20, 0x7F,// W
	0x63, 0x14, 0x08, 0x14, 0x63,// X
	0x03, 0x04, 0x78, 0x04, 0x03,// Y
	0x61, 0x51, 0x49, 0x45, 0x43,// Z
	0x00, 0x00, 0x7F, 0x41, 0x41,// [
	0x02, 0x04, 0x08, 0x10, 0x20,// "\"
	0x41, 0x41, 0x7F, 0x00, 0x00,// ]
	0x04, 0x02, 0x01, 0x02, 0x04,// ^
	0x40, 0x40, 0x40, 0x40, 0x40,// _
	0x00, 0x01, 0x02, 0x04, 0x00,// `
	0x20, 0x54, 0x54, 0x54, 0x78,// a
	0x7F, 0x48, 0x44, 0x44, 0x38,// b
	0x38, 0x44, 0x44, 0x44, 0x20,// c
	0x38, 0x44, 0x44, 0x48, 0x7F,// d
	0x38, 0x54, 0x54, 0x54, 0x18,// e
	0x08, 0x7E, 0x09, 0x01, 0x02,// f
	0x08, 0x14, 0x54, 0x54, 0x3C,// g
	0x7F, 0x08, 0x04, 0x04, 0x78,// h
	0x00, 0x44, 0x7D, 0x40, 0x00,// i
	0x20, 0x40, 0x44, 0x3D, 0x00,// j
	0x00, 0x7F, 0x10, 0x28, 0x44,// k
	0x00, 0x41, 0x7F, 0x40, 0x00,// l
	0x7C, 0x04, 0x18, 0x04, 0x78,// m
	0x7C, 0x08, 0x04, 0x04, 0x78,// n
	0x38, 0x44, 0x44, 0x44, 0x38,// o
	0x7C, 0x14, 0x14, 0x14, 0x08,// p
	0x08, 0x14, 0x14, 0x18, 0x7C,// q
	0x7C, 0x08, 0x04, 0x04, 0x08,// r
	0x48, 0x54, 0x54, 0x54, 0x20,// s
	0x04, 0x3F, 0x44, 0x40, 0x20,// t
	0x3C, 0x40, 0x40, 0x20, 0x7C,// u
	0x1C, 0x20, 0x40, 0x20, 0x1C,// v
	0x3C, 0x40, 0x30, 0x40, 0x3C,// w
	0x44, 0x28, 0x10, 0x28, 0x44,// x
	0x0C, 0x50, 0x50, 0x50, 0x3C,// y
	0x44, 0x64, 0x54, 0x4C, 0x44,// z
	0x00, 0x08, 0x36, 0x41, 0x00,// {
	0x00, 0x00, 0x7F, 0x00, 0x00,// |
	0x00, 0x41, 0x36, 0x08, 0x00,// }
	0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
	0x08, 0x1C, 0x2A, 0x08, 0x08 // <-
};


/* ------------------------------------------------------------------------ */


//
// color map for RGB12 (rrrrggggbbbb)
//
static  char RGB12ColorMap[] = {
	// number of bytes in the table excluding this one
	48,
	
	// red map: an input 4 bit rrrr color is mapped to an output 5 bit rrrrr color
	0x00,0x02,0x04,0x06,0x08,0x0A,0x0C,0x0E,0x10,0x12,0x14,0x16,0x18,0x1A,0x1C,0x1F,
	
	// green map: an input 4 bit gggg color is mapped to an output 6 bit gggggg color
	0x00,0x07,0x0B,0x0F,0x13,0x17,0x1B,0x1F,0x23,0x27,0x2B,0x2F,0x33,0x37,0x3B,0x3F,
	
	// blue map: an input 4 bit bbbb color is mapped to an output 5 bit bbbbb color
	0x00,0x02,0x04,0x06,0x08,0x0A,0x0C,0x0E,0x10,0x12,0x14,0x16,0x18,0x1A,0x1C,0x1F};



//
// color map for RGB8 (rrrgggbb).  This color table does not follow the requirements
// detailed in the Philips datasheet, but does work correctly with the displays used
// to develop this software.  I'm not sure why.
//
static  char RGB8ColorMap[] = {
	// number of bytes in the table excluding this one
	48,

	// red map: an input 3 bit rrr color is mapped to an output 5 bit rrrrr color
	0, 4, 9, 13, 18, 22, 27, 31, 0, 0, 0, 0, 0, 0, 0, 0,
	
	// green map: an input 3 bit ggg color is mapped to an output 6 bit gggggg color
	0, 9, 18, 27, 36, 45, 54, 63, 0, 0, 0, 0, 0, 0, 0, 0,
	
	// blue map: an input 2 bit bb color is mapped to an output 5 bit bbbbb color
	0, 10, 21, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};



//
// color map for RGB8 (rrrgggbb). This color table has not been tested.  It is
// here because it matches the required as documented in the Philips datasheet.
//
//static rom byte RGB8ColorMap[] = {
//	// number of bytes in the table excluding this one
//	20,
//
//	// red map: an input 3 bit rrr color is mapped to an output 4 bit rrrr color
//	0, 2, 5, 7, 9, 11, 14, 15, 
//	
//	// green map: an input 3 bit ggg color is mapped to an output 4 bit gggg color
//	0, 2, 4, 6, 9, 11, 14, 15,
//	
//	// blue map: an input 2 bit bb color is mapped to an output 4 bit bbbb color
//	0, 6, 11, 15};



/* ------------------------------------------------------------------------ */
/*             	    Private variables local to this module					*/
/* ------------------------------------------------------------------------ */

static char CurrentColorMode;
static char *CurrentColorMap;


/* ------------------------------------------------------------------------ */
/*						  Local function declarations  	 					*/
/* ------------------------------------------------------------------------ */

static void spi_init(void);
static void spi_byte_gonder (char);
static void Glcd_komut_yaz(char);
static void WriteRomDataToLCD( char *, unsigned int);
static void Glcd_veri_yaz(char);
static void DeselectLCD(void);


/* ------------------------------------------------------------------------ */
/*						  	Public general functions 		 				*/
/* ------------------------------------------------------------------------ */

//
// initialize this module and the LCD controller
//		Enter:	ColorMode = LCD_COLOR_MODE_RGB8 or LCD_COLOR_MODE_RGB8
//
void LCDDriverInitialize(char ColorMode)
{	//
	// initialize state variables
	//
	CurrentColorMode = LCD_COLOR_MODE_UNDEFINED;
	CurrentColorMap = 0;
	
	
	//
	// initialize the SPI registers that communicate with the LCD display
	//
	spi_init();
	//
	// hardware reset the LCD display
	//
	GLCD_RESET_PORT&=~_BV(LCD_RESET);
	_delay_ms(30);
	GLCD_RESET_PORT|=_BV(LCD_RESET);
	_delay_ms(30);


	//
	// take the controller out of sleep (start the power booster)
	//
	//SPIData = SLEEPOUT;
	Glcd_komut_yaz(SLEEPOUT);
	_delay_ms(2);

	
	//
	// don't mirror x & y, write in Y dir, color = RGB
	// Note: The V bit is set so that writes to RAM increment in the Y direction, going
	// from top to bottom, then left to right.  I picked the Y direction to be compatible
	// with the variable pitch font.  Setting this bit also required switching PASET and 
	// CASET
	//
	//SPIData = MADCTL;
	Glcd_komut_yaz(MADCTL);
	//SPIData = 0x20;			
	Glcd_veri_yaz(0x20);

	//
	// initialize the contrast
	//
	Glcd_komut_yaz(SETCON);
	Glcd_veri_yaz(0x30);
	DeselectLCD();

	//
	// turn on the display
	//
	_delay_ms(4);
	Glcd_komut_yaz(DISPON);		

	//
	// set the default color mode (RGB8 or RGB12) and the color map
	//
	LCDSelectColorMode(ColorMode, 0);
	DeselectLCD();
}

//
// select color mode, either RGB8 or RGB12
//		Enter:	ColorMode = LCD_COLOR_MODE_RGB8 or LCD_COLOR_MODE_RGB8
//				ColorMap -> color map table, if 0 then use default table
//
void LCDSelectColorMode(char ColorMode,  char *ColorMap)
{	 char *ColorMapTable;
	
	//
	// check if the display is already in the current mode
	//
	if ((CurrentColorMode == ColorMode) && (CurrentColorMap == ColorMap)) 
		return;
	// set the color mode
	Glcd_komut_yaz(COLMOD);
	
	if (ColorMode == LCD_COLOR_MODE_RGB8)
	{
		Glcd_veri_yaz(2);
		ColorMapTable = RGB8ColorMap;
	}
	else
	{	
		Glcd_veri_yaz(3);
		ColorMapTable = RGB12ColorMap;
	}

	// check if the default table should not be used
	if (ColorMap != 0)
		ColorMapTable = ColorMap;
	// load the color table
	Glcd_komut_yaz(RGBSET);
	WriteRomDataToLCD(ColorMapTable + 1, ColorMapTable[0]);
	Glcd_komut_yaz(NOOP);
	CurrentColorMode = ColorMode;
	CurrentColorMap = ColorMap;
	DeselectLCD();
}

//
// Ekranın tamamını beyaza boyar.
//
void Glcd_temizle(void)
{	if (CurrentColorMode == LCD_COLOR_MODE_RGB8)
		ici_dolu_dortgen_ciz_RGB8(0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1, RGB8_WHITE);
	
	else
		ici_dolu_dortgen_ciz_RGB212(0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1, RGB12_WHITE);
}

//
// Ekranını kontrast seviyesini ayarlar
//		Enter:	Value = Kontrast değeri (-64 - 63)
//
void Kontrast_ayarla(char Value)
{	
	Glcd_komut_yaz(SETCON);
	Glcd_veri_yaz((char) Value);
	DeselectLCD();
}

/* ------------------------------------------------------------------------ */
/*						  	 	 RGB8 Fonksiyonlar		 					*/
/* ------------------------------------------------------------------------ */

//
// ekranda 8 bit renge sahip bir piksel görüntülenir.
//		Enter:	X = x koordinatı (1 - 130)
//				Y = y koordinatı (1 - 130)
//				Color = piksel rengi (rrrgggbb)
//
void Pixel_yaz_RGB8(char X, char Y, char ColorRGB8)
{	//
	// set the coords of a box including just this one pixel
	//
	Glcd_komut_yaz(PASET);
	Glcd_veri_yaz(X);
	Glcd_veri_yaz(X);
	
	Glcd_komut_yaz(CASET);
	Glcd_veri_yaz(Y);
	Glcd_veri_yaz(Y);
	
	// set the color of the pixel
	Glcd_komut_yaz(RAMWR);
	Glcd_veri_yaz(ColorRGB8);
	
	DeselectLCD();
}

//
// 		8 bit renk ile içi dolu dörtgen çizen fonksiyon
//		Giriş:	Left = sol x Koordinatı (1 - 130)
//				Top = tepe y Koordinatı (1 - 130)
//				Right = Sağ x Koordinatı (1 - 130)
//				Bottom = Taban y Koordinatı (1 - 130)
//				ColorRGB8 = pixel rengi (rrrgggbb)
//
void ici_dolu_dortgen_ciz_RGB8(char Left, char Top, char Right, char Bottom, char ColorRGB8)
{	int i,PixelCount;
	// Dörtgenin çizilebilirliğini doğrula
	if ((Left > Right) || (Top > Bottom))
		return;
	// Dörtgenini koordinatlarını gir
	Glcd_komut_yaz(PASET);
	Glcd_veri_yaz(Left);
	Glcd_veri_yaz(Right);
	Glcd_komut_yaz(CASET);
	Glcd_veri_yaz(Top);
	Glcd_veri_yaz(Bottom);
	// Dörtgenini içini boya
	Glcd_komut_yaz(RAMWR);
	PixelCount = (unsigned int) (Right - Left + 1) * (unsigned int) (Bottom - Top + 1);
	for (i = 0; i < PixelCount; i++)
	Glcd_veri_yaz(ColorRGB8);
	Glcd_komut_yaz(NOOP);
	DeselectLCD();
}

//
// draw a horizontal gradient
//		Enter:	ColorTable -> to a table in RAM of RGB8 colors
//				LeftX = left side of horizontal gradient to draw
//				RightX = right side of horizontal gradient to draw
//				TopY = Y coord of top line of horizontal gradient to draw, will draw down from there
//				LineCount = number of lines to draw
//
void DrawHorzGradientRGB8( char *ColorTable, char LeftX, char RightX, char TopY, char LineCount)
{	//char i;
	
	while(LineCount)
	{	ici_dolu_dortgen_ciz_RGB8(
		  LeftX, TopY, 
		  RightX, TopY, 
		  *ColorTable);

		LineCount--;
		TopY++;
		ColorTable++;
	}
}

//
// 	8 bit renk kullanarak çizgi çizme algoritması by Jack Bresenham
//		Giriş:	X1, Y1 = Başlangıç
//				X2, Y2 = Bitiş
//				ColorRGB8 = pixel rengi (rrrgggbb)
//
void cizgi_ciz_RGB8(int X1, int Y1, int X2, int Y2, char ColorRGB8) 
{	int dy;
	int dx;
	int StepX, StepY;
	int Fraction;
	
	dy = Y2 - Y1;
	dx = X2 - X1;

	if (dy < 0)
	{	dy = -dy; 
		StepY = -1;
	}
	else
		StepY = 1;
		
	if (dx < 0) 
	{	dx = -dx; 
		StepX = -1; 
	}
	else
		StepX = 1;

	dy <<= 1; 									// dy is now 2*dy
	dx <<= 1; 									// dx is now 2*dx
	Pixel_yaz_RGB8(X1, Y1, ColorRGB8);

	if (dx > dy) 
	{	Fraction = dy - (dx >> 1); 				// same as 2*dy - dx
		while (X1 != X2) 
		{	if (Fraction >= 0) 
			{	Y1 += StepY;
				Fraction -= dx; 				// same as fraction -= 2*dx
			}

			X1 += StepX;
			Fraction += dy; 					// same as fraction -= 2*dy
			Pixel_yaz_RGB8(X1, Y1, ColorRGB8);
		}
	} 
	
	else 
	{	Fraction = dx - (dy >> 1);
		while (Y1 != Y2) 
		{	if (Fraction >= 0) 
			{	X1 += StepX;
				Fraction -= dy;
			}

			Y1 += StepY;
			Fraction += dx;
			Pixel_yaz_RGB8(X1, Y1, ColorRGB8);
		}
	}
}



//
// 8 bit renk kullanarak içi boş çember çizme algoritması by Jack Bresenham
//		Giriş:	X1, Y1 = Çemberin merkezi
//				radius = Çember yarı çapı
//				ColorRGB8 = pixel rengi (rrrgggbb)
//
void ici_bos_cember_ciz_RGB8(int X1, int Y1, int Radius, char ColorRGB8) 
{	int f;
	int ddF_x;
	int ddF_y;
	int x;
	int y;
	
	f = 1 - Radius;
	ddF_x = 0;
	ddF_y = -2 * Radius;
	x = 0;
	y = Radius;

	Pixel_yaz_RGB8(X1, Y1 + Radius, ColorRGB8);
	Pixel_yaz_RGB8(X1, Y1 - Radius, ColorRGB8);
	Pixel_yaz_RGB8(X1 + Radius, Y1, ColorRGB8);
	Pixel_yaz_RGB8(X1 - Radius, Y1, ColorRGB8);

	while (x < y) 
	{	if (f >= 0) 
		{	y--;
			ddF_y += 2;
			f += ddF_y;
		}

		x++;
		ddF_x += 2;
		f += ddF_x + 1;
		
		Pixel_yaz_RGB8(X1 + x, Y1 + y, ColorRGB8);
		Pixel_yaz_RGB8(X1 - x, Y1 + y, ColorRGB8);
		Pixel_yaz_RGB8(X1 + x, Y1 - y, ColorRGB8);
		Pixel_yaz_RGB8(X1 - x, Y1 - y, ColorRGB8);
		Pixel_yaz_RGB8(X1 + y, Y1 + x, ColorRGB8);
		Pixel_yaz_RGB8(X1 - y, Y1 + x, ColorRGB8);
		Pixel_yaz_RGB8(X1 + y, Y1 - x, ColorRGB8);
		Pixel_yaz_RGB8(X1 - y, Y1 - x, ColorRGB8);
	}
}

//
// 8 bit renkli bmp resmi çizer
//		Giriş:	Bitmap -> RGB8 resim dataları
//				X, Y = resim yerleştirme koordinatı (sol üst köşesi)
//
void resim_ciz_RGB8( char *Bitmap, char X, char Y)
{	char Width;
	char Height;
	int ByteCount;
	
	Width = Bitmap[1];
	Height = Bitmap[2];
	ByteCount = Bitmap[3] + ((int)Bitmap[4] << 8);
	
	Glcd_komut_yaz(PASET); 
	Glcd_veri_yaz(X);
	Glcd_veri_yaz(X + Width - 1);
	
	Glcd_komut_yaz(CASET);
	Glcd_veri_yaz(Y);
	Glcd_veri_yaz(Y + Height - 1);

	Glcd_komut_yaz(RAMWR);
	WriteRomDataToLCD(Bitmap + 5, ByteCount);

	Glcd_komut_yaz(NOOP);
	DeselectLCD();
}

//
// 	8 bit renk ile yazıları görüntüler
//		Giriş:	S -> yazdırılmak istenen karakterler
//				X = x koordinatı
//				Y = y koordinatı
//				karakter_renk8 = Karakterlerin ana rengi
//				arkaplan_renk8 = Karakterlerin arka plan rengi
//
void lcd_yazi_yaz8( const char *s,char X,char Y,char karakter_renk8,char arkaplan_renk8)
{
	while(*s)
		{
		karakter_yaz8(*s++,X,Y,karakter_renk8,arkaplan_renk8);
		X=X+6;
		}
		} 

//	
//  8 bit renk kullanrak karakter yazar
//		Giriş:	c = yazdrılmak istenen karakter
//				X = x koordinatı
//				Y = y koordinatı
//				karakter_renk8 = Karakterlerin ana rengi
//				arkaplan_renk8 = Karakterlerin arka plan rengi
//
void karakter_yaz8(char C ,char X,char Y,char karakter_renk8,char arkaplan_renk8){
	char chardata,column,row,mask;
	Glcd_komut_yaz(PASET);
	Glcd_veri_yaz(X);
	Glcd_veri_yaz(X + 4);	
	Glcd_komut_yaz(CASET);
	Glcd_veri_yaz(Y);
	Glcd_veri_yaz(Y + 7);
	Glcd_komut_yaz(RAMWR);
		for(column=0; column<5; column++){
		chardata=pgm_read_byte(&Font5x7[(((C - 0x20) * 5) + column)]);
		mask=0x01;
		for (row = 0; row < 8; row++){
		if ((chardata & mask) == 0)
			Glcd_veri_yaz(arkaplan_renk8);
		else
			Glcd_veri_yaz(karakter_renk8);
			mask = mask << 1;}
		}
		Glcd_komut_yaz(NOOP);
		DeselectLCD();
		}

/* ------------------------------------------------------------------------ */
/*						  	 	 RGB12 Fonksiyonlar 		 				*/
/* ------------------------------------------------------------------------ */

//
// 12 bit renk kullanarak içi dolu dörtgen çizer
//		Enter:	Left = sol x koordinatı (1 - 130)
//				Top = Tepe y koordinatı (1 - 130)
//				Right = Sağ x koordinatı (1 - 130)
//				Bottom = Taban y koordinatı (1 - 130)
//				ColorRGB12 = Pixel rengi (rrrrggggbbbb)
//
void ici_dolu_dortgen_ciz_RGB212(char Left, char Top, char Right, char Bottom, int ColorRGB12)
{	int i;
	int PixelCount;
	char Byte1, Byte2, Byte3;
	int LoopCount;
	
	// Dörtgenini çizilebilirliğini doğrula
	if ((Left > Right) || (Top > Bottom))
		return;
	// Dörtgenin koordinatları girilir.
	Glcd_komut_yaz(PASET);
	Glcd_veri_yaz(Left);
	Glcd_veri_yaz(Right);
	Glcd_komut_yaz(CASET);
	Glcd_veri_yaz(Top);
	Glcd_veri_yaz(Bottom);
	// Dörtgenini içi boyanır.
	Glcd_komut_yaz(RAMWR);
	
	Byte1 = (ColorRGB12 >> 4) & 0xff;
	Byte2 = (((ColorRGB12 & 0x0f) << 4) | ((ColorRGB12 >> 8) & 0x0f));
	Byte3 = (ColorRGB12 & 0xff);
	
	PixelCount = (unsigned int) (Right - Left + 1) * (unsigned int) (Bottom - Top + 1);
	LoopCount = (PixelCount / 2) + 1;
	for (i = 0; i < LoopCount; i++)
	{	
		Glcd_veri_yaz(Byte1);
		Glcd_veri_yaz(Byte2);
		Glcd_veri_yaz(Byte3);
	}
	Glcd_komut_yaz(NOOP);
	DeselectLCD();
}

//
// 12 renkli bit bmp resmi çizer
//		Giriş:	Bitmap -> RGB8 resim dataları
//				X, Y = resim yerleştirme koordinatı (sol üst köşesi)
//
void resim_ciz_RGB12( char *Bitmap, char X, char Y)
{	char Width;
	char Height;
	int ByteCount;
	
	Width = Bitmap[1];
	Height = Bitmap[2];
	ByteCount = Bitmap[3] + ((int)Bitmap[4] << 8);
	Glcd_komut_yaz(PASET);
	Glcd_veri_yaz(X);
	Glcd_veri_yaz(X + Width - 1);
	Glcd_komut_yaz(CASET);
	Glcd_veri_yaz(Y);
	Glcd_veri_yaz(Y + Height - 1);
	Glcd_komut_yaz(RAMWR);
	WriteRomDataToLCD(Bitmap + 5, ByteCount);
	Glcd_komut_yaz(NOOP);
	DeselectLCD();
}

static void spi_init(void)
{
	// Lcd giriş/çıkış pinlerini düzenler
	GLCD_CS_PORT|=_BV(LCD_CS);
	GLCD_CS_DDR|=_BV(LCD_CS);
	GLCD_RESET_PORT&=~_BV(LCD_RESET);
	GLCD_RESET_DDR|=_BV(LCD_RESET);
	GLCD_SPI_SDO_DDR|=_BV(SPI_SDO);
	GLCD_SPI_SCK_DDR|=_BV(SPI_SCK);

}

//
// Yazılımsal spi kullanarak glcdye 1 byte komut gönderir.
//		Enter:	data = komut
//
static void Glcd_komut_yaz(char data)
{
	// Lcd seçilir
	GLCD_CS_PORT&=~_BV(LCD_CS);
	// 9. biti lojik 0 yaparak komut byetı gönderir.
	GLCD_SPI_SDO_PORT&=~_BV(SPI_SDO);
	GLCD_SPI_SCK_PORT|=_BV(SPI_SCK);
	GLCD_SPI_SCK_PORT&=~_BV(SPI_SCK);
	spi_byte_gonder(data);
}

//
// Program hafızası içindeki veri dizisini glcdye gönderir.
//		Giriş:	RomData -> Gönderilmek istenen diznin işaretçisi
//				Count = Gönderilmek istenen byte sayısı
//
static void WriteRomDataToLCD( char *RomData, unsigned int Count)
{	unsigned int i;
	
	for (i = 0; i < Count; i++)
	{
		Glcd_veri_yaz(*RomData++);
	}
}

//
// Yazılımsal spi kullanarak glcdye 1 byte veri gönderir.
//		Enter:	data = veri
//
static void Glcd_veri_yaz(char data)
{
	// 9. biti lojik 1 yaparak veri byetı gönderir.
	GLCD_SPI_SDO_PORT|=_BV(SPI_SDO);
	GLCD_SPI_SCK_PORT|=_BV(SPI_SCK);
	GLCD_SPI_SCK_PORT&=~_BV(SPI_SCK);
	spi_byte_gonder(data);
}
// Msb first (Maksimum değerlikli bit ilk) olarak 1 byte bilgi yazılımsal spi kullanarak gödnerilir.
static void spi_byte_gonder (char spi_data){

	GLCD_SPI_SDO_PORT&=~_BV(SPI_SDO); //öncelikle data hattı lojik sıfır yapılır.
	if (spi_data & 0x80) GLCD_SPI_SDO_PORT|=_BV(SPI_SDO); //datanın 8.biti 1 ise data hattı lojik bir yapılır.
	GLCD_SPI_SCK_PORT|=_BV(SPI_SCK); GLCD_SPI_SCK_PORT&=~_BV(SPI_SCK); //saat sinyali gödnerilir.
	
	GLCD_SPI_SDO_PORT&=~_BV(SPI_SDO);	//öncelikle data hattı lojik sıfır yapılır.
	if (spi_data & 0x40) GLCD_SPI_SDO_PORT|=_BV(SPI_SDO); //datanın 7.biti 1 ise data hattı lojik bir yapılır.
	GLCD_SPI_SCK_PORT|=_BV(SPI_SCK); GLCD_SPI_SCK_PORT&=~_BV(SPI_SCK); //saat sinyali gödnerilir.
	
	GLCD_SPI_SDO_PORT&=~_BV(SPI_SDO); //öncelikle data hattı lojik sıfır yapılır.
	if (spi_data & 0x20) GLCD_SPI_SDO_PORT|=_BV(SPI_SDO); //datanın 6.biti 1 ise data hattı lojik bir yapılır.
	GLCD_SPI_SCK_PORT|=_BV(SPI_SCK); GLCD_SPI_SCK_PORT&=~_BV(SPI_SCK); //saat sinyali gödnerilir.
	
	GLCD_SPI_SDO_PORT&=~_BV(SPI_SDO); //öncelikle data hattı lojik sıfır yapılır.
	if (spi_data & 0x10) GLCD_SPI_SDO_PORT|=_BV(SPI_SDO);	//datanın 5.biti 1 ise data hattı lojik bir yapılır.
	GLCD_SPI_SCK_PORT|=_BV(SPI_SCK); GLCD_SPI_SCK_PORT&=~_BV(SPI_SCK); //saat sinyali gödnerilir.
	
	GLCD_SPI_SDO_PORT&=~_BV(SPI_SDO); //öncelikle data hattı lojik sıfır yapılır.
	if (spi_data & 0x08) GLCD_SPI_SDO_PORT|=_BV(SPI_SDO);  //datanın 4.biti 1 ise data hattı lojik bir yapılır.
	GLCD_SPI_SCK_PORT|=_BV(SPI_SCK); GLCD_SPI_SCK_PORT&=~_BV(SPI_SCK); //saat sinyali gödnerilir.
	
	GLCD_SPI_SDO_PORT&=~_BV(SPI_SDO); //öncelikle data hattı lojik sıfır yapılır.
	if (spi_data & 0x04) GLCD_SPI_SDO_PORT|=_BV(SPI_SDO); //datanın 3.biti 1 ise data hattı lojik bir yapılır.
	GLCD_SPI_SCK_PORT|=_BV(SPI_SCK); GLCD_SPI_SCK_PORT&=~_BV(SPI_SCK); //saat sinyali gödnerilir.
	
	GLCD_SPI_SDO_PORT&=~_BV(SPI_SDO); //öncelikle data hattı lojik sıfır yapılır.
	if (spi_data & 0x02) GLCD_SPI_SDO_PORT|=_BV(SPI_SDO); //datanın 2.biti 1 ise data hattı lojik bir yapılır.
	GLCD_SPI_SCK_PORT|=_BV(SPI_SCK); GLCD_SPI_SCK_PORT&=~_BV(SPI_SCK); //saat sinyali gödnerilir.
	
	GLCD_SPI_SDO_PORT&=~_BV(SPI_SDO); //öncelikle data hattı lojik sıfır yapılır.
	if (spi_data & 0x01) GLCD_SPI_SDO_PORT|=_BV(SPI_SDO); //datanın 1.biti 1 ise data hattı lojik bir yapılır.
	GLCD_SPI_SCK_PORT|=_BV(SPI_SCK); GLCD_SPI_SCK_PORT&=~_BV(SPI_SCK); //saat sinyali gödnerilir.
}

//
// Glcd bırak (komut gönderiminden sonra yapılmalı)
//
static void DeselectLCD(void)
{
	GLCD_CS_PORT|=_BV(LCD_CS);
}


mesaj birleştirme:: 14 Ocak 2015, 19:58:36

buda .h dosyası

/* ------------------------------------------------------------------------ */
/*							   Public constants				   				*/
/* ------------------------------------------------------------------------ */

//
// define the LCD's controller chip
//
#define LCD_CONTROLLER_PHILIPS_PCF8833 //Glcd sürücü entegre
#define GLCD_RESET_DDR		DDRD	// Glcd reset pini yönlendirme kaydedicisi
#define GLCD_RESET_PORT		PORTD	// Glcd reset pini portu
#define LCD_RESET PD0				// Glcd reset pini
#define GLCD_SPI_SDO_DDR		DDRD	// Glcd ser data pini yönlendirme kaydedicisi
#define GLCD_SPI_SDO_PORT		PORTD	// Glcd seri data pini portu
#define SPI_SDO PD1						// Glcd seri data pini
#define GLCD_SPI_SCK_DDR		DDRD	// Glcd saat sinyali pini yönlendirme kaydedicisi
#define GLCD_SPI_SCK_PORT		PORTD	// Glcd saat sinyali pini portu
#define SPI_SCK PD2						// Glcd saat sinyali pini
#define GLCD_CS_DDR		DDRD	// Glcd çip seçme pini yönlendirme kaydedicisi
#define GLCD_CS_PORT		PORTD // Glcd çip seçme pini portu
#define LCD_CS PD3						// Glcd çip seçme pini

//
// values for the Color Mode
//
#define LCD_COLOR_MODE_UNDEFINED 	0
#define LCD_COLOR_MODE_RGB12 		1
#define LCD_COLOR_MODE_RGB8 		2


#define LCD_WIDTH 132
#define LCD_HEIGHT 132


//
// drawing text modes
//
#define JUSTIFY_LEFT	0
#define JUSTIFY_CENTER	2
#define JUSTIFY_RIGHT	4


//
// RGB8 color definitions assuming the default color map
//
#define RGB8_WHITE 		0XFF
#define RGB8_BLACK 		0X00
#define RGB8_RED 		0XE0
#define RGB8_GREEN 		0X1C
#define RGB8_BLUE 		0X03
#define RGB8_YELLOW		0XFC
#define RGB8_PURPLE 	0XE3

#define RGB8_GRAY1 0b00100100			// darkest
#define RGB8_GRAY2 0b01001001
#define RGB8_GRAY3 0b01101101
#define RGB8_GRAY4 0b10010010
#define RGB8_GRAY5 0b10110110
#define RGB8_GRAY6 0b11011011			// lightest


#define RGB8_BLUE1 0b00000001			// darkest
#define RGB8_BLUE2 0b00000010	
#define RGB8_BLUE3 0b00000011	
#define RGB8_BLUE4 0b00100111
#define RGB8_BLUE5 0b01001011
#define RGB8_BLUE6 0b01101111
#define RGB8_BLUE7 0b10010011	
#define RGB8_BLUE8 0b10110111
#define RGB8_BLUE9 0b11011011			// lightest

#define RGB8_GREEN1 0b00001000			// darkest
#define RGB8_GREEN2 0b00001100	
#define RGB8_GREEN3 0b00010000	
#define RGB8_GREEN4 0b00110100
#define RGB8_GREEN5 0b01011000
#define RGB8_GREEN6 0b01111100
#define RGB8_GREEN7 0b01011101	
#define RGB8_GREEN8 0b10011110
#define RGB8_GREEN9 0b11011111			// lightest


//
// RGB12 color definitions assuming the default color map
//
#define RGB12_WHITE 	0XFFF
#define RGB12_BLACK 	0X000
#define RGB12_RED 		0XF00
#define RGB12_GREEN 	0X0F0
#define RGB12_BLUE 		0X00F
#define RGB12_YELLOW	0XFF2
#define RGB12_PURPLE 	0XE0E


/* ------------------------------------------------------------------------ */
/*						  Genel fonksiyon tanımlamaları 		 			*/
/* ------------------------------------------------------------------------ */

void LCDDriverInitialize(char ColorMode);
void LCDSelectColorMode(char, char *);
void Glcd_temizle(void);
void Kontrast_ayarla(char);
void Pixel_yaz_RGB8(char, char, char);
void ici_dolu_dortgen_ciz_RGB8(char, char, char, char, char);
void DrawHorzGradientRGB8(char *, char, char, char, char);
void cizgi_ciz_RGB8(int, int, int, int, char);
void ici_bos_cember_ciz_RGB8(int, int, int, char);
void lcd_yazi_yaz8(const char *,char,char,char,char);
void karakter_yaz8(char,char,char,char,char);
void ici_dolu_dortgen_ciz_RGB212(char, char, char, char, int);
void resim_ciz_RGB12( char *, char, char);


/* --------------------------- End of LCDDriver.h ------------------------- */

RaMu

#4
Kullanman gereken program fotosu aşağıda;
lcd bitmap and font creator,
küçük bir program;
yukarıdaki kodları ccsc ye uyarlayıp
aşağıdaki programı kullanarak foto basmıştım
isiste ve gerçek devrede;
fotonun altında örnek bir fotoda paylaşıyorum
koduna ekleyip direk deneyebilirsin;



//
// Image:  gul_1
//     Data is packed with 1 pixel in 1 byte, beginning with the upper left pixel
//     Byte0 = Bitmap type: 1 = RGB12, 2 = RGB8
//     Byte1 = Image width (1 - 130)
//     Byte2 = Image height (1 - 130)
//     Byte3 = Byte count of image (low byte) (excluding this 5 byte header)
//     Byte4 = Byte count of image (high byte) (excluding this 5 byte header)
//     Byte5 = rrrgggbb pixel 1, (x = 0, y = 0)
//     Byte6 = rrrgggbb pixel 2, (x = 0, y = 1)
//     ...   = remaining pixel data
//
rom char gul_1[] = {
   0x02, 0x24, 0x50, 0x40, 0x0B, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xDB, 0xFB, 0xFB, 0xFB, 
   0xDB, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xDA, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xDB, 0xFB, 0xFB, 0xDB, 0xDB, 0xDB, 0xD7, 0xD7, 0xDB, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x48, 0x6C, 0x71, 0xDA, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0x49, 0x4D, 0x04, 0xB6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xDB, 0xFB, 
   0xFB, 0xFB, 0xFB, 0xFF, 0xFF, 0xFF, 0xFB, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0x71, 0x48, 0x28, 0x4C, 0x48, 0xDA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x49, 0x00, 0x00, 0x28, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xD6, 0xD7, 0xD2, 0xFB, 0xFB, 0xFB, 0xDB, 
   0xD7, 0xFB, 0xFB, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x95, 0x6C, 0x6C, 
   0x48, 0x48, 0x71, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xDB, 0xFF, 0xFF, 
   0xFF, 0xFF, 0x92, 0x00, 0x24, 0x00, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xD7, 
   0xD6, 0xD6, 0xD2, 0xD2, 0xAE, 0xD2, 0xD6, 0xD6, 0xD6, 0xD6, 0xD7, 0xDB, 
   0xFB, 0xDA, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x4C, 0x6C, 0x4C, 0x48, 0x48, 0xDA, 
   0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x04, 0x49, 0x96, 0xFF, 0xFF, 0xB6, 0x04, 
   0x04, 0x04, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xAE, 0xB2, 0xD2, 0xD2, 0xD6, 0xF7, 0xF7, 
   0xF6, 0xAD, 0xCD, 0xF6, 0xF7, 0xD6, 0xAE, 0xB2, 0xD6, 0xD6, 0xD6, 0xB6, 
   0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0x6D, 0x6C, 0x4C, 0x4C, 0x48, 0x48, 0x96, 0xB6, 0xB6, 0x91, 
   0x24, 0x4C, 0x48, 0x00, 0x28, 0xFF, 0xDB, 0x00, 0x24, 0x24, 0xDA, 0xFF, 
   0xDB, 0x91, 0x4D, 0x4C, 0x48, 0x48, 0x28, 0x28, 0x48, 0x28, 0x24, 0x28, 
   0x24, 0x24, 0x28, 0x49, 0xB6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xB2, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF2, 0xCE, 0xCD, 0xF2, 0xCD, 0x89, 
   0xB2, 0xF7, 0xFB, 0xD6, 0xB2, 0xB6, 0xB6, 0xB6, 0xB6, 0xFF, 0xDB, 0xDB, 
   0xFF, 0xFF, 0xFF, 0x91, 0xDF, 0x6D, 0x6D, 0x6D, 0x69, 0x48, 0x28, 0x4C, 
   0x4C, 0x4C, 0x6C, 0x4C, 0x48, 0xFF, 0xDA, 0x6D, 0x71, 0x28, 0x4C, 0x24, 
   0x24, 0x6D, 0xDA, 0x28, 0x71, 0x48, 0x48, 0x24, 0x24, 0x6D, 0x91, 0x28, 
   0x24, 0xB6, 0xDA, 0xBA, 0xB6, 0xDB, 0x92, 0x96, 0x92, 0x92, 0x91, 0x4D, 
   0x00, 0x00, 0x00, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xF7, 0xD2, 0xF7, 
   0xF6, 0xF2, 0xF2, 0xF2, 0xD2, 0xD6, 0xF6, 0xD6, 0xB2, 0xD2, 0xFB, 0xFB, 
   0xD7, 0xD6, 0xD6, 0xD6, 0xD6, 0xFB, 0xD7, 0xDB, 0xDE, 0xDA, 0xB5, 0x4C, 
   0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x48, 0x4C, 0x4C, 0x4C, 0x4C, 0x71, 
   0x48, 0x91, 0xFF, 0x24, 0x71, 0x24, 0x4C, 0x48, 0x48, 0x48, 0x4D, 0x48, 
   0x24, 0x24, 0x6D, 0xFF, 0xFF, 0xFF, 0x71, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x6D, 
   0xFF, 0xFF, 0xFF, 0xFB, 0xB2, 0xD2, 0xD2, 0xF2, 0xCE, 0xA9, 0x85, 0xCE, 
   0xFB, 0xFB, 0xF6, 0xFB, 0xFB, 0xD6, 0xD6, 0xFB, 0xFB, 0xD7, 0xD6, 0xD6, 
   0xFB, 0xFB, 0xD2, 0xD6, 0x91, 0x70, 0x90, 0x94, 0x95, 0x71, 0x6C, 0x48, 
   0x91, 0xDA, 0x91, 0x6C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x91, 0xB6, 0x28, 
   0x6D, 0x48, 0x28, 0x28, 0x24, 0x00, 0x6D, 0x71, 0x00, 0x00, 0x48, 0xFF, 
   0xDF, 0x6D, 0x00, 0x04, 0x28, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 
   0xF2, 0xCE, 0xCE, 0xD2, 0xF2, 0xF2, 0xF2, 0xF6, 0xD2, 0xFB, 0xF6, 0xF7, 
   0xFB, 0xF6, 0xD6, 0xD6, 0xFF, 0xFB, 0xD6, 0xF6, 0xD6, 0xFB, 0xCE, 0xAD, 
   0xB5, 0xB5, 0x90, 0x94, 0x90, 0x70, 0x6C, 0x4C, 0x91, 0x95, 0x4C, 0x4C, 
   0x4C, 0x4C, 0x4C, 0x6C, 0x6D, 0x28, 0x28, 0x91, 0x24, 0x04, 0x00, 0x00, 
   0x00, 0x28, 0x28, 0xDB, 0x00, 0xB6, 0xDB, 0x71, 0x48, 0x00, 0x00, 0x24, 
   0x24, 0x6D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xF6, 0xCE, 0xCE, 0xF2, 0xD2, 
   0xD2, 0xF2, 0xD2, 0xF7, 0xFB, 0xD6, 0xFB, 0xF7, 0xF6, 0xFB, 0xFB, 0xD6, 
   0xFB, 0xD7, 0xD6, 0xF6, 0xD6, 0xF6, 0xCE, 0xA9, 0xB1, 0xB1, 0x90, 0x90, 
   0x90, 0xB5, 0xFE, 0x91, 0x95, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x48, 0x4C, 
   0x71, 0x6D, 0x6D, 0x48, 0x00, 0x00, 0x00, 0x24, 0x29, 0x29, 0x24, 0xDF, 
   0xFF, 0xFF, 0xBA, 0x71, 0x6D, 0x00, 0x04, 0x24, 0x24, 0x28, 0xDB, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFB, 0xD6, 0xD2, 0xF7, 0xFB, 0xFB, 0xD2, 0xAD, 0xD2, 0xFB, 
   0xFB, 0xFB, 0xF7, 0xF7, 0xF7, 0xF7, 0xFB, 0xFB, 0xD6, 0xD6, 0xD6, 0xF6, 
   0xD6, 0xD2, 0xF2, 0xA9, 0x8D, 0x91, 0x91, 0x90, 0x6C, 0xDE, 0xFF, 0xFF, 
   0x95, 0x4C, 0x4C, 0x4C, 0x4C, 0x48, 0x4C, 0x48, 0x48, 0xBA, 0x91, 0x00, 
   0x00, 0x24, 0x24, 0x24, 0x24, 0x29, 0x24, 0xDF, 0xFF, 0xB6, 0x4D, 0x6D, 
   0x24, 0x04, 0x04, 0x24, 0x28, 0x04, 0xB6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xD6, 
   0xFB, 0xFB, 0xF7, 0xD2, 0xF2, 0xFB, 0xFB, 0xFB, 0xF7, 0xFB, 0xF7, 0xF7, 
   0xFB, 0xF7, 0xFB, 0xFB, 0xD6, 0xD6, 0xF6, 0xF6, 0xF6, 0xD1, 0xF2, 0xD2, 
   0x89, 0xB6, 0xB5, 0x91, 0x91, 0xDA, 0x92, 0x49, 0x28, 0x4C, 0x48, 0x4C, 
   0x48, 0x48, 0x48, 0x48, 0x4C, 0xDA, 0x6D, 0x00, 0x04, 0x28, 0x49, 0x49, 
   0x24, 0x04, 0x6D, 0xFF, 0xB6, 0x4D, 0x48, 0x24, 0x00, 0x04, 0x28, 0x28, 
   0x28, 0x04, 0x6D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xD6, 0xFB, 0xF7, 0xF2, 0xC9, 
   0x80, 0x80, 0xD2, 0xFB, 0xFB, 0xFB, 0xF7, 0xF7, 0xFB, 0xF7, 0xFB, 0xFB, 
   0xFB, 0xD6, 0xF6, 0xF6, 0xF6, 0xD6, 0xD2, 0x64, 0xD6, 0xB6, 0xB6, 0x28, 
   0x04, 0x24, 0x24, 0x91, 0xB6, 0x48, 0x4C, 0x4C, 0x48, 0x28, 0x48, 0x6C, 
   0x4C, 0xBA, 0x6D, 0x00, 0x24, 0x24, 0x24, 0x28, 0x28, 0x24, 0x6D, 0x91, 
   0x48, 0x04, 0x00, 0x24, 0x24, 0x49, 0x49, 0x29, 0x28, 0x04, 0x04, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFB, 0xD6, 0xFB, 0xD2, 0xCE, 0xC9, 0xC9, 0xF2, 0xF6, 0xF6, 
   0xFB, 0xFB, 0xFB, 0xD6, 0xF7, 0xF7, 0xF6, 0xFB, 0xFB, 0xF6, 0xD2, 0xF6, 
   0xF6, 0xD2, 0xF6, 0x88, 0xB2, 0xD6, 0x91, 0x24, 0x6D, 0xDE, 0xFF, 0xFF, 
   0x48, 0x48, 0x4C, 0x48, 0x28, 0x48, 0x4C, 0x4C, 0x48, 0xDA, 0xDA, 0x6D, 
   0x24, 0x04, 0x04, 0x24, 0x48, 0x6D, 0x48, 0xBA, 0x24, 0x24, 0x28, 0x29, 
   0x49, 0x49, 0x29, 0x29, 0x49, 0x49, 0x00, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xF7, 
   0xF7, 0xF6, 0xF2, 0xF2, 0xFB, 0xFB, 0xFB, 0xFB, 0xF7, 0xF7, 0xFB, 0xFB, 
   0xD6, 0xF7, 0xD6, 0xF6, 0xFB, 0xF7, 0xD6, 0xD2, 0xF6, 0xD6, 0xD6, 0x89, 
   0x8D, 0xD2, 0xB1, 0x91, 0xB5, 0xFE, 0xFF, 0x96, 0x4C, 0x4C, 0x48, 0x24, 
   0x48, 0x4C, 0x4C, 0x28, 0xDA, 0xFF, 0x71, 0x49, 0x04, 0x04, 0x04, 0x04, 
   0x24, 0x48, 0xBA, 0xBA, 0x00, 0x28, 0x28, 0x29, 0x49, 0x29, 0x29, 0x29, 
   0x4D, 0x4D, 0x29, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xFB, 0xF7, 0xF2, 0xAD, 0xCE, 
   0xFB, 0xFB, 0xFB, 0xF7, 0xF7, 0xF7, 0xFB, 0xFB, 0xD6, 0xFB, 0xFB, 0xF6, 
   0xF7, 0xFB, 0xFB, 0xFB, 0xD6, 0xD2, 0xD2, 0xAD, 0x64, 0xB2, 0xB1, 0x91, 
   0x91, 0x91, 0xDA, 0x71, 0x6D, 0x48, 0x24, 0x28, 0x4C, 0x48, 0x6D, 0xBA, 
   0x28, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x00, 0x24, 0xFF, 0x4D, 
   0x24, 0x28, 0x28, 0x28, 0x49, 0x29, 0x29, 0x28, 0x24, 0x28, 0x49, 0x24, 
   0x71, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xDB, 0xFB, 0xF6, 0xD2, 0xF2, 0x85, 0x84, 0xFB, 0xF7, 0xF7, 
   0xFB, 0xFB, 0xF7, 0xFB, 0xF7, 0xFB, 0xFB, 0xD6, 0xF7, 0xF7, 0xFB, 0xFB, 
   0xFB, 0xF6, 0xD1, 0x84, 0x60, 0xCD, 0xB1, 0x91, 0x95, 0x70, 0x6C, 0x6C, 
   0x6C, 0x24, 0x48, 0x6C, 0x48, 0x91, 0x96, 0x00, 0x00, 0x00, 0x04, 0x04, 
   0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xDA, 0x92, 0x04, 0x49, 0x49, 0x49, 
   0x28, 0x29, 0x28, 0x4D, 0x4D, 0x49, 0x28, 0x28, 0x00, 0xB6, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xFB, 
   0xD6, 0xF6, 0xF6, 0xCD, 0xD2, 0xD2, 0xF6, 0xF7, 0xFB, 0xFB, 0xF7, 0xF7, 
   0xFB, 0xFB, 0xF7, 0xD6, 0xF6, 0xF7, 0xFB, 0xFB, 0xFB, 0xFF, 0xAD, 0x60, 
   0x84, 0xAD, 0xB2, 0x91, 0x95, 0x70, 0x6C, 0x6C, 0x6D, 0x48, 0x91, 0x71, 
   0xDA, 0xDF, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 
   0x00, 0x28, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 
   0x24, 0x28, 0x04, 0x00, 0x00, 0x4D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xD6, 0xF6, 0xF7, 0xF6, 0xFB, 
   0xF6, 0xF6, 0xD6, 0xF7, 0xF7, 0xFB, 0xFB, 0xF6, 0xF7, 0xD6, 0xD2, 0xD2, 
   0xF6, 0xFB, 0xF7, 0xFB, 0xFF, 0xFA, 0x84, 0x84, 0xA5, 0xA9, 0xAD, 0x8D, 
   0x95, 0x70, 0x6C, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x24, 0x00, 0x00, 
   0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x49, 0xFF, 0xFF, 
   0xDB, 0x24, 0x00, 0x29, 0x24, 0x28, 0x28, 0x28, 0x24, 0x04, 0x04, 0x00, 
   0x24, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xD6, 0xFB, 0xFB, 0xF6, 0xD2, 0xFB, 0xFB, 0xF6, 0xD2, 
   0xF7, 0xFB, 0xFB, 0xF6, 0xF7, 0xD6, 0xD2, 0xD2, 0xF7, 0xF6, 0xFB, 0xFB, 
   0xD2, 0x89, 0xA8, 0xA4, 0xA5, 0xA9, 0xA9, 0x89, 0x8C, 0x6C, 0x6C, 0x28, 
   0xB6, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 
   0x04, 0x04, 0x04, 0x00, 0x00, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF, 0x4D, 0x04, 
   0x28, 0x49, 0x28, 0x24, 0x00, 0x00, 0x00, 0x49, 0x6D, 0xDB, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 
   0xF7, 0xF7, 0xF6, 0xF7, 0xF7, 0xF7, 0xFB, 0xD6, 0xF6, 0xF7, 0xFB, 0xF7, 
   0xF6, 0xF6, 0xF7, 0xD6, 0xF7, 0xF6, 0xD6, 0xAD, 0xA9, 0xD1, 0xA9, 0xA4, 
   0xA9, 0x84, 0x89, 0xAD, 0xFF, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 
   0x00, 0x00, 0x00, 0x04, 0x24, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 
   0x92, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0x6D, 0x49, 0x49, 
   0x71, 0x96, 0xB6, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xFB, 0xF7, 0xF6, 0xD6, 
   0xF7, 0xFB, 0xFB, 0xD6, 0xF6, 0xF6, 0xFB, 0xF7, 0xD6, 0xF6, 0xFB, 0xF6, 
   0xD6, 0xD2, 0xD2, 0xF2, 0xF6, 0xCD, 0xA9, 0xA9, 0xA5, 0x85, 0x89, 0xD6, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x00, 0x04, 0x04, 0x24, 
   0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x6D, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xD7, 0xFB, 0xFB, 0xF6, 0xD2, 0xCE, 0xF2, 0xFB, 0xF6, 
   0xF6, 0xF6, 0xFB, 0xF6, 0xF6, 0xF6, 0xFB, 0xF7, 0xD2, 0xF6, 0xF6, 0xF6, 
   0xF2, 0xA9, 0xC9, 0xA4, 0xA4, 0xA9, 0x89, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x24, 0x04, 0x00, 0x04, 0x04, 0x04, 
   0x00, 0x6D, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 
   0xD7, 0xFB, 0xFB, 0xF6, 0xCE, 0xD2, 0xD2, 0xF2, 0xF6, 0xCE, 0xF6, 0xF6, 
   0xF6, 0xD2, 0xF7, 0xFB, 0xD6, 0xF6, 0xF6, 0xF2, 0xCD, 0x80, 0xA9, 0x84, 
   0xA5, 0xA9, 0x8D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 
   0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0xDB, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xD7, 0xFB, 0xFB, 
   0xF6, 0xF2, 0xD2, 0xF6, 0xF2, 0xAD, 0xD2, 0xF7, 0xF6, 0xD2, 0xF7, 0xD6, 
   0xD2, 0xF6, 0xD2, 0xF2, 0xC9, 0xA4, 0x80, 0x84, 0xA9, 0xAD, 0xD6, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x04, 0x04, 0x04, 
   0x00, 0x00, 0x24, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xD6, 0xFB, 0xFB, 0xFB, 0xF6, 0xAD, 
   0xCD, 0xCD, 0xAD, 0xFB, 0xF6, 0xD2, 0xFB, 0xF6, 0xD2, 0xF2, 0xD2, 0xCE, 
   0x84, 0x84, 0x84, 0x88, 0xA9, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x04, 0x04, 0x00, 0x24, 0xB6, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xD6, 0xFB, 0xFB, 0xF7, 0xD2, 0xFB, 0xED, 0x60, 0xD2, 0xFB, 
   0xF2, 0xAD, 0xF7, 0xD2, 0xD2, 0xD2, 0xAD, 0x89, 0x88, 0xA8, 0x88, 0xA9, 
   0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x49, 
   0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xD6, 
   0xF7, 0xD6, 0xFB, 0xF6, 0x60, 0xEE, 0xFB, 0xF6, 0xCD, 0xAD, 0xD2, 0xAD, 
   0xAD, 0x89, 0x89, 0xD2, 0xD6, 0x68, 0x88, 0xB1, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x4D, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0xD6, 0xF6, 0xD2, 0x85, 
   0xEE, 0xF6, 0xF2, 0xCE, 0xAD, 0xD1, 0xD1, 0xA9, 0x89, 0xB2, 0xFB, 0xFF, 
   0xF6, 0x64, 0x8D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0x49, 0x92, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xAE, 0xD2, 0xCD, 0xCE, 0xCE, 0xCE, 0xA9, 
   0xAD, 0xD2, 0x89, 0xAD, 0xF6, 0xFB, 0xFB, 0xD6, 0xD2, 0x8D, 0xD6, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFB, 0xD2, 0xD2, 0xAE, 0xAD, 0xAD, 0xAE, 0xF6, 0xB2, 0xB2, 0xFB, 
   0xFF, 0xFB, 0xD6, 0xD6, 0xD6, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFB, 0xD6, 0xF6, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xD6, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xD6, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
   0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};


mesaj birleştirme:: 14 Ocak 2015, 20:27:19

Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

berkay_91

#5
teşekkürler dediklerinizi deniycem

mesaj birleştirme:: 14 Ocak 2015, 21:36:22

program çıkmıyor gönderebilir misiniz? be.turgay@gmail.com

berkay_91

mrb, nokia 6610 da resim basmak için kullandığınız loop u gönderebilirmisiniz

RaMu

Font programını 320volt dan indirmiştim sanırım,
aşağıdaki konularda örnek kodlarla beraber program var
(kodlar microchip c18 ile yazılmış)
https://320volt.com/en/pic18f2620-nokia-6100-lcd-menu-arayuz-uygulamasi-microchip-c18/
http://entegremerkezi.com/pic18f2620-nokia-6100-lcd-menu-arayuz-uygulamasi-microchip-c18/

Ben kodları CcsC ye uyarlamıştım,
birebir verdiğim resim dosyası
atmel için uygun olmayabilir
düzenleme yapmak gerekebilir,
yine kodu çevirirken bazı düzenlemeler yapmıştım
tam olarak neleri değiştirdiğimi hatırlamıyorum ama
koda not düşerim genelde.

CcsC için kod şu şekilde oldu en son;
http://www.mediafire.com/download/1537o8xp5g4pthe/Nokia_6100_7_18F2550_BitMap.rar

Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Murat Mert

S.A.
Sn. RaMu dosyanın şifresi nedir acaba?
www.picproje.org, picproje.org, RaMu denemeleri yaptım olmadı.
mert07

RaMu

Alıntı yapılan: mert07 - 20 Ocak 2015, 10:48:00
S.A.
Sn. RaMu dosyanın şifresi nedir acaba?
www.picproje.org, picproje.org, RaMu denemeleri yaptım olmadı.

Kusura bakmayın yazmayı unutmuşum,
dosyanın şifresi> ucanel
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Murat Mert

S.A.
Sn. RaMu bu LCD lerden Türkiyede temin edebiliyormusunuz?
mert07

RaMu

Hocam ben eski telefonlardan sökmüştüm,
birkaç (bence en azından 4-5) model telefonda bu ekran var.
Öğrenmek amaçlı uğraştığım için seri temin edebilirmiyim kısmını araştırmadım.

Ekranın çalışma mantığını öğrenmek açısından bana faydası oldu,
kanaitim şu oldu;
projelerimizde gerekecek küçüklü büyüklü 4-5 boyut belirleyip,
ucuz ve bol bulunan, temini kolay,
herhangibir (arduino sudur, atmel idir, pic idir) örneği olan,
mümkünse spi i2c gibi az pin kullanan seri arayüzlü,
renkli lcdler gözümüze kestirip
kullandığımız dil(-ler) ve derleyici(-ler) için çalıştırıp kenarda bulundurmak,
daha sonraki projelerimizde gerekli olanı, işimize yarayanı direk kullanmak.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Murat Mert

hocam seri olarak temin değildi. Deneme amaçlı kullanmak için. Bakalım, eski bir telefon bakacağım artık çünkü Türkiye de 3310-5110 seti gibi satan yok. Teşekkürler kolay gelsin.
mert07