当前位置:首页 > 显示光电 > 显示光电
[导读]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

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

液晶显示器(Liquid Crystal Display,简称LCD)作为一种广泛应用于电视、电脑显示器、手机以及各类电子产品的显示技术,其发展历程与科技创新紧密相连。LCD技术以其独特的构造和工作原理,在过去的几十年里...

关键字: LCD 液晶显示

在电子显示技术领域,液晶显示(LCD)因其低功耗、高清晰度和长寿命等优点被广泛应用于各种设备中。为了驱动LCD,需要使用专门的接口技术来传输图像数据。其中,低压差分信号(LVDS)和迷你低压差分信号(MiniLVDS)是...

关键字: 电子显示 液晶显示 低压差分信号

摘 要 :基于 STC89C52RC 单片机的智能电子秤的设计分为三大板块,即硬件排版、布局设计,软件编写、下载、调试及产品焊接。基于单片机的智能电子秤是以 STC89C52RC 单片机为核心的控制系统,单片机内下载软件...

关键字: 单片机 电子秤 传感器 HX711 模数转换 液晶显示

摘 要 :以 STC89C52 单片机为温度测控系统的核心,利用 AD590 温度传感器将温度信号转换成电信号,然后经信号差分放大电路和A/D 转换电路将其对应的数字信号输入单片机,单片机计算出温度传感器对应的温度值后,...

关键字: 单片机 温度传感器 放大电路 A/D 转换电路 液晶显示 报警电路 串口通信

摘 要 :随着电子行业的快速发展,电子产品与人们的日常生活密不可分。与此同时,对电子测量技术的精确度、便捷性的要求也逐步提高。文中以 STM32 单片机为核心控制器,采用功率放大、非接触式电流获取、电流信号幅值检测分析、...

关键字: STM32 单片机 功率放大 非接触式电流 幅值检测 频率检测 液晶显示

摘要:介绍了以DSP芯片TMS320F2812为CPU的有源电力滤波器中液晶模块JLX12864G-139的应用设计方法,详细说明了DSP芯片与液晶模块的硬件接口电路设计,通过分析液晶模块的读写时序,阐述了在TMS320...

关键字: TMS320F2812 JLX12864G-139 液晶显示 接口

点阵LCD的显示原理 在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。而对于中文,常用却有6000以上...

关键字: lcd12864 液晶显示屏

最近在做毕业设计的单片机项目,涉及到LCD12864这个元器件,淘宝上有一大堆的产品,像我这样的菜鸟,都不知道怎么选了。在看了贴吧的一个人的初学总结,我此处转一下,大家一同学习,也谢谢他的智慧结晶。

关键字: lcd12864 使用

LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块,通常跟单片机一起使用,由单片机控制显示的内容,那么当遇到lcd1602只亮不显示怎么办?下面教大家几个检查方法。

关键字: lcd12864 液晶显示屏

摘 要:MSP430单片机是TI公司于1996年推向市场的一款超低功耗16位微控制器,其最显著的特点是超低的功耗以及丰富的片上外设资源,方便高效的开发环境可应用于模拟信号的采集传感系统。文中设计了一种基于MSP430F4...

关键字: 单片机 低功耗 无线传输 液晶显示
关闭
关闭