LCD1602使用笔记
- 格式:doc
- 大小:51.00 KB
- 文档页数:2
LCD1602高手使用详解事无巨细,LCD1602前面总算走完了对AVR MEGA16这块单片机的一些基本的应用方式了,这时候大家对AVR的一些内部资源比如定时器,ADC,最主要的IO口的使用方式应该有了一个虽比较粗浅但是却比较形象的认识了。
这节我们来看使用单片机的另外一大主题,就是用单片机来实现芯片控制。
在前面的数码管显示一文中,就已经涉及到了用单片机来控制芯片为我们工作,CEPARK AVR开发板,为了达到增强驱动能力和节省IO口的作用,运用了移位寄存器74HC595来驱动两个四位八段数码管,是一个十分有创意的设计。
但是前面的内容重心还是集中于对AVR的IO口的控制,所以,我们从这节开始要正式逐渐深入的接触各种芯片了。
先做个引子。
单片机是一种微控制器,本身内部集成了数种资源比如CPU、内存、内部和外部总线系统,目前大部分还会具有外存。
他的主要任务是利用各种资源实现电平控制,可以以此控制与它相连的下级系统,广泛用于工业自动控制领域。
我们就从这句话出发,首先单片机用来做控制用的,而且是利用的是本身的内部资源。
但是,它的功能再强大,资源再丰富也总有一个上限,总有枯竭的一天。
所以我们常常利用单片机外接芯片来弥补或者增强单片机的功能来完成我们所需功能的电路。
比如程序存储器不足,可以外接外部存储器,比如单片机内部中断级不足,可以外接中断控制器等等。
大家可以从这个角度来理解芯片控制的意义罢。
今天我们用AVR单片机来实现对LCD1602液晶显示芯片的控制。
首先从这个名字讲起,LCD:英文全称为Liquid Crystal Display,即为液态晶体显示,也就是我们常说的液晶显示了。
(平时老说LCDLCD,可能大家也都不怎么注意过这个全称吧,呵呵,当增加词汇量了)1602则是表示这个液晶一共能显示2行数据,每一行显示16个字符。
这个就是LCD1602的全部来由。
液晶显示的使用有多广泛我就不多说了,LCD1602好像10元左右就可以拿到了的,不算贵。
LCD1602学习笔记
一、HD44780指令体系及设定:
1、清屏指令(01H):
清屏指令(01H)
功能:<1>清除液晶显示器,即将DDRAM中的内容全部的填入“空白”的ASCLL码20H。
<2>光标归位,即将光标撤回液晶显示屏的左上方。
<3>将地址计数器(AC)的值设置为0。
2、光标归位指令:
功能:<1>将光标撤回液晶显示器的左上方。
<2>把地址计数器(AC)的值设置为0;
<3>保持DDRAM中的值保持不变。
3、显示模式设置指令:
功能:设定每次定入一位数据之后光标的移位方向,以及设定每次写入的一个字符是否移动。
参数设定情况:
①I/D位:0=写入数据后光标左移;1=写入数据后光标右移。
②S位:0=写入新数据后显示屏不移动;1=写入新数据后显示屏整
体右移1个字符。
4、显示开关控制指令:
功能:控制显示器的开/关,光标的显示/关闭,以及光标是否闪烁。
参数的设定:
①D位:0=显示功能关;1=显示功能开。
②C位:0=无光标;1=有光标。
③B位:0=光标闪烁;1=光标不闪烁。
5、设定显示屏或光标的移动方向指令:。
能够同时显示16x02即32个字符和数字。
市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
有80字节显示数据存储器DDRAM。
内建有192个5X7点阵的字型的字符发生器CGROM。
参数:1脚:VSS为电源地(也叫GND-)第2脚:VCC接5V电源正极(+)第 3脚:V0(VL)为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时写操作。
第6脚:E(或EN)端为使能(enable)端,高电平有效,一般不用LCD显示时需要关掉使能端,不会影响到其共用IO口的模块工作。
第7~14脚:D0~D7为8位双向数据端。
第15~16脚:空脚或背灯电源。
15脚背光正极,16脚背光负极。
操作时序:(重要的是写)对控制器每次进行读写操作之前,必须进行读写检测,确保STA7为0.1602通过D0-D7的8位数据端传输数据和指令。
字符集:1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
因为1602识别的是ASCII码,可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。
如:感叹号!的ASCII为0x21,字母B的ASCII为0x42指令集:显示开关及光标设置:(初始化)00001DCB->D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)000001NS->N=1(读或写一个字符后地址指针加1,光标加1),N=0(读或写一个字符后地址指针减1,光标减1),S=1且N=1(当写一个字符后,整屏显示左移)s=0 当写一个字符后,整屏显示不移动.数据指针设置:简单理解:你想在LCD1602上哪个位置显示字符?数据首地址为80H,所以数据地址为80H+地址码(0-27H) 数据第二行地址为40H,所以数据地址为40H+地址码(40-67H)其他设置:(把LCD上不要显示的字符清除掉)显示自定义字符(这种要自己取模)要想显示自定义字符,首先就得取得想要的图形或者字符的字模数组,如下图所示,对应一个字符显示区域。
LCD1602写操作时序:LCD1602读操作时序:1602采用标准的16脚接口,其中: 第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15~16脚:空脚1602液晶模块内部的控制器共有11条控制指令:它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效指令4:显示开关控制。
D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标指令6:功能设置命令DL:高电平时为8位总线,低电平时为4位总线N:低电平时为单行显示,高电平时双行显示F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符指令7:字符发生器RAM地址设置DB5DB4DB3 为字符号,也就是你将来要显示该字符时要用到的字符地址。
(000~111)(能定义八个字符)DB2DB1DB0为行号。
LCD1602 液晶屏知识点总结LCD1602 的引脚包括数据指令寄存器RS,读写控制寄存器R/W,使能端E,三态数据总线DB0~DB7,电源引脚VDD,VSS,背光正负极A、K,背光调节引脚V0。
1602 可以显示2 行每行16 个共32 个5*8 或者5*11 个字符,这就是1602 名字的由来。
1602 内部有CGROM、CGRAM、DDRAM。
CGROM 是字符发生器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 中。
R=1 时,是数据寄存器,RS=0 时,是指令寄存器。
R/W=1 时,是读操作,R/W=0 时,是写操作。
读操作时,使能端E 要保持1,写操作时,下降沿使能。
当RS=0,R/W=0 时,是写入命令:1、01H:清除DDRAM 的所有单元,光标被移动到屏幕左上角。
<1> 清除液晶显示器,即将DDRAM 的内容全部填入"空白"的ASCII 码20H;<2> 光标归位,即将光标撤回液晶显示屏的左上方;<3> 将地址计数器(AC)的值设为0。
LCD1602中文资料程序和使用说明一、硬件连接和初始化步骤:1.将LCD1602的16个引脚连接到MCU(单片机)的相应引脚上。
其中,VCC和GND分别接到电源正负极,VO接到可调电位器的中间引脚(用于调节背光亮度),RS、RW和E分别接到MCU的IO口上,D0-D7分别接到MCU的8个IO口上。
2.初始化LCD1602的操作包括设置显示模式、显示光标、输入模式等,具体步骤如下:a.将8位数据接口设置为并行输入模式,即设置D0-D3为输入模式。
b.设置显示模式为2行显示,5x8点阵字符,显示器不移动。
c.将显示光标设置为闪烁显示。
d.设置数据输入方式为向右移动,同时字符显示不移动。
e.清除显示内容,将光标位置设置为第一行第一列。
f.打开显示器和光标显示功能。
二、常用函数和操作方法:1. void lcd1602_init( 初始化LCD1602,包括上述硬件连接和初始化步骤。
2. void lcd1602_clear( 清除显示内容。
3. void lcd1602_setCursor(int row, int column) 设置光标位置,row表示行数(从0开始),column表示列数(从0开始)。
4. void lcd1602_print(String str) 在当前光标位置打印字符串str。
5. void lcd1602_shiftDisplayLeft( 将显示内容向左移动一位。
6. void lcd1602_shiftDisplayRight( 将显示内容向右移动一位。
7. void lcd1602_scrollDisplayLeft( 将整个显示内容向左滚动一格。
8. void lcd1602_scrollDisplayRight( 将整个显示内容向右滚动一格。
9. void lcd1602_noCursor( 关闭光标显示。
10. void lcd1602_cursor( 打开光标显示。
LCD1602液晶屏知识点总结LCD1602的引脚包括数据指令寄存器RS,读写控制寄存器R/W,使能端E,三态数据总线DBO〜DB7,电源引脚VDD, VSS,背光正负极A、K,背光调节引脚V0。
1602可以显示2行每行16个共32个5*8或者5*11个字符,这就是1602名字的由来。
1602内部有CGROM、CGRAM、DDRAM。
CGROM是字符发生器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中。
由于写数据时最高位必须为1所以实际地址是:R=1时,是数据寄存器,RS=0时,是指令寄存器。
R/W=1时,是读操作,R/W=0时,是写操作。
读操作时,使能端E要保持1,写操作时,下降沿使能。
当RS=0,R/W=0 时,是写入命令:1、01H :清除DDRAM的所有单元,光标被移动到屏幕左上角<1>清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H;<2>光标归位,即将光标撤回液晶显示屏的左上方;<3>将地址计数器(AC)的值设为02、02H或这03H : DDRAM 所有单元的内容不变,光标移至左上角0<1>把光标撤回到显示器的左上方;<2>把地址计数器(AC)的值设置为0;<3>保持DDRAM的内容不变3、输入方式设置(EnterModeSet ),这些指令规定了两个方面:一是写入一个DDRAM单元后,地址指针如何改变(加一还是减一);二是屏幕上的内容是否滚动。
LCD1602 字符型液晶显示模块指令集指令RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能执行时间1.清屏0 0 0 0 0 0 0 0 0 1 清除DDRAM 和AC 值,光标复位(清屏)01 1.64us2.归位0 0 0 0 0 0 0 0 1 * AC=0,光标复位、DDRAM 内容不变。
(复位)02 1.64us3.输入方式设置0 0 0 0 0 0 0 11 1 数据读、写操作后,AC 自动加一;画面平移。
0740us1 0 数据读、写操作后,AC 自动加一;画面不动。
060 1 数据读、写操作后,AC 自动减一;画面平移。
050 0 数据读、写操作后,AC 自动减一;画面不动。
044.显示开关控制0 0 0 0 0 0 10 0 0 显示关,光标关,闪烁关。
0840us0 0 1 显示关,光标关,闪烁开。
090 1 0 显示关,光标开,闪烁关。
0a0 1 1 显示关,光标开,闪烁开。
0b1 0 0 显示开,光标关,闪烁关。
0c1 0 1 显示开,光标关,闪烁开。
0d1 1 0 显示开,光标开,闪烁关。
0e1 1 1 显示开,光标开,闪烁开。
0f5.光标、画面位移0 0 0 0 0 10 0 * * 光标向左平移一个字符位,AC 值减1。
1040us0 1 * * 光标向右平移一个字符位,AC 值加1。
141 0 * * 画面向左平移一个字符位,但光标不动。
移屏181 1 * * 画面向右平移一个字符位,但光标不动。
移屏1c6.功能设置0 0 0 0 10 0 0 * * 四位数据接口,一行显示,5x7 点阵2040us0 0 1 * * 四位数据接口,一行显示,5x10 点阵240 1 0 * * 四位数据接口,两行显示,5x7 点阵280 1 1 * * 四位数据接口,两行显示,5x10 点阵291 0 0 * * 八位数据接口,一行显示,5x7 点阵301 0 1 * * 八位数据接口,一行显示,5x10 点阵341 1 0 * * 八位数据接口,两行显示,5x7 点阵381 1 1 * * 八位数据接口,两行显示,5x10 点阵3c7.CGRAM地址设0 0 0 1 A5 A4 A3 A2 A1 A0 设置CGRAM 地址。
1数码管显示数码管的显示有四种方法先介绍一下段驱动和位驱动都都使用74HC573锁存器的方式:数码管共阴极,直接由单片机的P0口驱动/OE LE D /Q0 1 1 1 在允许输入输出时,输入和输出是一样的。
0 1 0 00 0 任意输出上一个状态值,即已经所存的值。
#include <reg51.h>sbit dula=P2^6; //段选信号的锁存器控制sbit wela=P2^7; //位选信号的锁存器控制void main(){dula=0; //置0的时候无理论573输入什么值,输出端都只输出上一个值而与当前输入的值无关,只有置1的一瞬间才会将此刻输入端的值原样输出。
即11脚就像是一个开关,为0关闭输出内容为之前锁存的内容,为1开,输出值就是此刻的输入值。
wela=0;P0=0x4f; //数字“3”的代码dula=1; //段置1将P0口的值输入到锁存器中,dula=0; //锁存数字“3”的代码,LE=0(图中的C)无论输入什么值,输出的结果都是上一个状态值。
P0=0x00; //选中所有的数码管,要想选哪中一位数码管只需要将对应的位选线置0.wela=1;wela=0; //锁存输入的00while(1);}上面的示例是将一个字符显示在一个或者几个数码管上,但是实际的应用却需要在多个数码管上显示出多个字符。
这就需要动态扫描以实现静态显示的效果。
我们已经可以通过程序让任意一位数码管显示任意一种字符,这样我们可以以时间为轴,循环显示每个数码管需要的数值,当循环显示的时间比较小时,眼睛就不能分辨出闪烁,而是看到一个静态的数值显示,2、LCD1602显示可以显示2*16个字符,每个字符是5*7的点阵3脚是背光选择用于调节背光亮度LCD1602功能介绍:提供各种控制命令:清屏、字符闪烁、光标闪烁、显示移位80字节显示数据存储器DDRAM192个5*7点阵的字节字符发生器CGROM8个可由用户自定义的字符发生器CGRAM读状态值的目的就是要判断1602是否在工作STA7-=1时不能对其读写。
AVR 单片机学习笔记–LCD1602模块学完51单片机再来学AVR,感觉很容易上手,LCD1602在学51的时候学过,所以可以直接修改相关的IO口操作即可。
现在顺便也复习一下。
1602可以显示两行字符,每行可以显示16个字符,可惜的是不能显示中文,在我调试的时候它帮我不少的忙。
一、主要技术参数:显示容量:16X2个字符(两行,每行16个字符)模块工作电源:4.5~5.5V模块工作电流:2.0mA (5.0V)模块最佳工作电源:5.0V字符尺寸:2.95X4.35(WXH)mm二、IO引脚功能LCD1602A模块引脚功能编号符号引脚说明编号符号引脚说明1VSS电源地(模块供电)9D2Data I/O2VDD电源正极(模块供电) 10D3Data I/OVL接在滑动电阻可以调节对比度 11D4Data I/O4RS数据/命令选择端 (H/L)12D5Data I/O5R/W读/写选择端 (H/L)13D6Data I/O6E使能信号(通知芯片读取数据) 14Data I/O7D0Data I/O15BLA模块背光灯正极8D1Data I/O16BLK模块背光灯负极三、基本操作时序:读状态:输入:RS=L、RW=H、E=H模块输出:状态字=D0~D7写指令:输入:RS=L、RW=L、D0~D7=指令码、E=H 模块输出:无读数据:输入:RS=H、RW=H、E=H模块输出:数据=D0~D7写数据:输入:RS=H、RW=L、D0~D7=数据、E=H 模块输出:无状态字说明(因为单片机的速度可能快过1602,所以需要判断当1602是否在忙,或者延时。
)STA7STA6STA5STA4STA3STA2STA1STA0D7D6D5D4D3D2D1D0STA0-6:当前数据地址指针的数值STA7主要用来检查1602模块的是否可以写入或读出操作 1:禁止 0:允许四、指令说明(这指令是用来设置1602显示的方式)显示模式设置指令码功能111设置16X2显示,5X7点阵,8位数据接口显示开/关及光标设置指令码功能1DCBD=1 开显示D=0 关显示C=1 显示光标C=0 不显示光标B=1 光标闪烁B=0 光标不闪烁1NSN=1 当读或写一个字符后地址指针加1,且光标加1(即从左往右显示)N=0 当读或写一个字符后地址指针减1,且光标减1(即从右往左显示)S=1 当写一个字符,中国男排显示左移(N=1)五、时序图写操作(写指令、写数据)时序图时序参数写指令时序,RS拉低表示写指令,R/W拉低表示写操作,给DB0-DB7赋值指令数据并保持>;40ns时间,将E 拉高表示数据已经准备好保持>;150ns让1602读取,将E 拉低,并延时>;10ns一次写操作完毕。
LCD1602的用法一、简介LCD1602是一款常用的液晶显示模块,它具有16x2的字符显示能力,可以显示基本的英文、数字和符号。
通过与微处理器或单片机等控制器的连接,可以实现各种数据和信息的显示。
二、硬件连接1. 电源:LCD1602模块需要5V电压供电,可以使用USB转RS232接口或直接连接5V电源。
2. 数据线:LCD1602模块需要连接数据线才能与控制器通信。
常见的连接方式是使用4条数据线:RS、RW、E。
其中RS线控制亮灭,RW线控制光标,E线控制开关。
3. 地线:通常需要连接一个公共地线,以使电路稳定。
三、软件实现以下是一个简单的示例代码,使用C语言和LCD1602模块实现显示字符串的功能:```c#include <reg52.h> // 包含8051单片机寄存器定义#include <lcd1602.h> // 包含LCD1602驱动库文件// 声明LCD1602结构体变量LCD1602 lcd;void main() {// 初始化LCD1602模块lcd_init(&lcd);lcd_clear(&lcd); // 清空屏幕// 显示字符串"Hello, world!"lcd_puts(&lcd, "Hello, world!");// 等待一段时间,以便观察显示效果delay(500);}```四、常用命令LCD1602模块支持一些常用的命令,如光标移动、清屏、显示文本等。
具体命令可以参考LCD1602驱动库文档。
五、注意事项1. LCD1602模块的字符宽高比为4:5,因此需要调整显示的字符大小以适应屏幕。
2. 需要根据具体的应用场景和硬件配置选择合适的LCD1602模块和驱动库。
不同的模块和库可能存在差异,需要参考相应的文档进行操作。
3. 在实际应用中,需要考虑与其他设备的接口和控制方式,确保数据传输的正确性和稳定性。
LCD1602数据手册一、概述LCD1602 是一种广泛应用于各类电子设备中的字符型液晶显示模块。
它具有体积小、功耗低、显示清晰等优点,能够显示 16 个字符乘以 2行的信息,非常适合用于显示简单的文本和数据。
二、基本特性1、显示容量:LCD1602 可以显示 32 个字符,即 16 个字符乘以 2 行。
2、工作电压:通常为 5V 直流电源。
3、显示模式:可以显示字母、数字、符号等多种字符。
4、视角范围:具有一定的可视角度,在不同角度下仍能清晰看到显示内容。
三、引脚功能1、 VSS:接地引脚。
2、 VDD:电源引脚,接+5V 电源。
3、 V0:对比度调整引脚,通过外接电位器来调整液晶显示的对比度。
4、 RS:寄存器选择引脚。
当 RS 为低电平时,选择指令寄存器;当 RS 为高电平时,选择数据寄存器。
5、 RW:读写选择引脚。
当 RW 为低电平时,进行写操作;当 RW 为高电平时,进行读操作。
6、 E:使能引脚,下降沿触发。
7、 D0 D7:数据引脚,用于传输指令和数据。
四、指令集1、清屏指令:将显示缓冲区的内容清除,屏幕显示空白。
2、归位指令:使光标回到起始位置,即第一行第一列。
3、输入方式设置指令:用于设置数据的输入方式,如光标移动方向等。
4、显示开关控制指令:控制显示、光标、闪烁等功能的开启和关闭。
5、光标或显示移位指令:使光标或整个显示内容向左或向右移动。
6、功能设置指令:设定数据长度、行数、字形等参数。
7、 CGRAM 地址设置指令:用于自定义字符的地址设置。
8、 DDRAM 地址设置指令:指定显示数据的存储地址。
五、显示缓冲区LCD1602 内部具有显示缓冲区,通过向缓冲区写入数据来控制显示内容。
第一行的地址为 0x00 0x0F,第二行的地址为 0x40 0x4F。
六、初始化设置在使用LCD1602 之前,需要进行初始化设置,包括设置显示模式、输入方式、显示开关等。
以下是一个常见的初始化流程示例:1、延时 15ms 以上。
LCD1602液晶屏知识点总结LCD1602的引脚包括数据指令寄存器RS,读写控制寄存器R/W,使能端E,三态数据总线DB0~DB7,电源引脚VDD,VSS,背光正负极A、K,背光调节引脚V0。
1602可以显示2行每行16个共32个5*8或者5*11个字符,这就是1602名字的由来。
1602内部有CGROM、CGRAM、DDRAM。
CGROM是字符发生器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中。
R=1时,是数据寄存器,RS=0时,是指令寄存器。
R/W=1时,是读操作,R/W=0时,是写操作。
读操作时,使能端E要保持1,写操作时,下降沿使能。
当RS=0,R/W=0时,是写入命令:1、01H:清除DDRAM的所有单元,光标被移动到屏幕左上角。
<1> 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H;<2> 光标归位,即将光标撤回液晶显示屏的左上方;<3> 将地址计数器(AC)的值设为0。
2、02H或这03H:DDRAM所有单元的内容不变,光标移至左上角。
LCD1602液晶显示应用总结一、1602里面存储器有三种:CGROM、CGRAM、DDRAMCGROM保存了厂家生产时固化在LCM中的点阵型显示数据;CGRAM是留给用户自己定义点阵型显示数据的;DDRAM则是和显示屏的内容对应的。
1602内部的DDRAM有80字节,而显示屏上只有2行×16列,共32个字符,所以两者不完全一一对应。
默认情况下,显示屏上第一行的内容对应DDRAM中80H到8FH的内容,第二行的内容对应DDRAM 中C0H到CFH的内容。
DDRAM中90H到A7H、D0H到E7H 的内容是不显示在显示屏上的,但是在滚动屏幕的情况下,这些内容就可能被滚动显示出来了。
注:这里列举的DDRAM的地址准确来说应该是DDRAM地址+80H 之后的值,因为在向数据总线写数据的时候,命令字的最高位总是为1。
DDRAM(Display Data RAM)就是显示数据RAM,用来寄存待显示的字符代码。
共80个字节,其地址和屏幕的对应关系如下:DDRAM相当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。
同样LCD1602共有80个字节的显存,即DDRAM。
但LCD1602的显示屏幕只有16×2大小,因此,并不是所有写入DDRAM的字符代码都能在屏幕上显示出来,只有写在上图所示范围内的字符才可以显示出来,写在范围外的字符不能显示出来。
这样,我们在程序中可以利用下面的“光标或显示移动指令”使字符慢慢移动到可见的显示范围内,看到字符的移动效果。
为了在液晶屏幕上显示字符,就把字符代码送入DDRAM。
例如,如果想在屏幕左上角显示字符‘A’,那么就把字符‘A’的字符代码41H写入DDRAM的00H 地址处即可。
至于怎么写入,后面会有说明。
那么为什么把字符代码写入DDRAM,就可以在相应位置显示这个代码的字符呢?我们知道,LCD1602是一种字符点阵显示器,为了显示一种字符的字形,必须要有这个字符的字模数据,什么叫字符的字模数据,看看下面的这个图就明白了:A的字模上图的左边就是字符‘A’的字模数据,右边就是将左边数据用“○”代表0,用“■”代表 1。
指令集:
0x01 清屏,同时DDRAM清零(赋予不显示的ASCII值),AC清零即光标归位(回到底片起始位置,而非当前屏幕的左上角)
0x02 光标归位,AC清零,不改变DDRAM的值
RS R/W DB7~DB0
0 0 0 0 0 0 0 1 I/D
(incre
ase/de
crease
) S (scree n)
0 0 0 0 0 0 1 D
(displ
ay) C
(curso
r)
B
(blink
)
屏幕显示、光
标、光标闪烁
开关
0 0 0 0 0 1 S/C
(screen/
char) R/L
(right/
left)
* * 屏幕\光标移
动、右移\左移
0 0 0 0 1 DL
(data
lengt
h)1
八
位、0
四位
分两
次送
一字
节N
(row
num)
1两行,
0一行
F
(font)
1为
5*10
点阵、
0为
5*7点
阵
* *
0 0 0 1 D5~D0设置六位的CGRAM地址
0 0 1 D6~D0设置七位的DDRAM地址
0 1 BF 由最后写入的DDRAM或CGRAM地址设置指令设置的
DDRAM或CGRAM地址
1 0 写入一个字节数据,需要先设置RAM地址,DDRAM或CGRAM
均可
1 1 读取一个字节数据,需要先设置RAM地址,DDRAM或CGRAM
均可
0x04 写完一个字符后,光标自动左移即AC自动减一
0x05 写完一个字符后,光标自动左移即AC自动减一(但光标在当前显示屏幕中的位置不变),底片自动右移。
屏幕显示效果是光标不动,写完一个字符后屏幕字符右移。
0x06 写完一个字符后,光标自动右移即AC自动加一
0x07 写完一个字符后,光标自动右移AC自动加一,底片自动左移。
屏幕显示效果是光标不动,写完一个字符后整屏字符左移。
0x18 底片左移,光标跟着动,因为AC不变
0x1c 底片右移,光标跟着动,因为AC不变
0x10 光标左移,AC减一,底片不动
0x14 光标右移,AC加一,底片不动
屏幕显示字符理解总结:(在黑暗里拿着手电看底片上的文字,光线照到哪儿,就能看到哪儿的文字,光线照不到的也就看不到了)
可以将DDRAM的00H~27H、40H~47H的内存单元排列如下。
显示屏幕一次只能显示32个字符,可以理解为显示屏的照射范围是‘长:16个字符’、‘高2个字符:’
00H 01H 02H 03H 04H ···23H 24H 25H 26H 27H 40H 41H 42H 43H 44H ···63H 64H 65H 66H 67H 初始化时DDRAM清零,是在DDRAM的显示存储空间里都写上空白符的ASCII值。
光标的位置由AC即地址计数器决定,这个地址计数器的内容(存放的内容是指向DDRAM 的指针)从00H~27H、40H~67H变化。
AC自动加一或减一的情况如下:
01H 02H 03H 04H ···23H 24H 25H 26H
00H
顺时针旋转27H
67H 40H
66H 65H 64H 63H ···44H 43H 42H 41H。