汉显模块指令表
 
 
 

汉显液晶模块

以下图片用的是HZ132-64B30但是所有型号的指令都是兼容的。


● 132×64汉字显示液晶模块,自带一、二级汉字字库点阵,一屏可显示50个汉字!
● 自带一、二级汉字12点阵全部汉字字库、全部的中文符号和全部的半角ASC字符。
● 全屏幕可以显示每行10个共5行标准宋体汉字。或者20×5个ASC字符,也可以混合显示。字间和行间均有一个点的间距。
● 提供多种文本显示命令:(均有正常、反显两种显示方式)
光标定位命令;
在光标位置显示字符串命令(可以是一个汉字、一个ASC半角或者全角和半角混合字符串);
● 提供多种图形显示命令:
任意位置画点命令;(可以画或者擦除一个点)
任意位置画线命令;(可以画或者擦除一条线,也可以画虚线)
任意位置画圆命令;(可以画或者擦除一个圆)
任意位置画图片命令;(可以正常或取反显示图形)
● 串行接口控制,通讯波特率9600bps,连线非常简单。
● 内嵌先进的T9拼音输入法,该输入法和目前大多数手机的拼音输入法兼容。
● 用户可以和玻璃厂商协商定制任意大小的玻璃,或者定义自己所需要的ICON。
● 提供屏幕灰度调节命令。
● 用户如果需求量大也可以定制你所需要的显示方式。

目前有很多新上市的手机都开始采用12点阵的汉字显示(如摩托罗拉和阿尔卡特等公司),这样可以在同样的成本和体积下多显示一些汉字,许许多多的终端设备也需要以最低的成本显示尽量多的汉字,同时先进的T9输入法一直都只在大型公司推出的终端产品有使用,一般的小公司根本就没有开发输入法的能力。本模块的推出,可以使您很轻松地就应用到这些先进技术!

模块上的ICON如下图,本模块提供有所有的ICON的驱动命令。

由于本汉显模块驱动部分的电路已经将LCM所需的外部元器件做好,并且已经烧录了相应的驱动软件,用户使用汉显模块时可以完全不接触LCM驱动晶片的任何资料,直接使用本资料提供的简易接口方法即可。这样客户的产品开发过程就更为快捷方便。用户如果需要更换其他大小点阵的LCM模块,只要和玻璃厂商协商,并将样片提供给我们,我们将会在两周左右提供修改好的汉显模块驱动程序。

以下是LCM厂商提供的液晶玻璃数据:

NUMBER OF DOT :132(L)*64(W)
V.D : 6:00
DUTY :1/65
LCD SIZE(mm) : 53.0(L)*28.0(W)*2.0(H)
DOT PITCH(mm): 0.26(L)*0.28(W)
LCD TYPE : STN TRANSFLECTIVE
驱动电压(V) : 8.0
使用温度范围:负10-正60摄氏度


HZ132-64X系列汉显模块的大小和接口示意图如下:


模块上方是一排5根引脚,上面有1-5的标号,依次为VCC(+5V)、TXD、RXD、GND、RESET。下面对各引脚予以说明:
VCC:使用5V电压,本模块内部已经有升压电路,不需要外界驱动液晶的负压。
TXD:汉显模块的串行数据输出引脚,TTL电平,1=5V,0=0V,5V时为弱上拉。
RXD:汉显模块的串行数据输入引脚,TTL电平,1=5V,0=0V,5V时为弱上拉。
GND:电源地。
RESET:外部复位引脚,高电平复位有效。本引脚可不接,汉显模块内部有复位电路。如果用户板有外部看门狗,可以将复位接至此脚。

电路连接框图如下:

外界MCU通过串口命令和汉显模块通讯,模块对相应命令作出相应的显示或者返回相应的数据。默认通讯波特率为9600bps,用户MCU如果没有了多余的串口来控制汉显模块,可以用IO口造出串口模拟通讯来,而模拟的串口通讯的速率无法达到很高,一般只可以做到4800bps,您只要定购专门的4800bps的模块。
本模块不会主动向主CPU发送数据,如果需要共用串口,主CPU可以采用轮询的方式进行多机通讯。
所有的发往汉显模块命令格式都是以"ESC"键值0x1b开始,后面跟一个字节的命令码,其后再跟具体命令内容。返回的内容都是以"ESC"键值0x1b开始,后面直接跟返回的内容。模块默认对每条指令做出执行是否成功的返回响应,执行完毕返回"OK!"。用户可以对返回的“OK!”进行检验,看其是否执行完成当前指令,我们强烈要求您这样做,否则您有可能会执行到错误的指令,您也可以通过指令发送完之后延时来保证指令执行完毕,但是这样程序的效率将会降低。

发往模块的命令格式为

1 byte 1 byte N bytes
0x1b 命令代码 命令内容

模块返回的数据格式为

1 byte N bytes
0x1b 返回内容

下面将详细地介绍所有的命令。(蓝色部分为HX-ZPU驱动芯片所支持的新指令,今后的HZ132-64X均由该系列芯片驱动

●写液晶命令接口
命令 内容
1 byte N byte 1 byte
0x20 多条命令 0x00

这是LCM模块的原始命令,可用来初始化不同的液晶玻璃
例:ssd1815驱动的LCM,可以发送“0x1b,0x20,0x2F,0x22,0x19,0x40,0xA6,0xA1,0xC8,0xA2,0xAF,0x00”,具体的命令可以查询芯片资料。该命令配合写液晶数据接口命令和读液晶数据接口命令可以实现LCM的所有操作

●写液晶数据接口
命令 内容
1 byte 1 byte
0x21 要写入液晶的值

该命令配合写液晶数据接口命令和读液晶数据接口命令可以实现LCM的所有操作

●读液晶数据接口
命令 内容
1 byte
0x22
 
返回 1byte 1byte
  0x1b 返回的数据

该命令配合写液晶数据接口命令和读液晶数据接口命令可以实现LCM的所有操作

 

设置画点范围和字符显示范围,“1B 23”,用来适应不同点阵大小的液晶

●设置画点范围和字符显示范围
命令 内容
1 byte 1byte 1 byte 1 byte 1 byte
0x23 X方向的点数 Y方向的点数 横向的字符个数-1 显示总行数×2-1
例:设置点显示范围为(132,65),字符显示范围为(20,5)发送:“0x1b,0x23,0x84, 0x41,0x13,0x09 ”

●设置波特率
命令 内容
1 byte 1 byte
0x24  


0xff=57600bps
0xfe=28800bps

0xfd=19200bps
0xfa=9600bps
0xf4=4800bps
0xe8=2400bps
0xd0=1200bps

开机默认波特率为9600bps,设置新的波特率之后,主机必须调到新波特率进行通讯。


●返回当前光标位置
命令 内容
1 byte
0x30
 
返回 1byte 2byte
  0x1b 列位置1byte
和 横位置1byte

用户可以利用此指令方便编程文本编辑操作


 

●设置LCM的灰度
命令 内容
1 byte 1 byte
0x31 要设置的值,范围(0x00-0x3f)

例:设置LCM的灰度为0x1f,主CPU往模块发送数据串"0x1b,0x31,0x1f"
建议灰度值:0x26,请自己测试决定。

●清屏命令

命令 内容
1 byte
0x32

例:清屏,主CPU往模块发送数据串"0x1b,0x32"

●设置光标位置

命令 内容
1 byte 1 byte 1 byte
0x33 横向位置(0-19) 行位置(0-4)

例:设置光标位置在第二行第三个字符位置,往模块发送数据串"0x1b,0x33,0x03,0x02"

●显示光标

命令 内容
1 byte 1 byte
0x34 值为0时不显示,值为1时显示。

例:显示光标,往模块发送数据串"0x1b,0x34,0x01",此时光标不断闪烁。

 

●在光标位置显示字符串
命令 内容
1 byte 1 byte N byte 1 byte
0x37 属性:
=0正常显示
=1反显
该字符串内容 0x00

例:在当前光标位置显示字符串"汉显模块","汉显模块"的内码值为"0xBA, 0xBA, 0xCF, 0xD4, 0xC4, 0xA3, 0xBF, 0xE9",往模块发送数据串"0x1b, 0x37, 0x00, 0xBA, 0xBA , 0xCF, 0xD4, 0xC4, 0xA3, 0xBF, 0xE9, 0x00"。
这条指令也用来在光标位置显示一个汉字或一个ASC码。
在当前光标位置反显"光"字,"光"字的内码为"0xB9,0xE2",往模块发送数据串"0x1b, 0x37, 0x01, 0xB9, 0xE2"
在当前光标位置显示ASC码"A",往模块发送数据串"0x1b, 0x37, 0x00, 0x41"
效果如图:

●在任意位置画点
命令 内容
1 byte 1 byte 1 byte 1 byte
0x38 属性:
=1画一个点
=0擦除该位置点
X方向位置
(0<x<131)
Y方向位置
(0<y<63)

画图时坐标原点(0,0)都是在左上角。X坐标往右递增,Y坐标往下递增,以下同。
例:在(10,20)坐标位置画一个点,往模块发送数据串"0x1b, 0x38, 0x01, 10, 20"
注意,数据前面没有加"0x"是十进制表示,以下同。

●任意位置画线
命令 内容
1 byte 1byte 1 byte 1 byte 1 byte 1 byte
0x39 属性:
=2 画一条虚线
=1 画一条实线
=0 擦除该位置的线
(X0)直线一端的x位置 (Y0)直线一端的y位置 (X1)直线另一端的x位置 (Y1)直线另一端的y位置

例:画一条实线,两端点坐标(10,20)、(30,85),往模块发送数据串"0x1b, 0x39, 0x01, 10, 20, 30, 85"。

●任意位置画圆
命令 内容
1 byte 1byte 1 byte 1 byte 1 byte
0x41 属性:
=1画一个圆
=0擦除该圆
圆心x位置 圆心y位置 半径

例:画一个圆,圆心在(25,25),半径为10。往模块发送数据串"0x1b, 0x41, 0x01, 25, 25,10"。

以下为画图和ICON效果图:

●画图片
命令 内容
1 byte 1byte 2 byte 2 byte N byte
0x42 属性:
=0画正常图
=1画反显图
左上角位置(x0,y0) 图片大小宽x, 高y 图形数据。排列方法:横向8bit、字节左高右低,字节排列顺序从左到右、从上到下

例:画一个40×20点阵的正常显示的图片,左上角位置在坐标(15,15)处,往模块发送数据串"0x1b, 0x42, 0x00, 15,15,40,20,…(图形数据)"。图片数据可以用从"C51论坛"下载的液晶字模制作工具直接生成(生成数据时请设置横向取模,字节顺序)。
例:在液晶的(32,16)位置上画一幅"马到成功"图片,图片大小为72×28点阵,图片是sohu网站上下载来的。往模块发送数据串" 0x1b, 0x42, 0x00, 0x20, 0x10, 0x48, 0x1c, 0x00, 0x4E, 0x20, 0x00, 0x00, 0xF0, 0x40, 0x00, 0x00, 0x00, 0x7B, 0xE0, 0x01, 0x01, 0xF8, 0xC0, 0x00, 0x00, 0x01, 0xFF, 0x7C, 0xFF, 0xF1, 0xFD, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0xC6, 0xFF, 0xC1, 0x9F, 0xC3, 0xF8, 0x00, 0x00, 0x7F, 0xFC, 0xFF, 0xF3, 0x0F, 0xBF, 0xC0, 0x00, 0x00, 0x7F, 0xE6, 0x1F, 0xFE, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x77, 0xFC, 0x07, 0xE7, 0x07, 0xFF, 0xC0, 0x00, 0x00, 0x77, 0xFB, 0x07, 0xFB, 0x87, 0xBF, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xF7, 0xA7, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xF7, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xEF, 0xE1, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x63, 0xFF, 0xEF, 0xFF, 0xFF, 0xB8, 0x00, 0x44, 0x00, 0x03, 0xFF, 0xEF, 0xFF, 0xFF, 0xFC, 0x08, 0xC6, 0x04, 0x01, 0xFF, 0xEF, 0xFF, 0xFF, 0xF4, 0x04, 0x8E, 0x0C, 0x43, 0xFE, 0x6F, 0xFF, 0xFF, 0xE6, 0x05, 0x9F, 0x98, 0x43, 0xFF, 0x8F, 0xFF, 0xFB, 0xC3, 0xC7, 0x9F, 0x99, 0xE7, 0x7F, 0xFF, 0xFF, 0xFD, 0xC1, 0xE7, 0xFF, 0xD9, 0xE6, 0xFD, 0xFF, 0xFF, 0xDF, 0xF0, 0x0F, 0xFF, 0xFF, 0xA7, 0xE1, 0x9F, 0xFF, 0x0F, 0xF8, 0x5B, 0xFF, 0xEE, 0x8F, 0x81, 0x87, 0xE0, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1E, 0x01, 0x8F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x3C, 0x01, 0x9E, 0xF3, 0xC4, 0x15, 0xE2, 0x08, 0x00, 0xF8, 0x00, 0xF8, 0x91, 0x24, 0xFC, 0x02, 0x08, 0x03, 0x98, 0x00, 0xE0, 0x93, 0xD4, 0x90, 0x77, 0x88, 0x7E, 0x30, 0x01, 0x80, 0xF8, 0x94, 0xEA, 0x22, 0x88, 0x38, 0x30, 0x07, 0x00, 0x0B, 0xD4, 0xAC, 0x2A, 0x80, 0x00, 0x60, 0x3C, 0x01, 0xE8, 0x84, 0xAC, 0x36, 0x88, 0x00, 0x40, 0x38, 0x00, 0x1B, 0xED, 0x76, 0x6D, 0x80"。
显示效果如图:

●画ICON
命令 内容
1 byte 1 byte 1 byte
0x43 属性:
=1画该ICON
=0擦除ICON
从左到右第几个ICON(0<n<131)

例:显示第4个ICON,往模块发送数据串"0x1b, 0x43, 0x01, 3"。
注意:左边第1个ICON位置是0,最右边的是131。每个ICON位置不一定在液晶玻璃上做了LOGO, 这是由厂家设计玻璃时决定的。因此有些位置将不会有任何显示。

●取数字组合的有效拼音组合(用于T9拼音输入法)
命令 内容
1 byte N byte(1≤n≤6) 1byte
0x47 输入的数字串(小于或等于6个数字,0和1无效) 0x00
 
返回 1byte 1byte n bytes 1byte n bytes 1byte
  0x1b 返回的有效字符串个数N 第一个返回的拼音字符串(小写) 0x00 第N个返回的拼音字符串(小写) 0x00

数字代表的字母采用国际标准:0和1无效,2(ABC),3(DEF),4(GHI),5(JKL),6(MNO),7(PQRS),8(TUV),9(WXYZ)
例:取数字串"426"的有效拼音组合,电话键盘的"4"代表"GHI","2"代表"ABC""6"代表"MNO",则返回有效的4个拼音字符串"gan""gao""han""hao"。往模块发送数据串"0x1b, 0x47, '4', '2', '6', 0x00",返回的数据串为"0x1b,4,'g' ,'a' ,'n' , 0x00, 'g', 'a', 'o', 0x00, 'h', 'a', 'n', 0x00, 'h', 'a', 'o', 0x00"。注意数据串里面单引号括住一个字符表示该字符的ASC码值,下同。

●取符合输入拼音字符串的汉字串(用于T9拼音输入法)
命令 内容
1 byte 1byte 1byte N byte(1≤n≤6) 1byte

0x48
返回汉字的个数(03年7月20之后的模块,该字节的最高位为“1”代表输入的数字串的最后一位是否无效,用户如果不需要可以将其与运算0x7f去掉该位) 返回第几页的汉字n≥1(用于待选汉字翻页) 输入的拼音字符串(小于或等于6个数字) 0x00
 
返回 1byte N bytes 1byte
  0x1b 返回的汉字串 0x00
例:取拼音字符串"gan"的汉字串,每串汉字返回10个,返回第一页汉字串,往模块发送数据串"0x1b, 0x48, 10, 1, 'g', 'a', 'n', 0x00"。返回的数据串为"0x1b, 0xB8, 0xC9, 0xB8, 0xD0, 0xB8, 0xCF, 0xB8, 0xCA , 0xB8 , 0xD2 , 0xB8 , 0xCB , 0xB8 , 0xCE, 0xB8 , 0xCC , 0xB8 , 0xD3 , 0xB8 , 0xCD , 0x00 ",返回的中间20个字节是"干感赶甘敢杆肝柑赣竿"的内码。
利用返回汉字的个数字节的最高位是否为“1”,可以知道输入的数字串的最后一位数字是否无效,用户如果不需要可以将其与运算0x7f去掉该位但是利用该功能,您可以知道知道您输入的数字串的最后一位是否无效,从而抛弃最后一个数字来做调整,可以大大方便输入法的编程。

 

●取某汉字的词语联想汉字串(未来产品)

命令 内容
1 byte 1byte 1byte 2 byte(1≤n≤6)
0x49 返回汉字的个数 返回第几页的汉字(用于待选汉字翻页) 输入的汉字区位码
 
返回 1byte N bytes 1byte
  0x1b 返回的汉字串 0x00

例:取汉字"干"的词语联想汉字串,每串汉字返回10个,返回第一页汉字串,往模块发送数据串"0x1b,0x49,10,1,0xB8,0xC9,0x00"。返回的数据串为"0x1b,0xB2 ,0xBF ,0xBE ,0xBB , 0xBB ,0xEE ,0xD4 ,0xA4 ,0xC8 ,0xC5 ,0xC9,0xE6 ,0xB4 ,0xE0 ,0xD4 ,0xEF ,0xBA ,0xB5 ,0xCF,0xB4 , 0x00",返回的中间20个字节是"部净活预扰涉脆燥旱洗"的内码。

●存储或者读取可读写flash中内容(未来产品)
命令 内容
1 byte 1 byte 3 bytes 3 bytes N bytes
0x4B 属性
=0时 写数据
=1时 读数据
写或读的首地址
(0-256K),三字节表示,从前到后由高到低
写或读数据长度
(0-256K),三字节表示,从前到后由高到低
(写有效)要写入flash的数据
 
返回
(读有效)
1 byte N bytes
  0x1b 返回的数据

该功能保存的数据掉电之后仍然不会丢失,可以用来保存一些需要掉电保持的数据。
例:在0x21EA0位置存放以下10个数据:" 0xa0, 0xa1, 0xa2, 0xa3, 0xa4,0xa5, 0xa6, 0xa7, 0za8, 0xa9"。往模块发送数据串"0x1b, 0x4b, 0x00, 0x02, 0x1E, 0xA0, 10, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0za8, 0xa9 "

●设置是否对命令做返回响应
命令 内容
1 byte 1byte
0x50 =00 不返回命令响应
=01 当命令执行完时返回"OK!"

例:设置返回命令响应,往模块发送"0x1b, 0x50, 0x01"。开机默认的是返回响应,建议使用该返回的响应来判断命令是否执行完毕,来取代时间比较长的命令执行之后的延时,以便提高效率,减少调试的问题!我们强烈建议您这样做,这样您的程序可以适应我们现在和将来的每一款液晶。

●返回公司的版权声明
命令 内容
1 byte
0x51

点击这里查看UNICODE的3条支持指令