LCD接口说明Word文档下载推荐.docx
《LCD接口说明Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《LCD接口说明Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
展讯通信有限公司和展讯通信有限公司的产品是展讯通信有限公司专有。
在提及其他公司及其产品时将使用各自公司所拥有的商标,这种使用的目的仅限于引用。
不作保证声明
展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或者任何间接、特殊或连带的损失承担任何责任。
保密声明
本文档(包括任何附件)包含的信息是保密信息。
接收人了解其获得的本文档是保密的,除用于规定的目的外不得用于任何目的,也不得将本文档泄露给任何第三方。
目录
1介绍5
1.1范围5
1.2参考文档5
1.3缩写和定义5
2概述6
2.1文件组织6
2.2LCD屏幕坐标6
2.3LCD操作概述6
3接口函数说明7
3.1LCD硬件初始化7
3.2关闭LCD7
3.3获取LCD基本信息7
3.4刷新LCD8
3.5LCD全屏刷新9
3.6进入/退出睡眠9
3.7调节LCD的对比度10
4附录11
4.1数据结构11
4.1.1LCD信息结构LCD_INFO_T11
4.1.2LCDID类型LCD_ID_E11
4.1.3LCD错误类型ERR_LCD_E12
介绍
范围
本文描述LCD驱动软件的向上层如MMI所提供的API,作为应用程序设计人员必须的参考文档。
参考文档
无
缩写和定义
LCD
LiquidCrystalDisplay
MMI
Man-MachineInterface
概述
文件组织
lcd_api.h
该文件定义了所有的LCD接口函数,上层调用LCD提供的函数时需要包含该文件。
LCD屏幕坐标
LCD屏幕的坐标为二维坐标系统,设LCD宽为LCD-WIDTH,高为LCD-HEIGHT,则LCD屏幕的坐上交坐标表示为(0,0),右下角坐标表示为(LCD-WIDTH–1,LCD-HEIGHT–1)。
LCD操作概述
系统为每个LCD都分配了一个BUFFER,BUFFER中用于存放LCD上所有点颜色值,该BUFFER大小对应着LCD的屏幕大小,LCD上的每个PIXEL对应着BUFFER中的一个元素。
如果LCD的PIXEL的颜色为8BITS,则BUFFER的每个元素也同样为8BITS;
如果LCD的PXIEL的颜色为12BITS,则BUFFER的每个元素为16BITS;
如果LCD的每个PIXEL的颜色为16BITS则BUFFER中每个元素为16BITS;
如果LCD每个PIXEL的颜色为24BITS,则BUFFER中每个元素为24BITS;
如果LCD每个PIXEL的颜色为32BITS,则BUFFER中每个元素也同样为32BITS。
设LCD上一点坐标为(x,y),BUFFER头指针为buffer_ptr,则(x,y)对应与BUFFER中的位置为:
buffer_ptr+y*LCD-WIDTH+x。
上层如果要对LCD进行操作,首先需要获取该BUFFER的头指针,参考LCD_GetInfo()函数,然后对该BUFFER写入颜色值,最后调用LCD的刷新函数(LCD_InvalidateRect、LCD_Invalidate)即可。
另外,控制LCD进入睡眠模式可以降低系统的功耗。
接口函数说明
LCD硬件初始化
LCD_Init
初始化LCD硬件,如果有多个LCD,则同时被该函数初始化。
成功调用该函数后即可实现对LCD的操作。
此后,打开LCD的背景灯则可看见LCD屏幕上的内容。
PUBLICERR_LCD_ELCD_Init(void);
参数:
返回值:
ERR_LCD_NONE为初始化成功,其它值为错误代码。
参考:
LCD_Close
举例:
1.1关闭LCD
关闭LCD,当关机时会调用此函数。
当有多个LCD设备时,该函数将关闭所有的LCD。
PUBLICvoidLCD_Close(void);
1.2获取LCD基本信息
LCD_GetInfo
获取LCD的基本信息。
具体参考LCD_INFO_T的定义。
上层调用此函数,可获取LCD的信息,如bits-per-pixel以及LCD的BUFFER指针,从而可以实现对LCD的直接操作。
PUBLICERR_LCD_ELCD_GetInfo(
LCD_ID_Elcd_id,LCD_INFO_T*lcd_info_ptr);
[in]lcd_id
欲操作LCD的ID,参考LCD_ID_E。
[out]lcd_inf_ptr
lcd的信息结构指针。
ERR_LCD_NONE为调用成功,其它值为错误代码。
对点主屏上点(x,y)写入颜色0X0F0F的实现如下:
(假定lcd_info_ptr->
bits_per_pixel=16)
LCD_GetInfo(MAIN_LCD_ID,lcd_info_ptr);
uint16*buf_ptr=(uint16*)lcd_info_ptr->
lcdbuff_ptr;
uint16lcd_width=lcd_info_ptr->
lcd_width;
uint16lcd_height=lcd_info_ptr->
lcd_height;
*(uint16*)(buf_ptr+y*lcd_width+x)=0x0f0f;
然后根据需要调用LCD_Invalidate或者LCD_InvalidateRect函数刷新LCD有关区域。
1.3刷新LCD
LCD_InvalidateRect
刷新LCD的某一矩形区域。
该函数将LCDBUFFER中的颜色值写入到指定的区域中,如果该指定的区域超出了指定LCD的范围,则该函数将只刷新该指定区域与LCD区域的重叠部分,即LCD范围外的区域无效。
PUBLICERR_LCD_ELCD_InvalidateRect(
LCD_ID_Elcd_id,
uint16left,
uint16top,
uint16right,
uint16bottom
);
LCDID
[in]left
矩形区域的左上角x坐标
[in]top
矩形区域的左上角y坐标
[in]right
矩形区域的右下角x坐标
[in]bottom
矩形区域的右下角y坐标
ERR_LCD_NONE为操作成功,其他值为操作失败。
LCD_Invalidate
1.4LCD全屏刷新
对指定LCD的整个屏幕进行刷新。
PUBLICERR_LCD_ELCD_Invalidate(
LCD_ID_Elcd_id
);
1.5进入/退出睡眠
LCD_EnterSleep
控制LCD进入或者退出睡眠模式。
当LCD进入睡眠模式式,能降低功耗。
为了配合降低系统的功耗,在LCD进入睡眠模式时,应该同时关闭LCD的背景灯。
当推出睡眠模式后,也要打开LCD的背景灯才能显示LCD屏幕上的内容。
PUBLICERR_LCD_ELCD_EnterSleep(
BOOLEANis_sleep
[in]is_sleep
SCI_TRUE---进入睡眠模式SCI_FALSE—退出睡眠模式
ERR_LCD_NONE为执行成功,其它值为错误代码。
1.6调节LCD的对比度
LCD_SetContrast
调节LCD的对比度。
PUBLICERR_LCD_ELCD_SetContrast(
LCD_ID_Elcd_id,
uint16contrast
参数:
[in]lcd_id
[in]contrast
对比度值,不同的LCD支持不同的取值范围。
调用LCD_GetInfo可以获取LCD对比度的最大值、最小值以及缺省值。
返回值:
ERR_LCD_NONE为设置对比度成功,其它值为错误代码。
LCD_GetInfo
附录
数据结构
LCD信息结构LCD_INFO_T
typedefstructlcd_info_tag
{
uint32r_bitmask;
uint32g_bitmask;
uint32b_bitmask;
uint16bits_per_pixel;
uint16lcd_width;
uint16lcd_height;
uint16contrast_min;
uint16contrast_max;
uint16contrast_defaut;
void*lcdbuff_ptr;
}LCD_INFO_T;
r_bitmaskr(Redcolor)的MASK值
g_bitmaskg(Greencolor)的MASK值
b_bitmaskb(Blackcolor)的MASK值
bits_per_pixel每个PIXLE的颜色表示位数
lcd_widthLCD的宽度(单位为PIXEL)
lcd_heightLCD的高度(单位为PIXEL)
contrast_minLCD支持的最小对比度
contrast_maxLCD支持的最大对比度
contrast_defautLCD的缺省对比度值
lcdbuff_ptrLCDBUFFER的头指针
LCDID类型LCD_ID_E
typedefenum
MAIN_LCD_ID=0,
SUB_LCD_ID,
MAX_LCD_ID
}LCD_ID_E;
MAIN_LCD_IDLCD主屏ID号,固定为0
SUB_LCD_IDLCD附屏ID号
MAX_LCD_ID保留ID,用户不可使用
LCD错误类型ERR_LCD_E
ERR_LCD_NONE=SCI_SUCCESS,
ERR_LCD_FUNC_NOT_SUPPORT,
ERR_LCD_PARAMETER_WRONG,
ERR_LCD_POINTER_NULL,
ERR_LCD_OPERATE_FAIL,
ERR_LCD_NOT_FOUND
}ERR_LCD_E;
ERR_LCD_NONE无错误
ERR_LCD_FUNC_NOT_SUPPORT,该LCD不支持该操作
ERR_LCD_PARAMETER_WRONG,输入参数错误
ERR_LCD_POINTER_NULL,指针为空
ERR_LCD_OPERATE_FAIL,操作失败
ERR_LCD_NOT_FOUND未发现LCD