LM016L的结构及功能
LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)与数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM与CGRAM,或者暂存从DDRAM与CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令与接受数据,DDTAM用来存储显示的字符,能存储80个字符码, CGROM由8位字符码生成5*7点阵字符160中与5*10点阵字符32种、8位字符编码与字符的对应关系,可以查瞧参考文献(30)中的表4、 CGRAM就是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM与CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM但愿,LM016L 液晶模块的引脚功能如下表所示:
引脚说明
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线就是背光电源线
VCC(15脚)与地线GND(16脚),其控制原理与14脚的LCD完全一样,其中: 引脚 1 2 3 4 5 6
符号 VSS VDD V0 RS R/W E
功能说明 一般接地 接电源(+5V)
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过
高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
E(或EN)端为使能(enable)端,下降沿使能。
7 8 9 10 11 12 13 14 15 16
DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 BLA BLK
底4位三态、 双向数据总线 0位(最低位)
底4位三态、 双向数据总线 1位 底4位三态、 双向数据总线 2位 底4位三态、 双向数据总线 3位 高4位三态、 双向数据总线 4位 高4位三态、 双向数据总线 5位 高4位三态、 双向数据总线 6位
高4位三态、 双向数据总线 7位(最高位)(也就是busy flang)
背光电源正极 背光 电源负极
寄存器选择控制表
RS 0 0 1 1
注:关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0、
busy flag(DB7):在此位为被清除为0时,LCD将无法再处理其她的指令要求。
[编辑本段] 字符集
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、与日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码就是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能瞧到字母“A”。
因为1602识别的就是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。
以下就是1602的16进制ASCII码表:
R/W 0 1 0 1
操作说明
写入指令寄存器(清除屏等)
都busy flag(DB7),以及读取位址计数器(DB0~DB6)值
写入数据寄存器(显示各字型等)
从数据寄存器读取数据
(图片打开就是大图)
读的时候,先读上面那列,再读左边那行,如:感叹号!的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。
[编辑本段] 显示地址 1
2
3
4
5
6
7
8
9
1
16
00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 40H 41H 42H 43H 44H 45H 46H 47H 48H 49H 4AH 4BH 4CH 4DH 4EH 4FH
[编辑本段] 指令集
1602通过D0~D7的8位数据端传输数据与指令。
显示模式设置: (初始化)
0011 0000 [0x38] 设置16×2显示,5×7点阵,8位数据接口;
显示开关及光标设置: (初始化)
0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)
0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1),
N=0(读或写一个字符后地址指针减1 &光标减1),
S=1 且 N=1 (当写一个字符后,整屏显示左移)
s=0 当写一个字符后,整屏显示不移动
数据指针设置:
数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)
其她设置:
01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。
通常推荐的初始化过程:
延时15ms
写指令38H
延时5ms
写指令38H
延时5ms
写指令38H
延时5ms
(以上都不检测忙信号)
(以下都要检测忙信号)
写指令38H
写指令08H 关闭显示
写指令01H 显示清屏
写指令06H 光标移动设置
写指令0cH 显示开及光标设置 完毕
Proteus仿真
使用Proteus仿真1602--即LM016L--依照数据手册说明可能遇到困难,可以尝试采用以下方案解决:
1、数据手册中可能介绍1602内部D0~D7已有上拉,可以使用P0口直接驱动。在Proteus里LM016L内部可能没有,应该人为
加上拉电阻。建议不要使用排阻,使用普通电阻一个一个拉应该可以解决问题;
2、可能碰到不能检测忙信号的问题,尝试使用延时把忙信号拖过去、
引脚说明
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线就是背光电源线
VCC(15脚)与地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:
因篇幅问题不能全部显示,请点此查看更多更全内容