
LCD1602学习总结.docx
5页LCD1602液晶屏知识点总结LCD1602的引脚包括数据指令寄存器RS,读写控制寄存器R/W,使能端E,三态数据总线DB0~DB7,电源引脚VDD,VSS,背光正负极A、K,背光调节引脚V01602可以显示2行每行16个共32个5*8或者5*11个字符,这就是1602名字的由来1602内部有CGROM、CGRAM、DDRAMCGROM是字符发生器ROM,是固化在内部的,共192个字符,包括160个5*7点阵字符,32个5*10点阵字符为什么上面是5*8和5*11,这里不是,因为内部CGROM中的字符没有完全占满可以用的字模)其中部分与ASCII完全一样,所以对于大小写英文字母和数字及部分符号,在编程时可以直接双引号括起来用CGRAM是64字节用户可自定义的存储区,可自定义8个5*8或者4个5*11的字符DDRAM是控制显示的RAM,想显示什么,就把显示内容的地址放进DDRAM,不过还要设置好显示方式DDRAM共80字节,第一行和第二行各40字节这40个字节在一次显示时当然不会全部显示,因为屏幕只能显示16个,但在滚动显示时就可以全部显示出来LCD1602设定某种地址,接下去读取数据就放在改类地址中,比如设定了CGRAM的地址,那么接下去读取的数据就放在CGRAM中。
123456……40DDRAM地址第一行00H01H02H03H04H05H……27H第二行40H41H42H43H44H45H……67H由于写数据时最高位必须为1所以实际地址是:123456……40DDRAM地址第一行80H81H82H83H84H85H……A7H第二行C0HC1HC2HC3HC4HC5H……E7HR=1时,是数据寄存器,RS=0时,是指令寄存器R/W=1时,是读操作,R/W=0时,是写操作读操作时,使能端E要保持1,写操作时,下降沿使能当RS=0,R/W=0时,是写入命令:1、01H:清除DDRAM的所有单元,光标被移动到屏幕左上角功能RSR/WDB7DB6DB5DB4DB3DB2DB1DB0执行时间清屏00000000011.64ms<1> 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H; <2> 光标归位,即将光标撤回液晶显示屏的左上方; <3> 将地址计数器(AC)的值设为0 2、02H或这03H:DDRAM所有单元的内容不变,光标移至左上角功能RSR/WDB7DB6DB5DB4DB3DB2DB1DB0执行时间清屏000000001X1.64ms<1> 把光标撤回到显示器的左上方; <2> 把地址计数器(AC)的值设置为0; <3> 保持DDRAM的内容不变 3、输入方式设置(EnterModeSet),这些指令规定了两个方面:一是写入一个DDRAM单元后,地址指针如何改变(加一还是减一);二是屏幕上的内容是否滚动。
04H:写入DDRAM后,地址指针减一,比如第一个字符写入8FH,则下一个字符会写入8EH;屏幕上的内容不滚动05H:写入DDRAM后,地址指针减一,同上一种情况;每一个字符写入以后,屏幕上的内容向右滚动一个字符位06H:写入DDRAM后,地址指针加一,比如第一个字符写入80H,则下一个字符会写入81H;屏幕上的内容也是不滚动这应该是最常用的一种显示方式07H:写入DDRAM后,地址指针加一,同上一种情况;每一个字符写入以后,屏幕上的内容向左滚动一个字符位功能RSR/WDB7DB6DB5DB4DB3DB2DB1DB0执行时间清屏00000001I/DS40us功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动参数设定的情况如下所示: I/D 0=写入新数据后光标左移 1=写入新数据后光标右移 S 0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移1个字4、屏幕开关、光标开关、闪烁开关4、显示开关控制指令:08H、09H、0AH、0BH:关闭显示屏,实质上是不把DDRAM中的内容对应显示在屏幕上,对DDRAM的操作还是在进行的,执行这条指令,接着对DDRAM进行写入,屏幕上没有任何内容,但是接着执行下面的某条指令,就能看到刚才屏幕关闭期间,对DDRAM操作的效果了。
0CH:打开显示屏,不显示光标,光标所在位置的字符不闪烁0DH:打开显示屏,不显示光标,光标所在位置的字符闪烁0EH:打开显示屏,显示光标,光标所在位置的字符不闪烁0FH:打开显示屏,显示光标,光标所在位置的字符闪烁关于光标的位置:光标所在的位置指示了下一个被写入的字符所处的位置,加入在写入下一个字符前没有通过指令设置DDRAM的地址,那么这个字符就应该显示在光标指定的地方功能RSR/WDB7DB6DB5DB4DB3DB2DB1DB0执行时间清屏0000001DCB40us功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁参数设定的情况如下: 位名 设置 D 0=显示功能关 1=显示功能开 C 0=无光标 1=有光标 B 0=不闪烁 1=闪烁5、设置光标移动(本质就是AC的增加还是减少)、整体画面是否滚动10H:每输入一次该指令,AC就减一,对应了光标向左移动一格。
整体的画面不滚动14H:每输入一次该指令,AC就加一,对应了光标向右移动一格整体的画面不滚动18H:每输入一次该指令,整体的画面就向左滚动一个字符位1CH:每输入一次该指令,整体的画面就向右滚动一个字符位画面在滚动的时候,每行的首尾是连在一起的,也就是每行的第一个字符,若左移25次,就会显示在该行的最后一格在画面滚动的过程中,AC的值也是变化的功能RSR/WDB7DB6DB5DB4DB3DB2DB1DB0执行时间清屏000001S/CRT/LXX40us功能:使光标移位或使整个显示屏幕移位参数设定的情况如下: S/C R/L 设定情况 0 0 光标左移1格,且AC值减1 0 1 光标右移1格,且AC值加1 1 0 显示器上字符全部左移一格,但光标不动 1 1 显示器上字符全部右移一格,但光标不动 6、显示模式设定指令,设定了显示几行,显示什么样的点阵字符,数据总线占用几位。
20H:4位总线,单行显示,显示57的点阵字符24H:4位总线,单行显示,显示510的点阵字符28H:4位总线,双行显示,显示57的点阵字符2CH:4位总线,双行显示,显示510的点阵字符30H:8位总线,单行显示,显示57的点阵字符34H:8位总线,单行显示,显示510的点阵字符38H:8位总线,双行显示,显示57的点阵字符这是最常用的一种模式3CH:8位总线,双行显示,显示510的点阵字符功能RSR/WDB7DB6DB5DB4DB3DB2DB1DB0执行时间清屏00001DLNFXX40us数据总线位数、显示的行数及字型参数设定的情况如下: 位名 设置 DL 0=数据总线为4位 1=数据总线为8位N 0=显示1行 1=显示2行F 0=57点阵/每字符 1=510点阵/每字符7、CGRAM设置RSR/WDB7DB6DB5DB4DB3DB2DB1DB0执行时间0001A5A4A3A2A1A040us可以用于显示自定义字符8、DDRAM设置:RSR/WDB7DB6DB5DB4DB3DB2DB1DB0执行时间001A6(N)A5A4A3A2A1A040usN=0,一行显示,A6~A6=00H~4FHN=1,两行显示,第一行A6~A0=00H~27H,第二行A6~A0=40H~67H(这里很奇怪,查到的资料写的是:第一行A6~A0=00H~2FH,第二行一样,这样就超过了80字节,我觉得应该是有误的),当然以上地址都是要加80H的。
不设置DDRAM直接写出内部字符的地址,也可以显示字符,写入内部字符的二进制代码9、读取忙信号或者AC地址指令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0执行时间01FBAC地址内容(7位)40us功能:<1> 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令; 当BF=0时,液晶显示器可以接收单片机送来的数据或指令; <2> 读取地址计数器(AC)的内容10、数据写入DDRAM或者CGRAM 指令一览RSR/WDB7DB6DB5DB4DB3DB2DB1DB0执行时间011要读出的数据(D7~D0)40us功能:读取DDRAM或CGRAM中的内容 基本操作时序: 读状态 输入:RS=L,RW=H,E=H 输出:DB0~DB7=状态字 写指令 输入:RS=L,RW=L,E=下降沿脉冲, DB0~DB7=指令码 输出:无 读数据 输入:RS=H,RW=H,E=H 输出:DB0~DB7=数据 写数。
