九.应用举例:
1 、使用前的准备
先给模块加上工作电压,再按照下图的连接方法调节LCD的对比度,使其显示出黑色的底影。 此过程亦可以初步检测LCD有无缺段现象。
2、字符显示
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个字符显示区域有着一一对应的关系,其对应关系如下表所示。 80H 90H 88H 98H 3 、图形显示 81H 91H 89H 99H 82H 92H 8AH 9AH 83H 93H 8BH 9BH 84H 94H 8CH 9CH 85H 95H 8DH 9DH 86H 96H 8EH 9EH 87H 97H 8FH 9FH 先设垂直地址再设水平地址(连续写入两个字节的资料来完成垂直与水平的坐标地址) 垂直地址范围 AC5...AC0 水平地址范围 AC3…AC0
绘图RAM 的地址计数器(AC)只会对水平地址(X 轴)自动加一,当水平地址=0FH 时会重新设为00H 但并不会对垂直地址做进位自动加一,故当连续写入多笔资料时,程序需自行判断垂直地址是否需重新设定。GDRAM的坐标地址与资料
排列顺序如下图
3、应用说明
用FYD12864-0402B显示模块时应注意以下几点:
①欲在某一个位置显示中文字符时,应先设定显示字符位置,即先设定显示地址,再写入中文字符编码。
②显示ASCII字符过程与显示中文字符过程相同。不过在显示连续字符时,只须设定一次显示地址,由模块自动对地址加1指向下一个字符位置,否则,显示的字符中将会有一个空ASCII字符位置。 ③当字符编码为2字节时,应先写入高位字节,再写入低位字节。
④模块在接收指令前,向处理器必须先确认模块内部处于非忙状态,即读取BF标志时BF需为“0”,方可接受新的指令。如果在送出一个指令前不检查BF标志,则在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。指令执行的时间请参考指令表中的指令执行时间说明。⑤“RE”为基本指令集与扩充指令集的选择控制位。当变更“RE”后,以后的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集时,无需每次均重设“RE”位。
4、 4、 YD12864-0402B与单片机80C51的一种接口如图所示
5、 5、 编程参考(部分)
;********************************************* ;Controller:ST7920
;MCU:AT89C52 ,晶体频率:12MHz ;LCM:128*64
;LCM型号:12864C-1
;LCM 接口:1:GND 2:VCC 3:V0 4.RS 5:RW 6:E 7--14:DB0-DB7 15:PSB 16:NC 17:RST 18:Vout ;********************************************** RS EQU P1.3 RW EQU P1.4 E EQU P1.5 PSB EQU P1.6 RST EQU P2.7 COM EQU 20H DAT EQU 21H
;******************************以上是接口定义 START:
ORG 0000H MOV SP,#60H LJMP DISP
;*********************************主程序入口地址 ORG 0040H DISP: CLR PSB LCALL DELAY
SETB PSB ;将PSB置1,通信方式为8位数据并口 LCALL DELAY
MOV COM,#30H ;功能设置---8BIT控制界面,基本指令集 ACALL WRI ;调用写指令子程序 LCALL DELAY ;延迟39uS
MOV COM,#0CH ;显示打开,光标关,反白显示关 ACALL WRI ;调用写指令子程序 LCALL DELAY ;延迟39uS
MOV COM,#01H ;清除屏幕显示,将DDRAM的地址计数器归零 ACALL WRI ;调用写指令子程序 LCALL DELAY ;延迟39uS MOV COM,#06H ;DDRAM的地址计数器(AC)加1 ACALL WRI ;调用写指令子程序 LCALL DELAY ;延迟39uS
;**************************************************** DISPLAY5A:
MOV R2,#64 ;DDRAM地址记数器设为最大值 MOV R1,#10H
MOV COM,#80H ;DD RAM 地址-----0000000 ACALL WRI DISP5A: MOV DAT,R1
ACALL WRD ;写入第二字节数据 INC R1
DJNZ R2,DISP5A
LCALL DELAY1 ;1S延时子程序
;*************************************以上是写入半角字符 DISPLAY5:
MOV R2,#64 ;DDRAM地址记数器设为最大值 MOV R1,#0DEH
MOV COM,#80H ;DD RAM 地址-----0000000 ACALL WRI
DISP5: MOV DAT,#0B4H
ACALL WRD ;写入第一字节数据 MOV DAT,R1
ACALL WRD ;写入第二字节数据 INC R1
DJNZ R2,DISP5
LCALL DELAY1 ;1S延时子程序
;**********************************以上是从字库中“崔”字处开始显示 MOV COM,#01H ;清屏
ACALL WRI ;调用写指令子程序 LCALL DELAY
MOV COM,#32H ;功能设置---8BIT控制界面,绘图显示ON ACALL WRI ;调用写指令子程序 LCALL DELAY ;延迟39uS
MOV COM,#36H ;功能设置---8BIT控制界面,扩充指令集 ACALL WRI ;调用写指令子程序 LCALL DELAY ;延迟39uS
DISPLAY6:
MOV DPTR,#DAB2 ;图形数据入口地址
MOV R2,#32 ;32行,(双屏结构中上半屏) MOV R3,#80H ;Y地址寄存器
DISP6: MOV COM,R3 ;设置绘图区的Y地址坐标 INC R3 ;Y地址加1 LCALL WRI
MOV COM,#80H ;设置绘图区的X地址坐标 LCALL WRI
MOV R1,#16 ;16*8列 DISP7: CLR A
MOVC A,@A+DPTR
MOV DAT,A LCALL WRD INC DPTR