unsigned long GetFontData(char ch, char x) { switch(curr_font) { case SMALL_FONT: return small_font[LCD_Font(ch)][x]; case BIG_FONT: return big_font[LCD_Font(ch)][x];; } }
void LCD_Init(void) { u32 lcdid=0; LCD_LineConf(); LCD_FSMCConf(); delay_ms(5); lcdid=LCD_ReadReg(0x00); if(lcdid == 0x9320) { LCD_WriteReg(0xE5,0x8000); LCD_WriteReg(0x00,0x0001); LCD_WriteReg(0x01,0x0100); LCD_WriteReg(0x02,0x0700); LCD_WriteReg(0x03,0x1030); LCD_WriteReg(0x04,0x0000); LCD_WriteReg(0x08,0x0202); LCD_WriteReg(0x09,0x0000); LCD_WriteReg(0x0A,0x0000); LCD_WriteReg(0x0B,0x0000); LCD_WriteReg(0x0C,0x0000); LCD_WriteReg(0x0F,0x0000); LCD_WriteReg(0x10,0x0000); LCD_WriteReg(0x11,0x0000); LCD_WriteReg(0x12,0x0000); LCD_WriteReg(0x13,0x0000); delay_ms(20); LCD_WriteReg(0x10,0x17B0); LCD_WriteReg(0x11,0x0137); delay_ms(5); LCD_WriteReg(0x12,0x0139); delay_ms(5); LCD_WriteReg(0x13,0x1d00); LCD_WriteReg(0x29,0x0013); delay_ms(5); LCD_WriteReg(0x20,0x0000); LCD_WriteReg(0x21,0x0000); LCD_WriteReg(0x30,0x0006); LCD_WriteReg(0x31,0x0101); LCD_WriteReg(0x32,0x0003); LCD_WriteReg(0x35,0x0106); LCD_WriteReg(0x36,0x0b02); LCD_WriteReg(0x37,0x0302); LCD_WriteReg(0x38,0x0707); LCD_WriteReg(0x39,0x0007); LCD_WriteReg(0x3C,0x0600); LCD_WriteReg(0x3D,0x020b); LCD_WriteReg(0x50,0x0000); LCD_WriteReg(0x51,0x00EF); LCD_WriteReg(0x52,0x0000); LCD_WriteReg(0x53,0x013F); LCD_WriteReg(0x60,0x2700); LCD_WriteReg(0x61,0x0001); LCD_WriteReg(0x6A,0x0000); LCD_WriteReg(0x80,0x0000); LCD_WriteReg(0x81,0x0000); LCD_WriteReg(0x82,0x0000); LCD_WriteReg(0x83,0x0000); LCD_WriteReg(0x84,0x0000); LCD_WriteReg(0x85,0x0000); LCD_WriteReg(0x90,0x0010); LCD_WriteReg(0x92,0x0000); LCD_WriteReg(0x93,0x0003); LCD_WriteReg(0x95,0x0110); LCD_WriteReg(0x97,0x0000); LCD_WriteReg(0x98,0x0000); LCD_WriteReg(0x03,0x1018); LCD_WriteReg(0x07,0x0173); } else if(lcdid == 0x9325) { LCD_WriteReg(0x00,0x0001); LCD_WriteReg(0x01,0x0100); LCD_WriteReg(0x02,0x0700); LCD_WriteReg(0x03,0x1018); LCD_WriteReg(0x04,0x0000); LCD_WriteReg(0x08,0x0202); LCD_WriteReg(0x09,0x0000); LCD_WriteReg(0x0A,0x0000); LCD_WriteReg(0x0C,0x0000); LCD_WriteReg(0x0D,0x0000); LCD_WriteReg(0x0F,0x0000); LCD_WriteReg(0x10,0x0000); LCD_WriteReg(0x11,0x0000); LCD_WriteReg(0x12,0x0000); LCD_WriteReg(0x13,0x0000); delay_ms(20); LCD_WriteReg(0x10,0x17B0); LCD_WriteReg(0x11,0x0137); delay_ms(5); LCD_WriteReg(0x12,0x0139); delay_ms(5); LCD_WriteReg(0x13,0x1d00); LCD_WriteReg(0x29,0x0013); delay_ms(5); LCD_WriteReg(0x20,0x0000); LCD_WriteReg(0x21,0x0000); LCD_WriteReg(0x30,0x0007); LCD_WriteReg(0x31,0x0302); LCD_WriteReg(0x32,0x0105); LCD_WriteReg(0x35,0x0206); LCD_WriteReg(0x36,0x0808); LCD_WriteReg(0x37,0x0206); LCD_WriteReg(0x38,0x0504); LCD_WriteReg(0x39,0x0007); LCD_WriteReg(0x3C,0x0105); LCD_WriteReg(0x3D,0x0808); LCD_WriteReg(0x50,0x0000); LCD_WriteReg(0x51,0x00EF); LCD_WriteReg(0x52,0x0000); LCD_WriteReg(0x53,0x013F); LCD_WriteReg(0x60,0xA700); LCD_WriteReg(0x61,0x0001); LCD_WriteReg(0x6A,0x0000); LCD_WriteReg(0x80,0x0000); LCD_WriteReg(0x81,0x0000); LCD_WriteReg(0x82,0x0000); LCD_WriteReg(0x83,0x0000); LCD_WriteReg(0x84,0x0000); LCD_WriteReg(0x85,0x0000); LCD_WriteReg(0x90,0x0010); LCD_WriteReg(0x92,0x0000); LCD_WriteReg(0x93,0x0003); LCD_WriteReg(0x95,0x0110); LCD_WriteReg(0x97,0x0000); LCD_WriteReg(0x98,0x0000); LCD_WriteReg(0x03,0x1018); LCD_WriteReg(0x07,0x0133); } else if(lcdid==0x4531) { LCD_WriteReg(0x00,0x0001); LCD_WriteReg(0x10,0x0628); LCD_WriteReg(0x12,0x0006); LCD_WriteReg(0x13,0x0A32); LCD_WriteReg(0x11,0x0040); LCD_WriteReg(0x15,0x0050); LCD_WriteReg(0x12,0x0016); delay_ms(15); LCD_WriteReg(0x10,0x5660); delay_ms(15); LCD_WriteReg(0x13,0x2A4E); LCD_WriteReg(0x01,0x0100); LCD_WriteReg(0x02,0x0300); LCD_WriteReg(0x03,0x1018); LCD_WriteReg(0x08,0x0202); LCD_WriteReg(0x0A,0x0000); LCD_WriteReg(0x30,0x0000); LCD_WriteReg(0x31,0x0402); LCD_WriteReg(0x32,0x0106); LCD_WriteReg(0x33,0x0700); LCD_WriteReg(0x34,0x0104); LCD_WriteReg(0x35,0x0301); LCD_WriteReg(0x36,0x0707); LCD_WriteReg(0x37,0x0305); LCD_WriteReg(0x38,0x0208); LCD_WriteReg(0x39,0x0F0B); delay_ms(15); LCD_WriteReg(0x41,0x0002); LCD_WriteReg(0x60,0x2700); LCD_WriteReg(0x61,0x0001); LCD_WriteReg(0x90,0x0119); LCD_WriteReg(0x92,0x010A); LCD_WriteReg(0x93,0x0004); LCD_WriteReg(0xA0,0x0100); delay_ms(15); delay_ms(15); LCD_WriteReg(0x07,0x0133); delay_ms(15); LCD_WriteReg(0xA0,0x0000); delay_ms(20); } LCD_Clear(BLUE); LCD_Font(&Font16x24); LCD_Mode(4); }
void LCD_Init(void) { u32 lcdid=0; LCD_LineConf(); LCD_FSMCConf(); delay_ms(5); lcdid=LCD_ReadReg(0x00); if(lcdid == 0x9328) { LCD_WriteReg(0x00e7,0x0010); LCD_WriteReg(0x0000,0x0001); //start internal osc LCD_WriteReg(0x0001,0x0100); LCD_WriteReg(0x0002,0x0700); //power on sequence LCD_WriteReg(0x0003,(1<<12)|(1<<5)|(1<<4) ); //65K LCD_WriteReg(0x0004,0x0000); LCD_WriteReg(0x0008,0x0207); LCD_WriteReg(0x0009,0x0000); LCD_WriteReg(0x000a,0x0000); //display setting LCD_WriteReg(0x000c,0x0001); //display setting LCD_WriteReg(0x000d,0x0000); //0f3c LCD_WriteReg(0x000f,0x0000); //Power On sequence // LCD_WriteReg(0x0010,0x0000); LCD_WriteReg(0x0011,0x0007); LCD_WriteReg(0x0012,0x0000); LCD_WriteReg(0x0013,0x0000); delay_ms(40); LCD_WriteReg(0x0010,0x1590); LCD_WriteReg(0x0011,0x0227); delay_ms(40); LCD_WriteReg(0x0012,0x009c); delay_ms(40); LCD_WriteReg(0x0013,0x1900); LCD_WriteReg(0x0029,0x0023); LCD_WriteReg(0x002b,0x000e); delay_ms(40); LCD_WriteReg(0x0020,0x0000); LCD_WriteReg(0x0021,0x0000); /////////////////////////////////////////////////////// delay_ms(40); LCD_WriteReg(0x0030,0x0007); LCD_WriteReg(0x0031,0x0707); LCD_WriteReg(0x0032,0x0006); LCD_WriteReg(0x0035,0x0704); LCD_WriteReg(0x0036,0x1f04); LCD_WriteReg(0x0037,0x0004); LCD_WriteReg(0x0038,0x0000); LCD_WriteReg(0x0039,0x0706); LCD_WriteReg(0x003c,0x0701); LCD_WriteReg(0x003d,0x000f); delay_ms(40); LCD_WriteReg(0x0050,0x0000); LCD_WriteReg(0x0051,0x00ef); LCD_WriteReg(0x0052,0x0000); LCD_WriteReg(0x0053,0x013f); LCD_WriteReg(0x0060,0xa700); LCD_WriteReg(0x0061,0x0001); LCD_WriteReg(0x006a,0x0000); LCD_WriteReg(0x0080,0x0000); LCD_WriteReg(0x0081,0x0000); LCD_WriteReg(0x0082,0x0000); LCD_WriteReg(0x0083,0x0000); LCD_WriteReg(0x0084,0x0000); LCD_WriteReg(0x0085,0x0000); LCD_WriteReg(0x0090,0x0010); LCD_WriteReg(0x0092,0x0000); LCD_WriteReg(0x0093,0x0003); LCD_WriteReg(0x0095,0x0110); LCD_WriteReg(0x0097,0x0000); LCD_WriteReg(0x0098,0x0000); //display on sequence LCD_WriteReg(0x0007,0x0133); LCD_WriteReg(0x0020,0x0000); LCD_WriteReg(0x0021,0x0000); } else if(lcdid == 0x9325) { LCD_WriteReg(0x00,0x0001); LCD_WriteReg(0x01,0x0100); LCD_WriteReg(0x02,0x0700); LCD_WriteReg(0x03,0x1018); LCD_WriteReg(0x04,0x0000); LCD_WriteReg(0x08,0x0202); LCD_WriteReg(0x09,0x0000); LCD_WriteReg(0x0A,0x0000); LCD_WriteReg(0x0C,0x0000); LCD_WriteReg(0x0D,0x0000); LCD_WriteReg(0x0F,0x0000); LCD_WriteReg(0x10,0x0000); LCD_WriteReg(0x11,0x0000); LCD_WriteReg(0x12,0x0000); LCD_WriteReg(0x13,0x0000); delay_ms(20); LCD_WriteReg(0x10,0x17B0); LCD_WriteReg(0x11,0x0137); delay_ms(5); LCD_WriteReg(0x12,0x0139); delay_ms(5); LCD_WriteReg(0x13,0x1d00); LCD_WriteReg(0x29,0x0013); delay_ms(5); LCD_WriteReg(0x20,0x0000); LCD_WriteReg(0x21,0x0000); LCD_WriteReg(0x30,0x0007); LCD_WriteReg(0x31,0x0302); LCD_WriteReg(0x32,0x0105); LCD_WriteReg(0x35,0x0206); LCD_WriteReg(0x36,0x0808); LCD_WriteReg(0x37,0x0206); LCD_WriteReg(0x38,0x0504); LCD_WriteReg(0x39,0x0007); LCD_WriteReg(0x3C,0x0105); LCD_WriteReg(0x3D,0x0808); LCD_WriteReg(0x50,0x0000); LCD_WriteReg(0x51,0x00EF); LCD_WriteReg(0x52,0x0000); LCD_WriteReg(0x53,0x013F); LCD_WriteReg(0x60,0xA700); LCD_WriteReg(0x61,0x0001); LCD_WriteReg(0x6A,0x0000); LCD_WriteReg(0x80,0x0000); LCD_WriteReg(0x81,0x0000); LCD_WriteReg(0x82,0x0000); LCD_WriteReg(0x83,0x0000); LCD_WriteReg(0x84,0x0000); LCD_WriteReg(0x85,0x0000); LCD_WriteReg(0x90,0x0010); LCD_WriteReg(0x92,0x0000); LCD_WriteReg(0x93,0x0003); LCD_WriteReg(0x95,0x0110); LCD_WriteReg(0x97,0x0000); LCD_WriteReg(0x98,0x0000); LCD_WriteReg(0x03,0x1018); LCD_WriteReg(0x07,0x0133); } else if(lcdid==0x4531) { LCD_WriteReg(0x00,0x0001); LCD_WriteReg(0x10,0x0628); LCD_WriteReg(0x12,0x0006); LCD_WriteReg(0x13,0x0A32); LCD_WriteReg(0x11,0x0040); LCD_WriteReg(0x15,0x0050); LCD_WriteReg(0x12,0x0016); delay_ms(15); LCD_WriteReg(0x10,0x5660); delay_ms(15); LCD_WriteReg(0x13,0x2A4E); LCD_WriteReg(0x01,0x0100); LCD_WriteReg(0x02,0x0300); LCD_WriteReg(0x03,0x1018); LCD_WriteReg(0x08,0x0202); LCD_WriteReg(0x0A,0x0000); LCD_WriteReg(0x30,0x0000); LCD_WriteReg(0x31,0x0402); LCD_WriteReg(0x32,0x0106); LCD_WriteReg(0x33,0x0700); LCD_WriteReg(0x34,0x0104); LCD_WriteReg(0x35,0x0301); LCD_WriteReg(0x36,0x0707); LCD_WriteReg(0x37,0x0305); LCD_WriteReg(0x38,0x0208); LCD_WriteReg(0x39,0x0F0B); delay_ms(15); LCD_WriteReg(0x41,0x0002); LCD_WriteReg(0x60,0x2700); LCD_WriteReg(0x61,0x0001); LCD_WriteReg(0x90,0x0119); LCD_WriteReg(0x92,0x010A); LCD_WriteReg(0x93,0x0004); LCD_WriteReg(0xA0,0x0100); delay_ms(15); delay_ms(15); LCD_WriteReg(0x07,0x0133); delay_ms(15); LCD_WriteReg(0xA0,0x0000); delay_ms(20); } LCD_Clear(RED); LCD_Font(&Font16x24); LCD_Mode(4); }