Download presentation
Presentation is loading. Please wait.
1
液晶显示 技术 wateryear
2
提纲 一.硬件基础部分 二. 应用编程基础 三.程序示例: 1.液晶显示屏(LCD) 1.1 主要用途: 1.2 分类: 1.3 灰度:
2.1 驱动与显示 2.2 数据格式 2.3 部分重要接口: 三.程序示例:
3
一.硬件基础部分
4
1.液晶显示屏(LCD) 1.1 主要用途: 液晶屏(LCD:Liquid Crystal Display)主要用于显示文本及图形信息。液晶显示屏具有轻薄、体积小、低耗电量、无辐射危险、平面直角显示以及影像稳定不闪烁等特点,因此在许多电子应用系统中,常使用液晶屏作为人机界面。
5
1.2 分类: 1.2.1 液晶显示屏按显示原理分为STN 和TFT 两种: STN(Super Twisted Nematic,超扭曲向列)液晶屏 STN 液晶显示器中,使用X、Y 轴交叉的单纯电极驱动方式,即X、Y 轴由垂直与水平方向的驱动电极构成,水平方向驱动电压控制显示部分为亮或暗,垂直方向的电极则负责驱动液晶分子的显示。STN 液晶显示屏加上彩色滤光片,并将单色显示矩阵中的每一像素分成三个子像素,分别通过彩色滤光片显示红、绿、蓝三原色,也可以显示出色彩。单色液晶屏及灰度液晶屏都是STN 液晶屏。
6
不加电 加电 不加电 加电 组织结构 不加电 加电
7
TFT(Thin Film Transistor,薄膜晶体管)彩色液晶屏
随着液晶显示技术的不断发展和进步, TFT 液晶显示屏被广泛用于制作成电脑中的液晶显示设备。 TFT 液晶显示屏既可在笔记本电脑上应用(现在大多数笔记本电脑都使用TFT 显示屏),也常用于主流台式显示器
9
液晶显示屏按显示色彩分为单色和彩色 单色
10
彩色
11
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而已
14
大家知道,现代显示器件的显示方式,基本上都是采用动态扫描的方法实现整幅画面的显示。
比如电视机的显像管(CRT,阴极射线管),通过帧同步信号和行同步信号的控制,电子枪的电子束逐行逐点的扫描,将电子打在荧光点上,使之发光,通过视觉暂留的作用,我们看到的就是一副完整的画面。
15
LCD与CRT类似,也是动态的扫描。但CRT是模拟方式的,通过电路控制,电子束可以任意移动,而LCD是数字方式的,只有位置固定的电流通路,所以只能通过电路矩阵逐行扫描,而不能到逐点,即一行上所有的点同时工作。
16
二. 应用编程基础
17
2.1 驱动与显示 液晶屏的显示要求设计专门的驱动与显示控制电路。驱动电路包括提供液晶屏的驱动电源和液晶分子偏置电压,以及液晶显示屏的驱动逻辑;显示控制部分可由专门的硬件电路组成,也可以采用集成电路(IC)模块,比如EPSON 的视频驱动器等;还可以使用处理器外围LCD 控制模块。实验板的驱动与显示系统包括S3C2410X 片内外设LCD 控制器、液晶显示屏的驱动逻辑以及外围驱动电路。
19
驱动模块内部结构
20
Buffer组成结构
21
2.2 数据格式 需要与硬件工程师配合的是他采用了哪种接线方法,24位(RGB888)16(RGB565)位 8(单色)或其它。
22
2.3 部分重要接口: LDD[0~7]:7位数据线。 L_PCLK:点时钟(Pixel clock),用于把每一点的数据送入移位寄存器; L_LCLK:行时钟(Line clock),用于指示一行数据由移位寄存器到显示驱动芯片传输完毕,并使得行指针加1。在16位TFT方式下,就是水平同步信号; L_FCLK:帧时钟(Frame clock),用于指示一帧图像的开始,同时把行指针置于显示屏的第一行。在16位TFT方式下,就是垂直同步信号;
23
三.程序示例
24
本程序是一个简单的实现驱动320*240LCD的应用程序,希望能起到抛砖引玉的效果。
25
SED1335驱动320*240LCD /*========================================= SED1335驱动320x240图形液晶驱动演示程序 接口情况表述: No: LCM 1...VSS..... GND 地线 2...VDD V(VCC) 电源 3...VO Vadj Input 对比度负压调整输入 4...A P2.0 寄存器选择信号,命令数据方式选择 5.../WR..... WR 写有效 6.../RD..... RD 读有效
26
7...D P 数据总线 D0 8...D P 数据总线 D1 9...D P 数据总线 D2 10..D P 数据总线 D3 11..D P 数据总线 D4 12..D P 数据总线 D5 13..D P 数据总线 D6 14..D P 数据总线 D7 15../CS .... GND 片选通信号,低电平有效.实际使用应编入地址 16../RES.... /RESET 复位信号,低电平有效,阻容式复位电路 17..VEE Vout 逆变-22.5V 负电压输出 18..VSS..... GND 地线 0V ============================================= 320x240液晶模块配用sed1335驱动接口板,sed1335驱动接口板上配用32K ram ============================================*/
27
#include <ABSACC. H> #include <AT89X55. H> //. SED1335参数设置
#include <ABSACC.H> #include <AT89X55.H> //*************SED1335参数设置*****************// #define system_set 0x40 //SED1335指令 #define sleep_in 0x53 #define disp_on 0x59 #define disp_off 0x58 #define scroll 0x44 #define scrform 0x5d #define cgram_adr 0x5c #define csrdir_right 0x4c #define csrdir_left 0x4d #define csrdir_up 0x4e #define csrdir_down 0x4f #define hdot_scr 0x5a #define ovlay 0x5b #define csrw 0x46 #define csrr 0x47 #define mwrite 0x42 #define mread 0x43
28
//#define DWR XBYTE [0x0400] //#define CWR XBYTE [0x0A00] /
//#define DWR XBYTE [0x0400] //#define CWR XBYTE [0x0A00] /*-- 文字: 常 --* /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/ unsigned int code chang[] = {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}; unsigned char code system_set_code[8] // ={0x30,0x87,0x07,39,60,239,40,0}; ={0x30,0x87,0x07,39,66,240,48,0}; unsigned char code scroll_set_code[10] ={0x0,0x0,240,0x80,0x25,240,0x00,0x4B,0x80,0x70}; code scrform_ini[2]={0x07,0x86}; code hdot_scr_ini[1]={0x00}; code ovlay_ini[1]={0x00}; code disp_on_ini[1]={0x16}; code disp_off_ini[1]={0x00}; code cur_set_ini1[2]={0x00,0x00}; code null[1]={0x00}; code kill[]={0x63}; sbit SED1335_A0=P2^0; sbit SED1335_WR=P2^1; sbit SED1335_RD=P2^2; sbit CS=P2^4; sbit SEL1=P2^3;
29
void main(void) { init_sed1335(); display_sed1335(); }
30
//****************初始化SED1335******************// init_sed1335() { SEL1=0;CS=0; sed1335_write(disp_off,disp_off_ini,1); sed1335_write(system_set,system_set_code,8); sed1335_write(scroll,scroll_set_code,10); sed1335_write(scrform,scrform_ini,2); sed1335_write(hdot_scr,hdot_scr_ini,1); sed1335_write(ovlay,ovlay_ini,1); sed1335_write(csrw,cur_set_ini1,2); sed1335_write(csrdir_right,null,1); clr_scr(); sed1335_write(disp_on,disp_on_ini,1); }
31
void sed1335_write(unsigned int commandcode,unsigned int
void sed1335_write(unsigned int commandcode,unsigned int *parameter,unsigned int n) { unsigned i=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]; } }
32
void clr_scr() { int i=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); }
33
display_sed1335() { int i=0; SED1335_A0=0;
SED1335_WR=0; SED1335_RD=1; SEL1=0; CS=0; for(i=0;i<32;i++) { P0=chang[i]; } }
34
THANKS
Similar presentations