单片机常用功能模块的使用 Part7. LCD 1602
①、好像也写成 LCM 1602,个人感觉和 LCD 1602 是一个东西,可能叫法不一样吧。
②、LCD 1602,本质上是一种“字符型液晶”,用来显示字母、数字、符号,基本不用来显示汉字。
③、由若干5x 7或者 5 x 11大小的点阵字符位组成,字符与字符之间有一个点距的间隔。
④、所谓的 LCD 1602,其实就是“显示内容为 16 x 2,每行 16 字符,显示 2 行”。
⑤、目前市面上“字符型液晶”绝大多数是基于 HD44780 液晶芯片的,控制原理完全相同,因此基于 HD44780 写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
⑥、LCD 1602 样子如下图:
2、LCD 1602 引脚定义:
3、LCD 1602 硬件连接:
4、HD44780 的使用:
上面也说了,LCD 1602 中使用的是 HD44780 液晶芯片,也就是说,所谓的对 LCD 1602 编程,其实是掌握 HD44780 指令集的过程,这里为了严谨,写作 HD44780 液晶芯片的使用。
(1)、DDRAM(显示数据存储 RAM)
DDRAM 用来寄存要显示的字符,并在屏幕对应位置上显示。DDRAM 不是寄存器,是类似于内存一样的东西,更具体来说是像缓存一样的东西,因此,DDRAM 是有一组地址的,其中,每一个地址对应屏幕上的一个位置。使用时,向某地址写入数据,就能在对应的屏幕位置上显示出来。其地址与屏幕的对应关系如下:
每行有 40 个地址,但是 LCD 1602 每行只有 16 个字符,因此,只需要使用 1-16 号地址即可,后边的可能是用来扩展使用的,比如突然想用 HD44780 来制作 20 x 2 的 LCD 了等等,大概是为了便于扩展吧……
因此,对于 LCD 1602,使用如下对应关系:
(2)、CGROM(字符存储 ROM)
自带 160 个字符,存在 CGROM 中,字符与代码的对应如下:
例:在第一行第三个字符位置,显示字符 A,第一行第三个字符位置对应地址为 02H(查上表),字符 A 对应代码为 41H(查下表),将对应代码放入对应地址就能在 LCD 上显示。(具体用法参见 5.(8),有需要注意的地方)
注:上图 ROM 型号为 A00,好像还有个 ROM A02,似乎是另一种类的 CGROM,存的东西不太一样:
(3)、CGRAM(自定义字符存储 RAM)
存储自定义字符,具体没用过,等用过了再更新……
5、HD44780 指令集:
基本操作:
读状态 输入:RS=0,RW=1,E=1
输出:DB0~DB7=状态字
写指令 输入:RS=0,RW=0,E=下降沿脉冲,DB0~DB7=指令码
输出:无
读数据 输入:RS=1,RW=1,E=1
输出:DB0~DB7=数据
写数据 输入:RS=1,RW=0,E=下降沿脉冲,DB0~DB7=数据
输出:无
(1)、清屏:
功能:<1> 清除液晶显示器,将 DDRAM 的内容全部填入“空白”的字符码 20H;
<2> 光标归位,即将光标撤回液晶显示屏的左上方;
<3> 将地址计数器 (AC) 的值设为 0。
(2)、光标归位:
功能:<1> 把光标撤回到显示器的左上方;
<2> 把地址计数器 (AC) 的值设置为 0;
<3> 保持 DDRAM 的内容不变。
(3)、输入模式设置指令:
功能:设定每次写入 1 位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。
I/D0=写入新数据后光标左移 1=写入新数据后光标右移
S0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移 1 个字
(4)、显示开关控制指令:
功能:控制 显示器开/关、光标显示/关闭 以及 光标是否闪烁。
D0=显示功能关 1=显示功能开
C 0=无光标1=有光标
B0=光标不闪烁1=光标闪烁
(5)、设定显示屏或光标移动方向指令:
功能:使光标移位或使整个显示屏幕移位。
S/CR/L
0 0光标左移 1 格,且 AC 值减 1
01光标右移 1 格,且 AC 值加 1
10显示器上字符全部左移一格,但光标不动
1 1显示器上字符全部右移一格,但光标不动
(6)、功能设定指令:(重要)
功能:设定数据总线位数、显示的行数及字型。
DL0=数据总线为 4 位 1=数据总线为 8 位
N0=显示 1 行 1=显示 2 行
F0=5×7 点阵/每字符1=5×10 点阵/每字符
(7)、设定 CGRAM 地址指令:
功能:设定下一个要存入数据的 CGRAM 的地址。
(8)、设定 DDRAM 地址指令:
功能:设定下一个要存入数据的 CGRAM 的地址。(注意这里我们送地址的时候应该是 80H + Address,因为上面的 DB7=1)
(9)、读取忙信号或 AC 地址指令:
功能:<1> 读取忙信号 BF 的内容;
BF=1 液晶显示器忙,暂时无法接收单片机送来的数据或指令
BF=0 液晶显示器可以接收单片机送来的数据或指令
<2> 读取地址计数器 (AC) 的内容。
单片机功能模块LCD160 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)