|
发表于 2009-3-7 10:03:29
|
显示全部楼层
LCD 接口使用说明
版本: 1.0.0
SW-BASE-UG-0026
2004-06-09
D2
www.spreadtrum.com
修订历史
版本 日期 作 者 审 核 说 明
1.0.0 2004-06-09 Jim.zhang Draft
重要声明
版权声明
版权所有 © 2004, 展讯通信有限公司,保留所有权利。
商标声明
展讯通信有限公司和展讯通信有限公司的产品是展讯通信有限公司专有。在提及其他公司及其产品时将使用各自公司所拥有的商标,这种使用的目的仅限于引用。
不作保证声明
展讯通信有限公司不对此文档中的任何内容作任何明示或暗示的陈述或保证,而且不对特定目的的适销性及适用性或者任何间接、特殊或连带的损失承担任何责任。
保密声明
本文档(包括任何附件)包含的信息是保密信息。接收人了解其获得的本文档是保密的,除用于规定的目的外不得用于任何目的,也不得将本文档泄露给任何第三方。
目 录
1 介绍 5
1.1 范围 5
1.2 参考文档 5
1.3 缩写和定义 5
2 概述 6
2.1 文件组织 6
2.2 LCD屏幕坐标 6
2.3 LCD操作概述 6
3 接口函数说明 7
3.1 LCD硬件初始化 7
3.2 关闭LCD 7
3.3 获取LCD基本信息 7
3.4 刷新LCD 8
3.5 LCD全屏刷新 9
3.6 进入/退出睡眠 9
3.7 调节LCD的对比度 10
4 附录 11
4.1 数据结构 11
4.1.1 LCD信息结构 LCD_INFO_T 11
4.1.2 LCD ID类型 LCD_ID_E 11
4.1.3 LCD错误类型 ERR_LCD_E 12
1 介绍
1.1 范围
本文描述LCD驱动软件的向上层如MMI所提供的API,作为应用程序设计人员必须的参考文档。
1.2 参考文档
无
1.3 缩写和定义
LCD Liquid Crystal Display
MMI Man-Machine Interface
2 概述
2.1 文件组织
lcd_api.h
该文件定义了所有的LCD接口函数,上层调用LCD提供的函数时需要包含该文件。
2.2 LCD屏幕坐标
LCD屏幕的坐标为二维坐标系统,设LCD宽为LCD-WIDTH,高为LCD-HEIGHT,则LCD屏幕的坐上交坐标表示为(0,0),右下角坐标表示为(LCD-WIDTH – 1, LCD-HEIGHT – 1)。
2.3 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进入睡眠模式可以降低系统的功耗。
3 接口函数说明
3.1 LCD硬件初始化
LCD_Init
初始化LCD硬件,如果有多个LCD,则同时被该函数初始化。成功调用该函数后即可实现对LCD的操作。此后,打开LCD的背景灯则可看见LCD屏幕上的内容。
PUBLIC ERR_LCD_E LCD_Init(void);
参数:
无
返回值:
ERR_LCD_NONE为初始化成功,其它值为错误代码。
参考:
LCD_Close
举例:
无
3.2 关闭LCD
LCD_Close
关闭LCD,当关机时会调用此函数。当有多个LCD设备时,该函数将关闭所有的LCD。
PUBLIC void LCD_Close(void);
参数:
无
返回值:
无
参考:
LCD_Init
举例:
无
3.3 获取LCD基本信息
LCD_ GetInfo
获取LCD的基本信息。具体参考LCD_INFO_T的定义。上层调用此函数,可获取LCD的信息,如bits-per-pixel以及LCD的BUFFER指针,从而可以实现对LCD的直接操作。
PUBLIC ERR_LCD_E LCD_GetInfo(
LCD_ID_E lcd_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;
uint16 lcd_width = lcd_info_ptr->lcd_width;
uint16 lcd_height=lcd_info_ptr->lcd_height;
*(uint16 *)(buf_ptr + y*lcd_width + x) = 0x0f0f;
然后根据需要调用LCD_Invalidate或者LCD_InvalidateRect函数刷新LCD有关区域。
3.4 刷新LCD
LCD_InvalidateRect
刷新LCD 的某一矩形区域。该函数将LCD BUFFER中的颜色值写入到指定的区域中,如果该指定的区域超出了指定LCD的范围,则该函数将只刷新该指定区域与LCD区域的重叠部分,即LCD范围外的区域无效。
PUBLIC ERR_LCD_E LCD_InvalidateRect(
LCD_ID_E lcd_id,
uint16 left,
uint16 top,
uint16 right,
uint16 bottom
);
参数:
[in]lcd_id
LCD ID
[in]left
矩形区域的左上角x坐标
[in]top
矩形区域的左上角y坐标
[in]right
矩形区域的右下角x坐标
[in]bottom
矩形区域的右下角y坐标
返回值:
ERR_LCD_NONE为操作成功,其他值为操作失败。
参考:
LCD_Invalidate
举例:
无
3.5 LCD全屏刷新
LCD_Invalidate
对指定LCD的整个屏幕进行刷新。
PUBLIC ERR_LCD_E LCD_Invalidate(
LCD_ID_E lcd_id
);
参数:
[in]lcd_id
LCD ID
返回值:
ERR_LCD_NONE为操作成功,其他值为操作失败。
参考:
LCD_InvalidateRect
举例:
无
3.6 进入/退出睡眠
... |
|