展讯LCD接口使用说明
MIPILCD调试总结(转载)

MIPILCD调试总结(转载)近来在⽤SSD2828驱动⼩⽶屏,没有代码,没有技术⽀持,⾃⼰写代码反复调试,整死我了,⽬前已经能正常显⽰图⽚,现在总结⼀下与⼤家分享⼀下,要点:1. ⼩⽶3屏的分辨率是19201080, 24bit, ⾏列像素点为10801920, 默认显⽰⽅式为从左->右,上->下,这个可以通过DCS指令修改.2. SSD2828⼿册上说SSD2828⼀⾏最⼤可显⽰1920个像素点(60Hz),⽽官⽹上说SSD2828的最⼤分辨率为1920x1200,所以我⼀直认为SSD2828⾏像素最⼤可设置为1920,列最⼤像素可设置为1200,实际上驱动⼩⽶3屏时,⾏列分别设置为1080*1920.3. 要⽤SSD2828最新的⼿册,⽬前能找到的是V1.3,旧版本有些地⽅是错的,误导⼈.4. SSD2828 RGB接⼝和MIPI接⼝的位数是⼀起设置的(通过B6寄存器设置),即没有RGB为24bit,MIPI为16bit的这种情况.5. SSD2828可⽀持的16,18,24bit的屏,⽽有的屏不⽀持16bit的,如⼩⽶3的屏就不⽀持,这个要看清楚.6. 屏的data lane和SSD2828设置的要⼀致7. SSD2828的VBP, VFP, HBP, HFP,和CPU这端设置不能⼀致,显⽰不正常,我也不知道为什么.驱动初始化包括SSD2828,LCD屏的初始化1. SSD2828初始化主要有设置PLL, 设置LCD参数(分辨率,VBP, VFP, HBP, HFP).CPU这端的Pclk设置为90~120MHz, SSD2828 PLL output为800MHz左右,900以上有些危险,⼲扰⼤(跟PCB有关系咯)2. SSD2828提供给CPU接⼝,通过DCS设置LCD的⼀些参数,这个要看LCD⼿册有哪些参数要设置,最主要的是0x29,0x11指令, 让LCD exit sleep mode和display on.屏不显⽰可能有⼏种情况1. 0x29,0x11指令发送不对,LCD没收到,⼀直在sleep状态.2. 屏要显⽰,data lane上肯定有波型,如果data lane波型都没有,那就是ssd2828都没有配置好,跟CPU这端没有关系.3. data lane有波型,可能跟C9, CA, CB,这⼏个寄存器有关,随便设置⼏个值试⼀下(最⼤,最⼩,中间值),我调试了⼀周,就是C9没有设置对,所以⼀直没显⽰屏幕抖动可能跟VBP, VFP, HBP, HFP,这⼏个参数有关,修改SSD2828和CPU LCD controler的这⼏个参数试⼀下颜⾊过度失真,右能跟B6寄存器中的PCLK_P和0xDB中的CLK_DELAY_SEL有关,我设置PCLK_P为1, CLK_DELAY_SEL为0,显⽰图⽚就好了.不⾏可修改CLK_DELAY_SEL试⼀下,再不⾏我也没办法了.除了必须设置的参数外,对显⽰有影响的寄存器主要有:C9, CA, CB, DB, DD, ED, 调试中主要修改了这些寄存器************************在展讯平台上点亮MIPI接⼝屏正常显⽰需要满⾜以下⼏条就可以:1:确认Lcd的驱动⽂件被正常编译编译进去,并且lcd 和board name⾥⾯注册⼀质,我有⼀次就是因为编译出现问题了,导致在kernel中⽆法正确读取LCD的ic的id,导致系统加载屏的驱动失败,造成系统进⼊kernel显⽰花屏,这部分是⾮常重要的,假如未能正确的编译进系统,你再怎么调试,屏照样⽆法正常的显⽰,这⾮常的关键!2. 必须保证数据能够正确的传输到屏上,我有⼀次调试屏驱动时,发现屏上的显⽰始终是⼀些横竖条纹,或者直接灰屏,通过在⽰波器上检测屏引脚的波形,发现屏上的数据不正常,根本没有切换到hp下刷数据,导致屏⽆法正常的显⽰,⼀般在读取ic 的id和初始化设置指令时,都是在mipi的低速(lp)模式下,在初始化完成后,需要切换到⾼速(hp)状态下,才能正常的显⽰!3. 必须保证ic设置的proch和timing,通道,速率正确,屏才可以正常的显⽰,⼀般显⽰出现花屏,显⽰偏移等问题,通常情况下,就是因为你设置的某些参数不正确,导致显⽰异常!4:仔细检查上电同时测量,同时将28根rgb interface对应gpio设为lcdc func。
LCD屏接口详解

LCD的接口有多种,分类很细。
主要看LCD的驱动方式和控制方式,目前手机上的彩色LCD的连接方式一般有这么几种:MCU模式,RGB模式,SPI模式,VSYNC模式,MDDI模式,DSI模式。
MCU模式(也写成MPU模式的)。
只有TFT模块才有RGB接口。
但应用比较多的就是MUC模式和RGB 模式,区别有以下几点:1.MCU接口:会解码命令,由timing generator产生时序信号,驱动COM和SEG驱器。
RGB接口:在写LCD register setting时,和MCU接口没有区别。
区别只在于图像的写入方式。
2.用MCU模式时由于数据可以先存到IC内部GRAM后再往屏上写,所以这种模式LCD可以直接接在MEMORY的总线上。
用RGB模式时就不同了,它没有内部RAM,HSYNC,VSYNC,ENABLE,CS,RESET,RS可以直接接在MEMORY的GPIO口上,用GPIO口来模拟波形.3.MPU接口方式:显示数据写入DDRAM,常用于静止图片显示。
RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。
MCU接口和RGB接口主要的区别是:MCU接口方式:显示数据写入DDRAM,常用于静止图片显示。
RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。
MCU模式因为主要针对单片机的领域在使用,因此得名.后在中低端手机大量使用,其主要特点是价格便宜的。
MCU-LCD接口的标准术语是Intel提出的8080总线标准,因此在很多文档中用I80 来指MCU-LCD屏。
主要又可以分为8080模式和6800模式,这两者之间主要是时序的区别。
数据位传输有8位,9位,16位,18位,24位。
连线分为:CS/,RS(寄存器选择),RD/,WR/,再就是数据线了。
优点是:控制简单方便,无需时钟和同步信号。
缺点是:要耗费GRAM,所以难以做到大屏(3.8以上)。
1.8寸LCD模块用户手册说明书

1.8inch LCD ModuleUSER MANUALOVERVIEWThis product is 1.8inch resistive screen module with resolution 128x160. It has internal controller and uses SPI interface for communication. It has already basic functions: setting the point size, the line thickness, drawing circle, rectangle, and displaying English characters.We provide Raspberry Pi, STM32 and Arduino routines for this product.FEATURESDisplay type: TFTInterface: SPIDriver: ST7735SColors: 256KResolution: 128 x 160 (Pixel)Product size: 56.5 x 34(mm)Display size: 35.4(W) x 28.03(H)(mm)Pixel size: 0.219(W) x 0.219(H)(MM)Operating temperature: -30°C ~ 85°CINTERFACE DESCRIPTIONMarking Description3V3 3.3V powerGND groundDIN SPI data inputCLK SPI clockCS chip selectDC data/commandRST resetBL back lightPROGRAM ANALYSIS1.Working principles:ST7735S is 132 x 162 pixels LCD panel, but the product is 128 x 160 pixels LCD display.In the display there are two processes: the horizontal direction scanning – from the 2nd pixel, the vertical direction scanning – from the 1st pixel. So, you can see that positions of pixels in RAM correspond to their actual positions while displaying.The LCD supports 12-bit, 16-bit and 18-bit per pixel input formats. They correspond to RGB444, RGB565 and RGB666 color formats. This routine uses the RGB565 color format, which is commonly used.LCD uses 4-wired SPI communication interface, which can save a lot of GPIO ports and provides fast data transfer to LCD as well.munication protocolNote: there is a difference from traditional SPI. Here we only need display, so sine wires come from slave to host are hidden. The detailed information please refer to datasheet at page 58RESX: Reset. Pull-down while powering on the module. Generally set as 1IM2: data communication mode pin, which define usage of SPICSX: chip selection control pin. If CS=0 – the chip is selectedD/CX: data/command control pin, if DC=0 – command is written, otherwise – data are writtenSDA: transmitted RGB dataSCL: SPI clockThe SPI communication protocol of the data transmission uses control bits: clock phase (CPHA) and clock polarity (CPOL):The value of CPOL determines the level when the serial synchronous clock is in idle state. CPOL=0, that its idle level is 0.The value of CPHA determines the timing of the data bits relative to the clock pulses. CPHA=0, data is sampled at the first clock pulse edge.The combination of these two parameters provides 4 modes of SPI data transmission. The commonly used is SPI0 mode, it is that GPOL=0 and CPHA=0.From the figure above, SCLK begins to transfer data at the first falling edge. 8 bits data are transferred at one clock period. Use SPI0 mode, High bits transfer first, and LOW bits following. DEMO CODERaspberry Pi, STM32 and Arduino programs are provided, wherein Raspberry Pi provides BCM2835, WiringPi and python programs. It implements common graphical functions as drawing dot, line, rectangle, circle, setting their sizes and line with; filling arias, and displaying English characters of 5 common fonts and other display’s functions.Following instructions are offered for you convenienceRASPBERRY1.Hardware connection1.8inch LCD module Raspberry Pi3.3V 3.3VGND GNDDIN MOSI (PIN 19)CLK SCLK (PIN23)CS CE0 (PIN 8)DC GPIO.6 (PIN 22)RST GPIO.2 (PIN13)BL GPIO.5 (PIN18)2.Enable SPI function of the Raspberry Pisudo raspi-configSelect: Advanced Options -> SPI -> yesActivate SPI hardware driver.3.Installation of librariesFore detailed information about libraries installation, please refer to this page:https:///wiki/Libraries_Installation_for_RPiIt is description of WiringPi, bcm2835 and python libraries installation.ageBCM2835 and WiringPi program should be only copied into directory of Raspberry Pi ()by samba or directly copy to the SD card). The following code are compied directly to the user directory of Pi.4.1Usage of BCM2835Run ls command as you can see below:bin: contains “.o” files.We don’t need to change it generallyFonts: contains 5 commonly used fontsPic: contains pictures used for displaying. The resolution of pictures must be 128x128,otherwise they cannot be displayed properly. And the format of pictures must be BMP.Obj: contains object files, like main.c, LCD_Driver.c, DEV_Config.c, LCD_GUI.c and theirheader files.main.c: The mian function. What need to note is that even though there are LCD_ScanDir used to control the direction of scanning, you need not to change it. Because this module is designed for Raspberry Pi, and for compatibility, we don’t recommend you to change it.DEV_Config.c:Definations of Raspberry Pi’s pins and the communication mode.LCD_Driver.c: Drive code of LCD. Need not change generally.LCD_BMP.c: Reading and analyzing BMP files and display themMakefile: This file contains compilation rules. If there are some changes in code, please run make clean to clean all the dependency file and executable files. Then execute make to compile the whole project and generate new executable files.tftlcd_1in8: executable file, generated by command makeTo run the program, you just need to run this command on terminal: sudo ./tftlcd_1in8 4.2WiringPiInput ls command, now you can see following:T he folders is similar to BCM2835’s. The only differences are that:1.WiringPi oprates by read/write the device files of Linux OS. and the bcm2835 is libraryfunction of Raspberry Pi’s CPU, it operates registers directly. Thus, if you have usedbcm2835 libraries firstly, the usage of WiringPi code will be failed. In this case, you just need to reboot the system and try again.2.Due to the first difference, they underlying configuration are different. In DEV_Config.c,use wiringpiPi and the corresponding wiringPiSPI to provide underlay interfaces.The program executed by command sudo ./tftlcd_1in8 as well4.3PythonInput ls command, you can see that:LCD_1in8.py: Driver code of LCDLCD_Config.py: configuration of hardware underlaying interface.Executing program: sudo python LCD_1in8.pyNote: Some of the OS don’t have image libraries. In this case, you can run: sudo apt-get install python-imaging to install the image library.Image is an image processing library of python, represents any image by an image object.Thus, we can create a blank image by new, its size must be same as the display size of LCD.Then draw picture by Draw library, finally, transfer the image to the LCD. Here usingImage.load() too read RGB888 data of pixel, and convert to RGB565. Scanning every pixel then we could get the whole image for displaying. Its most important code is as below:5.Auto-runInitialize autorun in Raspberry Pi by configuring code of /etc/rc.local file:sudo vim /etc/rc.localBefore exit0 add:sudo python /home/pi/python/demo.py &Important: to place the program /home/pi/python/demo.py at the same director, you can input command pwd to get the path. And & character is necessary at the end of command line, otherwise probable need to reinstall the system (impossible terminate the process by pressing ctrl+c, impossible to login with pi user permission).STM32This demo uses XNUCLEO-F103RB developing board and is based on HAT library.1.Hardware connection1.8inch LCD XNUCLEO-F103RBVCC 3V3GND GNDDIN PA7CLK PA5CS PB6DC PA8RST PA9BL PC72.Expected resultProgram the demo into the development Board. Firstly the screen is refreshed completely, then a solid line, dashed line, open circle, solid circle, rectangle, solid torque are drawn and English characters are shown.ARDUINOUNO PLUS Arduino development board is used here.1.Hardware connection1.8inch LCD Arduino3.3V 3V3GND GNDDIN D11CLK D13CS D10DC D7RST D8BL D92.Due to small global memory 2Kb of UNO PLUS, the display can’t work in graphical mode,but the calling method is the same. Just because there is no enough memory, this demo is not provided.COMPATIBLE CODE PORTINGOffered demo is the commonly used programs, which are able to be ported. They can be used with two screens and the difference is only in initialization of them and their sizes.The usage method is defined by macros. In LCD_Driver.h or in LCD.h:#define LCD_1IN44#define LCD_1in8.As the name of the macros, they are used for 1.44inch and 1.8inch LCD separately. To use for one LCD, just need to comment other one.For example://#define LCD_1IN44#define LCD_1IN8Here we use it for 1.8inch LCD, so we comment the 1.44 macro. After saving, Run make clean to remove dependency files, and then run make to generate new executable files.。
智能硬件显示屏(LCD)接口大全,详解各种主流接口的用途和差别

智能硬件显示屏(LCD)接口大全,详解各种主流接口的用途和差别显示屏智能硬件设备,往往需要一块显示屏作为交互入口。
显示屏大,显示的内容多,对硬件系统要求高。
简单的智能硬件产品,可以是用小尺寸的显示屏,或段式显示屏,以降低硬件性能要求,从而降低成本。
显示屏的选型,对开发工程师来讲十分重要。
硬件工程师要熟知各种显示屏的接口以及使用环境,根据接口选择合适的主控芯片。
设备对外接口:VGA、DVI、HDMI对于大型智能硬件设备,如广告机、K歌房,一般都采用市场上现有的液晶电视作为显示器。
因此接口也是电视常用接口,VGA、DVI、HDMI等。
主控端采用多核ARM或x86系统,类似于电脑外接电视的做法。
这些接口和协议都是很标准的,CPU自带接口的话可以直接用,没有的话也可以很方便的使用转换芯片来实现这些接口的输出。
一般智能硬件产品,只设计HDMI视频输出,很少有VGA接口,几乎没有DVI接口设备对内接口:串口、并口对于设备本身需要屏幕的,一般不会使用外部接口,而是使用板上数据接口。
•小屏(I2C、SPI、UART):2寸以下的小尺寸LCD屏,或者段式液晶显示屏,显示数据量比较少,普遍采用低速串口,如I2C、SPI、UART。
如果屏幕分辨率超过320x240,使用SPI的话,刷屏速度就会比较慢,所以高分辨率屏幕没有采用低速串口的。
至于I2C和UART,速度比SPI更慢,所以一般只用来驱动段式显示屏或者1寸以下的OLED屏。
屏幕上使用的I2C、SPI和UART,和其他外设使用的都是完全一样的传输协议。
•中屏:MCU、RGB:2寸至7寸的低分辨率LCD屏(不超过1027x768),有一些采用并口传输数据的。
根据数据格式可以分为MCU接口和RGB接口。
并口支持的显示数据量不大也不小。
能够覆盖720P以下的分辨率,但无法更高。
想显示更多数据只能用高速串口。
•大屏:MIPI、LVDS:高分辨率屏,从720P到2K,几乎都是高速串口的接口。
ampire__12864显示器中文手册及示例代码

AMPIRE 128X64显示器1. LCD接口液晶显示器件【3】(LCD)独具的低压、微功耗特性使他在单片机系统中特得到了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,因为汉字不能像西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。
本课设所选择的LCD是AMPIRE128×64的汉字图形型液晶显示模块,可显示汉字及图形,图形液晶显示显示器接口如图3-1所示。
图3-1 LCD电路图表 AMPIRE128×64接口说明表管脚管脚电平说明号1CS1H/L 片选择信号,低电平时选择前64列2CS2H/L片选择信号,低电平时选择后64列3GND0V 逻辑电源地4VCC 逻辑电源正5V0 LCD驱动电压,应用时在VEE与V0之间加一2K可调电阻6RS H/L 数据\指令选择:高电平:数据D0-D7将送入显示RAM;低电平:数据D0-D7将送入指令寄存器执行7R/W H/L 读\写选择:高电平:读数据;低电平:写数据8 E H/L 读写使能,高电平有效,下降沿锁定数据9DB0H/L 数据输入输出引脚10DB1H/L 数据输入输出引脚11DB2H/L 数据输入输出引脚12DB3H/L 数据输入输出引脚13DB4 H/L数据输入输出引脚14DB5H/L数据输入输出引脚15DB6H/L数据输入输出引脚16DB7H/L数据输入输出引脚17RST L复位信号,低电平有效18VOUT-10V LCD驱动电源2. 指令描述(1)显示开/关设置CODE:ArrayR/WRS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0功能:设置屏幕显示开/关。
DB0=H,开显示;DB0=L,关显示。
不影响显示RAM(DD RAM)中的内容。
(2)设置显示起始行CODE:R/W RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0功能:执行该命令后,所设置的行将显示在屏幕的第一行。
LCD12864使用手册

文件型号LCD12864文件类型服务文件版本 1.0图形点阵液晶显示模块使用手册LCD12864一.概述HEM12864I是一种图形点阵液晶显示器。
它主要采用动态驱动原理由行驱动—控制器和列驱动器两部分组成了128(列)×64(行)的全点阵液晶显示。
此显示器采用了COB的软封装方式,通过导电橡胶和压框连接LCD,使其寿命长,连接可靠。
二.特性1.工作电压为+5V±10% ,可自带驱动LCD所需的负电压。
2.全屏幕点阵,点阵数为128(列)×64(行),可显示8(/行)×4(行)个(16×16点阵)汉字,也可完成图形,字符的显示。
3.与CPU接口采用5条位控制总线和8位并行数据总线输入输出,适配M6800系列时序。
4.内部有显示数据锁存器。
5.简单的操作指令,显示开关设置,显示起始行设置,地址指针设置和数据读/写等指令。
三.外形尺寸1.外形尺寸图2.主要外形尺寸项目标 准 尺 寸 单 位模 块 体 积 54.0×50.0×6.5mm定 位 尺 寸 49.0×45.0mm视 域43.5×29.0 mm行 列 点 阵 数 128×64dots点 距 离 0.32×0.39mm点 大 小0.28×0.35mm四.硬件说明1.引脚特性2.引脚号引脚名称 级 别 引脚功能描述1 VSS0V电源地2 VDD +5V 电源电压3 VLCD 0~-10V LCD驱动负电压,要求VDD-VLCD=13V4 RS H/L 寄存器选择信号5 R/W H/L 读/写操作选择信号6 E H/L 使能信号7 DB08 DB19 DB210 DB3H/L八位三态并行数据总线11 DB412 DB513 DB614 DB715 CS1 H/L 片选信号,当CS1=H时,液晶左半屏显示16 CS2 H/L 片选信号,当CS2=H时,液晶右半屏显示17 /RES H/L 复位信号,低有效18 VEE -10V 输出-10V的负电压(单电源供电)19 BLA+5V 背光电源20 BLK 0V 背光电源2.原理简图3.主要各部分详解99999991)显示数据RAM(DDRAM)DDRAM(64×8×8 bits)是存储图形显示数据的。
展讯SC8810的参数与功能介绍(含sc8810平台LCD架构)

展讯SC8810的参数与功能介绍(含sc8810平台
LCD架构)
展讯SC8810的参数与功能介绍
展讯SC8810的参数与功能介绍SC8810的工艺说明:采用40纳米CMOS工艺,是一款高集成度、低功耗的TD-SCDMA主流智能手机平台。
该芯片集成了1GHz CortexA5处理器、图形加速专用GPU和电源管理单元,实现单芯片支持TD-HSPA/TD-SCDMA/EDGE/GPRS/GSM多模。
SC8810面向低成本智能手机市场,可提供接近高端智能手机的互联网及图形性能。
展讯提供完整的SC8810 Android系统交钥匙解决方案,帮助客户降低产品开发难度,并缩短产品的开发及上市周期。
展讯sc8810平台LCD架构浅析。
LCD屏接口详解

LCD的接口有多种,分类很细。
主要看LCD的驱动方式和控制方式,目前手机上的彩色LCD的连接方式一般有这么几种:MCU模式,RGB模式,SPI模式,VSYNC模式,MDDI模式,DSI模式。
MCU模式(也写成MPU模式的)。
只有TFT模块才有RGB接口。
但应用比较多的就是MUC模式和RGB 模式,区别有以下几点:1.MCU接口:会解码命令,由timing generator产生时序信号,驱动COM和SEG驱器。
RGB接口:在写LCD register setting时,和MCU接口没有区别。
区别只在于图像的写入方式。
2.用MCU模式时由于数据可以先存到IC内部GRAM后再往屏上写,所以这种模式LCD可以直接接在MEMORY的总线上。
用RGB模式时就不同了,它没有内部RAM,HSYNC,VSYNC,ENABLE,CS,RESET,RS可以直接接在MEMORY的GPIO口上,用GPIO口来模拟波形.3.MPU接口方式:显示数据写入DDRAM,常用于静止图片显示。
RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。
MCU接口和RGB接口主要的区别是:MCU接口方式:显示数据写入DDRAM,常用于静止图片显示。
RGB接口方式:显示数据不写入DDRAM,直接写屏,速度快,常用于显示视频或动画用。
MCU模式因为主要针对单片机的领域在使用,因此得名.后在中低端手机大量使用,其主要特点是价格便宜的。
MCU-LCD接口的标准术语是Intel提出的8080总线标准,因此在很多文档中用I80 来指MCU-LCD屏。
主要又可以分为8080模式和6800模式,这两者之间主要是时序的区别。
数据位传输有8位,9位,16位,18位,24位。
连线分为:CS/,RS(寄存器选择),RD/,WR/,再就是数据线了。
优点是:控制简单方便,无需时钟和同步信号。
缺点是:要耗费GRAM,所以难以做到大屏(3.8以上)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LCD 接口使用说明版本: 1.0.0SW-BASE-UG-00262004-06-09D2修订历史版本日期作者审核说明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.2LCD屏幕坐标 (6)2.3LCD操作概述 (6)3接口函数说明 (7)3.1LCD硬件初始化 (7)3.2关闭LCD (7)3.3获取LCD基本信息 (7)3.4刷新LCD (8)3.5LCD全屏刷新 (9)3.6进入/退出睡眠 (9)3.7调节LCD的对比度 (10)4附录 (11)4.1数据结构 (11)4.1.1LCD信息结构 LCD_INFO_T (11)4.1.2LCD ID类型 LCD_ID_E (11)4.1.3LCD错误类型 ERR_LCD_E (12)1 介绍1.1 范围本文描述LCD驱动软件的向上层如MMI所提供的API,作为应用程序设计人员必须的参考文档。
1.2 参考文档无1.3 缩写和定义LCD Liquid Crystal DisplayMMI Man-Machine Interface2 概述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 关闭LCDLCD_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_ptrlcd的信息结构指针。
返回值: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 刷新LCDLCD_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_idLCD 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_idLCD ID返回值:ERR_LCD_NONE为操作成功,其他值为操作失败。
参考:LCD_InvalidateRect举例:无3.6 进入/退出睡眠LCD_EnterSleep控制LCD进入或者退出睡眠模式。
当LCD进入睡眠模式式,能降低功耗。
为了配合降低系统的功耗,在LCD进入睡眠模式时,应该同时关闭LCD的背景灯。
当推出睡眠模式后,也要打开LCD的背景灯才能显示LCD屏幕上的内容。
PUBLIC ERR_LCD_E LCD_EnterSleep(LCD_ID_E lcd_id,BOOLEAN is_sleep);参数:[in]lcd_idLCD ID[in]is_sleepSCI_TRUE---进入睡眠模式 SCI_FALSE—退出睡眠模式返回值:ERR_LCD_NONE为执行成功,其它值为错误代码。
参考:无举例:无3.7 调节LCD的对比度LCD_SetContrast调节LCD 的对比度。
PUBLIC ERR_LCD_E LCD_SetContrast(LCD_ID_E lcd_id,uint16 contrast);参数:[in] lcd_idLCD ID[in] contrast对比度值,不同的LCD支持不同的取值范围。
调用LCD_GetInfo可以获取LCD对比度的最大值、最小值以及缺省值。
返回值:ERR_LCD_NONE为设置对比度成功,其它值为错误代码。
参考:LCD_GetInfo举例:无4 附录4.1 数据结构4.1.1 LCD信息结构 LCD_INFO_Ttypedef struct lcd_info_tag{uint32 r_bitmask;uint32 g_bitmask;uint32 b_bitmask;uint16 bits_per_pixel;uint16 lcd_width;uint16 lcd_height;uint16 contrast_min;uint16 contrast_max;uint16 contrast_defaut;void *lcdbuff_ptr;} LCD_INFO_T;参数:r_bitmask r(Red color)的MASK值g_bitmask g(Green color)的MASK值b_bitmask b(Black color)的MASK值bits_per_pixel 每个PIXLE的颜色表示位数lcd_width LCD的宽度(单位为PIXEL)lcd_height LCD的高度(单位为PIXEL)contrast_min LCD支持的最小对比度contrast_max LCD支持的最大对比度contrast_defaut LCD的缺省对比度值lcdbuff_ptr LCD BUFFER的头指针4.1.2 LCD ID类型 LCD_ID_Etypedef enum{MAIN_LCD_ID = 0,SUB_LCD_ID,MAX_LCD_ID} LCD_ID_E;参数:MAIN_LCD_ID LCD主屏ID号,固定为0 SUB_LCD_ID LCD附屏ID号MAX_LCD_ID 保留ID,用户不可使用4.1.3 LCD错误类型 ERR_LCD_Etypedef enum{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。