void LCD_init(void) // { LCD_GPIO_Init(); #if 1 Delay_1ms(20); w_4bit_INIT_LCD1602(0x30); //写第一次0x3N命令(N为任意值) Delay_1ms(10); //至少延迟4.1ms w_4bit_INIT_LCD1602(0x30); //写第二次0x3N命令(N为任意值) Delay_1us(200); //至少延迟100us w_4bit_INIT_LCD1602(0x30); //写第三次0x3N命令(N为任意值) Delay_1us(100); //至少延迟40us w_4bit_INIT_LCD1602(0x20); //设置为4位模式 Delay_1us(100); //至少延迟40us LCD_write_command(0x28); //设置为4位模式,2行字符,5 x 7点阵/每字符 Delay_1us(100); //至少延迟40us LCD_write_command(0x06); //写入新数据后光标右移,写入新数据后显示屏不移动 Delay_1us(100); //至少延迟40us LCD_write_command(0x0e); //显示功能开,有光标,光标不闪烁 Delay_1us(100); //至少延迟40us LCD_write_command(0x01); //清除液晶显示器 Delay_1ms(10); //至少延迟1.64ms GPIO_ResetBits(LCD1602_RW_PORT, LCD1602_RW_PIN); Delay_1ms(10); #else LCD_write_command(0x33); Delay_1ms(5); LCD_write_command(0x28); Delay_1ms(5); LCD_write_command(0x28); Delay_1ms(5); LCD_write_command(0x28); Delay_1ms(5); LCD_en_write(); Delay_1ms(5); LCD_write_command(0x28); //4 Delay_1ms(5); LCD_write_command(0x0c); // 显示开 Delay_1ms(5); LCD_write_command(0x01); // 清屏 Delay_1ms(5); GPIO_ResetBits(LCD1602_RW_PORT, LCD1602_RW_PIN); #endif }
//初始化函数 void LCD_Init(void) { unsigned long colori=0; LCD_GPIO_Init(); FSMC_LCD_Init(); LCD_Rst(); LCD_WR_CMD(0x00E3, 0x3008); // Set internal timing LCD_WR_CMD(0x00E7, 0x0012); // Set internal timing LCD_WR_CMD(0x00EF, 0x1231); // Set internal timing LCD_WR_CMD(0x0000, 0x0001); // Start Oscillation LCD_WR_CMD(0x0001, 0x0100); // set SS and SM bit LCD_WR_CMD(0x0002, 0x0700); // set 1 line inversion LCD_WR_CMD(0x0003, 0x1030); // set GRAM write direction and BGR=0,262K colors,1 transfers/pixel. LCD_WR_CMD(0x0004, 0x0000); // Resize register LCD_WR_CMD(0x0008, 0x0202); // set the back porch and front porch LCD_WR_CMD(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0] LCD_WR_CMD(0x000A, 0x0000); // FMARK function LCD_WR_CMD(0x000C, 0x0000); // RGB interface setting LCD_WR_CMD(0x000D, 0x0000); // Frame marker Position LCD_WR_CMD(0x000F, 0x0000); // RGB interface polarity //Power On sequence LCD_WR_CMD(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB LCD_WR_CMD(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0] LCD_WR_CMD(0x0012, 0x0000); // VREG1OUT voltage LCD_WR_CMD(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude Lcd_Delay(200); // Dis-charge capacitor power voltage LCD_WR_CMD(0x0010, 0x1690); // SAP, BT[3:0], AP, DSTB, SLP, STB LCD_WR_CMD(0x0011, 0x0227); // R11h=0x0221 at VCI=3.3V, DC1[2:0], DC0[2:0], VC[2:0] Lcd_Delay(50); // Delay 50ms LCD_WR_CMD(0x0012, 0x001C); // External reference voltage= Vci; Lcd_Delay(50); // Delay 50ms LCD_WR_CMD(0x0013, 0x1800); // R13=1200 when R12=009D;VDV[4:0] for VCOM amplitude LCD_WR_CMD(0x0029, 0x001C); // R29=000C when R12=009D;VCM[5:0] for VCOMH LCD_WR_CMD(0x002B, 0x000D); // Frame Rate = 91Hz Lcd_Delay(50); // Delay 50ms LCD_WR_CMD(0x0020, 0x0000); // GRAM horizontal Address LCD_WR_CMD(0x0021, 0x0000); // GRAM Vertical Address // ----------- Adjust the Gamma Curve ----------// LCD_WR_CMD(0x0030, 0x0007); LCD_WR_CMD(0x0031, 0x0302); LCD_WR_CMD(0x0032, 0x0105); LCD_WR_CMD(0x0035, 0x0206); LCD_WR_CMD(0x0036, 0x0808); LCD_WR_CMD(0x0037, 0x0206); LCD_WR_CMD(0x0038, 0x0504); LCD_WR_CMD(0x0039, 0x0007); LCD_WR_CMD(0x003C, 0x0105); LCD_WR_CMD(0x003D, 0x0808); //------------------ Set GRAM area ---------------// LCD_WR_CMD(0x0050, 0x0000); // Horizontal GRAM Start Address LCD_WR_CMD(0x0051, 0x00EF); // Horizontal GRAM End Address LCD_WR_CMD(0x0052, 0x0000); // Vertical GRAM Start Address LCD_WR_CMD(0x0053, 0x013F); // Vertical GRAM Start Address LCD_WR_CMD(0x0060, 0xA700); // Gate Scan Line LCD_WR_CMD(0x0061, 0x0001); // NDL,VLE, REV LCD_WR_CMD(0x006A, 0x0000); // set scrolling line //-------------- Partial Display Control ---------// LCD_WR_CMD(0x0080, 0x0000); LCD_WR_CMD(0x0081, 0x0000); LCD_WR_CMD(0x0082, 0x0000); LCD_WR_CMD(0x0083, 0x0000); LCD_WR_CMD(0x0084, 0x0000); LCD_WR_CMD(0x0085, 0x0000); //-------------- Panel Control -------------------// LCD_WR_CMD(0x0090, 0x0010); LCD_WR_CMD(0x0092, 0x0000); LCD_WR_CMD(0x0093, 0x0003); LCD_WR_CMD(0x0095, 0x0110); LCD_WR_CMD(0x0097, 0x0000); LCD_WR_CMD(0x0098, 0x0000); LCD_WR_CMD(0x0007, 0x0133); // 262K color and display ON LCD_WR_CMD(32, 0); LCD_WR_CMD(33, 0x013F); *(__IO uint16_t *) (Bank1_LCD_C)= 34; for(colori=0;colori<76800;colori++) { LCD_WR_Data(BACK_COLOR); } }
void Lcd_Init(void) { LCD_GPIO_Init(); Lcd_Reset(); Lcd_WriteIndex(0x11);//Sleep exit xSysCtlDelay(xSysCtlClockGet()/10); //ST7735R Frame Rate Lcd_WriteIndex(0xB1); Lcd_WriteData(0x01); Lcd_WriteData(0x2C); Lcd_WriteData(0x2D); Lcd_WriteIndex(0xB2); Lcd_WriteData(0x01); Lcd_WriteData(0x2C); Lcd_WriteData(0x2D); Lcd_WriteIndex(0xB3); Lcd_WriteData(0x01); Lcd_WriteData(0x2C); Lcd_WriteData(0x2D); Lcd_WriteData(0x01); Lcd_WriteData(0x2C); Lcd_WriteData(0x2D); Lcd_WriteIndex(0xB4); //Column inversion Lcd_WriteData(0x07); //ST7735R Power Sequence Lcd_WriteIndex(0xC0); Lcd_WriteData(0xA2); Lcd_WriteData(0x02); Lcd_WriteData(0x84); Lcd_WriteIndex(0xC1); Lcd_WriteData(0xC5); Lcd_WriteIndex(0xC2); Lcd_WriteData(0x0A); Lcd_WriteData(0x00); Lcd_WriteIndex(0xC3); Lcd_WriteData(0x8A); Lcd_WriteData(0x2A); Lcd_WriteIndex(0xC4); Lcd_WriteData(0x8A); Lcd_WriteData(0xEE); Lcd_WriteIndex(0xC5); //VCOM Lcd_WriteData(0x0E); Lcd_WriteIndex(0x36); //MX, MY, RGB mode Lcd_WriteData(0xC8); //ST7735R Gamma Sequence Lcd_WriteIndex(0xe0); Lcd_WriteData(0x0f); Lcd_WriteData(0x1a); Lcd_WriteData(0x0f); Lcd_WriteData(0x18); Lcd_WriteData(0x2f); Lcd_WriteData(0x28); Lcd_WriteData(0x20); Lcd_WriteData(0x22); Lcd_WriteData(0x1f); Lcd_WriteData(0x1b); Lcd_WriteData(0x23); Lcd_WriteData(0x37); Lcd_WriteData(0x00); Lcd_WriteData(0x07); Lcd_WriteData(0x02); Lcd_WriteData(0x10); Lcd_WriteIndex(0xe1); Lcd_WriteData(0x0f); Lcd_WriteData(0x1b); Lcd_WriteData(0x0f); Lcd_WriteData(0x17); Lcd_WriteData(0x33); Lcd_WriteData(0x2c); Lcd_WriteData(0x29); Lcd_WriteData(0x2e); Lcd_WriteData(0x30); Lcd_WriteData(0x30); Lcd_WriteData(0x39); Lcd_WriteData(0x3f); Lcd_WriteData(0x00); Lcd_WriteData(0x07); Lcd_WriteData(0x03); Lcd_WriteData(0x10); Lcd_WriteIndex(0x2a); Lcd_WriteData(0x00);Lcd_WriteData(0x00); Lcd_WriteData(0x00);Lcd_WriteData(0x7f); Lcd_WriteIndex(0x2b); Lcd_WriteData(0x00);Lcd_WriteData(0x00); Lcd_WriteData(0x00);Lcd_WriteData(0x9f); Lcd_WriteIndex(0xF0); //Enable test command Lcd_WriteData(0x01); Lcd_WriteIndex(0xF6); //Disable ram power save mode Lcd_WriteData(0x00); Lcd_WriteIndex(0x3A); //65k mode Lcd_WriteData(0x05); Lcd_WriteIndex(0x29);//Display on }
void BSP_Init (void) { //初始化系统时钟72MHZ //SystemInit(); //已在启动代码中调用 //使能各个模块时钟 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 |RCC_AHBPeriph_FSMC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO |RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOD |RCC_APB2Periph_GPIOE //|RCC_APB2Periph_GPIOF //|RCC_APB2Periph_GPIOG |RCC_APB2Periph_ADC1 |RCC_APB2Periph_USART1 |RCC_APB2Periph_SPI1 |RCC_APB2Periph_TIM1, //|RCC_APB2Periph_TIM8 |RCC_APB2Periph_ADC2 |RCC_APB2Periph_ADC3 ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 |RCC_APB1Periph_TIM3 //|RCC_APB1Periph_TIM4 //|RCC_APB1Periph_TIM5 //|RCC_APB1Periph_TIM6 //|RCC_APB1Periph_TIM7 |RCC_APB1Periph_USART2 |RCC_APB1Periph_USART3 |RCC_APB1Periph_UART4 |RCC_APB1Periph_UART5 |RCC_APB1Periph_SPI2 |RCC_APB1Periph_USB, //|RCC_APB1Periph_SPI3 //|RCC_APB1Periph_I2C1 //|RCC_APB1Periph_I2C2 //|RCC_APB1Periph_CAN1 //|RCC_APB1Periph_WWDG //|RCC_APB1Periph_BKP //|RCC_APB1Periph_PWR //|RCC_APB1Periph_DAC ENABLE); //中断向量表初始化 #ifdef VECT_TAB_RAM /* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //中断服务程序初始化 BSP_IntInit(); //初始化外? /* Initialize the I/Os for the ADC controls. */ //BSP_ADC_Init(); /* Initialize the I/Os for the LED controls. */ BSP_LED_Init(); KEY_GPIO_Cfg(); /* Initialize the I/Os for the Joystick control. */ //BSP_Joystick_Init(); //STM3210E_LCD_Init(); //LCD_Clear(0xFFFF); LCD_GPIO_Init(); LCD_CfgInit(); CommGPIOCfg(COMM1); CommGPIOCfg(COMM2); CommNVICCfg(COMM1); CommNVICCfg(COMM2); CommCfg(COMM1); CommCfg(COMM2); }
void Lcd_Init(void) { // int i=0; LCD_GPIO_Init(); Lcd_Reset(); Lcd_WriteIndex(0x11);//Sleep out delay_ms(500); Lcd_WriteIndex(0x3A);//Color Mode Lcd_WriteData(0x05); delay_ms(10); Lcd_WriteIndex(0xB1);//Frame rate control Lcd_WriteData(0x00); Lcd_WriteData(0x06); Lcd_WriteData(0x03); delay_ms(10); Lcd_WriteIndex(0x36);//Memory access ctrl Lcd_WriteData(0x08); Lcd_WriteIndex(0xB6);//Display settings #5 Lcd_WriteData(0x15); Lcd_WriteData(0x02); Lcd_WriteIndex(0xB4);//Display inversion control Lcd_WriteData(0x0); Lcd_WriteIndex(0xC0);//Power control1 Lcd_WriteData(0x02); Lcd_WriteData(0x70); delay_ms(10); Lcd_WriteIndex(0xC1);//Power control2 Lcd_WriteData(0x05); Lcd_WriteIndex(0xC2);//Power control3 Lcd_WriteData(0x01); Lcd_WriteData(0x02); Lcd_WriteIndex(0xC5);//VPower control Lcd_WriteData(0x3C); Lcd_WriteData(0x38); delay_ms(10); Lcd_WriteIndex(0xFC);//Power control6 Lcd_WriteData(0x11); Lcd_WriteData(0x15); Lcd_WriteIndex(0xE0);//Magical unicorn dust Lcd_WriteData(0x09); Lcd_WriteData(0x16); Lcd_WriteData(0x09); Lcd_WriteData(0x20); Lcd_WriteData(0x21); Lcd_WriteData(0x1B); Lcd_WriteData(0x13); Lcd_WriteData(0x19); Lcd_WriteData(0x17); Lcd_WriteData(0x15); Lcd_WriteData(0x1E); Lcd_WriteData(0x2B); Lcd_WriteData(0x04); Lcd_WriteData(0x05); Lcd_WriteData(0x02); Lcd_WriteData(0x0E); Lcd_WriteIndex(0xE1);//Sparkles and rainbows Lcd_WriteData(0x0B); Lcd_WriteData(0x14); Lcd_WriteData(0x08); Lcd_WriteData(0x1E); Lcd_WriteData(0x22); Lcd_WriteData(0x1D); Lcd_WriteData(0x18); Lcd_WriteData(0x1E); Lcd_WriteData(0x1B); Lcd_WriteData(0x1A); Lcd_WriteData(0x24); Lcd_WriteData(0x2B); Lcd_WriteData(0x06); Lcd_WriteData(0x06); Lcd_WriteData(0x02); Lcd_WriteData(0x0F); delay_ms(10); Lcd_WriteIndex(0x2A);//Column addr set Lcd_WriteData(0x00); Lcd_WriteData(0x02); Lcd_WriteData(0x00); Lcd_WriteData(0x81); Lcd_WriteIndex(0x2B);//Row addr set Lcd_WriteData(0x00); Lcd_WriteData(0x02); Lcd_WriteData(0x00); Lcd_WriteData(0x81); Lcd_WriteIndex(0x13);//Normal display on delay_ms(10); Lcd_WriteIndex(0x29);//Main screen turn on delay_ms(500); // Lcd_WriteIndex(0xB9);//SETEXTC // Lcd_WriteData(0xFF); // Lcd_WriteData(0x83); // Lcd_WriteData(0x53); // // Lcd_WriteIndex(0xB0);//RADJ // Lcd_WriteData(0x3C); // Lcd_WriteData(0x01); // // // Lcd_WriteIndex(0xB6);//VCOM // Lcd_WriteData(0x94); // Lcd_WriteData(0x6C); // Lcd_WriteData(0x50); // // Lcd_WriteIndex(0xB1);//PWR // Lcd_WriteData(0x00); // Lcd_WriteData(0x01); // Lcd_WriteData(0x1B); // Lcd_WriteData(0x03); // Lcd_WriteData(0x01); // Lcd_WriteData(0x08); // Lcd_WriteData(0x77); // Lcd_WriteData(0x89); // // Lcd_WriteIndex(0xE0); //Gamma setting for tpo Panel // Lcd_WriteData(0x50); // Lcd_WriteData(0x77); // Lcd_WriteData(0x40); // Lcd_WriteData(0x08); // Lcd_WriteData(0xBF); // Lcd_WriteData(0x00); // Lcd_WriteData(0x03); // Lcd_WriteData(0x0F); // Lcd_WriteData(0x00); // Lcd_WriteData(0x01); // Lcd_WriteData(0x73); // Lcd_WriteData(0x00); // Lcd_WriteData(0x72); // Lcd_WriteData(0x03); // Lcd_WriteData(0xB0); // Lcd_WriteData(0x0F); // Lcd_WriteData(0x08); // Lcd_WriteData(0x00); // Lcd_WriteData(0x0F); // // Lcd_WriteIndex(0x3A); // Lcd_WriteData(0x05); //05 // Lcd_WriteIndex(0x36); // Lcd_WriteData(0xC0); //83 //0B // // Lcd_WriteIndex(0x11); // SLPOUT // delay_ms(150); // Lcd_WriteIndex(0x29); // display on // delay_ms(150); // Lcd_WriteIndex(0x2D); //Look up table // for(i=0;i<32;i++) // {Lcd_WriteData(2*i);} //Red // for(i=0;i<64;i++) // {Lcd_WriteData(1*i);} //Green // for(i=0;i<32;i++) // {Lcd_WriteData(2*i);} //Blue // // Lcd_WriteIndex(0x2c); // delay_ms(150); //Lcd_WriteIndex(0x11);//Sleep out // delay_ms(120); //ST7735R Frame Rate // Lcd_WriteIndex(0xB1); // Lcd_WriteData(0x01); // Lcd_WriteData(0x2C); // Lcd_WriteData(0x2D); // Lcd_WriteIndex(0xB2); // Lcd_WriteData(0x01); // Lcd_WriteData(0x2C); // Lcd_WriteData(0x2D); // Lcd_WriteIndex(0xB3); // Lcd_WriteData(0x01); // Lcd_WriteData(0x2C); // Lcd_WriteData(0x2D); // Lcd_WriteData(0x01); // Lcd_WriteData(0x2C); // Lcd_WriteData(0x2D); // //------------------------------------End ST7735R Frame Rate-----------------------------------------// // Lcd_WriteIndex(0xB4);//Column inversion // Lcd_WriteData(0x07); // //------------------------------------ST7735R Power Sequence-----------------------------------------// // Lcd_WriteIndex(0xC0); // Lcd_WriteData(0xA2); // Lcd_WriteData(0x02); // Lcd_WriteData(0x84); // Lcd_WriteIndex(0xC1); // Lcd_WriteData(0xC5); // Lcd_WriteIndex(0xC2); // Lcd_WriteData(0x0A); // Lcd_WriteData(0x00); // Lcd_WriteIndex(0xC3); // Lcd_WriteData(0x8A); // Lcd_WriteData(0x2A); // Lcd_WriteIndex(0xC4); // Lcd_WriteData(0x8A); // Lcd_WriteData(0xEE); // //---------------------------------End ST7735R Power Sequence-------------------------------------// // Lcd_WriteIndex(0xC5);//VCOM // Lcd_WriteData(0x0E); // Lcd_WriteIndex(0x36);//MX, MY, RGB mode // Lcd_WriteData(0xC8); // //------------------------------------ST7735R Gamma Sequence-----------------------------------------// // Lcd_WriteIndex(0xe0); // Lcd_WriteData(0x02); // Lcd_WriteData(0x1c); // Lcd_WriteData(0x07); // Lcd_WriteData(0x12); // Lcd_WriteData(0x37); // Lcd_WriteData(0x32); // Lcd_WriteData(0x29); // Lcd_WriteData(0x2d); // Lcd_WriteData(0x29); // Lcd_WriteData(0x25); // Lcd_WriteData(0x2b); // Lcd_WriteData(0x39); // Lcd_WriteData(0x00); // Lcd_WriteData(0x01); // Lcd_WriteData(0x03); // Lcd_WriteData(0x10); // Lcd_WriteIndex(0xe1); // Lcd_WriteData(0x03); // Lcd_WriteData(0x1d); // Lcd_WriteData(0x07); // Lcd_WriteData(0x06); // Lcd_WriteData(0x2e); // Lcd_WriteData(0x2c); // Lcd_WriteData(0x29); // Lcd_WriteData(0x2d); // Lcd_WriteData(0x2e); // Lcd_WriteData(0x2e); // Lcd_WriteData(0x37); // Lcd_WriteData(0x3f); // Lcd_WriteData(0x00); // Lcd_WriteData(0x00); // Lcd_WriteData(0x02); // Lcd_WriteData(0x10); // Lcd_WriteIndex(0x2A); // Lcd_WriteData(0x00); // Lcd_WriteData(0x02); // Lcd_WriteData(0x00); // Lcd_WriteData(0x81); // Lcd_WriteIndex(0x2B); // Lcd_WriteData(0x00); // Lcd_WriteData(0x01); // Lcd_WriteData(0x00); // Lcd_WriteData(0xA0); // //------------------------------------End ST7735R Gamma Sequence-----------------------------------------// // Lcd_WriteIndex(0x3A); // Lcd_WriteData(0x05); // //Lcd_WriteIndex(0x3A);//65k mode // //Lcd_WriteData(0x05); // Lcd_WriteIndex(0x2C);//Display on //// LCD_Rectangle(0,0,128,160,0); // black it out // Lcd_WriteIndex(0x29);//Display on }