lcd12864中文资料汇总(12864引脚说明及功能_特性参数及驱动程序分享).doc

上传人:白大夫 文档编号:3253585 上传时间:2019-08-06 格式:DOC 页数:16 大小:59KB
返回 下载 相关 举报
lcd12864中文资料汇总(12864引脚说明及功能_特性参数及驱动程序分享).doc_第1页
第1页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《lcd12864中文资料汇总(12864引脚说明及功能_特性参数及驱动程序分享).doc》由会员分享,可在线阅读,更多相关《lcd12864中文资料汇总(12864引脚说明及功能_特性参数及驱动程序分享).doc(16页珍藏版)》请在三一文库上搜索。

1、lcd12864中文资料汇总(12864引脚说明及功能_特性参数及驱动程序分享)lcd12864简介带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864,内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字。也可完成图形显示。低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模

2、块的价格也略低于相同点阵的图形液晶模块。lcd12864基本特性参数(1)低电源电压(VDD:+3.0-+5.5V)(2)显示分辨率:12864点(3)内置汉字字库,提供8192个1616点阵汉字(简繁体可选)(4)内置128个168点阵字符(5)2MHZ时钟频率(6)显示方式:STN、半透、正显(7)驱动方式:1/32DUTY,1/5BIAS(8)视角方向:6点(9)背光方式:侧部高亮白色LED,功耗仅为普通LED的1/51/10(10)通讯方式:串行、并口可选(11)内置DC-DC转换电路,无需外加负压(12)无需片选信号,简化软件设计(13)工作温度:0-+55,存储温度:-20-+60

3、lcd12864引脚图及功能1VSS-模块的电源地2VDD-模块的电源正端3V0-LCD驱动电压输入端4RS(CS)H/L并行的指令/数据选择信号;串行的片选信号5R/W(SID)H/L并行的读写选择信号;串行的数据口6E(CLK)H/L并行的使能信号;串行的同步时钟7DB0H/L数据08DB1H/L数据19DB2H/L数据210DB3H/L数据311DB4H/L数据412DB5H/L数据513DB6H/L数据614DB7H/L数据715PSBH/L并/串行接口选择:H-并行;L-串行16NC空脚17/RETH/L复位低电平有效18NC空脚19LED_A(LED+5V)背光源正极20LED_K

4、(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

5、/OFF和RST信号控制的。显示数据RAM(DDRAM)模块内部显示数据RAM提供642个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编

6、码BIG5(A140D75F),GB(A1A0-F7FFH)。字型产生RAM(CGRAM)字型产生RAM提供图象定义(造字)功能,可以提供四组1616点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为0时而R/W为1时,地址计数器的值会被读取到DB6DB0中。光标/闪烁控制电路此模块提供硬体光标及闪烁控制电路,由地址计数器的值

7、来指定DDRAM中的光标或闪烁位置。lcd12864指令说明备注:当IC1在接受指令前,微处理器必须先确认其内部处于非忙碌状态,即读取BF标志时,BF需为零,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成。lcd12864应用举例1、使用前的准备:先给模块加上工作电压,再按照下图的连接方法调节LCD的对比度,使其显示出黑色的底影。此过程亦可以初步检测LCD有无缺段现象。2、字符显示:带中文字库的128X64-0402B每屏可显示4行8列共32个1616点阵的汉字,每个显示RAM可显示1个中文字符或2个

8、168点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。带中文字库的128X64-0402B内部提供1282字节的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(自定义字形)的内容。三种不同字符/字型的选择编码范围为:00000006H(其代码分别是0000、0002、0004、0006共4个)显示自定义字型,02H7FH显示半宽ASCII码字符,A1A0HF7FFH显示8192种GB2312中文字库字形

9、。字符显示RAM在液晶模块中的地址80H9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,其对应关系如下表所示。3、图形显示先设垂直地址再设水平地址(连续写入两个字节的资料来完成垂直与水平的坐标地址)垂直地址范围AC5.。.AC0水平地址范围AC3AC0绘图RAM的地址计数器(AC)只会对水平地址(X轴)自动加一,当水平地址=0FH时会重新设为00H但并不会对垂直地址做进位自动加一,故当连续写入多笔资料时,程序需自行判断垂直地址是否需重新设定。GDRAM的坐标地址与资料排列顺序如下图:4、应用说明用带中文字库的128X64显示模块时应注意以下几点:欲在某一个位置显示中文字符

10、时,应先设定显示字符位置,即先设定显示地址,再写入中文字符编码。显示ASCII字符过程与显示中文字符过程相同。不过在显示连续字符时,只须设定一次显示地址,由模块自动对地址加1指向下一个字符位置,否则,显示的字符中将会有一个空ASCII字符位置。当字符编码为2字节时,应先写入高位字节,再写入低位字节。模块在接收指令前,向处理器必须先确认模块内部处于非忙状态,即读取BF标志时BF需为0,方可接受新的指令。如果在送出一个指令前不检查BF标志,则在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。指令执行的时间请参考指令表中的指令执行时间说明。RE为基本指令集与扩充指令集的

11、选择控制位。当变更RE后,以后的指令集将维持在最后的状态,除非再次变更RE位,否则使用相同指令集时,无需每次均重设RE位.lcd12864驱动程序/*/* */* Copyright (c) 2012, pcwebmaster */* All rights reserved. */* */* Email:pcwebmaste163 */* */*/*/* 文件名:LCD12864.c */* 版 本:Version 1.0 */* 描 述:实现液晶和单片机的通讯协议,根据计算机发给的命令进行人机交互 */* 作 者:pcwebmaste */* 函 数: */* LCD12864_init *

12、/* 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 1sbit wela = P2;sbit

13、 dula = P2;#define LCD12864_RS(x) if(x)P3 |= 1LCD12864_RS_PIN;else P3 =(1LCD12864_RS_PIN);/寄存器选择输入#define LCD12864_RW(x) if(x)P3 |= 1LCD12864_RW_PIN;else P3 =(1LCD12864_RW_PIN);/液晶读/写控制#define LCD12864_EN(x) if(x)P3 |= 1LCD12864_EN_PIN;else P3 =(1LCD12864_EN_PIN);/液晶使能控制#define LCD12864_MD(x) if(x)P

14、3 |= 1LCD12864_MD_PIN;else P3 =(1LCD12864_MD_PIN);/串/并方式控制#define LCDWELA(x) if(x)P2 |= 16; else P2 =(16);#define LCDDULA(x) if(x)P2 |= 17; else P2 =(17);#define DelayNOP() _nop_();_nop_();_nop_();_nop_();/*/* */* 主程序 */* */*void main()DelayNOP(); /延时wela=LOW;dula=LOW;LCD12864_init(); /初始化LCDLCD1286

15、4PrintfString(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(HIG

16、H);DelayNOP();result = (bit)(LCD12864_PORT0x80);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_()

17、;_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);LCD

18、12864_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); /显示开,关光标LCD12864WriteComm

19、and(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 设置

20、坐标为什么这样写不行呢?*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); /显示地址/*函数名称:LCD1

21、2864PrintfString*输 入: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

22、163 */* */*/*/* 文件名:LCD12864.c */* 版 本:Version 1.0 */* 描 述:实现液晶和单片机的通讯协议,根据计算机发给的命令进行人机交互 */* 作 者:pcwebmaste */* 函 数: */* LCD12864_init */* LCD12864WriteCommand */* LCD12864WriteByte */* LCD12864_init */* LCD12864SetXY */* LCD12864PrintfString */* 历史记录: */* pcwebmaste 2008-07-10 Creat Inital version

23、. (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 7unsigned char code dis1 = 中国

24、昌乐是宝石;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

25、=高脉冲,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*输

26、 入: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,u

27、nsigned 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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1