当前位置:首页 > 行业资料 > 酒店餐饮 > LCD液晶TS12864-3显示器使用入门
lcd液晶ts12864-3显示器使用入门2007年08月19日星期日07:54P.M.LCD液晶TS12864-3显示器使用入门液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。随着科技的发展,液晶显示模块的应用前景将更加广阔。液晶显示(LCD)大体分为笔段型、字符型、点阵图形型等几大类。本文将介绍点阵图形型带汉字库的液晶显示器。ts12864-3液晶显示模块是采用控制芯片ST7920来控制显示的。该显示器能够使用串口和并口两种接线方式。并口可以选择4线和8线两种。ST7920是台湾矽创电子公司生产的中文图形控制芯片,它是一种内置128*64-12汉字图形点阵的液晶显示控制模块,用于显示汉字及图形。该芯片共内置8192个中文汉字(16*16点阵)、128个字符的ASCII字符库(8*16点阵)及64*256点阵显示RAM(GDRAM).为了能够简单、有效地显示汉字和图形,该模块内部设计有2MB的中文字型CGROM和64*256点阵的GDRAM绘图区域;同时,该模块还提供有4组可编程控制的16*16点阵造字空间;除此之外,为了适应多种微处理器和单片机接口的需要,该模块还提供了4位并行、8位并行、2线串行以及3线串行等多种接口方式。DDRAM为数据显示用的RAM(DataDisplayRAM,简称DDRAM),用以存放要LCD显示的数据,只要将标准的ASCII码放入DDRAM,内部控制线路就会自动将数据传送到显示器上,并显示出该ASCII码对应的字符。CGROM为字符产生器ROM(CharacterGeneratorROM,简称CGORM),它存储了192个5×7的点阵字型,但只能读出不能写入。CGRAM为字型、字符产生器的RAM(CharacterGeneratorRAM,简称CGRAM),可供使用者存储特殊造型的造型码,CGRAM最多可存8个造型。IR为指令寄存器(InstructionRegister,简称IR),负责存储MCU要写给LCD的指令码,当RS及R/W引脚信号为0且Enable引脚信号由1变为0时,D0~D7引脚上的数据便会存入到IR寄存器中。DR为数据寄存器(DataRegister,简称DR),它们负责存储微机要写到CGRAM或DDRAM的数据,或者存储MCU要从CGRAM或DDRAM读出的数据。因此,可将DR视为一个数据缓冲区,当RS及R/W引脚信号为1且Enable引脚信号由1变为0时,读取数据;当RS引脚信号为1,R/W引脚信号为0且Enable引脚信号由1变为0时,存入数据。BF为忙碌信号(BusyFlag,简称BF),当BF为1时,不接收微机送来的数据或指令;当BR为0时,接收外部数据或指令,所以,在写数据或指令到LCD之前,必须查看BF是否为0。AC为地址计数器(AddressCounter,简称AC),负责计数写入/读出CGRAM或DDRAM的数据地址,AC依照MCU对LCD的设置值而自动修改它本身的内容。1、当要显示文本内容时,只要把数据写到文本显示RAM中,即DDRAM中,控制芯片就会自动的控制显示。流程如下:①设定工作模式。②再检测忙信号。③再传送数据。ST7920的文本显示RAM中提供了8个×4行的汉字空间,当对文本显示RAM进行写入时,可以分别显示CGROM、HCGROM与CGRAM的字型;ST7920A可以显示三种字型,分别是半宽的HC-GROM字型、CGRAM字型及中文CGRAM字型。三种字型的选择可通过在DDRAM中写入编码来进行设定,各种字型的详细编码如下:显示半宽字型:将一位字节写入DDRAM中,范围为02-7FH的编码。显示CGRAM字型:这种字型可通过将两个字节的编码写入DDRAM中来实现,总共有0000H、0002H、0004H、0006H四种编码方式。显示中文字形:将两字节编码写入DDRAM,范围为A1A0H~F7FEHGB码或A140H-D75FHBIG5码的编码。2、在显示图片时,只要将数据送入图片显示RAM中,即GDRAM中,控制芯片就会自动控制显示。绘图显示RAM提供128*8个字节的存储空间,在更改绘图RAM时,先连续写入水平与垂直的坐标值,再将两个字节的数据写入绘图RAM,地址计数器(AC)会自动加1;在写入绘图RAM期间,绘图显示必须关闭,写入绘图RAM的步骤如下:①关闭绘图显示功能。②将水平的位元组坐标(X)写入绘图RAM地址;③将垂直的坐标(Y)写入绘图RAM地址;④将D15-D8数据写入GDRAM中;⑤将D7-D0数据写入GDRAM中;⑥打开绘图显示功能。系统上电后,只要进行初始化设定,便按照指令集来设定工作。程序简单。指令集有两种:基本指令集和扩展指令集,只要通过指令集功能设定指令中的RE来选择即可。只要选中,下面的指令都是该指令集中的指令,否则需要再次设定指令集。指令请参考相关的使用说明书,不再赘述。下面是一个例子:RSEQUP2.0RWEQUP2.1EEQUP2.2PSBEQUP2.3RSTEQUP2.5;-----------------------------------------------LCD_XEQU30HLCD_YEQU31HCOUNTEQU32HCOUNT1EQU33HCOUNT2EQU34HCOUNT3EQU35H;-----------------------------------------------LCD_DATAEQU36HLCD_DATA1EQU37HLCD_DATA2EQU38HSTOREEQU39H;-----------------------------------------------ORG0000HLJMPMAINORG0100H;-----------------------------------------------MAIN:MOVSP,#5FHCLRRST;复位LCALLDELAY4SETBRSTNOPSETBPSB;通讯方式为8位数据并口;********************初始化**********************LGS0:MOVA,#34H;34H--扩充指令操作LCALLSEND_IMOVA,#30H;30H--基本指令操作LCALLSEND_IMOVA,#01H;清除显示LCALLSEND_IMOVA,#06H;指定在资料写入或读取时,光标的移动方向LCALLSEND_I;DDRAM的地址计数器(AC)加1MOVA,#0CH;开显示,关光标,不闪烁LCALLSEND_I;===============================================;显示汉字和字符;加入80ms的延时,使你能够看清楚显示的过程;根据汉字显示坐标写入(隔行写入);===============================================HAN_WR2:LCALLCLEAR_PHAN_WR2A:MOVDPTR,#TAB1A;显示汉字和字符MOVCOUNT,#10H;地址计数器设为16。这十六个数对应着八个字,每两个组元一个数。MOVA,#80H;第一行起始地址LCALLSEND_ILCALLQUSHUHAN_WR2B:MOVDPTR,#TAB1B;显示汉字和字符MOVCOUNT,#10H;地址计数器设为16。MOVA,#90H;第二行起始地址LCALLSEND_ILCALLQUSHUHAN_WR2C:MOVDPTR,#TAB1C;显示汉字和字符MOVCOUNT,#10H;地址计数器设为16。MOVA,#88H;第三行起始地址LCALLSEND_ILCALLQUSHUHAN_WR2D:MOVDPTR,#TAB1D;显示汉字和字符MOVCOUNT,#10H;地址计数器设为16。MOVA,#98H;第四行起始地址LCALLSEND_ILCALLQUSHULCALLDELAY3LCALLFLASHLCALLCLEAR_P;===============================================FLASH:MOVA,#08H;关闭显示LCALLSEND_ILCALLDELAY5MOVA,#0CH;开显示,关光标,不闪烁LCALLSEND_ILCALLDELAY5MOVA,#08H;关闭显示LCALLSEND_ILCALLDELAY5MOVA,#0CH;开显示,关光标,不闪烁LCALLSEND_ILCALLDELAY5MOVA,#08H;关闭显示LCALLSEND_ILCALLDELAY5RET;==================================================;清屏;==================================================CLEAR_P:MOVA,#01H;清屏LCALLSEND_IMOVA,#34HLCALLSEND_IMOVA,#30HLCALLSEND_IRET;==================================================;查表取数据送显示;==================================================QUSHU:CLRAMOVCA,@A+DPTR;查表取数据LCALLSEND_D;送显示INCDPTRLCALLDELAY4;延时80ms,DJNZCOUNT,QUSHURET;===============================================;写数据子程序;RS=1,RW=0,E=高脉冲,D0-D7=数据;===============================================SEND_D:LCALLCHK_BUSY;写数据子程序SETBRSCLRRWMOVP0,ASETBENOPNOPCLRERET;===============================================;写指令子程序;RS=0,RW=0,E=高脉冲,D0-D7=指令码;===============================================SEND_I:LCALLCHK_BUSYCLRRSCLRRWMOVP0,ASETBENOPNOPCLRERET;================================================;读数据子程序;RS=1,RW=1,E=H,D0-D7=数据;================================================READ_D:LCALLCHK_BUSY;读数据子程序SETBRSSETBRWSETBENOPMOVA,P0CLREMOVSTORE,ARET;================================================;;测忙碌子程序;RS=0,RW=1,E=H,D0-D7=状态字;================================================CHK_BUSY:MOVP0,#0FFH;测忙碌子程序CLRRSSETBRWSETBEJBP0.7,$CLRERET;================================================;延时子程序;================================================DELAY3:MOVR5,#16HDEL31:MOVR6,#0FFHDEL32:MOVR7,#0FFHDEL33:DJNZR7,DEL33DJNZR6,DEL32DJNZR5,DEL31RETDELAY2:MOVR6,#0CHDEL21:MOVR7,#18HDEL22:DJNZR7,DEL22DJNZR6,DEL21RETDE
本文标题:LCD液晶TS12864-3显示器使用入门
链接地址:https://www.777doc.com/doc-346454 .html