初夏一直到童年阅读题:第17章 字符型液晶(LCD)模块原理及设计学习-三八线继电器网

来源:百度文库 编辑:偶看新闻 时间:2024/04/25 13:21:39

 

17.1   液晶显示器概述

 

在小型的智能化电子产品中,普通的7段LED数码管只能用来显示数字,若遇到要显示英文字母或图像、汉字时,则必须选择使用液晶显示器(简称LCD)。

LCD显示器的应用很广,简单的如手表、计算器上的液晶显示器,复杂如笔记本电脑上的显示器等,都使用LCD。在一般的商务办公机器上,如复印机和传真机,以及一些娱乐器材、医疗仪器上,也常常看见LCD的足迹。

LCD可分为两种类型,一种是字符模式LCD,另一种为图形模式LCD。这里要介绍的LCD为字符型点矩阵式LCD模组(Liquid Crystal Display Module简称LCM),或称字符型LCD。市场上有各种不同厂牌的字符显示类型的LCD,但大部分的控制器都是使用同一块芯片来控制的,编号为HD44780,或是兼容的控制芯片。

字符型液晶显示模块是一类专门用于显示字母、数字、符号等的点阵型液晶显示模块。在显示器件的电极图形设计上,它是由若干个5*7或5*11等点阵字符位组成。每一个点阵字符位都可以显示一个字符。点阵字符位之间空有一个点距的间隔起到了字符间距和行距的作用。

目前常用的有16字*1行、16字*2行、20字*2行和40字*2行等的字符模组。这些LCM虽然显示的字数各不相同,但是都具有相同的输入输出界面。

这里我们以16字*2行(简称16*2)字符型液晶显示模块为例,详细介绍字符液晶显示模块的应用技术。读者朋友经过学习并实践实际的LCD程序设计,那么当你学完后,将掌握字符形液晶显示模块的程序设计技术,使液晶显示器听你的指挥显示出各种字符及信息,用到你设计的产品中后添色不少并增强市场竞争力。

字符LCD模块的控制器主要为日立公司的HD44780及其替代集成电路,驱动器为HD44100及其替代的兼容集成电路。

 

17.2   16*2字符型液晶显示模块(LCM)特性

 

1.+5V电压,反视度(明暗对比度)可调整。

2. 内含振荡电路,系统内含重置电路。

3.提供各种控制命令,如清除显示器、字符闪烁、光标闪烁、显示移位等多种功能。

4.显示用数据DDRAM共有80个字节。

5.字符发生器CGROM有160个5*7点阵字型。

6.字符发生器CGRAM可由使用者自行定义8个5*7的点阵字型。

 

17.3   16*2字符型液晶显示模块(LCM)引脚及功能

 

1脚(Vdd/Vss):电源5V±10%或接地。

2脚(Vss/Vdd):接地或电源5V±10%。

3脚(VO):反视度调整。使用可变电阻调整,通常接地。

4脚(RS):寄存器选择。1:选择数据寄存器;0:选择指令寄存器。

5脚(R/W):读/写选择。1:读;0:写。

6脚(E):使能操作。1:LCM可做读写操作;0:LCM不能做读写操作。

7脚(DB0):双向数据总线的第0位。

8脚(DB1):双向数据总线的第1位。

9脚(DB2):双向数据总线的第2位。

11脚(DB3):双向数据总线的第3位。

11脚(DB4):双向数据总线的第4位。

12脚(DB5):双向数据总线的第5位。

13脚(DB6):双向数据总线的第6位。

14脚(DB7):双向数据总线的第7位。

15脚(Vdd):背光显示器电源+5V。

16脚(Vss):背光显示器接地。

说明:由于生产LCM厂商众多,使用时应注意电源引脚1、2的不同。LCM数据读写方式可以分为8位及4位2种,以8位数据进行读写则DB7~DB0都有效,若以4位方式进行读写,则只用到DB7~DB4。

 

17.4   16*2字符型液晶显示模块(LCM)的内部结构

 

LCM的内部结构可分为三个部分:LCD控制器,LCD驱动器,LCD显示装置,如图17-1所示。

图17-1   LCM的内部结构

 

LCM与单片机(MCU)之间是利用LCM的控制器进行通信。HD44780是集驱动器与控制器于一体,专用于字符显示的液晶显示控制驱动集成电路。HD44780是字符型液晶显示控制器的代表电路,了解熟知HD44780,将可通晓字符型液晶显示控制器的工作原理。

 

17.5   液晶显示控制驱动集成电路HD44780特点

 

l.HD44780不仅作为控制器而且还具有驱动40*16点阵液晶像素的能力,并且HD44780的驱动能力可通过外接驱动器扩展360列驱动。

2.HD44780的显示缓冲区及用户自定义的字符发生器CGRAM全部内藏在芯片内。

3.HD44780具有适用于M6800系列MCU的接口,并且接口数据传输可为8位数据传输和4位数据传输两种方式。

4.HD44780具有简单而功能较强的指令集,可实现字符移动、闪烁等显示功能。

图17-2为HD44780的内部组成结构。

 

图17-2   HD44780的内部组成结构

 

由于HD44780的DDRAM容量所限,HD44780可控制的字符为每行80个字。也就是5*80=400点。HD44780内藏有16路行驱动器和40路列驱动器,所以HD44780本身就具有驱动16*40点阵LCD的能力,(即单行16个字符或两行8个字符)。如果在外部加一个HD44100外扩展多40路/列驱动,则可驱动16*2LCD(图17-3)。

 

图17-3   HD44780加HD44100外扩展

 

当MCU写入指令设置了显示字符体的形式和字符行数后,驱动器的液晶显示驱动的占空比系数就确定了下来,驱动器在时序发生器的作用下,产生帧扫描信号和扫描时序,同时把由字符代码确定的字符数据通过并/串转换电路串行输出给外部列驱动器和内部列驱动,数据的传输顺序总是起始于显示缓冲区所对应一行显示字符的最高地址的数据。当全部一行数据到位后,锁存时钟CL1将数据锁存在列驱动器的锁存器内,最后传输的40位数据,也就是说各显示行的前8个字符位总是被锁存在HD44780的内部列驱动器的锁存器中。CL1同时也是行驱动器的移位脉冲,使得扫描行更新。如此循环,使得屏上呈现字符的组合。

 

17.6   HD44780工作原理

 

HD44780的引脚图如图17-4所示。

 

图17-4   HD44780引脚图

 

17.6.1   DDRAM—数据显示用RAM

 

DDRAM--数据显示用RAM(Data display RAM,简称DDRAM)

DDRAM用来存放我们要LCD显示的数据,只要将标准的ASCII码送入DDRAM,内部控制电路会自动将数据传送到显示器上,例如要LCD显示字符A,则我们只须将ASCII码41H存入DDRAM即可。DDRAM有80bytes(字节)空间,共可显示80个字(每个字为1个bytes),其存储器地址与实际显示位置的排列顺序与LCM的型号有关,请参阅图17-5。

 

图17-5   DDRAM地址与显示位置映射图

 

图17-5(A)为16字*1行的LCM,它的地址从00H到0FH;图17-5(B)为20字*2行的LCM,第一行的地址从00H到13H,第二行的地址从40H到53H;图17-5(C)为20字*4行的LCM,第一行的地址从00H到13H,第二行的地址从40H到53H,第三行的地址从14H到27H,第四行的地址从54H到67H。

 

17.6.2   CGROM—字符产生器ROM

 

CGROM--字符产生器ROM(Character Generator的ROM,简称CGROM)

CGROM储存了192个5*7的点矩阵字型,CGROM的字型要经过内部电路的转换才会传到显示器上,仅能读出不可写入。字型或字符的排列方式与标准的ASCII码相同,例如字符码 31H为 l字符,字符码41H为A字符。如我们要在LCD中显示A,就是将A的ASCII代码41H写入DDRAM中,同时电路到CGROM中将A的字型点阵数据找出来显示在LCD上。字符与字符码对照表如表17-1所示。

 

表17-1   字符与字符码对照表

 

17.6.3   CGRAM—字型、字符产生器RAM

 

CGRAM--字型、字符产生器RAM(Character Generator RAM,简称CGRAM)

CGRAM是供使用者储存自行设计的特殊造型的造型码RAM,CGRAM共有 512bits(64字节)。一个5*7点矩阵字型占用8*8bit,所以CGRAM最多可存8个造型。

 

17.6.4   IR—指令寄存器

 

IR--指令寄存器(Instruction Register,简称IR)

IR寄存器负责储存MCU要写给LCM的指令码。当MCU要发送一个命令到IR寄存器时,必须要控制LCM的RS、R/W及E这三个引脚,当RS及R/W引脚信号为0,E引脚信号由1变为0时,就会把在DB0~DB7引脚上的数据送入IR寄存器。

 

17.6.5   DR—数据寄存器

 

DR--数据寄存器(Data Register,简称DR)

DR寄存器负责储存MCU要写到CGRAM或DDRAM的数据,或储存MCU要从CGRAM或DDRAM读出的数据,因此DR寄存器可视为一个数据缓冲区,它也是由LCM的RS、R/W及E等三个引脚来控制。当RS及R/W引脚信号为l,E接脚信号由1变为0时,LCM会将DR寄存器内的数据由DB0~DB7输出以供MCU读取;当RS接脚信号为l,R/W接脚信号为0,E接脚信号由1变为0时,就会把在DB0~DB7引脚上的数据存入DR寄存器。

 

17.6.6   BF—忙碌标志信号

 

BF--忙碌标志信号(Busy Flag,简称 BF)

BF的功能是告诉MCU,LCM内部是否正忙着处理数据。当BF=1时,表示LCM内部正在处理数据,不能接受MCU送来的指令或数据。LCM设置BF的原因为MCU处理一个指令的时间很短,只需几微秒左右,而LCM得花上40微秒~1.64亳秒的时间,所以MCU要写数据或指令到LCM之前,必须先查看BF是否为0。

 

17.6.7   AC—地址计数器

 

AC--地址计数器(Address Counter,简称AC)

AC的工作是负责计数写到CGRAM、DDRAM数据的地址,或从DDRAM、CGRAM读出数据的地址。使用地址设定指令写到IR寄存器后,则地址数据会经过指令解码器(Instruction Decoder),再存入AC。当MCU从DDRAM或 CGRAM存取资料时,AC依照MCU对LCM的操作而自动的修改它的地址计数值。

 

17.7   LCD控制器的指令

 

用MCU来控制LCD模块,方式十分简单,LCD模块其内部可以看成两组寄存器,一个为指令寄存器,一个为数据寄存器,由RS引脚来控制。所有对指令寄存器或数据寄存器的存取均需检查LCD内部的忙碌标志BF,此标志用来告知LCD内部正在工作,并不允许接收任何的控制命令。而此位的检查可以令RS=0,用读取DB7来加以判断,当此DB7为0时,才可以写入指令或数据寄存器。LCD控制器的指令共有11组,以下分别介绍。

 

17.7.1   清除显示器

 

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

0

0

0

0

0

0

0

1

指令代码为01H,将DDRAM数据全部填入“空白” 的ASCII代码20H,执行此指令将清除显示器的内容,同时光标移到左上角。

 

17.7.2   光标归位设定

 

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

0

0

0

0

0

0

1

*

指令代码为02H,地址计数器被清0,DDRAM数据不变,光标移到左上角。*表示可以为0或1。

 

17.7.3   设定字符进入模式

 

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

0

0

0

0

0

1

I/D

S

 

I/D

S

工作情形

0

0

光标左移一格,AC值减一,字符全部不动

0

1

光标不动,AC值减一,字符全部右移一格

1

0

光标右移一格,AC值加一,字符全部不动

1

1

光标不动,AC值加一,字符全部左移一格

 

17.7.4   显示器开关

 

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

0

0

0

0

1

D

C

B

D:显示屏开启或关闭控制位,D=1时,显示屏开启;D=0时,则显示屏关闭,但显示数据仍保存于DDRAM中。

C:光标出现控制位,C=1时,则光标会出现在地址计数器所指的位置;C=0则光标不出现。

B:光标闪烁控制位,B=1光标出现后会闪烁;B=0,光标不闪烁。      

 

17.7.5   显示光标移位

 

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

0

0

0

1

S/C

R/L

*

*

*表示可以为0或1。

S/C

R/L

工作情形

0

0

光标左移一格,AC值减一

0

1

光标右移一格,AC值加一

1

0

字符和光标同时左移一格

1

1

字符和光标同时右移一格

 

17.7.6   功能设定

 

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

0

0

1

DL

N

F

*

*

*表示可以为0或1。

DL:数据长度选择位。DL=1时为8位(DB7~DB0)数据转移;DL=0时则为4位数据转移,使用DB7~DB4位,分2次送入一个完整的字符数据。

N:显示屏为单行或双行选择。N=1为双行显示;N=0则为单行显示。

F:大小字符显示选择。当F=1时,为5*10字形(有的产品无此功能);当F=0时,则为5*7字型。

 

17.7.7   CGRAM地址设定

 

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

0

1

A5

A4

A3

A2

A1

A0

设定下一个要读写数据的CGRAM地址(A5~A0)。

 

17.7.8   DDRAM地址设定

 

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

1

A6

A5

A4

A3

A2

A1

A0

设定下一个要读写数据的DDRAM地址(A6~A0)。

 

17.7.9   忙碌标志BF或AC地址读取

 

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

1

1

BF

A6

A5

A4

A3

A2

A1

A0

LCD的忙碌标志BF用以指示LCD目前的工作情况,当BF=1时,表示正在做内部数据的处理,不接受MCU送来的指令或数据。当BF=0时,则表示已准备接收命令或数据。当程序读取此数据的内容时,DB7表示忙碌标志,而另外DB6~DB0的值表示CGRAM或DDRAM中的地址,至于是指向那一地址则根据最后写入的地址设定指令而定。

 

17.7.10   写数据到CGRAM或DDRAM中

 

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

1

0

1

 

 

 

 

 

 

 

 

先设定CGRAM或DDRAM地址,再将数据写入DB7~DB0中,以使LCD显示出字形。也可将使用者自创的图形存入CGRAM。

 

17.7.11   从CGRAM或DDRAM中读取数据

 

RS

R/W

E

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

1

1

1

 

 

 

 

 

 

 

 

先设定CGRAM或DDRAM地址,再读取其中的数据。

 

17.8   LCM工作时序

 

控制LCD所使用的芯片HD44780其读写周期约为1μS左右,这与8051MCU的读写周期相当,所以很容易与MCU相互配合使用。

 

1.读取时序(如图17-6所示)。

 

 

 

图17-6   读取时序图

 

2.写入时序(如图17-7所示)。

图17-7   写入时序图

时序参数见表17-2。

                                表17-2   时序参数表

 

17.9   单片机驱动LCM的电路

 

用配套实验器材中的LED数码管输出试验板(MCU为89C51或89S51)与LCM连接的电路见图17-8。

图17-8   单片机驱动LCM电路