12864液晶屏幕使用说明及程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

12864使用说明
一、串/并接口
1.1 串口接口管脚信号
*注释1:如在实际应用中仅使用并口通讯模式,可将PSB 接固定高电平。

*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK 用焊锡短接。

1.2 并行接口管脚信号
*注释1:如在实际应用中仅使用并口通讯模式,可将PSB 接固定高电平。

*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。

*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK 用焊锡短接。

二、模块主要硬件构成说明
控制器接口信号说明:
2.1、RS,R/W的配合选择决定控制界面的4种模式:
2.2、E信号
●忙标志BF
BF 标志提供内部工作情况.BF=1 表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0 时, 模块为准备状态,随时可接受外部指令和数据.利用STATUS RD 指令,可以将BF 读到DB7 总线,从而检验模块之工作状态.
●字型产生ROM(CGROM)
字型产生ROM(CGROM)提供8192 个此触发器是用于模块屏幕显示开和关的控制。

DFF=1 为开显示(DISPLAY ON),DDRAM 的内容就显示在屏幕上,DFF=0 为关显示(DISPLAY OFF)。

DFF 的状态是指令DISPLAY ON/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 中的光标或闪烁位置。

三、用户指令集
模块控制芯片提供两套控制命令,基本指令和扩充指令如下:
指令表1:(RE=0:基本指令)
指令表2:(RE=1:扩充指令集)
备注:
1、当模块在接受指令前,微处理顺必须先确认模块内部处于非忙碌状态,即读取BF标志时BF需为0,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延迟一段较长的时间,即是等待前一个指令确实执行完成,指令执行的时间请参考指令表中的个别指令说明。

2、“RE”为基本指令集与扩充指令集的选择控制位元,当变更“RE”位元后,往后的指令集将维持在最后的状态,除非再次变更“RE”位元,否则使用相同指令集时,不需每次重设“RE”位元。

3、(1)执行下面两条语句
LCD12864_w_com(0x36);//开扩充功能指令、开绘图
LCD12864_w_com(0x30);//开基本功能指令、但是绘图显示未关、图片仍在屏幕上
(2)执行下面三条语句
LCD12864_w_com(0x36);//开扩充功能指令、开绘图
LCD12864_w_com(0x34);//开扩充功能指令、关绘图、图片从屏幕上消失
LCD12864_w_com(0x30);//开基本功能指令
四、读写时序图
4.1 数据传输过程
8位和4位数据线的传输过程
串口数据线模式数据传输过程4.2 时序图
MCU写指令/数据
MCU读指令/数据
4.3 串口读写时序
串口方式下MPU写数据
五、显示坐标关系
5.1、图形显示坐标
先设垂直地址再设水平地址(连续写入两个字节的资料来完成垂直与水平的坐标地址)
垂直地址范围AC5...AC0
水平地址范围AC3…AC0
绘图RAM 的地址计数器(AC)只会对水平地址(X 轴)自动加一,当水平地址=0FH 时会重新设为00H 但并不会对垂直地址做进位自动加一,故当连续写入多笔资料时,程序需自行判断垂直地址是否需重新设定。

GDRAM的坐标地址与资料排列顺序如下图:
5.2、绘图RAM(GDRAM)
5.3、汉字显示坐标
FYD12864-0402B每屏可显示4行8列共32个16×16点阵的汉字,每个显示RAM可显示1个中文字符或2个16×8点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。

FYD12864-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个字符显示区域有着一一对应的关系,其对应关系如下表所示。

六、程序举例
6.1、写指令/数据、读指令/数据函数的例程
//********12864相关函数***********//
//包含头文件<intrins.h>
//LCD_RS-------P2 ^ 0;
//LCD_RW-------P2 ^ 1;
//LCD_EN-------P2 ^ 2;
//DA TA---------P0
/*读忙碌函数*/
void read_busy()
{
bit busy_flag=1;
LCD_RS=0;
LCD_RW=1;
DA TA=0xff;//向P0口写入全1
while(busy_flag)
{
LCD_EN=1;//高电平时12864将数据送到P0口(DA TA)上
_nop_();_nop_();
busy_flag=(bit)(DA TA&0x80);
LCD_EN=0;
_nop_();
}
}
/*从12864读回数据函数*/
/*********************************************/
/*注意:调用此函数时要先空读一次(前两次读回的数据相同)
举例:读取位址为80H和81H的DDRAM的内容(dat1-dat4为四个uchar变量) LCD12864_w_com(0x80);
LCD12864_r_dat();//空读一次
dat1=LCD12864_r_dat();
dat2=LCD12864_r_dat();
dat3=LCD12864_r_dat();
dat4=LCD12864_r_dat();
/*********************************************/
uchar LCD12864_r_dat()
{
uchar dat=0;
read_busy();
LCD_RS=1;
LCD_RW=1;
DA TA=0xff;//向P0口写入全1
LCD_EN=1;//高电平时12864将数据送到P0口(DA TA)上
_nop_();_nop_();
dat=DA TA;
LCD_EN=0;
return dat;
}
/*mcu向LCD12864写指令函数*/
void LCD12864_w_com(uchar com)
{
read_busy();
LCD_RS=0;
LCD_RW=0;
DA TA=com;
LCD_EN=1;
_nop_();
LCD_EN=0;//下降沿向12864写指令
}
/*mcu向LCD12864写数据函数*/
void LCD12864_w_dat(uchar dat)
{
read_busy();
LCD_RS=1;
LCD_RW=0;
DA TA=dat;
LCD_EN=1;
_nop_();
LCD_EN=0;//下降沿向12864写数据
6.2、使用CGRAM造字的例程
LCD12864_w_com(0x40);//向地址40H---7FHz中写数据
for(k=0;k<32;k++)
{
LCD12864_w_dat(e[k]);
}
for(k=0;k<32;k++)
{
LCD12864_w_dat(f[k]);
}
for(k=0;k<32;k++)
{
LCD12864_w_dat(e[k]);
}
for(k=0;k<32;k++)
{
LCD12864_w_dat(f[k]);
}
LCD12864_w_com(0x80);
LCD12864_w_dat(0x00);//0x0000
LCD12864_w_dat(0x00);
LCD12864_w_dat(0x00);//0x0002
LCD12864_w_dat(0x02);
LCD12864_w_dat(0x00);//0x0004
LCD12864_w_dat(0x04);
LCD12864_w_dat(0x00);//0x0006
LCD12864_w_dat(0x06);
6.3、初始化过程
LCD12864_w_com(0x30);
delay(1);
LCD12864_w_com(0x30);
delay(1);
LCD12864_w_com(0x0f);
delay(1);
LCD12864_w_com(0x01);
delay(1);
LCD12864_w_com(0x06);
delay(1);
6.4、垂直卷动相关语句。

LCD12864_w_com(0x34);//使用扩充指令
LCD12864_w_com(0x03);// 允许输入垂直卷动地址
LCD12864_w_com(0x60);// 垂直卷动地址。

相关文档
最新文档