液晶显示器以其微功耗、小体积、使用灵活等诸多优点在袖珍式仪
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
和低功耗应用系统中得到越来越广泛的
应用。液晶显示器通常可分为两大类,一类是点阵型,另一类是字符型。点阵型液晶通常面积较大,可以显
示图形;而一般的字符型液晶只有两行,面积小,只能显示字符和一些很简单的图形,简单易控制且成本低。
目前市面上的字符型液晶绝大多数是基于 HD44780 液晶芯片的,所以控制原理是完全相同的,为 HD44780 写
的控制程序可以很方便地应用于市面上大部分的字符型液晶。
字符型 LCD 通常有 14 条引脚线(市面上也有很多 16 条引脚线的 LCD,多出来的 2 条线是电源线 VCC(15 脚)
和地线 GND(16 脚),其控制原理与 14 脚的 LCD 完全一样),定义如下表所示:
字符型字符型字符型字符型 LCDLCDLCDLCD 的引脚定义的引脚定义的引脚定义的引脚定义
┌────┬────┬────┬──────┬────────────┐
ㄧ 引脚号 ㄧ 引脚名 ㄧ 电平 ㄧ 输入/输出 ㄧ 作用 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 1 ㄧ Vss ㄧ ㄧ ㄧ 电源地 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 2 ㄧ Vcc ㄧ ㄧ ㄧ 电源(+5V) ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 3 ㄧ Vee ㄧ ㄧ ㄧ 对比调整电压 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 4 ㄧ RS ㄧ 0/1 ㄧ 输入 ㄧ 0=输入指令 ㄧ
ㄧ ㄧ ㄧ ㄧ ㄧ 1=输入数据 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 5 ㄧ R/W ㄧ 0/1 ㄧ 输入 ㄧ 0=向 LCD 写入指令或数据 ㄧ
ㄧ ㄧ ㄧ ㄧ ㄧ 1=从 LCD 读取信息 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 6 ㄧ E ㄧ 1,1→0 ㄧ 输入 ㄧ 使能信号,1 时读取信息, ㄧ
ㄧ ㄧ ㄧ ㄧ ㄧ 1→0(下降沿)执行指令 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 7 ㄧ DB0 ㄧ 0/1 ㄧ 输入/输出 ㄧ 数据总线 line0(最低位) ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 8 ㄧ DB1 ㄧ 0/1 ㄧ 输入/输出 ㄧ 数据总线 line1 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 9 ㄧ DB2 ㄧ 0/1 ㄧ 输入/输出 ㄧ 数据总线 line2 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 10 ㄧ DB3 ㄧ 0/1 ㄧ 输入/输出 ㄧ 数据总线 line3 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 11 ㄧ DB4 ㄧ 0/1 ㄧ 输入/输出 ㄧ 数据总线 line4 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 12 ㄧ DB5 ㄧ 0/1 ㄧ 输入/输出 ㄧ 数据总线 line5 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 13 ㄧ DB6 ㄧ 0/1 ㄧ 输入/输出 ㄧ 数据总线 line6 ㄧ
├────┼────┼────┼──────┼────────────┤
ㄧ 14 ㄧ DB7 ㄧ 0/1 ㄧ 输入/输出 ㄧ 数据总线 line7(最高位) ㄧ
└────┴────┴────┴──────┴────────────┘
HD44780 内置了 192 个常用字符,存于字符产生器 CGROM(Character Generator ROM)中,另外还有几个允许
用户自定义的字符产生 RAM,称为 CGRAM(Character Generator RAM)。下图
说明
关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书
了 CGROM 和 CGRAM 与字符的
对应关系(由于本书中未用到自定义特殊字符的功能,所以本节不对 CGRAM 作详细介绍。以下如未特别说明,
则"字符码"指 CGROM 的字符号,"地址"指 DDRAM 的地址)。
字符码 0x00~0x0F 为用户自定义的字符图形 RAM(对于 5X8 点阵的字符,可以存放 8 组,5X10 点阵的字符,
存放 4 组),0x20~0x7F 为
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的 ASCII 码,0xA0~0xFF 为日文字符和希腊文字符,其余字符码(0x10~0x1F
及 0x80~0x9F)没有定义。
除了 CGROM 和 CGRAM 外,LCD 内部还有一个 DDRAM(Display Data RAM),用于存放待显示
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
,LCD 控制器
的指令系统规定,在送待显示字符代码的指令之前,先要送 DDRAM 的地址(即待显示的字符显示位置)。16×2
的字符型 LCD 的 DDRAM 地址与显示位置的对应关系如下:
DDRAMDDRAMDDRAMDDRAM 地址与显示位置的对应关系地址与显示位置的对应关系地址与显示位置的对应关系地址与显示位置的对应关系
╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮
┊ ┊
┊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 ┊
┊ ┊
╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╯
如果读者到现在对 DDRAM 的用法还是很迷惘,希望下面这个简单的例子能帮助读者理解。假设要在第 1 行第
2 列写入字符"A",这时先写入第 1 行第 2 列对应的 DDRAM 的地址:01H(参见上图),然后再往 DDRAM 中写入
"A"的字符码 0x41(参见字符与字符码对照表),这样 LCD 的第 1行第 2列就会出现字符 A了。也就是说,DDRAM
的内容对应于把要显示的字符地址,而 DDRAM 的地址就对应于显示字符的位置。总而言之,希望在 LCD 的某
一特定位置显示某一特定字符,一般要遵循"先指定地址,后写入内容"的原则;但如果希望在 LCD 上显示一
串连续的字符(如单词等),并不需要每次写字符码之前都指定一次地址,这是因为液晶控制模块中有一个计
数器叫地址计数器 AC(Address Counter)。地址计数器的作用是负责记录写入 DDRAM 数据的地址,或从 DDRAM
读出数据的地址。该计数器的作用不仅仅是"写入"和"读出"地址,它还能根据用户的设定自动进行修改。比
如,如果规定地址计数器在"写入 DDRAM 内容"这一操作完成后自动加 1,那么在第 1 行第 1列定写入一个字
符后,如果不对字符显示位置(DDRAM 地址)重新设置,再写入一个字符,则这个新的字符会出现在第 1 行第
2 列。
那么如何对 DDRAM 的内容和地址进行操作呢,下面是 HD44780 的指令集及其设置说明,请浏览该指令集,并
找出对 DDRAM 的内容和地址进行操作的指令。
清屏指令清屏指令清屏指令清屏指令
┌──────┬─────────────────────────────┬───┐
ㄧ ㄧ 指令编码 ㄧ 执行 ㄧ
ㄧ 指令功能 ├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ 时间 ㄧ
ㄧ ㄧ RS ㄧ R/W ㄧ DB7 ㄧ DB6 ㄧ DB5 ㄧ DB4 ㄧ DB3 ㄧ DB2 ㄧ DB1 ㄧ DB0 ㄧ /ms ㄧ
├──────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼───┤
ㄧ 清屏 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 1 ㄧ 1.64 ㄧ
└──────┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴───┘
功能:<1> 清除液晶显示器,即将 DDRAM 的内容全部填入"空白"的 ASCII 码 20H;
<2> 光标归位,即将光标撤回液晶显示屏的左上方;
<3> 将地址计数器(AC)的值设为 0。
光标归位指令光标归位指令光标归位指令光标归位指令
┌──────┬─────────────────────────────┬───┐
ㄧ ㄧ 指令编码 ㄧ 执行 ㄧ
ㄧ 指令功能 ├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ 时间 ㄧ
ㄧ ㄧ RS ㄧ R/W ㄧ DB7 ㄧ DB6 ㄧ DB5 ㄧ DB4 ㄧ DB3 ㄧ DB2 ㄧ DB1 ㄧ DB0 ㄧ /ms ㄧ
├──────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼───┤
ㄧ 光标归位 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 1 ㄧ X ㄧ 1.64 ㄧ
└──────┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴───┘
功能:<1> 把光标撤回到显示器的左上方;
<2> 把地址计数器(AC)的值设置为 0;
<3> 保持 DDRAM 的内容不变。
进入模式设置指令进入模式设置指令进入模式设置指令进入模式设置指令
┌──────┬─────────────────────────────┬───┐
ㄧ ㄧ 指令编码 ㄧ 执行 ㄧ
ㄧ 指令功能 ├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ 时间 ㄧ
ㄧ ㄧ RS ㄧ R/W ㄧ DB7 ㄧ DB6 ㄧ DB5 ㄧ DB4 ㄧ DB3 ㄧ DB2 ㄧ DB1 ㄧ DB0 ㄧ /us ㄧ
├──────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼───┤
ㄧ进入模式设置ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 1 ㄧ I/D ㄧ S ㄧ 40 ㄧ
└──────┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴───┘
功能:设定每次定入 1 位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。参数设定的
情况如下所示:
位名 设置
I/D 0=写入新数据后光标左移 1=写入新数据后光标右移
S 0=写入新数据后显示屏不移动 1=写入新数据后显示屏整体右移 1 个字符
显示开关控制指令显示开关控制指令显示开关控制指令显示开关控制指令
┌──────┬─────────────────────────────┬───┐
ㄧ ㄧ 指令编码 ㄧ 执行 ㄧ
ㄧ 指令功能 ├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ 时间 ㄧ
ㄧ ㄧ RS ㄧ R/W ㄧ DB7 ㄧ DB6 ㄧ DB5 ㄧ DB4 ㄧ DB3 ㄧ DB2 ㄧ DB1 ㄧ DB0 ㄧ /us ㄧ
├──────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼───┤
ㄧ显示开关控制ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 1 ㄧ D ㄧ C ㄧ B ㄧ 40 ㄧ
└──────┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴───┘
功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。参数设定的情况如下:
位名 设置
D 0=显示功能关 1=显示功能开
C 0=无光标 1=有光标
B 0=光标闪烁 1=光标不闪烁
设定显示屏或光标移动方向指令设定显示屏或光标移动方向指令设定显示屏或光标移动方向指令设定显示屏或光标移动方向指令
┌──────┬─────────────────────────────┬───┐
ㄧ ㄧ 指令编码 ㄧ 执行 ㄧ
ㄧ 指令功能 ├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ 时间 ㄧ
ㄧ ㄧ RS ㄧ R/W ㄧ DB7 ㄧ DB6 ㄧ DB5 ㄧ DB4 ㄧ DB3 ㄧ DB2 ㄧ DB1 ㄧ DB0 ㄧ /us ㄧ
├──────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼───┤
ㄧ设定显示屏或ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 1 ㄧ S/C ㄧ R/L ㄧ X ㄧ X ㄧ 40 ㄧ
ㄧ光标移动方向ㄧ ㄧ ㄧ ㄧ ㄧ ㄧ ㄧ ㄧ ㄧ ㄧ ㄧ ㄧ
└──────┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴───┘
功能:使光标移位或使整个显示屏幕移位。参数设定的情况如下:
S/C R/L 设定情况
0 0 光标左移 1 格,且 AC 值减 1
0 1 光标右移 1 格,且 AC 值加 1
1 0 显示器上字符全部左移一格,但光标不动
1 1 显示器上字符全部右移一格,但光标不动
功能设定指令功能设定指令功能设定指令功能设定指令
┌──────┬─────────────────────────────┬───┐
ㄧ ㄧ 指令编码 ㄧ 执行 ㄧ
ㄧ 指令功能 ├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ 时间 ㄧ
ㄧ ㄧ RS ㄧ R/W ㄧ DB7 ㄧ DB6 ㄧ DB5 ㄧ DB4 ㄧ DB3 ㄧ DB2 ㄧ DB1 ㄧ DB0 ㄧ /us ㄧ
├──────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼───┤
ㄧ 功能设定 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 1 ㄧ DL ㄧ N ㄧ F ㄧ X ㄧ X ㄧ 40 ㄧ
└──────┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴───┘
功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下:
位名 设置
DL 0=数据总线为 4 位 1=数据总线为 8位
N 0=显示 1 行 1=显示 2 行
F 0=5×7 点阵/每字符 1=5×10 点阵/每字符
设定设定设定设定 CGRAMCGRAMCGRAMCGRAM 地址指令地址指令地址指令地址指令
┌──────┬─────────────────────────────┬───┐
ㄧ ㄧ 指令编码 ㄧ 执行 ㄧ
ㄧ 指令功能 ├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ 时间 ㄧ
ㄧ ㄧ RS ㄧ R/W ㄧ DB7 ㄧ DB6 ㄧ DB5 ㄧ DB4 ㄧ DB3 ㄧ DB2 ㄧ DB1 ㄧ DB0 ㄧ /us ㄧ
├──────┼──┼──┼──┼──┼──┴──┴──┴──┴──┴──┼───┤
ㄧ设定 CGRAM ㄧ 0 ㄧ 0 ㄧ 0 ㄧ 1 ㄧ CGRAM 的地址(6 位) ㄧ 40 ㄧ
ㄧ 地址 ㄧ ㄧ ㄧ ㄧ ㄧ ㄧ ㄧ
└──────┴──┴──┴──┴──┴─────────────────┴───┘
功能:设定下一个要存入数据的 CGRAM 的地址。
设定设定设定设定 DDRAMDDRAMDDRAMDDRAM 地址指令地址指令地址指令地址指令
┌──────┬─────────────────────────────┬───┐
ㄧ ㄧ 指令编码 ㄧ 执行 ㄧ
ㄧ 指令功能 ├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ 时间 ㄧ
ㄧ ㄧ RS ㄧ R/W ㄧ DB7 ㄧ DB6 ㄧ DB5 ㄧ DB4 ㄧ DB3 ㄧ DB2 ㄧ DB1 ㄧ DB0 ㄧ /us ㄧ
├──────┼──┼──┼──┼──┴──┴──┴──┴──┴──┴──┼───┤
ㄧ设定 CGRAM ㄧ 0 ㄧ 0 ㄧ 1 ㄧ DDRAM 的地址(7 位) ㄧ 40 ㄧ
ㄧ 地址 ㄧ ㄧ ㄧ ㄧ ㄧ ㄧ
└──────┴──┴──┴──┴────────────────────┴───┘
功能:设定下一个要存入数据的 DDRAM 的地址。
读取忙信号或读取忙信号或读取忙信号或读取忙信号或 ACACACAC 地址指令地址指令地址指令地址指令
┌──────┬─────────────────────────────┬───┐
ㄧ ㄧ 指令编码 ㄧ 执行 ㄧ
ㄧ 指令功能 ├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ 时间 ㄧ
ㄧ ㄧ RS ㄧ R/W ㄧ DB7 ㄧ DB6 ㄧ DB5 ㄧ DB4 ㄧ DB3 ㄧ DB2 ㄧ DB1 ㄧ DB0 ㄧ /us ㄧ
├──────┼──┼──┼──┼──┴──┴──┴──┴──┴──┴──┼───┤
ㄧ读取忙碌信号ㄧ 0 ㄧ 1 ㄧ FB ㄧ AC 内容(7 位) ㄧ 40 ㄧ
ㄧ 或 AC 地址 ㄧ ㄧ ㄧ ㄧ ㄧ ㄧ
└──────┴──┴──┴──┴────────────────────┴───┘
功能:<1> 读取忙碌信号 BF 的内容,BF=1 表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;
当 BF=0 时,液晶显示器可以接收单片机送来的数据或指令;
<2> 读取地址计数器(AC)的内容。
数据写入数据写入数据写入数据写入 DDRAMDDRAMDDRAMDDRAM 或或或或 CGRAMCGRAMCGRAMCGRAM 指令一览指令一览指令一览指令一览
┌──────┬─────────────────────────────┬───┐
ㄧ ㄧ 指令编码 ㄧ 执行 ㄧ
ㄧ 指令功能 ├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ 时间 ㄧ
ㄧ ㄧ RS ㄧ R/W ㄧ DB7 ㄧ DB6 ㄧ DB5 ㄧ DB4 ㄧ DB3 ㄧ DB2 ㄧ DB1 ㄧ DB0 ㄧ /us ㄧ
├──────┼──┼──┼──┴──┴──┴──┴──┴──┴──┴──┼───┤
ㄧ 数据写入到 ㄧ ㄧ ㄧ ㄧ ㄧ
ㄧ DDRAM 或 ㄧ 1 ㄧ 0 ㄧ 要写入的数据 D7~D0 ㄧ 40 ㄧ
ㄧ CGRAM ㄧ ㄧ ㄧ ㄧ ㄧ
└──────┴──┴──┴───────────────────────┴───┘
功能:<1> 将字符码写入 DDRAM,以使液晶显示屏显示出相对应的字符;
<2> 将使用者自己设计的图形存入 CGRAM。
从从从从 CGRAMCGRAMCGRAMCGRAM 或或或或 DDRAMDDRAMDDRAMDDRAM 读出数据的指令一览读出数据的指令一览读出数据的指令一览读出数据的指令一览
┌──────┬─────────────────────────────┬───┐
ㄧ ㄧ 指令编码 ㄧ 执行 ㄧ
ㄧ 指令功能 ├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤ 时间 ㄧ
ㄧ ㄧ RS ㄧ R/W ㄧ DB7 ㄧ DB6 ㄧ DB5 ㄧ DB4 ㄧ DB3 ㄧ DB2 ㄧ DB1 ㄧ DB0 ㄧ /us ㄧ
├──────┼──┼──┼──┴──┴──┴──┴──┴──┴──┴──┼───┤
ㄧ 从 CGRAM 或 ㄧ ㄧ ㄧ ㄧ ㄧ
ㄧ DDRAM 读出 ㄧ 1 ㄧ 1 ㄧ 要读出的数据 D7~D0 ㄧ 40 ㄧ
ㄧ 数据 ㄧ ㄧ ㄧ ㄧ ㄧ
└──────┴──┴──┴───────────────────────┴───┘
功能:读取 DDRAM 或 CGRAM 中的内容。
细心的读者肯定发现了,在上面的指令集中,有 RS、R/W 和 8 位数据总线,却小了一个使能位 E。使能位 E
对执行 LCD 指令起着关键作用,E 有两个有效状态,高电平(1)和下降沿(1→0)。当 E 为高电平时,如果 R/W
为 0,则 LCD 从单片机读入指令或者数据;如果 R/W 为 1,则单片机可以从 LCD 中读出状态字(BF 忙状态)和
地址。而 E 的下降沿指示 LCD 执行其读入的指令或者显示其读入的数据。下面是 HD44780 的时序图和时间参
数表:
★ 在此不准备细究其时序图,对初学者来说,只要记住,在将 E 置高电平前,先设置好 RS 和 R/W 信号,在
E 下降沿到来之前,准备好写入的命令字或数据。只需在适当的地方加上延时,就可以满足要求了。