2010-5-13 PM 14:19:46 ball整理
液 晶 LCD 1602
(中文资料)
http://hi.baidu.com/ball648500361
ball
2010-5-13 整理
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
共 17 页 第 1 页
2010-5-13 PM 14:19:46 ball整理
目录
1. ………………………………………………指令介绍
2. ………………………………………………显示字符
3. ………………………………………显示自定义字符
4. ……………………………………使用 4 线数据传输
1.指令介绍
字符型 LCD 的引脚定义
LCD1602 已很普遍了,具体介绍我就不多说了,市面上字符液晶绝大多数是
基于 HD44780 液晶芯片的,控制原理是完全相同的,因此HD44780 写的控制程序
可以很方便地应用于市面上大部分的字符型液晶。字符型 LCD 通常有 14 条引脚
线或 16 条引脚线的 LCD,多出来的2 条线是背光电源线 VCC(15 脚)和地线 GND(16
脚),其控制原理与 14 脚的 LCD 完全一样,定义如下表所示:
http://hi.baidu.com/ball648500361
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
共 17 页 第 2 页
2010-5-13 PM 14:19:46 ball整理
HD44780 内置了 DDRAM、CGROM 和 CGRAM。
这里的 RAM 与 ROM 不懂得话,可以看看我整理的另一篇
http://hi.baidu.com/ball648500361/blog/item/4332fdf8bf505fd2b48f3
150.html
DDRAM 就是显示数据 RAM,用来寄存待显示的字符代码。共 80 个字节,其地
址和屏幕的对应关系如下表:
也就是说想要在 LCD1602 屏幕的第一行第一列显示一个"A"字,就要向 DDRAM
的 00H 地址写入“A”字的代码就行了。但具体的写入是要按 LCD 模块的指令格
式来进行的,后面我会说到的。那么一行可有 40 个地址呀?是的,在 1602 中我
们就用前 16 个就行了。第二行也一样用前 16 个地址。对应如下:
DDRAM 地址与显示位置的对应关系
http://hi.baidu.com/ball648500361
我们知道文本文件中每一个字符都是用一个字节的代码记录的。一个汉字是
用两个字节的代码记录。在 PC 上我们只要打开文本文件就能在屏幕上看到对应
的字符是因为在操作系统里和 BIOS 里都固化有字符字模。什么是字模?就代表
了是在点阵屏幕上点亮和熄灭的信息数据。例如“A”
字的字模:
01110 ○■■■○
10001 ■○○○■
10001 ■○○○■
10001 ■○○○■
11111 ■■■■■
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
共 17 页 第 3 页
2010-5-13 PM 14:19:47 ball整理
10001 ■○○○■
10001 ■○○○■
上图左边的数据就是字模数据,右边就是将左边数据用“○”代表 0,用
“■”代表 1。看出是个“A”字了吗?在文本文件中“A”字的代码是 41H,PC
收到 41H 的代码后就去字模文件中将代表 A 字的这一组数据送到显卡去点亮屏幕
上相应的点,你就看到“A”这个字了。
刚才我说了想要在 LCD1602 屏幕的第一行第一列显示一个"A"字,就要向
DDRAM 的 00H 地址写入“A”字的代码 41H 就行了,可 41H 这一个字节的代码如
何才能让 LCD 模块在屏幕的阵点上显示“A”字呢?同样,在 LCD 模块上也固化
了字模存储器,这就是 CGROM 和 CGRAM。HD44780 内置了 192 个常用字符的字模,
存于字符产生器 CGROM(Character Generator ROM)中,另外还有 8 个允许用户
自定义的字符产生 RAM,称为 CGRAM(Character Generator RAM)。下图说明了
CGROM 和 CGRAM 与字符的对应关系。
http://hi.baidu.com/ball648500361
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
共 17 页 第 4 页
2010-5-13 PM 14:19:47 ball整理
从上图可以看出,“A”字的对应上面高位代码为 0100,对应左边低位代码
为 0001,合起来就是 01000001,也就是 41H。可见它的代码与我们 PC 中的字符
代码是基本一致的。因此我们在向 DDRAM 写 C51 字符代码程序时甚至可以直接用
P1='A'这样的方法。PC 在编译时就把“A”先转为 41H 代码了。
字符代码 0x00~0x0F 为用户自定义的字符图形 RAM(对于 5X8 点阵的字符,
可以存放 8 组,5X10 点阵的字符,存放 4 组),就是 CGRAM 了。后面我会详细说
的。
0x20~0x7F 为标准的 ASCII 码,0xA0~0xFF 为日文字符和希腊文字符,其
余字符码(0x10~0x1F 及 0x80~0x9F)没有定义。
那么如何对 DDRAM 的内容和地址进行具体操作呢,下面先说说 HD44780 的指
令集及其设置说明,请浏览该指令集,并找出对 DDRAM 的内容和地址进行操作的
指令。
功能:<1> 清除液晶显示器,即将 DDRAM 的内容全部填入"空白"的 ASCII
码 20H;
共 11 条指令:
1.清屏指令
http://hi.baidu.com/ball648500361
<2> 光标归位,即将光标撤回液晶显示屏的左上方;
<3> 将地址计数器(AC)的值设为 0。
2.光标归位指令
功能:<1> 把光标撤回到显示器的左上方;
<2> 把地址计数器(AC)的值设置为 0;
<3> 保持 DDRAM 的内容不变。
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
共 17 页 第 5 页
2010-5-13 PM 14:19:47 ball整理
3.进入模式设置指令
功能:设定每次定入 1 位数据后光标的移位方向,并且设定每次写入的一个
字符是否移动。参数设定的
情况如下所示:
I/D 0=写入新数据后光标左移 1=写入新数据后光标右移
S 0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右
D 0=显示功能关 1=显示功能开
C 0=无光标 1=有光标
B 0=光标闪烁 1=光标不闪烁
5.设定显示屏或光标移动方向指令
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
共 17 页 第 6 页
位名 设置
移 1 个字符
4.显示开关控制指令
http://hi.baidu.com/ball648500361
功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情
况如下:
位名 设置
2010-5-13 PM 14:19:47 ball整理
功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下:
S/C R/L 设定情况
0 0 光标左移 1 格,且 AC 值减 1
0 1 光标右移 1 格,且 AC 值加 1
1 0 显示器上字符全部左移一格,但光标不动
1 1 显示器上字符全部右移一格,但光标不动
6.功能设定指令
功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下:
位名 设置
http://hi.baidu.com/ball648500361
DL 0=数据总线为 4 位 1=数据总线为 8 位
N 0=显示 1 行 1=显示 2 行
F 0=5×7 点阵/每字符 1=5×10 点阵/每字符
7.设定 CGRAM 地址指令
功能:设定下一个要存入数据的 CGRAM 的地址。
DB5DB4DB3 为字符号,也就是你将来要显示该字符时要用到的字符
地址。(000~111)(能定义八个字符)
DB2DB1DB0 为行号。(000~111)(八行)
8.设定 DDRAM 地址指令
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
共 17 页 第 7 页
2010-5-13 PM 14:19:48 ball整理
功能:设定下一个要存入数据的 DDRAM 的地址。
9.读取忙信号或 AC 地址指令
功能:<1> 读取忙碌信号 BF 的内容,BF=1 表示液晶显示器忙,暂时无法接收单
片机送来的数据或指令;
当 BF=0 时,液晶显示器可以接收单片机送来的数据或指令;
<2> 读取地址计数器(AC)的内容。
10.数据写入 DDRAM 或 CGRAM 指令一览
http://hi.baidu.com/ball648500361
功能:<1> 将字符码写入 DDRAM,以使液晶显示屏显示出相对应的字符;
<2> 将使用者自己设计的图形存入 CGRAM。
DB7DB6DB5 可为任何数据,一般取“000”。
DB4DB3DB2DB1DB0 对应于每行 5 点的字模数据。
11.从 CGRAM 或 DDRAM 读出数据的指令一览
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
共 17 页 第 8 页