350 likes | 516 Views
液晶显示 技术. wateryear. 提纲. 一.硬件基础部分 1 .液晶显示屏( LCD ) 1.1 主要用途: 1.2 分类: 1.3 灰度: 二 . 应用编程基础 2.1 驱动与显示 2.2 数据格式 2.3 部分重要接口: 三.程序示例:. 一.硬件基础部分. 1 .液晶显示屏( LCD ) 1.1 主要用途:
E N D
液晶显示 技术 wateryear
提纲 • 一.硬件基础部分 • 1.液晶显示屏(LCD) • 1.1 主要用途: • 1.2 分类: • 1.3 灰度: • 二. 应用编程基础 • 2.1 驱动与显示 • 2.2 数据格式 • 2.3 部分重要接口: • 三.程序示例:
1.液晶显示屏(LCD) • 1.1 主要用途: • 液晶屏(LCD:Liquid Crystal Display)主要用于显示文本及图形信息。液晶显示屏具有轻薄、体积小、低耗电量、无辐射危险、平面直角显示以及影像稳定不闪烁等特点,因此在许多电子应用系统中,常使用液晶屏作为人机界面。
1.2 分类: • 1.2.1液晶显示屏按显示原理分为STN 和TFT 两种: • STN(Super Twisted Nematic,超扭曲向列)液晶屏 • STN 液晶显示器中,使用X、Y 轴交叉的单纯电极驱动方式,即X、Y 轴由垂直与水平方向的驱动电极构成,水平方向驱动电压控制显示部分为亮或暗,垂直方向的电极则负责驱动液晶分子的显示。STN 液晶显示屏加上彩色滤光片,并将单色显示矩阵中的每一像素分成三个子像素,分别通过彩色滤光片显示红、绿、蓝三原色,也可以显示出色彩。单色液晶屏及灰度液晶屏都是STN 液晶屏。
不加电 不加电 加电 加电 组织结构 不加电 加电
TFT(Thin Film Transistor,薄膜晶体管)彩色液晶屏 • 随着液晶显示技术的不断发展和进步, TFT 液晶显示屏被广泛用于制作成电脑中的液晶显示设备。 TFT 液晶显示屏既可在笔记本电脑上应用(现在大多数笔记本电脑都使用TFT 显示屏),也常用于主流台式显示器
1.3 灰度: • 大家知道,液晶的显示效果,是由加在液晶上的有效电压决定的。 • 灰度(彩色)的实现有两种方式,即PWM(脉宽调制)和FRC(帧率控制)。 • PWM是在一次扫描时间内分成若干个时间片,如16级灰度,就分成16个时间片,如果显示5/16灰度,那么只有5/16的时间内是有驱动电压的(对同一个点而言),最后的等效电压就只有全黑的5/16了; • FRC跟PWM类似,只是每个时间片变成了一帧,如显示16级灰度,那么就要用16帧,显示5/16的灰度,在16帧里只有5帧有驱动电压(对同一个点而言),最后的等效电压就只有全黑的5/16了。 • 至于彩色,跟灰度是一样的,只是三基色的调配而已,如3-3-2方式的256色,只是RGB三个颜色的灰度分别是8,8,4而已
大家知道,现代显示器件的显示方式,基本上都是采用动态扫描的方法实现整幅画面的显示。大家知道,现代显示器件的显示方式,基本上都是采用动态扫描的方法实现整幅画面的显示。 • 比如电视机的显像管(CRT,阴极射线管),通过帧同步信号和行同步信号的控制,电子枪的电子束逐行逐点的扫描,将电子打在荧光点上,使之发光,通过视觉暂留的作用,我们看到的就是一副完整的画面。
LCD与CRT类似,也是动态的扫描。但CRT是模拟方式的,通过电路控制,电子束可以任意移动,而LCD是数字方式的,只有位置固定的电流通路,所以只能通过电路矩阵逐行扫描,而不能到逐点,即一行上所有的点同时工作。LCD与CRT类似,也是动态的扫描。但CRT是模拟方式的,通过电路控制,电子束可以任意移动,而LCD是数字方式的,只有位置固定的电流通路,所以只能通过电路矩阵逐行扫描,而不能到逐点,即一行上所有的点同时工作。
2.1 驱动与显示 • 液晶屏的显示要求设计专门的驱动与显示控制电路。驱动电路包括提供液晶屏的驱动电源和液晶分子偏置电压,以及液晶显示屏的驱动逻辑;显示控制部分可由专门的硬件电路组成,也可以采用集成电路(IC)模块,比如EPSON 的视频驱动器等;还可以使用处理器外围LCD 控制模块。实验板的驱动与显示系统包括S3C2410X 片内外设LCD 控制器、液晶显示屏的驱动逻辑以及外围驱动电路。
2.2 数据格式 • 需要与硬件工程师配合的是他采用了哪种接线方法,24位(RGB888)16(RGB565)位 8(单色)或其它。
2.3 部分重要接口: • LDD[0~7]:7位数据线。 • L_PCLK:点时钟(Pixel clock),用于把每一点的数据送入移位寄存器; • L_LCLK:行时钟(Line clock),用于指示一行数据由移位寄存器到显示驱动芯片传输完毕,并使得行指针加1。在16位TFT方式下,就是水平同步信号; • L_FCLK:帧时钟(Frame clock),用于指示一帧图像的开始,同时把行指针置于显示屏的第一行。在16位TFT方式下,就是垂直同步信号;
本程序是一个简单的实现驱动320*240LCD的应用程序,希望能起到抛砖引玉的效果。本程序是一个简单的实现驱动320*240LCD的应用程序,希望能起到抛砖引玉的效果。
SED1335驱动320*240LCD • /*========================================= • SED1335驱动320x240图形液晶驱动演示程序 • 接口情况表述: • No: LCM ----- 52 • --------------------- • 1...VSS..... GND 地线 • 2...VDD..... +5V(VCC) 电源 • 3...VO ..... -Vadj Input 对比度负压调整输入 • 4...A0 ..... P2.0 寄存器选择信号,命令数据方式选择 • 5.../WR..... WR 写有效 • 6.../RD..... RD 读有效
7...D0 ..... P0.0 数据总线 D0 • 8...D1 ..... P0.1 数据总线 D1 • 9...D2 ..... P0.2 数据总线 D2 • 10..D3 ..... P0.3 数据总线 D3 • 11..D4 ..... P0.4 数据总线 D4 • 12..D5 ..... P0.5 数据总线 D5 • 13..D6 ..... P0.6 数据总线 D6 • 14..D7 ..... P0.7 数据总线 D7 • 15../CS .... GND 片选通信号,低电平有效.实际使用应编入地址 • 16../RES.... /RESET 复位信号,低电平有效,阻容式复位电路 • 17..VEE..... -Vout 逆变-22.5V 负电压输出 • 18..VSS..... GND 地线 0V • ============================================= • 320x240液晶模块配用sed1335驱动接口板,sed1335驱动接口板上配用32K ram • ============================================*/
#include<ABSACC.H>#include<AT89X55.H>//*************SED1335参数设置*****************//#definesystem_set0x40//SED1335指令#definesleep_in0x53#definedisp_on0x59#definedisp_off0x58#definescroll0x44#definescrform0x5d#definecgram_adr0x5c#definecsrdir_right0x4c#definecsrdir_left0x4d#definecsrdir_up0x4e#definecsrdir_down0x4f#definehdot_scr0x5a#defineovlay0x5b#definecsrw0x46#definecsrr0x47#definemwrite0x42#definemread0x43#include<ABSACC.H>#include<AT89X55.H>//*************SED1335参数设置*****************//#definesystem_set0x40//SED1335指令#definesleep_in0x53#definedisp_on0x59#definedisp_off0x58#definescroll0x44#definescrform0x5d#definecgram_adr0x5c#definecsrdir_right0x4c#definecsrdir_left0x4d#definecsrdir_up0x4e#definecsrdir_down0x4f#definehdot_scr0x5a#defineovlay0x5b#definecsrw0x46#definecsrr0x47#definemwrite0x42#definemread0x43
//#defineDWRXBYTE[0x0400]//#defineCWRXBYTE[0x0A00]/*--文字:常--*/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/unsignedintcodechang[]={0x04,0x18,0x10,0x90,0x77,0x55,0x15,0xF5,//#defineDWRXBYTE[0x0400]//#defineCWRXBYTE[0x0A00]/*--文字:常--*/*--宋体12;此字体下对应的点阵为:宽x高=16x16--*/unsignedintcodechang[]={0x04,0x18,0x10,0x90,0x77,0x55,0x15,0xF5, • 0x15,0x15,0x37,0xD0,0x54,0x18,0x10,0x00, 0x00,0x00,0x7C,0x40,0x40,0x40,0x40,0xFF, • 0x40,0x40,0x48,0x44,0x78,0x00,0x00,0x00};unsignedcharcodesystem_set_code[8]//={0x30,0x87,0x07,39,60,239,40,0};={0x30,0x87,0x07,39,66,240,48,0};unsignedcharcodescroll_set_code[10]={0x0,0x0,240,0x80,0x25,240,0x00,0x4B,0x80,0x70};codescrform_ini[2]={0x07,0x86};codehdot_scr_ini[1]={0x00};codeovlay_ini[1]={0x00};codedisp_on_ini[1]={0x16};codedisp_off_ini[1]={0x00};codecur_set_ini1[2]={0x00,0x00};codenull[1]={0x00};codekill[]={0x63};sbitSED1335_A0=P2^0;sbitSED1335_WR=P2^1;sbitSED1335_RD=P2^2;sbitCS=P2^4;sbitSEL1=P2^3;
voidsed1335_write(unsignedintcommandcode,unsignedint*parameter,unsignedintn){unsignedi=0;SED1335_A0=1;SED1335_WR=0;SED1335_RD=1;P0=commandcode;SED1335_A0=0;SED1335_WR=0;SED1335_RD=1;for(i=0;i<n;i++){P0=parameter[i];}}voidsed1335_write(unsignedintcommandcode,unsignedint*parameter,unsignedintn){unsignedi=0;SED1335_A0=1;SED1335_WR=0;SED1335_RD=1;P0=commandcode;SED1335_A0=0;SED1335_WR=0;SED1335_RD=1;for(i=0;i<n;i++){P0=parameter[i];}}
voidclr_scr(){inti=0;sed1335_write(csrdir_right,null,1);sed1335_write(csrw,cur_set_ini1,2);SED1335_A0=1;SED1335_WR=0;SED1335_RD=1;P0=mwrite;SED1335_A0=0;SED1335_WR=0;SED1335_RD=1;for(i=0;i<32000;i++){P0=0x00;}sed1335_write(csrw,cur_set_ini1,2);}voidclr_scr(){inti=0;sed1335_write(csrdir_right,null,1);sed1335_write(csrw,cur_set_ini1,2);SED1335_A0=1;SED1335_WR=0;SED1335_RD=1;P0=mwrite;SED1335_A0=0;SED1335_WR=0;SED1335_RD=1;for(i=0;i<32000;i++){P0=0x00;}sed1335_write(csrw,cur_set_ini1,2);}
display_sed1335(){ inti=0;SED1335_A0=0; • SED1335_WR=0; • SED1335_RD=1; • SEL1=0; • CS=0;for(i=0;i<32;i++){ P0=chang[i]; }}