当前位置:首页 > 显示光电 > 显示光电
[导读]lcd12864带中文字库的128X64 是一种具有4 位/8 位并行、2 线或3 线串行多种接口方式,内部含有国标一级、二级简体 中文字库的点阵图形液晶显示模块;

lcd12864带中文字库的128X64 是一种具有4 位/8 位并行、2 线或3 线串行多种接口方式,内部含有国标一级、二级简体 中文字库的点阵图形液晶显示模块;

其显示分辨率为128×64, 内置8192 个16*16 点汉字,和128 个16*8 点ASCII 字符 集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。

可以显示8×4 行16×16 点 阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶 显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。

 

基本参数

(1)低电源电压(VDD:+3.0--+5.5V)

(2)显示分辨率:128×64 点

(3)内置汉字字库,提供8192 个16×16 点阵汉字(简繁体可选)

(4)内置128 个16×8 点阵字符

(5)2MHZ 时钟频率

(6)显示方式:STN、半透、正显

(7)驱动方式:1/32DUTY,1/5BIAS

(8)视角方向:6 点

(9)背光方式:侧部高亮白色LED,功耗仅为普通LED 的1/5—1/10

(10)通讯方式:串行、并口可选

(11)内置DC-DC 转换电路,无需外加负压

(12)无需片选信号,简化软件设计

(13)工作温度: 0℃ - +55℃ ,存储温度: -20℃ - +60℃

带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字。也可完成图形显示。低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。

lcd12864基本特性参数

(1)低电源电压(VDD:+3.0--+5.5V)

(2)显示分辨率:128×64点

(3)内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)

(4)内置128个16×8点阵字符

(5)2MHZ时钟频率

(6)显示方式:STN、半透、正显

(7)驱动方式:1/32DUTY,1/5BIAS

(8)视角方向:6点

(9)背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10

(10)通讯方式:串行、并口可选

(11)内置DC-DC转换电路,无需外加负压

(12)无需片选信号,简化软件设计

(13)工作温度:0℃-+55℃,存储温度:-20℃-+60℃

lcd12864引脚图及功能

 

1VSS-模块的电源地

2VDD-模块的电源正端

3V0-LCD驱动电压输入端

4RS(CS)H/L并行的指令/数据选择信号;串行的片选信号

5R/W(SID)H/L并行的读写选择信号;串行的数据口

6E(CLK)H/L并行的使能信号;串行的同步时钟

7DB0H/L数据0

8DB1H/L数据1

9DB2H/L数据2

10DB3H/L数据3

11DB4H/L数据4

12DB5H/L数据5

13DB6H/L数据6

14DB7H/L数据7

15PSBH/L并/串行接口选择:H-并行;L-串行

16NC空脚

17/RETH/L复位低电平有效

18NC空脚

19LED_A(LED+5V)背光源正极

20LED_K(LED-OV)背光源和负极

控制器接口信号说明

1、RS,R/W的配合选择决定控制界面的4种模式:

 

2、E信号

 

●忙标志:BFBF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据。利用STATUSRD指令,可以将BF读到DB7总线,从而检验模块之工作状态。

●字型产生ROM(CGROM)字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAYON),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAYOFF)。DFF的状态是指令DISPLAYON/OFF和RST信号控制的。

●显示数据RAM(DDRAM)模块内部显示数据RAM提供64×2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H—0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H—7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140—D75F),GB(A1A0-F7FFH)。

●字型产生RAM(CGRAM)字型产生RAM提供图象定义(造字)功能,可以提供四组16×16点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。

●地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6——DB0中。

光标/闪烁控制电路

此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。

lcd12864指令说明

 

 

备注:当IC1在接受指令前,微处理器必须先确认其内部处于非忙碌状态,即读取BF标志时,BF需为零,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成。

lcd12864应用举例

1、使用前的准备:先给模块加上工作电压,再按照下图的连接方法调节LCD的对比度,使其显示出黑色的底影。此过程亦可以初步检测LCD有无缺段现象。

2、字符显示:带中文字库的128X64-0402B每屏可显示4行8列共32个16×16点阵的汉字,每个显示RAM可显示1个中文字符或2个16×8点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。带中文字库的128X64-0402B内部提供128×2字节的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(自定义字形)的内容。三种不同字符/字型的选择编码范围为:0000~0006H(其代码分别是0000、0002、0004、0006共4个)显示自定义字型,02H~7FH显示半宽ASCII码字符,A1A0H~F7FFH显示8192种GB2312中文字库字形。字符显示RAM在液晶模块中的地址80H~9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,其对应关系如下表所示。

 

3、图形显示

先设垂直地址再设水平地址(连续写入两个字节的资料来完成垂直与水平的坐标地址)

垂直地址范围AC5.。.AC0

水平地址范围AC3…AC0

绘图RAM的地址计数器(AC)只会对水平地址(X轴)自动加一,当水平地址=0FH时会重新设为00H但并不会对垂直地址做进位自动加一,故当连续写入多笔资料时,程序需自行判断垂直地址是否需重新设定。GDRAM的坐标地址与资料排列顺序如下图:

4、应用说明

用带中文字库的128X64显示模块时应注意以下几点:

①欲在某一个位置显示中文字符时,应先设定显示字符位置,即先设定显示地址,再写入中文字符编码。

②显示ASCII字符过程与显示中文字符过程相同。不过在显示连续字符时,只须设定一次显示地址,由模块自动对地址加1指向下一个字符位置,否则,显示的字符中将会有一个空ASCII字符位置。

③当字符编码为2字节时,应先写入高位字节,再写入低位字节。

④模块在接收指令前,向处理器必须先确认模块内部处于非忙状态,即读取BF标志时BF需为“0”,方可接受新的指令。如果在送出一个指令前不检查BF标志,则在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。指令执行的时间请参考指令表中的指令执行时间说明。⑤“RE”为基本指令集与扩充指令集的选择控制位。当变更“RE”后,以后的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集时,无需每次均重设“RE”位.

lcd12864驱动程序

/****************************************************************************/

/* */

/* Copyright (c) 2012, pcwebmaster */

/* All rights reserved. */

/* */

/* Email:pcwebmaste@163.com */

/* */

/****************************************************************************/

/****************************************************************************/

/* 文件名:LCD12864.c */

/* 版 本:Version 1.0 */

/* 描 述:实现液晶和单片机的通讯协议,根据计算机发给的命令进行人机交互 */

/* 作 者:pcwebmaste */

/* 函 数: */

/* LCD12864_init */

/* LCD12864WriteCommand */

/* LCD12864WriteByte */

/* LCD12864_init */

/* LCD12864SetXY */

/* LCD12864PrintfString */

/* 历史记录: */

/* pcwebmaste 2008-07-10 Creat Inital version. (Version 1.0) */

/* 模块化 2012-06-02 Creat Inital version. (Version 2.0) */

/****************************************************************************/

#include “12864.h”

#define LOW 0

#define HIGH 1

sbit wela = P2^6;

sbit dula = P2^7;

#define LCD12864_RS(x) {if((x))P3 |= 1《《LCD12864_RS_PIN;\

else P3 &=~(1《《LCD12864_RS_PIN);}//寄存器选择输入

#define LCD12864_RW(x) {if((x))P3 |= 1《《LCD12864_RW_PIN;\

else P3 &=~(1《《LCD12864_RW_PIN);}//液晶读/写控制

#define LCD12864_EN(x) {if((x))P3 |= 1《《LCD12864_EN_PIN;\

else P3 &=~(1《《LCD12864_EN_PIN);}//液晶使能控制

#define LCD12864_MD(x) {if((x))P3 |= 1《《LCD12864_MD_PIN;\

else P3 &=~(1《《LCD12864_MD_PIN);}//串/并方式控制

#define LCDWELA(x) {if((x))P2 |= 1《《6; else P2 &=~(1《《6);}

#define LCDDULA(x) {if((x))P2 |= 1《《7; else P2 &=~(1《《7);}

#define DelayNOP() {_nop_();_nop_();_nop_();_nop_();}

/*********************************************/

/* */

/* 主程序 */

/* */

/*********************************************

void main()

{

DelayNOP(); //延时

wela=LOW;

dula=LOW;

LCD12864_init(); //初始化LCD

LCD12864PrintfString(0,1,dis1);

LCD12864PrintfString(1,0,dis2);

LCD12864PrintfString(2,0,dis3);

LCD12864PrintfString(3,1,dis4);

while(1);

}

/********************************************

*函数名称:LCD12864_init

*输 入:无

*输 出:lcd_busy 为1时,忙,等待。

lcd-busy 为0时,闲,可写指令与数据

*说 明:LCD12864LCD检查忙状态

/*******************************************/

bit LCD1286_busy()

{

bit result;

LCD12864_RS(LOW);

LCD12864_RW(HIGH);

LCD12864_EN(HIGH);

DelayNOP();

result = (bit)(LCD12864_PORT&0x80);

LCD12864_EN(LOW);

return(result);

}

/********************************************

*函数名称:LCD12864WriteCommand

*输 入:ucCmd 要写入的命令

*输 出:无

*说 明:LCD12864 写命令

RS=L,RW=L,E=高脉冲,D0-D7=指令码。

********************************************/

void LCD12864WriteCommand(unsigned char ucCmd)

{

while(LCD1286_busy());

LCD12864_RS(LOW);

LCD12864_RW(LOW);

LCD12864_EN(LOW);

_nop_();

_nop_();

LCD12864_PORT = ucCmd;

DelayNOP();

LCD12864_EN(HIGH);

DelayNOP();

LCD12864_EN(LOW);

}

/********************************************

*函数名称:LCD12864WriteByte

*输 入:ucByte 要写入的字节

*输 出:无

*说 明:LCD12864 写字节

RS=H,RW=L,E=高脉冲,D0-D7=数据。

********************************************/

void LCD12864WriteByte(unsigned char ucByte)

{

while(LCD1286_busy());

LCD12864_RS(HIGH);

LCD12864_RW(LOW);

LCD12864_EN(LOW);

LCD12864_PORT = ucByte;

DelayNOP();

LCD12864_EN(HIGH);

DelayNOP();

LCD12864_EN(LOW);

}

/********************************************

*函数名称:LCD12864_init

*输 入:无

*输 出:无

*说 明:LCD12864LCD初始化设定

/*******************************************/

void LCD12864_init()

{

LCD12864_MD(HIGH); //并口方式

LCD12864WriteCommand(0x34); //扩充指令操作

LCD12864WriteCommand(0x30); //基本指令操作

LCD12864WriteCommand(0x0C); //显示开,关光标

LCD12864WriteCommand(0x01); //清除LCD的显示内容

}

/********************************************

*函数名称:LCD12864SetXY

*输 入:x 横坐标 y 纵坐标

*输 出:无

*说 明:LCD12864 设置坐标

********************************************/

void LCD12864SetXY(unsigned char X,unsigned char Y)

{

if (X==0)

{X=0x80;}

else if (X==1)

{X=0x90;}

else if (X==2)

{X=0x88;}

else if (X==3)

{X=0x98;}

LCD12864WriteCommand(X+Y); //显示地址

}

/********************************************

*函数名称:LCD12864SetXY

*输 入:x 横坐标 y 纵坐标

*输 出:无

*说 明:LCD12864 设置坐标

为什么这样写不行呢?

********************************************

void LCD12864SetXY(unsigned char x,unsigned char y)

{

switch(y)

{

case 1:

{

LCD12864WriteCommand(0x80+x);

}

break;

case 2:

{

LCD12864WriteCommand(0x90+x);

}

break;

case 3:

{

LCD12864WriteCommand(0x88+x);

}

break;

case 4:

{

LCD12864WriteCommand(0x98+x);

}

break;

default:break;

}

// LCD12864WriteCommand(x+y); //显示地址

}

/********************************************

*函数名称:LCD12864PrintfString

*输 入:x 横坐标 y 纵坐标 s字符串

*输 出:无

*说 明:LCD12864 打印字符串

********************************************/

void LCD12864PrintfString(unsigned char x,unsigned char y,unsigned char *s)

{

LCD12864SetXY(x,y); //设置显示坐标

while(s && *s)

{

LCD12864WriteByte(*s); //显示逐个字符

s++;

}

}

/****************************************************************************/

/* */

/* Copyright (c) 2012, pcwebmaster */

/* All rights reserved. */

/* */

/* Email:pcwebmaste@163.com */

/* */

/****************************************************************************/

/****************************************************************************/

/* 文件名:LCD12864.c */

/* 版 本:Version 1.0 */

/* 描 述:实现液晶和单片机的通讯协议,根据计算机发给的命令进行人机交互 */

/* 作 者:pcwebmaste */

/* 函 数: */

/* LCD12864_init */

/* LCD12864WriteCommand */

/* LCD12864WriteByte */

/* LCD12864_init */

/* LCD12864SetXY */

/* LCD12864PrintfString */

/* 历史记录: */

/* pcwebmaste 2008-07-10 Creat Inital version. (Version 1.0) */

/* 模块化 2012-06-02 Creat Inital version. (Version 2.0) */

/****************************************************************************/

#ifndef __12864_H__

#define __12864_H__

#include 《reg52.h》

#include 《intrins.h》

#define LCD12864_PORT P0 //数据口

#define LCD12864_RS_PIN 5

#define LCD12864_RW_PIN 6

#define LCD12864_EN_PIN 4

#define LCD12864_MD_PIN 7

unsigned char code dis1[] = {“中国昌乐是宝石”};

unsigned char code dis2[] = {“之都,西瓜之乡!”};

unsigned char code dis3[] = {“中国昌乐宝石城”};

unsigned char code dis4[] = {“人民欢迎您!”};

/********************************************

*函数名称:LCD12864_init

*输 入:无

*输 出:lcd_busy 为1时,忙,等待。

lcd-busy 为0时,闲,可写指令与数据

*说 明:LCD12864LCD检查忙状态

/*******************************************/

bit LCD1286_busy();

/********************************************

*函数名称:LCD12864WriteCommand

*输 入:ucCmd 要写入的命令

*输 出:无

*说 明:LCD12864 写命令

RS=L,RW=L,E=高脉冲,D0-D7=指令码。

********************************************/

void LCD12864WriteCommand(unsigned char ucCmd);

/********************************************

*函数名称:LCD12864WriteByte

*输 入:ucByte 要写入的字节

*输 出:无

*说 明:LCD12864 写字节

RS=H,RW=L,E=高脉冲,D0-D7=数据。

********************************************/

void LCD12864WriteByte(unsigned char ucByte);

/********************************************

*函数名称:LCD12864_init

*输 入:无

*输 出:无

*说 明:LCD12864LCD初始化设定

/*******************************************/

void LCD12864_init();

/********************************************

*函数名称:LCD12864SetXY

*输 入:x 横坐标 y 纵坐标

*输 出:无

*说 明:LCD12864 设置坐标

********************************************/

void LCD12864SetXY(unsigned char X,unsigned char Y);

/********************************************

*函数名称:LCD12864PrintfString

*输 入:x 横坐标 y 纵坐标 s字符串

*输 出:无

*说 明:LCD12864 打印字符串

********************************************/

void LCD12864PrintfString(unsigned char x,unsigned char y,unsigned char *s);

void LCD12864PrintfData(unsigned char x,unsigned char y,unsigned char DData);

/********************************************

*函数名称:LCD12864PrintfNum

*输 入:add ge shi bai

*输 出:无

*说 明:此函数不好写成通用函数,在连续地址里

连续写数字半角显示。根据情况修改

********************************************/

void LCD12864PrintfNum(unsigned char add,unsigned char ge,unsigned char shi,unsigned char bai)

{

LCD12864WriteCommand(add);

LCD12864WriteByte(bai+0x30);

LCD12864WriteByte(shi+0x30);

LCD12864WriteByte(ge+0x30);

}

#endif

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭