|
汉显液晶模块
以下图片用的是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 |
命令代码 |
命令内容 |
模块返回的数据格式为
下面将详细地介绍所有的命令。(蓝色部分为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条支持指令
|