3.13.2 字符型LCD显示器的原理
LCD显示器是一种被动式的显示器,与LED不同,液晶本身并不发光,而是利用液晶的电压作用来改变光线通过方向的特性而达到显示白底黑字或黑底白字的目的。液晶显示器具有体积小、功耗低、抗干扰能力强等优点,特别适用于小型手持式设备。
常见的液晶显示器有7段式LCD显示器、点阵字符型LCD显示器和点阵图形LCD显示器。其中,点阵图形LCD显示器能支持汉字和图形曲线的显示,应用较为灵活,但是价格较为昂贵。
字符型液晶显示模块是专门用于显示字母、数字及符号等的点阵型液晶显示模块,分为4位和8位数据传输方式:提供“5×7点阵+光标”和“5×10点阵+光标”的显示模式;提供显示数据寄存器DDRAM、字符发生器CGROM和字符发生器CGRAM,可以使用CGRAM来存储自己定义的最多8个5×8点阵的图形字符的字模数据;提供丰富的指令设置;提供清除显示、光标回原点、显示开/关、光标开/关、显示字符闪烁、光标移位、显示移位等;提供内部上电自动复位电路,当外加电源电压超过+4.5 V时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态。
字符型液晶显示模块组件内部主要由LCD显示器、控制器(Controller)、驱动器(Driver)、少量阻容元件、结构件等构成,装配在PCB上并常用控制驱动器HD44780及其兼容控制器,如图3.59所示。
1.液晶模块的接口信号及工作时序
液晶模块的接口信号如表3.19所示。
图3.59 字符型液晶显示模块及PCB
表3.19 液晶模块的接口信号
引脚进一步说明如下。
VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最强,对比度强时会产生“鬼影”,使用时可以通过一个10 kΩ的电位器来调整对比度。
E端为使能端。当E端由高电平跳变成低电平时,液晶模块执行命令。
15、16两引脚用于带背光模块,用于不带背光的模块时这两个引脚悬空。
控制信号线E、RS和R/W的组合功能如表3.20所示。
表3.20 控制信号线E、RS和R/W的组合功能
1)忙标志位(BF)
当BF=1时,表明模块正在进行内部操作,此时不接收任何外部指令和数据。当RS=0,R/W=1且E为高电平时,BF输出到DB7。每次操作之前最好先进行状态字检测,只有在确认BF=O之后,MPU才能访问模块。
2)地址指针(AC)
AC是DDRAM或CGRAM的地址指针。随着IR中指令码的写入,指令码中携带的地址信息自动送入AC,并使AC选择是作为DDRAM的地址指针还是CGRAM的地址指针。
AC具有自动加1或减1的功能。在DR与DDRAM、CGRAM之间完成一次数据传送后,AC自动会加1或减1。当RS=O、R/W=1且E为高电平时,AC的内容送到DBO~DB6。
地址指针(AC)如图3.60所示。
图3.60 地址指针(AC)
3)显示数据寄存器(DDRAM)
DDRAM存储显示字符的字符码,其容量的大小决定模块最多可显示的字符数目。控制器内部有80字节的DDRAM缓冲区,DDRAM地址与LCD显示器上的显示位置的对应关系如图3.61所示。
图3.61 DDRAM地址与LCD显示器上的显示位置的对应关系
4)字符发生器ROM
在CGROM中,模块以8位二进制数的形式,生成了5×8点阵的字符字模组(一个字符对应一组字模)。字符字模是与显示字符点阵相对应的8×8矩阵位图数据(与点阵行相对应的矩阵行的高3位为“0”),同时每个字符字模组都有一个由其在CGROM中存放地址的高8位数据组成的字符码对应。
字符码地址范围为00H~FFH,其中00H~07H字符码与用户在CGRAM中生成的自定义图形字符的字模组相对应。
5)字符发生器RAM
在CGRAM中,用户可以生成自定义图形字符的字模组,可以生成8个5×8点阵的字符字模组,相对应的字符码从CGRAM的00H~FFH范围内选择。
总线操作时序参数表如表3.21所示。
表3.21 总线操作时序参数表
续表
2.字符型液晶显示模块的软件特征
字符型液晶显示模块的软件特征就是HD44780的软件特性,HD44780有8条指令,指令格式非常简单。指令一览表如表3.22所示。
表3.22 指令一览表
注意:“*”表示任意值,在实际应用中一般认为是“0”。
指令详细解释如下。
1)清屏(Clear Display)
格式:
代码:0 x01
该指令将空码(20H)写入DDRAM的全部80个单元内,将地址指针(AC)清零,光标或闪烁归HOME位,设置输入方式参数I/D=1,即地址指针AC为自动加一输入方式。
该指令多用于上电或更新全屏显示内容。在使用该指令前要确认DDRAM的当前内容是否有用。
2)归HOME位
格式:
代码:0x02
该指令对地址指针(AC)清零。执行该指令的效果有:光标或闪烁位返回到显示器的左上第一个字符位上,即DDRAM地址0 x00单元位置,这是因为光标和闪烁位都是以地址指针(AC)当前值定位的。如果画面已滚动,则撤销滚动效果,将画面拉回到HOME位。
3)输入方式设置(Enter Mode Set)
格式:
代码:0x04~0x07
该指令的功能在于设置了显示字符的输入方式,即在计算机读/写DDRAM或CGRAM后,地址指针(AC)的修改方式反映在显示效果上,在写入一个字符后,画面或光标移动。该指令的两个参数位I/D和S确定了字符的输入方式。
I/D表示在计算机读/写DDRAM或CGRAM的数据后,地址指针(AC)的修改方式,由于光标位置也是由AC值确定,所以也是光标移动的方式。
I/D=0:AC为减一计数器,光标左移一个字符位。
I/D=1:AC为加一计数器,光标右移一个字符位。
S表示在写入字符时,是否允许显示画面的滚动。
S=0:禁止滚动。
S=1:允许滚动。
S=1且I/D=0:显示画面向右滚动一个字符。
S=1且I/D=1:显示画面向左滚动一个字符。
综上所述,该指令可以实现四种字符的输入方式,如表3.23所示。
表3.23 四种字符的输入方式
注意:“-”为光标符号。
注意画面滚动方式在计算机读DDRAM数据时,或在读/写CGRAM时无效,也就是说该指令主要应用在计算机写入DDRAM数据的操作,所以称该指令为输入方式设置指令。需要说明在计算机读DDRAM数据或在读/写CGRAM数据时,建议将S置零。
4)显示状态设置(Display on/off Control)
格式:
代码:0x08~OxOf
该指令控制画面、光标及闪烁的开与关。该指令有三个状态位D、C、B,这三个状态位分别控制画面、光标和闪烁的显示状态。
D:画面显示状态位。D=1时为开显示,D=0时为关显示。这里的关显示仅是画面不出现,而DDRAM内容不变。这与清屏指令截然不同。
C:光标显示状态位。C=1时为光标显示,C=0时为光标消失。光标为底线形式(5×1点阵),出现在第8行或第11行上。光标的位置由地址指针(AC)确定,并随其变动而移动。当AC值超出了画面的显示范围,光标将随之消失。
B:闪烁显示状态位。B=1时为闪烁启用,B=0时为闪烁禁止。闪烁是指一个字符位交替进行正常显示态和全亮显示态。闪烁频率在控制器工作频率为250 kHz时为2.4 Hz。闪烁位置同光标一样受地址指针(AC)的控制。
闪烁出现在有字符或光标显示的字符位时,正常显示态为当前字符或光标的显示;全亮显示态为该字符位所有点全显示。若出现在无字符或光标显示的字符位时,正常显示态为无显示,全亮显示态为该字符位所有点全显示。这种闪烁方式可以设计成块光标,如同计算机CRT上块状光标闪烁提示符的效果。
该指令代码表,如表3.24所示。
表3.24 显示状态设置指令代码表
5)光标或画面滚动(Cursor or Display Shift)
格式:
执行该指令将产生画面或光标向左或向右滚动一个字符位。如果定时间隔地执行该指令将产生画面或光标的平滑滚动。画面的滚动是在一行内连续循环进行的。也就是说,一行的第一个单元与最后一个单元连接起来,形成了闭环式的滚动。
该指令有两个参数位。
S/C:滚动对象选择位。S/C=1时画面滚动,S/C=0时光标滚动。
R/L:滚动方向选择位。R/L=1时向右滚动,R/L=0时向左滚动。
该指令代码表如表3.25所示。
表3.25 光标或画面滚动指令代码表
该指令与输入方式设置指令一样,都可以产生光标或画面的滚动,区别在于该指令专用于滚动功能,执行一次,显示呈现一次滚动效果;而输入方式设置指令仅是完成了一种字符输入方式的设置,仅在计算机对DDRAM等进行操作时才能产生滚动的效果。
6)工作方式设置(Function Set)
格式:
该指令设置了控制器的工作方式,包括有控制器与计算机的接口形式和控制器显示驱动的占空比系数等。该指令有三个参数:DL、N和F。它们的作用如下。
DL:设置控制器与计算机的接口形式。接口形式体现在数据总线长度上。当DL=1时,设置数据总线为8位长度,即DB7~DB0有效;当DL=0时,设置数据总线为4位长度,即DB7~DB4有效。该方式下8位指令代码和数据将按先高4位后低4位的顺序分两次传输。
N:设置显示字符行数。N=0为一行字符行;N=1为两行字符行。
F:设置显示字符的字体。F=0为5×7点阵字符体;F=1为5×10点阵字符体。
N和F的组合设置了控制器的确定占空比系数,如表3.26所示。
表3.26 控制器的确定占空比系数
该指令可以说是字符型液晶显示控制器的初始化设置指令,也是唯一的软件复位指令。HD44780U虽然具有复位电路,但为了可靠的工作,HD44780U要求计算机在操作HD44780U时首先对其进行软件复位。也就是说,在控制字符型液晶显示模块工作时首先要进行软件复位。
7)CGRAM地址设置(Set CGRAM Address)
格式:
该指令将6位的CGRAM地址写入地址指针(AC)内,随后计算机对数据的操作就是对CGRAM的读/写操作。
8)DDRAM地址设置(Set DDRAM Address)
格式:
该指令将7位的DDRAM地址写入地址指针(AC)内,随后计算机对数据的操作是对DDRAM的读/写操作。
9)读BF和AC值(Read Busy Flag and Address)
格式:
计算机对指令寄存器进行通道读操作(RS=O,R/W=1)时,将读出此格式的BF值和7位AC的当前值。计算机随时都可以对HD44780U进行读“忙”操作。
BF值反映HD44780U的接口状态。计算机在对HD44780U进行每次操作时首先都要读BF值判断HD44780U的当前接口状态,仅在BF=O时计算机才可以向HD44780U写指令代码或显示数据,以及从HD44780U读出显示数据。
计算机读出的地址指针(AC)的当前值可能是DDRAM地址也可能是CGRAM的地址,这取决于最近一次计算机向AC写入的是哪类地址。
10)写数据(Write Data to CG or DDRAM)
格式:
计算机向数据寄存器通道写入数据,HD44780U根据当前地址指针(AC)值的属性及数值将该数据送入相应的存储器内AC所指的单元。如果AC值为DDRAM地址指针,则认为写入的数据为字符代码并送入DDRAM内AC所指的单元;如果AC值为CGRAM地址指针,则认为写入的数据是自定义的字模数据并送入CGRAM内AC所指的单元。所以计算机在写数据操作之前要先设置地址指针或人为地确认地址指针的属性及数值。
11)读数据(Read Data from CG or DDRAM)
格式:
在HD44780U内部运行时序的操作下,地址指针(AC)的每一次修改,包括新的AC值的写入,光标滚动位移所引起的AC值的修改或由计算机读/写数据操作后所产生的AC值的修改,HD44780U都会把当前AC所指单元的内容送到接口的数据输出寄存器,供计算机读取。如果AC值为DDRAM地址指针,则认为接口部的数据输出寄存器的数据为DDRAM内AC所指单元的字符代码;如果AC值为CGRAM地址指针,则认为数据输出寄存器的数据为CGRAM内AC所指单元的自定义字符的字模数据。
计算机的读数据是从数据寄存器通道中数据输出寄存器读取当前所存放的数据。所以计算机在首次读数据操作之前需要重新设定一次地址指针(AC)值,或用光标滚动指令将地址指针(AC)值修改到所需的地址上,然后进行的读数据操作才能获得所需的数据。在读取数据后地址指针(AC)将根据最近设置的输入方式进行自动修改。