|
发表于 2014-4-4 11:57:22
|
显示全部楼层
ILI9326 的,这个屏的寄存器配置比较特殊
下面是LCD初始化程序
/****************************************************************************
* 名 称:static void _InitController(void)
* 功 能:3.0寸屏(ILI9326 240X400)的初始化
* 入口参数:无
* 出口参数:无
* 说 明:
* 调用方法:无
****************************************************************************/
static void _InitController(void)
{
MY_LCD_Init();
FSMC_LCD_Init();
LCD_REST=1;
delay_ms(50);
LCD_REST=0;
delay_ms(10);
LCD_REST=1;
delay_ms(10);
//开始初始序列
LCD_WR_CMD(0x0702, 0x3008); //设置内部定时,不要改变这个值
LCD_WR_CMD(0x0705, 0x0036); //设置内部定时,不要改变这个值
LCD_WR_CMD(0x070B, 0x1213); //设置内部定时,不要改变这个值
#ifdef USE_HORIZONTAL
LCD_WR_CMD(0x0001, 0x0000);// set SS and SM bit// SS=1和SM=0,扫描方向
#else
LCD_WR_CMD(0x0001, 0x0100);// set SS and SM bit
#endif
LCD_WR_CMD(0x0002, 0x0100); // 设置1行反转
LCD_WR_CMD(0x0003, 0x1030); //扫描的方向横屏显示.
LCD_WR_CMD(0x0008, 0x0202); // 设置后门廊,门廊
LCD_WR_CMD(0x0009, 0x0000); // 设置non-display区域刷新周期ISC[3:0]
LCD_WR_CMD(0x000A, 0x0000); // FMARK函数
LCD_WR_CMD(0x000C, 0x0000); // RGB接口设置
LCD_WR_CMD(0x000D, 0x0000); // 帧标记位置
LCD_WR_CMD(0x000F, 0x0000); // RGB接口极性
//上电时序
LCD_WR_CMD(0x0100, 0x0000); // // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_WR_CMD(0x0102, 0x0000); //VREG1OUT电压
LCD_WR_CMD(0x0103, 0x0000); // VDV[4:0] for VCOM amplitude
delay_ms(200); // Delay 50ms
LCD_WR_CMD(0x0100, 0x1190); // // SAP, BT[3:0], AP, DSTB, SLP, STB,0x1190
LCD_WR_CMD(0x0101, 0x0005); // DC1[2:0], DC0[2:0], VC[2:0]//0x0227
delay_ms(60);
LCD_WR_CMD(0x0102, 0x01b8); // VREG1OUT voltage
delay_ms(60);
LCD_WR_CMD(0x0103, 0x3600); //DV[4:0] for VCOM amplitude
LCD_WR_CMD(0x0281, 0x0001); // VCM[5:0] for VCOMH
delay_ms(50);
LCD_WR_CMD(0x0200, 0x0000); // GRAM 水平地址
LCD_WR_CMD(0x0201, 0x0000); //GRAM 水平的地址
//调整伽马曲线
LCD_WR_CMD(0x0300, 0x0101);//
LCD_WR_CMD(0x0301, 0x0506);//
LCD_WR_CMD(0x0302, 0x0405);//
LCD_WR_CMD(0x0305, 0x0007);//
LCD_WR_CMD(0x0306, 0x0008);//
LCD_WR_CMD(0x0307, 0x0203);//
LCD_WR_CMD(0x0308, 0x0102);//
LCD_WR_CMD(0x0309, 0x0706);//
LCD_WR_CMD(0x030C, 0x0700);//
LCD_WR_CMD(0x030D, 0x0008);//
//Set GRAM area
LCD_WR_CMD(0x0210, 0x0000); // 水平起始地址GRAM
LCD_WR_CMD(0x0211, 0x00EF); // 水平克结束地址 GRAM
LCD_WR_CMD(0x0212, 0x0000); // 垂直克起始地址 GRAM
LCD_WR_CMD(0x0213, 0x018F); // 垂直克起始地址 GRAM
#ifdef USE_HORIZONTAL
LCD_WR_CMD(0x0400, 0xb104);// Gate Scan Line 400 lines
#else
LCD_WR_CMD(0x0400, 0x3100);// Gate Scan Line 400 lines
#endif
LCD_WR_CMD(0x0401, 0x0001); // NDL,VLE, REV
LCD_WR_CMD(0x0404, 0x0000); // 设置滚动行
//部分显示控制
LCD_WR_CMD(0x0500, 0x0000);
LCD_WR_CMD(0x0501, 0x0000);
LCD_WR_CMD(0x0502, 0x0000);
LCD_WR_CMD(0x0503, 0x0000);
LCD_WR_CMD(0x0504, 0x0000);
LCD_WR_CMD(0x0505, 0x0000);
//Panel Control
LCD_WR_CMD(0x0010, 0x0010);
LCD_WR_CMD(0x0011, 0x0600);
LCD_WR_CMD(0x0020, 0x0002);
LCD_WR_CMD(0x0007, 0x0173); // 262 k的颜色和显示
LCD_WR_REG(0x0202); //开始写入GRAM
LCD_Clear(RED);
LCD_LED = 1;
} |
|