李 进 整理
VER.2009-07-28
基本指令集说明
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 0 | 氢氧发生器 0 | 0 | 0 | 0 | 0 | 1 |
| | | | | | | | | | |
功能:将 DDRAM 填满 "20H"(space code),并且设定 DDRAM 的地址计数器(AC)到"00H",重设进入点设定将I/D 设为 "1",游标右移 AC 加 1 指令:
RS=1;RW=1;DB=01H // 清除显示
☆ 地址归位
| RS | RW | DB7 | 消防快速接头DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | X |
音箱布 | | | | | | | | | | |
功能:设定 DDRAM 的地址计数器(AC)到"00H",并且将光标移到开头原点位置;这个指令并不改变DDRAM 的内容 指令:
RS=0;RW=0;DB=3H // 地址归位
☆ 进入点设定
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S |
| | | | | | | | | | |
功能:指定在数据的读取与写入时,设定光标的移动方向及指定显示的移位
I/D :地址计数器递增递减选择
当 I/D = "1", 光标右移,DDRAM 地址计数器(AC)加1
当 I/D = "0", 光标左移,DDRAM 地址计数器(AC)减1
S: 显示画面整体位移
指令:
RS = 0;RW = 0;DB = 06H; // 光标右移,画面不移动,AC加1
RS = 0;RW = 0;DB = 05H; // 画面整体右移。
RS = 0;RW = 0;DB = 07H // 画面整体左移。
☆ 显示状态开关
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B |
| | | | | | | | | | |
功能:控制整体显示,光标,光标位置反白 ON/OFF D : 整体显示 ON/OFF 控制位
当 D = "1",整体显示ON
当 D = "0",整体显示OFF ,但不改变DDRAM 的内容
C : 光标 ON/OFF 控制位
当 C = "1",光标显示ON.
当 C = "0",光标显示OFF.
B : 光标位置反白 ON/OFF 控制位
当 B = "1",光标位置显示反白ON,将光标所在之地址㆖的数据反白显示.
当 B = "0", .光标位置显示反白OFF
指令:
RS=0;RW=0;DB=0CH // 开显示,无光标,光标不闪烁
RS=0;RW=0;DB=0EH // 开显示,有光标,光标不闪烁
RS=0;RW=0;DB=0FH // 开显示,有光标,光标闪烁
☆ 光标或显示移位控制
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | X | X |
| | | | | | | | | | |
功能:设定光标的移动与显示的移位控制位;这个指令并不改变 DDRAM 的内容
S/C | R/L | 功能 | AC 值 |
0 | 0 | 光标向左移动 | AC=AC-1 |
0 | 1 | 光标向右移动 | AC=AC+1 |
1 | 0 | 显示(display)向左移动,且光标跟着移动 | AC=AC |
1 | 1 | 显示(display)向右移动,且光标跟着移动 | AC=AC |
| | | |
指令:
RS = 0;RW = 0;DB=10; // 光标向左移动
RS = 0;RW = 0;DB=14; // 光标向右移动
☆ 功能设定
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 0自动干手器 | 1 | DL | X | RE | X | X |
| | | | | | | | | | |
DL : 4/8 BIT 界面控制位
当 DL = "1", 为8 BIT MPU 控制界面
当 DL = "0", 为4 BIT MPU 控制界面
RE : 指令集选择控制位
当 RE = "1", 为扩充指令集动作
当 RE = "0", 为基本指令集动作
同一指令之动作不可同时改变 RE 及 DL 需先改变 DL 后在改变 RE 才可确保FLAG 正确设定
指令:
注意:需分别设置DL和RE液压式浮球阀
RS=0;RW=0;DB=30H // 设定8位控制界面
RS=0;RW=0;DB=00H // 设定基本指令集
RS=0;RW=0;DB=34H // 设定扩展指令集
☆设定CGRAM 地址
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 1 | AC5 | AC4 | AC3 | AC2 | AC1 | AC0 |
| | | | | | | | | | |
功能:设定 CGRAM 地址到地址计数器(AC)
AC 范围为 00H~3FH
需确认扩充指令中SR=0 (卷动地址或RAM 地址选择)
☆设定DDRAM 地址
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 1 | AC6 | AC5 | AC4 | AC3 | AC2 | AC1 | AC0 |
| | | | | | | | | | |
功能:设定 DDRAM 地址到地址计数器(AC).
第一行AC 范围为80H~87H
第二行AC 范围为90H~97H
第三行AC 范围为88H~8FH
第四行AC 范围为98H~9FH
指令:汉字的起始地址必须是X0H和偶数
字符显示时,每一行最多显示16个ASCII字符或8个汉字。(0~FH),设置列数(0~7)
RS=0;RW=0;DB=80H // 设定第一行,第0列
RS=0;RW=0;DB=81H // 设定第一行,第2列
RS=0;RW=0;DB=82H // 设定第一行,第4列
…………
RS=0;RW=0;DB=87H // 设定第一行,第15列
RS=0;RW=0;DB=90H // 设定第二行,第0列
RS=0;RW=0;DB=88H // 设定第三行,第0列
RS=0;RW=0;DB=98H // 设定第四行,第0列
在指定第一个字符或汉字的位置后,如果不再设置位置,则显示是连续的;如果按照1,2,3……来设置一次位置送一次显示,则在显示的ASCII字符间会留一个空格,但汉字没有空格。每个 RAM 地址(CGRAM,DDRAM,IRAM…..)都可连续写入两个字节的数据(2-Bytes),当写入第二字节时位址计数器(AC)的值就会自动加1。
☆读取忙碌旗标(BF)和地址
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 1 | BF | AC6 | AC5 | AC4 | AC3 | AC2 | AC1 | AC0 |
| | | | | | | | | | |
功能:读取忙碌旗标(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值。
当 BF = “1”, 表示内部忙碌中此时不可下指令,需等BF = “0”才可下新指令。
经实验,当E=1时,DB7~DB0出现在LCD的数据口上;E=0时,关闭输出口。
指令:RS = 0;RW = 1;P0 = 0XFF; // 数据界面连接MCU的P0口。
while(P0^7 = = 0); // 执行后,检查DB^7的值
☆写入数据到RAM
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 1 | 0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
| | | | | | | | | | |
功能:写入数据到内部的 RAM 当写入后会使 (AC) 改变
每个 RAM 地址(CGRAM,DDRAM,IRAM…..)都可连续写入两个字节的数据(2-Bytes),当写入第二字节时位址计数器(AC)的值就会自动加1。
☆读取RAM 的值
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 1 | 1 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
| | | | | | | | | | |
功能:从内部的 RAM 读取数据,当读取后会使 (AC) 改变。当下设定地址指令后(CGRAM,
DDRAM,IRAM…..),若要读取数据时需先虚读(Dummy Read)一次才会读取到正确数据。第二次读取时则不需虚读(DUMMY READ),除非又下设定地址指令才需再次虚读(DUMMY READ)。
扩充指令集说明
☆待命模式
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
| | | | | | | | | | |
功能:进入待命模式,执行任何其它指令都可终止待命模式;这个指令并不改变 RAM 的内容
指令:RS = 0;RW = 0;DB = 1H;
☆卷动地址或RAM 地址选择
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | SR |
| | | | | | | | | | |
功能:
当 SR = "1",允许输入垂直卷动地址。
当 SR = "0",允许输入IRAM地址(扩充指令)及允许设定CGRAM地址(基本指令)。
指令:
RS = 0;RW = 0;DB = 02H; // 允许输入IRAM地址(扩充指令)及允许设定CGRAM地址(基本指令)
RS = 0;RW = 0;DB = 03H; //允许输入垂直卷动地址
☆反白选择
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | R1 | R0 |
| | | | | | | | | | |
功能:选择 4 行中的的任一行作反白显示,并可决定反白与否。
R1,R0 初值为 00 ,当第一次设定时为反白显示,再一次设定时为正常显示。
R1 | R0 | 功能 |
L | L | 第一行反白或正常显示 |
L | 拉紧带 H | 第二行反白或正常显示 |
H | L | 第三行反白或正常显示 |
H | H | 第四行反白或正常显示 |
| | |
指令:
RS = 0;RW = 0;DB = 04H; // 第一行反白或正常显示
RS = 0;RW = 0;DB = 05H; // 第二行反白或正常显示
RS = 0;RW = 0;DB = 06H; // 第三行反白或正常显示
RS = 0;RW = 0;DB = 07H; // 第四行反白或正常显示
☆睡眠模式
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | SL | 0 | 0 |
| | | | | | | | | | |
功能:设置睡眠模式
SL=1: 脱离睡眠模式
SL=0: 进入睡眠模式
☆扩充功能设定
| RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 |
代码 | 0 | 0 | 0 | 0 | 1 | DL | X | RE | G | X |
| | | | | | | | | | |
功能:
DL : 4/8 BIT 界面控制位
当 DL = "1", 为8 BIT MPU 控制界面
当 DL = "0", 为4 BIT MPU 控制界面
RE : 指令集选择控制位
当 RE = "1", 为扩充指令集动作
当 RE = "0", 为基本指令集动作
G : 绘图显示控制位
当 G = "1", 绘图显示 ON
当 G = "0", 绘图显示 OFF
同一指令之动作不可同时改变 RE 及 DL、G 需先改变 DL或G,后再改变 RE,才可确保FLAG 正确设定。
指令:
RS = 0;RW = 0;DB = 34; // 进入扩展模式
RS = 0;RW = 0;DB = 32; // 进入绘图模式
RS = 0;RW = 0;DB = 30; // 退出绘图模式