15.3 液晶显示控制器指令集

液晶显示控制器通过控制指令来完成液晶的显示操作。在液晶显示模块控制驱动器ST7920中,提供了两套控制指令:基本指令和扩充指令。这些指令都是用来控制液晶的显示操作。下面分别对各指令的使用进行介绍。

15.3.1 基本指令集

液晶显示模块控制驱动器ST7920提供了11条基本指令。当RE=0时为基本指令集模式,下面分别介绍各基本指令的使用。

1.清除显示指令

清除显示指令主要用于清除液晶屏的显示数据。该指令将DDRAM填满“20H”,并且复位DDRAM的地址计数器(AC)为“00H”,重设进入点设定,将I/D设为“1”,即游标右移AC加1。清除显示指令的格式,如图15.8所示。

15.3 液晶显示控制器指令集 - 图1

图 15.8 清除显示指令

2.地址复位指令

地址复位指令主要用于将地址计数器复位。该指令设定DDRAM的地址计数器(AC)到“00H”,并且将游标移到开头原点位置,这个指令并不改变DDRAM的内容。地址复位指令的格式,如图15.9所示。

15.3 液晶显示控制器指令集 - 图2

图 15.9 地址复位指令

3.进入设定点指令

进入设定点指令主要用于指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位。其中,I/D是地址计数器递增递减的选择,当I/D=1,游标右移,DDRAM地址计数器(AC)加1;当I/D=0,游标左移,DDRAM地址计数器(AC)减1。S用于显示画面整体位移,当S=1,I/D=1时,画面整体左移;当S=1,I/D=0时,画面整体右移。进入设定点指令的格式,如图15.10所示。

15.3 液晶显示控制器指令集 - 图3

图 15.10 进入设定点指令

4.显示状态开关指令

显示状态开关主要指令用于控制整体显示、游标、游标位置反白ON/OFF等操作。其中,D用于整体显示开/关控制,当D=1,整体显示打开;当D=0,整体显示关闭,但不改变DDRAM的内容。C用于游标开/关控制,当C=1,游标显示打开;当C=0,游标显示关闭。B用于游标位置反白开/关控制,当B=1,游标位置反白打开,将游标所在之处的数据反白显示;当B=0,游标位置反白关闭。显示状态开关指令的格式,如图15.11所示。

15.3 液晶显示控制器指令集 - 图4

图 15.11 显示状态开关指令

5.游标或显示移位控制指令

游标或显示移位控制主要指令用于设定游标的移动与显示的移位控制。该指令主要可以进行以下一些控制操作。

❑当S/C=0,R/L=0时,游标向左移动,地址计数器AC=AC-1。

❑当S/C=0,R/L=1时,游标向右移动,地址计数器AC=AC+1。

❑当S/C=1,R/L=0时,显示向左移动,且游标跟着移动,地址计数器AC=AC。

❑当S/C=1,R/L=1时,显示向右移动,且游标跟着移动,地址计数器AC=AC。

该指令并不改变DDRAM的内容。游标或显示移位控制指令的格式,如图15.12所示。

15.3 液晶显示控制器指令集 - 图5

图 15.12 游标或显示移位控制指令

6.功能设定指令

功能设定指令主要用于指令集的选择和控制方式的选择等。其中,DL为4/8BIT控制方式选择,当DL=1时,为8位MPU控制方式;当DL=0,为4位MPU控制方式。RE为指令集选择控制,当RE=1,将使用扩充指令集;当RE=0,将使用基本指令集。同一指令集不可同时改变RE及DL,需先改变DL,然后再改变RE,才能确保FLAG正确设定。功能设定指令的格式,如图15.13所示。

15.3 液晶显示控制器指令集 - 图6

图 15.13 功能设定指令

7.设定CGRAM地址指令

设定CGRAM地址指令主要用于将CGRAM地址送入地址计数器AC中。该指令在设定CGRAM地址到地址计数器(AC)时,AC范围为00H~3FH。除此以外,还需确认扩充指令中SR=0(卷动地址或RAM地址选择)。设定CGRAM地址指令的格式,如图15.14所示。

15.3 液晶显示控制器指令集 - 图7

图 15.14 设定CGRAM地址指令

提示如果只使用系统内置的CGROM,这条指令一般不会使用。

8.设定DDRAM地址指令

设定DDRAM地址指令主要用于将DDRAM地址送入地址计数器AC中。该指令在设定DDRAM地址到地址计数器(AC)时,第一行AC范围为80H~8FH,第二行AC范围为90H~9FH,第三行AC范围为A0H~AFH,第四行AC范围为B0H~BFH。设定DDRAM地址指令的格式,如图15.15所示。

15.3 液晶显示控制器指令集 - 图8

图 15.15 设定DDRAM地址指令

注意通过上面的介绍可知,DDRAM的地址并不是按行从上到下连续的,第三行的起始地址紧接着第一行,第四行的起始地址紧接着第二行。

9.读取忙碌标志(BF)和地址指令

读取忙标志(BF)和地址指令主要用于读取忙标志(BF),用于确认内部动作是否已经完成,并同时读出地址计数器(AC)的值。其中,当BF=1,表示内部忙碌中,此时不能执行新指令,需等BF=0才可以执行新指令。读取忙碌标志(BF)和地址指令的格式,如图15.16所示。

15.3 液晶显示控制器指令集 - 图9

图 15.16 读取忙碌标志(BF)和地址指令

10.写数据到RAM指令

写数据到RAM指令主要用于写入数据到内部的RAM。当写入数据到内部的RAM时,会改变AC的值。每个RAM地址(CGRAM,DDRAM,IRAM……)都可以连续写入两个字节的数据,当写入第二个字节时,地址计数器AC的值就会自动加1。写数据到RAM指令的格式,如图15.17所示。

11.读取RAM的值指令

读取RAM的值指令主要用于读取RAM内部的数据。从内部的RAM读取数据时,当读取后会

改变AC的值。当执行设定地址指令后(CGRAM,DDRAM,IRAM……),若要读取数据时需先DUMMY READ一次,才会读取到正确数据。第二次读取时则不需要DUMMY READ,除非再次执行了设定地址指令,才需要再次DUMMY READ。读取RAM的值指令的格式,如图15.18所示。

15.3 液晶显示控制器指令集 - 图10

图 15.17 写数据到RAM指令

15.3 液晶显示控制器指令集 - 图11

图 15.18 读取RAM的值指令