void lcd_init(void) { port_fsmc_init(); //GPIO_ResetBits(GPIOD,GPIO_Pin_3); //delay(500); //GPIO_SetBits(GPIOD,GPIO_Pin_3); //delay(50); GPIO_SetBits(GPIOF,GPIO_Pin_9); delay(50); DeviceCode = read_reg(0x0000); //if (DeviceCode == 0x8999) { // power supply setting // set R07h at 0021h (GON=1,DTE=0,D[1:0]=01) write_reg(0x07,0x0021); // set R00h at 0001h (OSCEN=1) write_reg(0x00,0x0001); // set R07h at 0023h (GON=1,DTE=0,D[1:0]=11) write_reg(0x07,0x0023); // set R10h at 0000h (Exit sleep mode) write_reg(0x10,0x0000); // Wait 30ms delay(3000); // set R07h at 0033h (GON=1,DTE=1,D[1:0]=11) write_reg(0x07,0x0033); // Entry mode setting (R11h) // R11H Entry mode // vsmode DFM1 DFM0 TRANS OEDef WMode DMode1 DMode0 TY1 TY0 ID1 ID0 AM LG2 LG2 LG0 // 0 1 1 0 0 0 0 0 0 1 1 1 * 0 0 0 write_reg(0x11,0x6078); // LCD driver AC setting (R02h) write_reg(0x02,0x0600); // power control 1 // DCT3 DCT2 DCT1 DCT0 BT2 BT1 BT0 0 DC3 DC2 DC1 DC0 AP2 AP1 AP0 0 // 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 // DCT[3:0] fosc/4 BT[2:0] DC{3:0] fosc/4 write_reg(0x03,0x0804);//0xA8A4 write_reg(0x0C,0x0000);// write_reg(0x0D,0x080C);// // power control 4 // 0 0 VCOMG VDV4 VDV3 VDV2 VDV1 VDV0 0 0 0 0 0 0 0 0 // 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 write_reg(0x0E,0x2900); write_reg(0x1E,0x00B8); write_reg(0x01,0x2B3F);//驱动输出控制320*240 0x2B3F 0x6B3F write_reg(0x10,0x0000); write_reg(0x05,0x0000); write_reg(0x06,0x0000); write_reg(0x16,0xEF1C); write_reg(0x17,0x0003); write_reg(0x07,0x0233);//0x0233 write_reg(0x0B,0x0000|(3<<6)); write_reg(0x0F,0x0000);//扫描开始地址 write_reg(0x41,0x0000); write_reg(0x42,0x0000); write_reg(0x48,0x0000); write_reg(0x49,0x013F); write_reg(0x4A,0x0000); write_reg(0x4B,0x0000); write_reg(0x44,0xEF00); write_reg(0x45,0x0000); write_reg(0x46,0x013F); // write_reg(0x44,0x7700); // write_reg(0x45,0x0000); // write_reg(0x46,0x09f); write_reg(0x30,0x0707); write_reg(0x31,0x0204); write_reg(0x32,0x0204); write_reg(0x33,0x0502); write_reg(0x34,0x0507); write_reg(0x35,0x0204); write_reg(0x36,0x0204); write_reg(0x37,0x0502); write_reg(0x3A,0x0302); write_reg(0x3B,0x0302); write_reg(0x23,0x0000); write_reg(0x24,0x0000); write_reg(0x25,0x8000); // 65hz write_reg(0x4f,0); // 行首址0 write_reg(0x4e,0); // 列首址0 } //else //{ //printf("LCD model is not recognized,DeviceCode = 0x%x!\r\n",DeviceCode); //return; //} //数据总线测试,用于测试硬件连接是否正常. lcd_data_bus_test(); lcd_clear(Red); kprintf("LCD Init Finish\n\r"); }
void ssd1289_init(void) { lcd_port_init(); deviceid = read_reg(0x00); /* deviceid check */ if( deviceid != 0x8989 ) { printf("Invalid LCD ID:%08X\r\n",deviceid); printf("Please check you hardware and configure.\r\n"); } else { printf("\r\nLCD Device ID : %04X ",deviceid); } // power supply setting // set R07h at 0021h (GON=1,DTE=0,D[1:0]=01) write_reg(0x0007,0x0021); // set R00h at 0001h (OSCEN=1) write_reg(0x0000,0x0001); // set R07h at 0023h (GON=1,DTE=0,D[1:0]=11) write_reg(0x0007,0x0023); // set R10h at 0000h (Exit sleep mode) write_reg(0x0010,0x0000); // Wait 30ms delay(3000); // set R07h at 0033h (GON=1,DTE=1,D[1:0]=11) write_reg(0x0007,0x0033); // Entry mode setting (R11h) // R11H Entry mode // vsmode DFM1 DFM0 TRANS OEDef WMode DMode1 DMode0 TY1 TY0 ID1 ID0 AM LG2 LG2 LG0 // 0 1 1 0 0 0 0 0 0 1 1 1 * 0 0 0 write_reg(0x0011,0x6070); // LCD driver AC setting (R02h) write_reg(0x0002,0x0600); // power control 1 // DCT3 DCT2 DCT1 DCT0 BT2 BT1 BT0 0 DC3 DC2 DC1 DC0 AP2 AP1 AP0 0 // 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 // DCT[3:0] fosc/4 BT[2:0] DC{3:0] fosc/4 write_reg(0x0003,0x0804);//0xA8A4 write_reg(0x000C,0x0000);// write_reg(0x000D,0x0808);// 0x080C --> 0x0808 // power control 4 // 0 0 VCOMG VDV4 VDV3 VDV2 VDV1 VDV0 0 0 0 0 0 0 0 0 // 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 write_reg(0x000E,0x2900); write_reg(0x001E,0x00B8); write_reg(0x0001,0x2B3F);//驱动输出控制320*240 0x6B3F write_reg(0x0010,0x0000); write_reg(0x0005,0x0000); write_reg(0x0006,0x0000); write_reg(0x0016,0xEF1C); write_reg(0x0017,0x0003); write_reg(0x0007,0x0233);//0x0233 write_reg(0x000B,0x0000|(3<<6)); write_reg(0x000F,0x0000);//扫描开始地址 write_reg(0x0041,0x0000); write_reg(0x0042,0x0000); write_reg(0x0048,0x0000); write_reg(0x0049,0x013F); write_reg(0x004A,0x0000); write_reg(0x004B,0x0000); write_reg(0x0044,0xEF00); write_reg(0x0045,0x0000); write_reg(0x0046,0x013F); write_reg(0x0030,0x0707); write_reg(0x0031,0x0204); write_reg(0x0032,0x0204); write_reg(0x0033,0x0502); write_reg(0x0034,0x0507); write_reg(0x0035,0x0204); write_reg(0x0036,0x0204); write_reg(0x0037,0x0502); write_reg(0x003A,0x0302); write_reg(0x003B,0x0302); write_reg(0x0023,0x0000); write_reg(0x0024,0x0000); write_reg(0x0025,0x8000); // 65hz write_reg(0x004f,0); // 行首址0 write_reg(0x004e,0); // 列首址0 //数据总线测试,用于测试硬件连接是否正常. lcd_data_bus_test(); //GRAM测试,此测试可以测试LCD控制器内部GRAM.测试通过保证硬件正常 // lcd_gram_test(); //清屏 lcd_clear( Blue ); }