液晶汉字显示原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

点阵图形液晶显示模块应用研究(2008-06-23 10:56:57)
标签:爱在中国行显示模块lcm点
阵lcd单屏图形区校园
点阵图形液晶显示模块应用研究
摘要
根据显示方式和内容的不同,常用于仪器仪表上的液晶显示模块有笔段型和点阵型两类。

前者可用于显示有限个简单符号,控制也较为简单。

后者又可分为两种:字符型液晶显示模块和图形液晶显示模块。

点阵液晶显示模块现实的信息多,可显示字符、汉字,也可以显示图形和曲线,且容易与微处理器接口,因此经常用在机械设备控制和自动生产线中显示设备的工作参数,或者用图形方式显示设备和生产线的工作过程。

本文首先从应用角度阐述了基于T6963C控制器的12864T图形点阵式液晶显示模块(LCM)的组成和工作原理,然后给出了用单片机对模块进行控制的硬件电路和软件编程方法,最后介绍了调试图形点阵式LCM 时的相关注意事项。

12864T型LCM是一款性价比较高的液晶显示模块, 该模块与单片机的接口十分方便,且能进行大信息量的字符显示,还可以实现图形及曲线的显示,这就使人机接口更友好。

当然,不同型号的液晶模块的内置控制器有很多种,各套指令也有一定差异, 但其设计思路和流程基本相同。

关键词:T6963C 12864T 液晶显示模块模块调试 8051单片机
Lattice Graphics LCD Module Applied Research
Abstract
According to show the different ways and content, commonly used in the instrumentation on the liquid crystal display modules and a T-point formation of two types. The former can be used to display a simple limited symbols, control is relatively simple. The latter can be divided into two types: character LCD modules and graphics LCD modules. Dot-matrix LCD modules reality of the information, to display characters, Chinese characters, can also display graphics and curves, and easy to interface with the microprocessor, often used in machinery and equipment control and automatic production line equipment in the work displayed parameter,
or With graphic display
production line equipment and the work process.
In this paper, from the application point of view based on the T6963C controller
on the 12864T graphics dot-matrix LCD module (LCM) of the composition and work principles, and then presented to the MCU module control circuit and the hardware software programming, debugging conclusion, the graphics dot-matrix LCM attention
of the relevant matters.
12864T LCM is a cost-effective liquid crystal display module, the module with the MCU interface is very convenient, but also a large amount of information of the characters, graphics and can also achieve the curve, this On the people more friendly computer interface. Of course, different models of LCD module built-in controller there are many, different sets of instructions are also differences, but their design ideas and processes is basically the
Key words: T6963C 12864T LCD module module debugging 8051 MCU
一、引言
近年来液晶显示技术发展迅猛,市场预测表明,液晶显示器平均年销售量增长10%~13%,不久的将来有可能取代CRT,成为电子信息产品的主要显示器件,另外,液晶显示器
对空间电磁辐射的干扰不敏感,且在紧凑的仪器空间不需要专门的屏蔽保护,因而可大大简
化仪器的结构和制造成本,在各种便携式仪器、仪表将会得到越来越广泛的应用。

特别是在
电池供电的单片机产品中,液晶显示器更是必选的显示器件。

液晶显示是微型机系统中反映系统输入/ 输出的人机界面,液晶显示以其微功耗、体积
小、显示内容丰富、模块化、接口电路简单等诸多优点得到广泛应用。

液晶显示模块是一种
将液晶显示器件、连接件、集成电路、PCB 线路板、背光源、
结构件装配在一起的组件[1]。

英文名称为“LCD Module”,简称LCM,中文一般称为“液晶显
示模块”。

本文从实际应用角度出发,在简单介绍了基于T6963C控制器的12864T的点阵图形液晶
显示模块的组成和工作原理之后,重点阐述了此款液晶显示模块的方法,给出了用8051单
片机设计软硬件的思路和设计要求。

二、液晶显示模块简介
点阵式12864T 液晶显示模块是单屏显示结构,其内部以T6963C 作为控制芯片。

该液晶显示模块有文本和图形两种显示方式,其中在文本显示方式下,一个字符在屏上占用8 ×8 大小的点阵空间,一屏可以显示8 行(64 ÷8) 字符,每行字符数为16 (128 ÷8) ;在图形显示方式下,显示屏上可以显示的点数为128×64 = 8192 ,显示屏上的点阵以1 ×8 为显示编程单位划分为8 行
16 列[2]。

在此方式下,可以通过编程控制屏上每一点是否显示,常用的汉字显示也属于图形显示。

一个汉字在屏上一般占用16 ×16 大小的点阵空间,故对12864T 液晶显示模块来说,一屏可以无重叠显示128 个字符,32 个汉字。

三、T6963C液晶显示控制器
T6963C液晶显示控制器适用于较小规模的液晶显示器件,常被装配在图形液晶形式模
块上,以内藏图形液晶显示模块的形式出现。

T6963C的特点有:
(1)适合与MCS-51系列等多种单片机的接口信号,可方便的与多种单片机连接;
(2)具有丰富的指令功能,可以设置成字符与图形的合成显示方式及字符显示方式;
(3)显示窗口尺寸及字体等模式采用硬件设置方式,可以控制640×128点阵单屏结构或
640×256点阵双屏结构的液晶显示器;
(4)T6963C具有内部字符发生器CGRAM,共有128个字符,可允许CPU随时访问显示缓冲区,
甚至可以进行位操作;
(5)采用单电源+5V供电,内置时序振荡电路,可以外接最大为5.5MHz的振荡器。

四、单片机与液晶显示模块的接口和控制
(一) LCM 与8051单片机的接口连接
图1是典型的液晶模块与单片机的接口电路[3],在图中选用我国应用非常广泛的8051
单片机作为MCU,采用12864T(128×64)液晶模块,其内置的液晶显示驱动控制器为日本
东芝公司的T6963C。

在电路中,地址线A12-A15和WR,RD信号通过GAL16V8译码出外扩芯
片的片选信号,其中液晶的译码地址为0xE000,将地址线A0与液晶控制口的C/D相连。


A0为低时液晶控制器接收数据,A0为高时液晶控制器接收命令码,因此液晶数据端口地址
为0xE000,液晶命令端口为0xE001,采用Keil C51进行程序设计,在程序中可进行如下定
义。

#define XBYTE((unsigned char volatile xdata* )0)
#define Lcd_Data XBYTE[0xE000] //液晶数据端口
#define Lcd_Code XBYTE[0xE001] //液晶命令端口
单片机的数据线通过74HC245双向缓冲器与液晶控制器的数据口相连,用液晶控制器的
片选信号/LCD_CS作为74HC245的使能信号,单片机的写信号/WR控制数据传送方向[4]。

/WR
为低时,单片机数据写入液晶控制器;/WR为高时,CPU读取液晶控制器的数据和状态。

图1 基于8051单片机的液晶显示模块接口电路
(二) LCM电源电路
12864T只需要一种供电电源即驱动电源,通过V0和VEE提供。

V0通过电位计接地,VEE 接滑动端来调节驱动电压,当驱动电压过低时,屏幕无显示,过高时屏幕全黑。

注意电位计的最大阻值应该在10KW-20KW之间。

(三) LCM的复位电路
复位引脚为16-/RST,高电平时为正常状态,低电平时为复位状态,它将行、列计数器和显示寄存器清零。

复位电路部分可通过对+5V接4.7KW电阻,对地接4.7μF电容来实现,也可直接与单片机I/O口相连,通过软件来控制,注意,LCM上电后/RST引脚保持低电平5个时钟周期才能实现复位[5]。

(四) LCM字体选择
18引脚FS用于选择字体,T6963C规定:此引脚为低电平时,字体为8×8点阵形式,反之为8×6点阵形式[6]。

注意,此引脚不能悬空,如果所用到的字体是8×8的,则可以将此引脚接地,或者接MPU的I/O引脚并通过软件来设置显示字体。

五、控制软件设计
软件采用C51语言开发,它具有很强的软件控制能力,也就是由主控CPU通过接口向液晶模块写入指令来实现模块控制。

程序的设计主要包括两个部分,一是设计液晶读写指令或数据、初始化及清屏等通用子程序[7]。

另一部分是汉字和图形的显示模块程序,显示操作就是将欲显示的字符或图形的点阵信息写入显示缓冲区中的指定位置[7]。

要显示的内容由初始化中显示方式设置部分决定,有了通用子程序,就可以构造出各种显示程序。

当采用图形显示方式时,与字符、汉字、菜单图形显示的原理类似。

(一) T6963C控制器时序
当数据指令设置位C/D为高,使能位/CE为低,写状态位/WR为高,读状态位/RD为低时,可以从并行数据口读取内部控制器的状态。

当数据指令设置位C/D为高,使能位/CE为低,写状态位/WR为低,读状态位/RD为高时,可以通过并行数据口向内部控制器写指令。

当数据指令设置位C/D为低,使能位/CE为低,写状态位/WR为低,读状态位/RD为高时,可以通过并行数据口向内部控制器写数据。

(二)设计液晶读写指令或数据通用子程序
1. LCD状态检测子函数
在写数据或写命令之前,应先检查LCM的状态,即状态寄存器中命令就绪(STA0)和数据就绪(STA1)需要同时检查,只有这两位同时为“1”(LCM空闲状态)时,才可以进行数据和命令的写操作,通常情况下,可以设计一个读状态子函数,用以判断两个标志位的空/忙状态。

2.显示字符和图形的子函数
液晶显示屏的显示方式包括文本和图形显示。

采用图形显示方式时,液晶屏显示信息的管理单位是8×1点阵,称为一个图形显示单位。

T6963C按此单位把液晶屏在水平方向上分成20列,垂直方向上分成128行,共20×128个图形显示单位,每个图形显示单位对应图形显示缓冲区中的一个存储单元[8]。

将点阵状态信息写入这个存储单元,则在对应的位置显示出图形。

采用文本显示方式时,写入文本显示缓冲区的不是点阵状态信息,而是字符代码,其点阵状态信息(8×8) ,即字模存放在CGRAM中。

将字符代码写入文本显示缓冲区后, T6963C 从CGRAM中取出该字符代码所对应字符的点阵状态信息,通过行列驱动器驱动液晶屏显示该字符。

3.清屏子函数
在显示数据前,首先要清除屏幕上次显示的内容,为此要用到清屏函数,只需向整个屏幕写入“0”即可实现,具体过程从略。

六、液晶显示模块的调试注意事项
初次上电前,应慢慢调节电位器,使驱动电源端的输出调节在0V左右,观察显示情况,同时监视液晶驱动电压,然后慢慢调整至正常工作点。

在调节过程中,不要使液晶模块承受超出最大值的驱动电压,否则会造成液晶模块的损坏。

如果在低于或大致等于典型驱动电压时,观察到了显示屏上有色调的变化,即显示域的底色略深于边缘的颜色,表明液晶模块电源连接正确,可以进人下一步工作[9]。

如果在室温条件下,调节到超出典型值2-3V时,仍未观察到显示屏上有色调的变化,就不必继续调节了。

七、 12864T型液晶显示模块的应用
(一)使用液晶显示模块必须完成初始化工作
初始化的工作通常包括: ①显示方式的选择; ②光标的显示控制,包括形状选择,是否闪烁,是否显示出光标; ③文本区的首址及宽度设置; ④图形区的首址及宽度设置; ⑤对设定好的文本区和图形区的缓冲区进行清除,为写入数据做好准备[10]。

下面给出用C51 语言编写的初始化程序片断。

# define write-XDATA(add ,x) ( ( (char 3 ) 0x010000) [ add] =x)
Void initial ()
{ check();/ / 读液晶显示模块的状态字
P1. 7 = 1 ;/ / 当前为写控制字
write-XDATA(add ,0x9c) ; / /add 为LCM的选通地址 ,0x9c 是显示开关指令check() ; P1. 7 = 1 ;
write-XDATA (add ,0x80) ; / / 送显示方式设置指令}
Void initial-t (uc ht ,uc lt)
{ check() ;
P1. 7 = 0 ;/ / 当前为写数据
Write-XDATA(add ,lt) ; Write-XDATA(add ,ht) ;
Check() ;P1. 7 = 1 ;Write-XDATA(add ,0x40) ;
Check() ;P1. 7 = 0 ; / / 当前为写数据
Write-XDATA(add ,0x10) ; Write-XDATA(add ,0x00) ;
Check() ;P1. 7 = 1 ;Write-XDATA(add ,0x41) ;
}
Void clear-t (uc hct ,uc lct ,uc p)
{ uc i ;set-offset (hct ,lct) ;/ / 送要清除的文本起始地址,p为清除的/ /符个数,如果为清屏p = 0x80 = 128 ;
for (i = 0 ;i < p ;i ++ )
{ check() ;P1. 7 = 0 ;write-XDATA(add ,0x00) ; / / 送文本区首址check( ) ; P1. 7 = 1 ;write-XDATA ( add , 0xc0) ;/ / 循环送入
/ / 0x00 ,对应的字符为空,屏上无显示内容。

}}
(二)显示汉字
使用图形液晶模块以点阵形式来显示汉字和图形,每8个点组成1个字节,每个点用一个二进制位表示,存1的点显示时在屏上显示一个亮点,存0的点则在屏上不显示,最常用的16×16的汉字点阵由32个字节组成[11]。

在液晶屏上横向8个点为1个字节数据,则“孔”字的16×16点阵字模如图2,通过字模提取软件按照先左后右,先上后下的方式对“孔”字进行字模提取,则可获得表1左边的字模对应的32个字节值。

将这些字节按一定顺序写入液晶控制器的显示缓冲区,就可在液晶屏上显示16×16的“孔”字。

同理一个24×24的汉字则需72个字节,存放方式如表1,其他规格的汉字存放方式以此类推。

“孔”字在液晶屏上的示意图如图3 所示。

0CH,40H,08H,40H,08H,40H,0BH,40H 1CH,40H,0E8H,40
H,08H,40H,08H,40H 08H,42H,08H,42H,28H,3EH,10H,00
H 图 2点阵字模表1 存
放方式
图 3 “孔”字在液晶屏上的示意图
在显示汉字时只需将构成该汉字的32 个字节内容按照在图形显示区中对应位置依次写入即可。

(三)汉字字模存储、提取及显示方法
笔者只介绍一种常用的方法:将提取的汉字字模数据作为常量数组存放在程序存储区内。

要显示“滨州”两字,如下面程序所示。

Const char Hz_Dot[] { //汉字16*16点阵
00H,80H,40H,40H,2FH,0FEH,28H,02H. //滨
10H,64H,83H,80H,52H,10H,13H,0F8H.
12H,20H,22H,20H,0E2H,24H,3FH,0FEH.
20H,00H,23H,20H,22H,18H,24H,08H.
10H,04H,10H,84H,10H,84H,10H,84H. //州
54H,0A4H,52H,94H,52H,94H,90H,84H.
10H,84H,10H,84H,10H,84H,10H,84H.
20H,84H,20H,84H,40H,04H,00H,04H.}
再编制汉字显示子函数Write_Hz。

Void Write_Hz(Uchar x,Uchar y, Uchar p)
{ Uchar i,low_ad,high_ad;
Uint address,p;
Address=( Uint)*Wide+y; //**
tp=address; for(i=0;i<16;i++) //写左半部 { low_ad=(Uchar)(tp&0xff);
high_ad=(Uchar)(tp>>8);
Disp_ address(low_ad,high_ad);
Lcd_Wait();
Lcd_Data= Hz_Dot[p+i]; //***
Lcd_Wait();
Lcd_Code=0xC4; //写数据命令 tp=tp+Wide; }
address++;
tp=address; for(i=0;i<16;i++) //写右半部
{ low_ad=(Uchar)(tp&0xff);
high_ad=(Uchar)(tp>>8);
Disp_ address(low_ad,high_ad);
Lcd_Wait();
Lcd_Data= Hz_Dot[p+16+i]; //****
Lcd_Wait();
Lcd_Code=0xC4; //写数据命令
tp=tp+Wide; } }
函数Write_Hz的参数x和y对应液晶屏幕的显示位置,其与液晶控制器显示缓冲区中的地址通过行**可计算出,该行中的Wide为事先定义的液晶屏每行字节数,对于DG12864液晶而言,Wide为16。

参数p为要显示的汉字在数组中的坐标。

Write_Hz根据16×16点阵汉字液晶控制器显示缓冲区的存放形式,依次改变显示地址,先将左半部1-16个字节写入显示缓冲区,再写入右半部17-32个字节。

若要液晶显示“滨州”两字,只要在程序中带显示地区参数调用该函数即可。

如:
write_Hz(0,4, 0); //滨
write_Hz(0,10,0x20);//州
此外,在单片机系统中对字模的存储,还有两种方式:将提取的汉字字模数据存放在EPROM 或E2PROM内和将整个汉字字库存放在EPROM或E2PROM内。

三者的主要区别是,第三种方法无须事先提取字模和设定其地址用于程序调用,因此在进行程序升级,涉及到汉字显示时,不用更改汉字字模数据。

对于这两种方式的具体使用方法,笔者不再介绍。

八、结语
中小尺寸的液晶显示模块在人机交互上具有比数码管显示明显的优势:通过简洁的接口电路,人们可以在屏上实现比较丰富细腻的各种界面效果,大大增强了智能化仪表和使用者之间的“亲和力”[12]。

而且近年来液晶显示模块的性价比也在不断提高,在考虑单片机系统开发时,LCD 无疑是很有吸引力的选择。

谢辞
落笔于此,就意味着三年大学生涯的结束。

回首三年,颇多感慨,心中不禁思绪万千。

三年里,我学会了如何做人,学会了和老师、同学、朋友和谐相处,学会了勇敢面对困难,敢于承担责任。

如果说,三年前,中学毕业的我已经长大了。

那么,三年后的我,开始慢慢成熟了。

不经意的三年时间,我经历许多,忘不了第一次社会实践时的战战兢兢;忘不了第一次拿奖学金时的万分欣喜;忘不了外出拉赞助所经历的酸、甜、苦、辣;忘不了同学友情的万分宝贵……这所有的一切,都将是我人生最宝贵的财富。

在此,感谢生活,使我成熟;感谢挫折,使我坚强。

现在,我手中所拿着这本“毕业论文”,可以说,她就是我三年学习的“总结报告”。

在这里,我不得不承认她同时也是集体智慧的结晶。

论文得以完成,首先要感谢张昌平老师,因为论文是在张老师的悉心指导下完成的。

本论文从选题到完成,每一步都是在张老师的指导下完成的,倾注了张老师大量的心血。

张老师指引我的论文的写作的方向和架构,并对本论文初稿进行逐字批阅,指正出其中误谬之处,使我有了思考的方向,他的循循善诱的教导和不拘一格的思路给予我无尽的启迪,他的严谨细致、一丝不苟的作风,将一直是我工作、学习中的榜样。

同时,论文的顺利完成,离不开其他各位老师、同学和朋友的关心和帮助。

在整个的论文写作中,各位老师、同学和朋友积极的帮助我查资料和提供有利于论文写作的建议和意见,在他们的帮助下,论文得以不断的完善,最终帮助我完整的写完了整个论文。

另外,要感谢在大学期间所有传授我知识的老师,是你们的悉心教导使我有了良好的专业课知识,这也是论文得以完成的基础。

同时,在此次论文的写作过程中,我收获了很多,既为大学三年划上了一个完美的句号,也为将来的人生之路做好了一个很好的铺垫。

再次感谢我的大学和所有帮助过我并给我鼓励的老师、同学和朋友,谢谢你们!。

相关文档
最新文档