//******************************************* //*函数名称:void LCD_Init(void) * //*函数功能:并行初始化LCD * //*形式参数:无 * //*形参说明:无 * //*返回参数:无 * //*使用说明:无 * //******************************************* void LCD_Init(void) { LCD_CTRL_OUT(); #if PARALLEL == 1 #ifdef LCD_RST LCD_RST_LOW(); _delay_ms(10); LCD_RST_HIGH(); //RST = 1; //复位后拉高,停止复位 #endif #ifdef LCD_PSB LCD_PSB_HIGH(); //PSB = 1; //选择并行传输模式 #endif #else #ifdef LCD_RST LCD_RST_LOW(); _delay_ms(100); LCD_RST_HIGH(); //RST = 1; //复位后拉高,停止复位 #endif #ifdef LCD_PSB LCD_PSB_LOW(); //PSB = 0; //选择串并行传输模式 #endif #endif //#if PARALLEL == 1 LCD_Write(LCD_COMMAND,LCD_BASIC_FUNCTION); //基本指令动作 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏,地址指针指向00H LCD_Write(LCD_COMMAND,0x06); //光标的移动方向 LCD_Write(LCD_COMMAND,0x0C); //开显示,关游标 }
void lcd_init(void) { LCD_Config(); LCD_BACKLIGHT_OFF(); lcd_delay(2); LCD_RST_LOW(); lcd_delay(2); LCD_RST_HIGH(); lcd_delay(2); lcd_write_cmd(0xe2); /*软复位*/ lcd_delay(2); lcd_write_cmd(0x2c); /*升压步聚1*/ lcd_delay(2); lcd_write_cmd(0x2e); /*升压步聚2*/ lcd_delay(2); lcd_write_cmd(0x2f); /*升压步聚3*/ lcd_delay(2); lcd_write_cmd(0x25); /*粗调对比度,可设置范围0x20~0x27*/ lcd_write_cmd(0x81); /*微调对比度*/ lcd_write_cmd(0x16); /*微调对比度的值,可设置范围0x00~0x3f*/ lcd_write_cmd(0xa2); /*1/9 偏压比(bias)*/ lcd_write_cmd(0xc8); /*行扫描顺序:从上到下*/ lcd_write_cmd(0xa0); /*列扫描顺序:从左到右*/ lcd_write_cmd(0x40); /*起始行:从第一行开始*/ lcd_write_cmd(0xaf); /*开显示*/ lcd_delay(2); lcd_clr_scr(); }
void lcd_init(void) { spi_setting_t spi_settings; spi_settings.endianness = SPI_MSB_FIRST; spi_settings.bus_mode = SPI_BUSMODE_MASTER; spi_settings.trans_mode = SPI_MODE_0; spi_settings.clock_rate = SPI_CLOCKDIV_4; spi_settings.double_clock = SPI_DBLCLK_ENABLE; spi_init(&spi_settings); // spi clk ~ 4 MHz LCD_PORT_INIT(); LCD_CE_ACTIVATE(); LCD_RST_HIGH(); LCD_DC_COMM(); LCD_RST_LOW(); _delay_ms(5); // delay required for RST procedure LCD_RST_HIGH(); //_delay_ms(10); // delay required for RST procedure lcd_command(UC1701_SET_SEG_DIR | UC1701_SET_SEG_DIR_MIRROR); // reverse seg drivers lcd_command(UC1701_SET_COM_DIR | UC1701_SET_COM_DIR_NORM); lcd_command(UC1701_SET_ALL_PX | UC1701_SET_ALL_OFF); lcd_command(UC1701_SET_INV_DISP | UC1701_SET_INV_DISP_OFF); _delay_ms(120); lcd_command(UC1701_SET_BIAS_RATIO | UC1701_SET_BIAS_1_9); // set bias ratio lcd_command(UC1701_SET_POWER_CTRL | UC1701_SET_POWER_BOOST_ON | UC1701_SET_POWER_REG_ON | UC1701_SET_POWER_FOLL_ON); lcd_command(UC1701_SET_EL_VOL_1); // set contrast (2-part command) lcd_command(UC1701_SET_EL_VOL_2 | (UC1701_SET_EL_VOL_MASK & ((uint8_t)LCD_CONTRAST))); // set contrast [0..63] lcd_command(UC1701_SET_ADV_PROG_1); lcd_command(UC1701_SET_ADV_PROG_2 | UC1701_ADV_PROG_TEMPCO_1); lcd_command(UC1701_SET_DISP_EN | UC1701_SET_DISP_EN_ON); // enable display }
/*************************************************************************************************** * @fn lcd_init * * @brief LCD设备初始化 * @param NULL * @return null ***************************************************************************************************/ void lcd_init(void) { lcd_regist(); //背光开启 GPIO_SetBits(LCD_BL_PORT, LCD_BL_PIN); GPIO_SetBits(LCD_BLW_PORT, LCD_BLW_PIN); //LCD RST LCD_RST_LOW(); delay_ms(1); LCD_RST_HIGH(); delay_ms(300); //LCD 寄存器 lcd_cmd_write(0x2F); //Internal pump control delay_ms(20); lcd_cmd_write(0x24); //Temperature compensation lcd_cmd_write(0xE9); //set bias=1/10 lcd_cmd_write(0x81); //Set Vop lcd_cmd_write(160+25); lcd_cmd_write(0xA2); //set line rate:28KLPS lcd_cmd_write(0x28); //set pannel loading lcd_cmd_write(0x40); //scroll line LSB lcd_cmd_write(0x50); //SCROLL LINE MSB // lcd_cmd_write(0x89); //ram address control lcd_cmd_write(0x8B); //ram address control, PAGE increment first lcd_cmd_write(0xC0); //LCD mapping control // lcd_cmd_write(0x04); //MX=0,MY=1 lcd_cmd_write(0x01); //MX=0,MY=0,MSF=1 lcd_cmd_write(0xD0); //DISPLAY PATTERN = 16-SCALE GRAY lcd_cmd_write(0xF1); //SET COM end lcd_cmd_write(0x3F); //64 lcd_cmd_write(0xF8); //Set Window Program inside. lcd_cmd_write(0xF5); //starting row address of RAM program window.PAGE1 lcd_cmd_write(0x00); lcd_cmd_write(0xF7); //end row address of RAM program window.PAGE32 lcd_cmd_write(0x1F); lcd_cmd_write(0xF4); //start column address of RAM program window. lcd_cmd_write(0x00); // lcd_cmd_write(0xEF); lcd_cmd_write(0xF6); //end column address of RAM program window.SEG212 lcd_cmd_write(0xD3); // lcd_cmd_write(0x1B); lcd_cmd_write(0xAF); //dc2=1, IC into exit SLEEP MODE, dc3=1 gray=ON, dc4=1 Green Enhanc mode disabled delay_ms(20); //needed for internal DC-DC converter startup printf("lcd init over! @ %s,%s,%d\r\n", __FILE__, __func__, __LINE__); }
void lcdInit() { LCD_BL_Config(); LCD_Hardware_Init(); LCD_RST_HIGH(); Delay(5); LCD_RST_LOW(); Delay(120); //11ms LCD_RST_HIGH(); Delay(2500); AspiCmd(0xE2); Delay(2500); LCD_Init(); Delay(120); LCD_Init(); Delay(120); AspiCmd(0xAF); //dc2=1, IC into exit SLEEP MODE, dc3=1 gray=ON, dc4=1 Green Enhanc mode disabled }
int ili9163_init(spi_bus_t bus, uint32_t cs) { uint32_t ret; device.csn = cs; device.config.baudrate = 50*1000*1000; device.config.data_width = 8; device.config.mode = SPI_MODE_0 | SPI_MASTER | SPI_MSB; ret = spi_bus_attach_device(bus, &device); if(ret) { return ret; } else { ret = spi_config(&device); } GPIO_QuickInit(RST_PORT, RST_PIN, kGPIO_Mode_OPP); GPIO_QuickInit(RS_PORT, RS_PIN, kGPIO_Mode_OPP); LCD_RST_LOW(); DelayMs(1); LCD_RST_HIGH(); DelayMs(1); LCD_COM(0x11); //关闭睡眠,振荡器工作 DelayMs(1); LCD_COM(0x3a); //每次传送16位数据(VIPF3-0=0101),每个像素16位(IFPF2-0=101) LCD_DATA(0x55); LCD_COM(0x26); LCD_DATA(0x04); LCD_COM(0xf2); //Driver Output Control(1) LCD_DATA(0x01); LCD_COM(0xe0); //Driver Output Control(1) LCD_DATA(0x3f); LCD_DATA(0x25); LCD_DATA(0x1c); LCD_DATA(0x1e); LCD_DATA(0x20); LCD_DATA(0x12); LCD_DATA(0x2a); LCD_DATA(0x90); LCD_DATA(0x24); LCD_DATA(0x11); LCD_DATA(0x00); LCD_DATA(0x00); LCD_DATA(0x00); LCD_DATA(0x00); LCD_DATA(0x00); LCD_COM(0xe1); //Driver Output Control(1) LCD_DATA(0x20); LCD_DATA(0x20); LCD_DATA(0x20); LCD_DATA(0x20); LCD_DATA(0x05); LCD_DATA(0x00); LCD_DATA(0x15); LCD_DATA(0xa7); LCD_DATA(0x3d); LCD_DATA(0x18); LCD_DATA(0x25); LCD_DATA(0x2a); LCD_DATA(0x2b); LCD_DATA(0x2b); LCD_DATA(0x3a); LCD_COM(0xb1); //设置屏幕刷新频率 LCD_DATA(0x08); //DIVA=8 LCD_DATA(0x08); //VPA =8,约90Hz LCD_COM(0xb4); //LCD Driveing control LCD_DATA(0x07); //NLA=1,NLB=1,NLC=1 LCD_COM(0xc0); //LCD Driveing control LCD_DATA(0x0a); LCD_DATA(0x02); LCD_COM(0xc1); //LCD Driveing control LCD_DATA(0x02); LCD_COM(0xc5); //LCD Driveing control LCD_DATA(0x4f); LCD_DATA(0x5a); LCD_COM(0xc7); //LCD Driveing control LCD_DATA(0x40); LCD_COM(0x2a); //配置MCU可操作的LCD内部RAM横坐标起始、结束参数 LCD_DATA(0x00); //横坐标起始地址0x0000 LCD_DATA(0x00); LCD_DATA(0x00); //横坐标结束地址0x007f(127) LCD_DATA(0x7f); LCD_COM(0x2b); //配置MCU可操作的LCD内部RAM纵坐标起始结束参数 LCD_DATA(0x00); //纵坐标起始地址0x0000 LCD_DATA(0x00); LCD_DATA(0x00); //纵坐标结束地址0x009f(159) LCD_DATA(0x9f); LCD_COM(0x36); //配置MPU和DDRAM对应关系 LCD_DATA(0xc0); //MX=1,MY=1 LCD_COM(0xb7); //LCD Driveing control LCD_DATA(0x00); //CRL=0 LCD_COM(0x29); //开启屏幕显示 LCD_COM(0x2c); //设置为LCD接收数据/命令模式 ili9163_clear(0x0000); return 0; }