针对MTK平台下LCD调试步骤以及常见地一些问地训练题目Word文档下载推荐.docx
- 文档编号:14978856
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:12
- 大小:159.42KB
针对MTK平台下LCD调试步骤以及常见地一些问地训练题目Word文档下载推荐.docx
《针对MTK平台下LCD调试步骤以及常见地一些问地训练题目Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《针对MTK平台下LCD调试步骤以及常见地一些问地训练题目Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
LCD背光灯的驱动程序的编写要看背光驱动IC的资料了解背光驱动IC的工作方式,一般背光驱动IC的工作方式有PWM控制方式、脉冲控制方式、编码控制方式等。
3、写LCD的初始化程序。
MTK平台LCD驱动程序调试修改最多的就是在lcd.c和lcd_sw.h这两个文件,所涉及的要关程序如下:
LCD_FuncsLCD_func_S6D04H0={
LCD_Init_S6D04H0,
LCD_PWRON_S6D04H0,
LCD_SetContrast_S6D04H0,
LCD_ON_S6D04H0,
LCD_BlockWrite_S6D04H0,
LCD_Size_S6D04H0,
LCD_EnterSleep_S6D04H0,
LCD_ExitSleep_S6D04H0,
LCD_Partial_On_S6D04H0,
LCD_Partial_Off_S6D04H0,
LCD_Partial_line_S6D04H0,
/*Engineeringmode*/
LCD_GetParm_S6D04H0,
LCD_SetBias_S6D04H0,
LCD_Contrast_S6D04H0,
LCD_LineRate_S6D04H0,
LCD_Temp_Compensate_S6D04H0
#ifdefLCM_ROTATE_SUPPORT
LCD_Set_Scan_Direction_S6D04H0
#endif
#ifdefLQT_SUPPORT/*DonotremoveLQTcodesegment*/
LCD_gamma_test
LCD_flicker_test
0//NULLfunctionforSetFrmMarkerFunction.
LCD_IOCTRL_S6D04H0
};
voidLCD_FunConfig(void)
{
MainLCD=&
LCD_func_S6D04H0;
#ifdefDUAL_LCD
SubLCD=
}
LCD的初始化程序就是在LCD_Init_S6D04H0();
这个函数里面写,如下所示:
voidLCD_Init_S6D04H0(kal_uint32bkground,void**buf_addr)
{
SET_LCD_CTRL_RESET_PIN;
LCD_Delay(0x4000);
CLEAR_LCD_CTRL_RESET_PIN;
SET_LCD_CTRL_RESET_PIN;
LCD_Delay(0x40000);
//以上这一部分是RESETLCD,必需的
…
…//中间这一部分是LCD的初始化代码,一般LCD厂会提供。
kal_uint16i,j;
for(i=0;
i<
LCD_WIDTH;
i++)
{
for(j=0;
j<
LCD_HEIGHT;
j++)
LCD_DataWrite_CMD(0x0000);
}
}//这部分是给屏刷一满屏单色
为了验证LCD的初始化程序是否正确我们可以通过把LCD_BlockWrite_S6D04H0();
LCD_EnterSleep_S6D04H0();
LCD_ExitSleep_S6D04H0();
这几个函数RETURN掉,再通过刷一屏单色来看,通过修改上面红色部分的参数就可刷出不同颜色出来,0X0000刷出来的是黑色,0X00FF是蓝色。
一般来说如果刷出整屏单色那初始化就是正确的,否则初始化代码就不对的。
另外,写LCD驱动程序时还要先确定LCD的接口数据线是多少位的,LCD驱动IC的寄存器又是多少位的,从而选择正确的命令、数据语句来写代码。
定义这些语句是的在lcd_sw.h文件中,分别有8位、9位、16位、18位等这几种,另外还分有DMA和非DMA两种方式(DMA方式简单,速度快,通过MTK的寄存器进行操作,但灵活性差。
非DMA方式,直接对地址操作,灵活性好,但速度会有影响。
目前,一般都是用DMA方式)。
数据线的位数一般常用的是8位和16位,一般对于16位接口的数据线,不管驱动IC的寄存器是8位的还是16位的,数据只需进行一次传送就可以了;
而对于8位接口的数据线,若驱动IC的寄存器是8位的则数据进行一次传送就可以了,若驱动IC的寄存器是16位的则数据就需要进行两次传送,先传高8位再传低8位。
如下在lcd_sw.h文件中的一些定义:
#ifdefLCD_CMD_DMA_MODE//DMA方式
#defineLCD_SEND_DMA_CMD(n)\
{\
volatilekal_int32i;
\
while(LCD_IS_RUNNING){};
DISABLE_LCD_TRANSFER_COMPLETE_INT;
DISABLE_ALL_LCD_LAYER_WINDOW;
SET_LCD_ROI_CTRL_NUMBER_OF_CMD(n);
ENABLE_LCD_ROI_CTRL_CMD_FIRST;
SET_LCD_ROI_WINDOW_SIZE(0,0);
START_LCD_TRANSFER;
50;
i++){};
}
#if(defined(MAIN_LCD_8BIT_MODE))//定义8位
#defineLCD_CtrlWrite_S6D04H0(_data)\
{\
SET_LCD_CMD_PARAMETER(0,LCD_CMD,(_data&
0xFF));
LCD_SEND_DMA_CMD
(1);
}\
#defineLCD_DataWrite_S6D04H0(_data)\
SET_LCD_CMD_PARAMETER(0,LCD_DATA,(_data&
0xFF));
LCD_SEND_DMA_CMD
(1);
#defineLCD_CtrlWrite_CMD(_data)\
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((_data&
0xFF00)>
>
8));
SET_LCD_CMD_PARAMETER(1,LCD_CMD,(_data&
0x00FF));
LCD_SEND_DMA_CMD
(2);
#defineLCD_DataWrite_CMD(_data)\
SET_LCD_CMD_PARAMETER(0,LCD_DATA,((_data&
0xFF00)>
SET_LCD_CMD_PARAMETER(1,LCD_DATA,(_data&
0x00FF));
LCD_SEND_DMA_CMD
(2);
#elif(defined(MAIN_LCD_9BIT_MODE))//定义9位
SET_LCD_CMD_PARAMETER(0,LCD_CMD,((_data&
7));
SET_LCD_CMD_PARAMETER(1,LCD_CMD,((_data&
0xFF)<
<
1));
SET_LCD_CMD_PARAMETER(0,LCD_DATA,((_data&
SET_LCD_CMD_PARAMETER(1,LCD_DATA,((_data&
#elif(defined(MAIN_LCD_16BIT_MODE))//定义16位
SET_LCD_CMD_PARAMETER(0,LCD_CMD,_data);
SET_LCD_CMD_PARAMETER(0,LCD_DATA,_data&
);
#elif(defined(MAIN_LCD_18BIT_MODE))//定义18位
{\SET_LCD_CMD_PARAMETER(0,LCD_CMD,(((_data&
0xFF00)<
2)|(_data&
0xFF)<
1))\
SET_LCD_CMD_PARAMETER(0,LCD_DATA,(((_data&
0xFF00)<
#endif
#else//非DMA方式
#defineLCD_delay_S6D04H0()
#if(defined(MAIN_LCD_8BIT_MODE))
#defineLCD_CtrlWrite_S6D0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 针对 MTK 平台 LCD 调试 步骤 以及 常见 一些 训练 题目
![提示](https://static.bdocx.com/images/bang_tan.gif)