TFT-LCD显示驱动电路设计

TFT-LCD显示驱动电路设计
TFT-LCD显示驱动电路设计

目录

1 选题背景 (1)

1.1 TFT-LCD的发展现状 (1)

1.2 课设基本内容及要求 (2)

1.2.1 硬件电路设计 (2)

1.2.2 驱动设计 (2)

1.2.3 基本要求 (2)

2 方案论证 (2)

2.1 总体设计 (2)

2.2 显示原理 (3)

2.2.1 LCD器件结构 (3)

2.2.2 液晶显示原理 (3)

2.2.3 TFT元件的工作原理 (4)

3 过程论述 (6)

3.1 控制电路设计 (6)

3.1.1 时钟电路设计 (7)

3.1.2 复位电路设计 (7)

3.1.3 液晶模块驱动 (8)

3.2 软件部分设计 (8)

3.2.1 主程序 (9)

3.2.2 初始子化程序 (9)

3.2.3 显示子程序 (9)

4 系统调试 (10)

4.1 硬件调试 (10)

4.2 软件调试 (11)

5 总结 (11)

参考文献 (13)

附录1 原理图 (14)

附录2 源程序 (15)

1 选题背景

1.1 TFT-LCD的发展现状

网络和无线通信技术的发展及其产品的迅速普及,全球数字化技术的迅速推进,促进了信息技术与信息产业的蓬勃兴起。显示器集电子、通信和信息处理技术于一体,被认为是电子工业在微电子、计算机之后的又一重大发展机会,具有广阔的市场好良好的机遇。各种平板显示技术成为研究开发的热点,其中薄膜晶体管液晶显示器(TFT-LCD)是目前唯一在亮度、对比度、功耗、寿命、体积和重量等综合性能上全面赶上和超过CRT的显示器件。它的性能优良、大规模生产特性好,自动化程度高,原料成本低廉,发展空间广阔,已迅速成为新世纪的主流产品,是21世纪全球经济增长的一个亮点。

本文围绕设计以单片机作为LCD液晶显示系统控制器为主线,基于单片机AT89C51,采用的液晶显示控制器的芯片是SED1520,主要实现由按键控制的中文显示、图片显示、滚屏以及左右移动功能。同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程,并详细阐述了程序的各个模块。本系统是以单片机的C语言来进行软件设计,指令的执行速度快,可读性强。

1.2 课设基本内容及要求

题目:64*128 TFT-LCD显示驱动电路设计

1.2.1 硬件电路设计

(1) 显示器与驱动IC(电路)间的接口电路设计;

(2) 驱动IC(电路)与MCU间的接口电路设计;

(3) 驱动IC、MCU的外围电路设计。

1.2.2 驱动设计

(1) 初始化程序设计

(2) 显示实例设计

(3) 硬件电路与驱动程序的联调、仿真

(4) 实物制作与测试

1.2.3 基本要求

(1) 具有从下向上的滚动显示功能;

(2) 实现64bit级灰度调制;

(3) 支持SPI接口;

(4) 完成控制电路、栅驱动电路、源驱动电路设计; (5) 给出栅、源驱动信号仿真波形;

(6) 显示内容自拟;

(7) 驱动电流可调节; (8) 供电电压: 数字模块:1.65~3.3V ; 模拟模块:5~15V ;

2 方案论证

2.1 总体设计

RAM

图2-1 系统框图

2.2 显示原理 2.2.1 LCD 器件结构

液晶显示器件从结构上说,属于平板显示器件。其基本结构,呈平板形。它主要由前后偏振片、前后玻璃片、封接边及液晶等几大部件组成。当然,不同类型的液晶显示器件其部分部件可能会有不同,但是所有液晶显示器件都可以认为是由两片光刻有透明导电电极的基扳,夹持一个液晶层,封接成一个偏平盒,有时在外表面还可能贴装上偏振片等构成。

2.2.2 液晶显示原理

液晶是分子排布或指向具有某种规律、介于固体与液体之间,具有规则性分子排列的有机化合物。它具有液体的流动性和晶体的双折射性,并且在电场的作用下会改变其分子排列。液晶的特点是构成液晶的分子指向有规律,而分子之间的相对位置无规律,前者使液晶具有晶体才具有的各向异性,后者使之具有液体才具有的流动性。液晶显示器的原理是利用液晶的物理特性,在通电时导通,使液晶排列变得有秩序,从而光线容易通过,不通电时,排列则变得无序,从而阻止光线通过。如图2-2所示:

TFT-LCD 液晶显示器的显像原理是采用“背透式”照射方式。当光源照射时,先通

AT89C51

行驱动

器组

LCD 液晶显示屏

8k 列驱动列组

过下偏光板向上透出,借助液晶分子来传导光线。由于上下火层的电极为TFT电极和公共电极,在TFT电极导通时,液晶分子的排列状态同样会发生改变,也通过遮光和透光来达到显示的目的。但不同的是,由于TFT晶体管具有电容效应,能够保持电位状态,先前透光的液晶分子会一直保持这种状态,直到TFT电极下一次再加电改变其排列方式为止。

图2-2 液晶显示原理图

从电子学角度阐述液晶显示器件的显示原理为:在外加电场的作用下具有偶极矩的液晶棒状分子在排列状态上发生变化,使得通过液晶显示器件的光被调制,从而呈现或明或暗、透过与不透过的显示效果。液晶显示器件中的每个显示像素都可以单独被电场控制,不同的显示像素按照驱动信号的控制在显示屏上合成各种图像,液晶显示驱动的功能就是建立这种电场。

液晶显示有三大优点:液晶本身不发光,只是反射环境光;用十显示的液晶的厚度一般在几十微米以下,加上电极板也只有几毫米,所以液晶元件一般薄而且轻,应用十分方便;液晶显示器耗电量一般极低,基本上不耗电能。

2.2.3 TFT元件的工作原理

TFT-LCD的象元由阵列基板侧面的液晶象元电极,公共电极以及封闭在两者之间的液晶构成,象元通过一个薄膜晶体管控制加到其上的电压,如图2-2所示:

TFT-LCD的每个象素都是一个薄膜晶体管,其具有存储的特性,且其存储时间的长短取决于TFT关态电阻和液晶象素的电容,存贮电容的RC常数。因此,TFT-LCD的驱动方式不同于TN和STN。

TFT-LCD的象素在显示系统中的结构如图2-3所示:当扫描驱动器施加给扫描电极一个选择电压时,TFT-LCD显示的灰度级由数据驱动器的电压和存储在象元上的电压决定。即当TFT的栅极G与源极S未选通时,TFT处于截止态,源极S与漏极D之间相当于开路,外电路电压不会施加到液晶像素上。当行扫描信号选通了某一行所有TFT的

栅极G后,源扫描信号依次选通此行上TFT的源极S。行扫描信号和源扫描信号同时选通的TFT

图2-3 TFT-LCD的象元结构

将被打开,源、漏极之间导通。源扫描信号即数据信号写入液晶像素和补偿电容Cs。因为液晶像素与补偿电容对电荷的存储特性,在TFT截止后,写入的数据信号会保存一段时间。可以设定这个保存时间为半帧周期,下半帧时,改变写入信号的极性,即可保证液晶像素处于交流驱动状态。

图2-4 TFT-LCD象元在显示系统中的结构

FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。

3 过程论述

3.1 控制电路设计

图3-1 控制电路

AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

管脚说明

EA:内外程序存储器选择控制端。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

WR:外部数据存储器写选通信号输出端,低电平有效。

RD:外部数据存储器读选通信号输出端,低电平有效。

RST:复位输入。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

3.1.1 时钟电路设计

时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本文用的是内部时钟方式。如图3-2所示:

图3-2晶振电路

3.1.2 复位电路设计

平,此高电平信号随EA

3.1.3 液晶模块驱动

表3-1 液晶模块驱动引脚

编号符号引脚说明编号符号引脚说明1FG构造地11D0Data I/O 2VSS电源地12D1Data I/O 3VDD电源正极13D2Data I/O 4VO液晶显示偏压

14D3Data I/O

调节

5WR写信号15D4Data I/O 6RD读信号16D5Data I/O 7CE使能信号17D6Data I/O C数据/命令选

18D7Data I/O 8D

择端

9VEE LCD驱动电源19FS1字体选择10RST复位端

现。

3.2.1 主程序

Y

图3-5 主程序流程图

3.2.2 初始子化程序

图3-6 初始化子程序流程图

3.2.3 显示子程序

显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下:

刷频率(帧频)=0161T ?溢=)65536(12161t f -? (3-1) 其中f 位晶振频率,t 为定时器T0初值(工作在16位定时器模式)。

然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并

通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。

图3-7 显示子程序流程图

4 系统调试

4.1 硬件调试

要注意将设计电路模块化,可一步一步分块进行调试,这样能够更快找出错误所在的地方。

4.2 软件调试

编写程序时需用到Keil 软件,输入自己的姓名、学号,生成字模,得到对应的程序。然后将所有的程序编译完毕后在protues 软件上进行仿真。得到如下图所示的仿真结果:

C E 7R

D 6C /D 8V S S 2V D D 3V O 4W R 5D 011F S 1

19

D 112D 213D 314D 415D 516D 617D 718R S T 10V

E E 9

F

G 1LCD1

LM4267

C E 7R

D 6C /D 8V S S 2V D D 3V O 4W R 5D 011F S 1

19

D 112D 213D 314D 415D 516D 617D 718R S T 10V

E E 9

F

G 1LCD1

LM4267

你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。

参考文献

[1] 戴亚翔.田民波. TFT-LCD面板的驱动与设计[M]. 清华大学出版社,2008

[2] 李广弟. 单片机基础[M]. 北京航空航天大学出版社,1994

[3] 赵晓安. MCS-51单片机原理及应用[M]. 清华大学出版社,2001

[4] 何钦铭.颜辉. C语言程序设计[M]. 高等教育出版社,2008

[5] 周润景. 基于PROTEUS的电路及单片机系统设计与仿真[M]. 北京航空航天大学出版社,2006

附录1 原理图

可编辑

附录2 源程序

可编辑

#include

#define uchar unsigned char

#define uint unsigned int

#define width 30 //显示区宽度

#define addr_w 0x0000 //文本显示区首地址

#define addr_t 0x00f0 //图形显示区首地址

#define data_ora P0 //并行I/O

sbit wr =P3^6; //Data Write into T6963C,低有效

sbit rd =P3^7; //Data Read from T6963C,低有效

sbit ce =P2^7; //使能信号,低有效

sbit cd =P2^0; //指令数据控制,cd=H指令存取,cd=L数据存取sbit rst=P2^4; //Lcm reset,低有效

sbit fs =P2^5; //字体选择,H:6*8点阵;L:8*8点阵

//外部中断1测试图片显示

sbit bf0 =P1^0; //状态位

sbit bf1 =P1^1; //状态位

sbit bf3 =P1^3; //状态位

/*---------------测试状态----------------*/

void chk_busy (uchar autowr)

{

data_ora=0xff;

cd=1;

wr=1;

rd=0;

if(autowr)

{while(bf3==0);}

else

{while((bf0==0)||(bf1==0));}

rd=1;

}

/*---------------延时子程序----------------*/

void delay (uint us)

{

while(us--);

}

void delay1 (uint ms)

{

uint i,j;

for(i=0;i

for(j=0;j<1000;j++);

相关主题
相关文档
最新文档