内置控制器型液晶显示模块的应用T6963.docx
T6963C液晶显示驱动控制器在中规模图形液晶显示模块中,内置T6963C控制器的液晶显示模块是目前较为常用的品种较多的内置控制器型图形液晶显示模块。本章将以香港精电公司的液晶显示模块MGLS240128T为实例,说明内置T6963C控制器型液晶显示模块的应用。第一节内置T6963C控制器型图形液晶显示模块的电路特性内置T6963C控制器型液晶显示模块的驱动控制系统是由液晶显示控制器T6963C及其周边电路,行驱动器组,列驱动器组以及液晶驱动偏压电路组成。从模块的外接口考察模块的电路特性,实际上就是T6963C的电路特性。T6963C的最大特点是具有独特的硬件初始值设置功能,显示驱动所需的参数如占空比系数,驱动传输的字节数/行及字符的字体选择等均由引脚电平设置,这样T6963C的初始化在上电时就已经基本设置完成,软件操作的主要精力就可以全部用于显示画面的设计上了。这就是T6963C广泛应用于内置控制器型的液晶显示模块的原因。T6963C接口操作时序第二节内置T6963C控制器型图形液晶显示模块的软件特性由于T6963C使用了硬件初始化设置,所以使得其指令功能集中于显示功能的设置上,从而加强了T6963C的显示控制能力。T6963C指令的运行时间有些是不能确定的,这是因为有些指令的运行要受到当时控制部的状态影响。在T6963C指令中有的指令需要参数的补充,如地址指针的设置。T6963C指令参数的输入是在指令代码写入之前,如在上一节的接口部中所述。为此T6963C的指令写入的流程图如图所(-ct)1二ZI«si.sowsI(»»KAO)1-T-,7di写敷场通道IRS.S0ttI(>Aa)PI敷DaN入敷一遍道一T,IS1,SO状¾,IiI指令代码/人指令通道I(示。如果在带有参数的指令代码写入之前,写入多于该指令参数的数据,那么T6963C认可最近写入的数据为该指令的参数。T6963C的指令表如下:指令名称控制状态CDRDWR指令代码D7D6D5D4D3D2DlDO参数量运行时间读状态字101S7S6S5S4S3S2SlSO无地址指针设置11000100N2NlNO2状态检测显示区域设置110010000NlNO2状态检测显示方式设置1101000CGN2NlNO无32xlFosc显示状态设置1101001N3N2NlNO无32xlFosc光标形状设置11011000N2NlNO无32xlFosc数据自动读写设置110101100NlNO无32xlFosc数据一次读写设置11011000N2NlNO132xlFosc屏读(一字节)设置11011100000无状态检测屏拷贝(一行)设置11011101000无状态检测位操作1101111N3N2NlNO无状态检测数据写操作010数据无状态检测数据读操作001数据无状态检测T6963C指令的详细说明如下。读状态字(STATUSREAD)S7S6S5S4S3S2SlSOT6963C的状态字由七位标志位组成,它们是:SO(STAO)指令读写状态1:准备好0;忙Sl(STAl)数据读写状态1:准备好0:忙S2(STA2)数据自动读状态1:准备好0;忙S3(STA3)数据自动写状态1:准备好0:忙S4(STA4)未用S5(STA5)控制器运行检测可能性1:可能0:不能S6(STA6)屏读/屏拷贝出错状态1:出错0:正确S7(STA7)闪烁状态检测1:显示0:关显示这七个标志位各有各的应用场合,并非同时都有效。在计算机写指令或一次读/写数据时,SO和Sl要同时有效,即“准备好”状态;当计算机使用自动读/写功能时,S2或S3将取代SO和Sl作为忙标志位,此时计算机就要判别它是否有效;S6标志是考察T6963C屏读或屏拷贝指令执行情况的标志位。S5和S7表示控制器内部运行状态,在T6963C的应用上不会使用它们。对T6963C的软件操作每一次之前都要进行判“忙”。只有仅有在不“忙”的状态下计算机对T6963C的操作才有效。地址指针设置(REGISTERSET)00100N2NlNO该指令为双参数(DI,D2)指令。指令代码中的N2,NI,NO取值“1”为有效,“0”为无效,而且不能同时为“1”,根据N的取值,该指令有三种含义,如下表所示。DlD2指令代码功能水平位置(低7位有效)垂直位置(低5位有效)21H(NO=I)光标地址设置偏置地址(低5位有效)00H22H(Nl=I)CGRAM偏置地址设置低字节高字节24H(N2=l)显示地址设置1 .光标地址设置D1-D2-21HT6963C的光标控制是独立于显示地址控制的,它专门有一个光标指针寄存器存放当前的光标地址,而且光标地址不会自动修改。该指令设置或称修改了光标在显示屏上的位置。光标的地址以二维坐标形式,以字符为单位设置。水平方向的位置由DI参数确定,取值范围在00H4FH(l80字符位),表示显示屏左起第几个字符位;垂直方向由D2参数确定,取值范围在00HIFH(132字符行),表示显示屏上起笫几个字符行。光标在双屏结构的显示屏上的垂直方向位置的规定为上半屏为OOHOFH,下半屏为1OH1FH.这个规定不考虑显示屏的实际点行数。2 .CGRAM偏置地址设置D1-D2-22HT6963C可以管理2K的CGRAMo在显示存储器内要划出2K的区域作CGRAM使用,只需确定16位地址的高5位(adl5adll)即可。CGRAM偏置地址寄存器就是用来存储这个地址值的。用户可以通过将这个寄存器的内容与自定义字符代码值组合出显示存储器中该字符字模数组所在的首地址:adl5adl4ad13adl2adlladlad9ad8ad7ad6ad5ad4ad3ad2adlad-一偏置地址值(5位)-一字符代码值(8位)-H000ad2ad从0至7指向将该字符8个字节的字模。偏置地址的设置由参数DI的低5位值来实现,D2设置为OOH。例如:指令03H-OOH-22H设置字符代码为80H。那么该字符字模组在显示存储器的首地址为ICOOHo字模存放在IeOOH1CO7H单元内。3 .显示地址设置D1-D2-24H该指令将计算机所要访问的显示存储器的地址写入T6963C的地址指针计数器中。该地址指针计数器为16位字长,需要两个字节。Dl为低8位地址,D2为高8位地址。显示区域设置(CONTROLWORDSET)010000NlNO该指令是双参数指令,它将在显示存储器内划分出各显示区域的范围。它是由设定显示区域的首地址和宽度来确定该显示区域的范围,同时也确定了显示存储器单元与显示屏上各点像素的对应关系。该指令中NI,M)有四种组合,每个组合有不同的含义。具体功能如下表所示。NlN2DlD2指令代码功能00低字节高字节40H文本显示区首地址01字节数OOH41H文本显示区宽度10低字节高字节42H图形显示区首地址11字节数OOH43H图形显示区宽度1 .文本显示区首地址设置D1-D2-40H该指令设置了文本显示区在显示存储器中的起始地址。该地址对应显示屏上左上角的第一个字符位(home)。定时间定间隔地修改这个地址将会产生显示画面的平滑滚动。参数Dl为该地址的低8位,D2为该地址的高8位。2 .文本显示区宽度设置D1-00H-41H该指令规定了在文本显示区中作为一行显示所占的单元(字节)数。该数据与文本显示首地址一起确定了显示单元与显示屏上各点像素的对应关系。比如设文本显示区首地址为SAD,文本显示区宽度为CR,n为字符位数,则文本显示单元与显示屏上字符位的对应关系如下图所示。字符行12n字符位SADSAD+1SAD+CR-1SAD÷CRSAD+CR+1SAD+2CR-1图文本显示单元与显示屏上字符位的对应关系当设置的显示区宽度超过了实际显示屏上显示所需的单元数,那么超出的部分不显示。但是要注意的是这里使用软件设置的显示区域宽度仅是T6963C作为计算每行显示数据传输的起始单元地址的参数,实际传输的字节数已由硬件引脚设置完成。比如MGLS240128T模块,通常为了计算地址方便,设立文本显示区域宽度为20H(32字节),但T6963C实际一行传输数据为40个字节,也就是说T6963C将所设置的下一行单元的数据也作为这一行的数据传输了,只是由于屏点阵数小于所传输的数据量不显示而己。但是T6963C在传输下一行数据时要使用这个宽度参数计算起始单元的地址,如上图所示那样。3 .图形显示区首地址设置DID242H该指令设置了图形显示区在显示存储器中的起始地址。该地址对应显示屏上左上角的第一个8点列像素(home)。一个水平8点像素作为一个像素组由一个字节表示。定时间定间隔地修改这个地址将会产生显示画面的平滑滚动。参数Dl为该地址的低8位,D2为该地址的高8位。4 .圆形显示区宽度设置D1-00H-43H该指令规定了在图形显示区中作为一行显示所占的单元(字节)数。该数据与图形显示首地址一起确定了显示单元与显示屏上各像素组(字节)的对应关系。比如设图形显承区首地址为SAD,图形显示区宽度为CR,n为像素点数,则图形显示单元与显示屏上像素组的对应关系如下图所示。点12.n/8像素组行118916.n-8n像素点SADSAD÷1SAD+CR-1SAD+CRSAD+CR+1SAD+2CR-1图图形显示单元与显示屏上显示像素的对应关系当设置的显示区宽度超过了实际显示屏上显示所需的单元数,那么超出的部分不显示。但是要注意的是这里使用软件设置的显示区域宽度仅是T6963C作为计算每行显示数据传输的起始单元地址的参数,实际传输的字节数已由硬件引脚设置完成。比如UGLS240128T模块,通常为了计算地址方便,设置文本显示区域宽度为20H(32字节),但T6963C实际一行输数据为40个字节,也就是说T6963C将所设置的下一行单元的数据也作为这一行的数据传输了,只是由于屏点阵数小于所传输的数据量不显示而已。但是T6963C在传输下一数据时要使用这个宽度参数计算起始单元的地址,如上图所示那样。显示方式设置(MODESET)1000CGN2NlNO该指令为显示方式的设置,无参数。它的几个设置位功能如下:CG位字符发生器选择位。当CG=O时,启用内部字符发生器CGR0M,该字符库有128种字符,其代码为OOH7FH;同时可以建立128种8X8点阵的自定义字符发生器CGRAM,其字符代码规定在80HFFH范围内;当CG=I时,禁止内部CGROM,字符显示完全取自自定义字符发生器CGRAM,该字符库为2K字节容量,字符代码为OOHFFH,N2,NI,NO位为显示方式设置位,它们的组合所产生的显示方式如下表所示。N2NlNO显示方式说明000逻辑“或”文本与图形以逻辑“或”的关系合成显示001逻辑“异或”文本与图形以逻辑“异或”的关系合成显示011逻辑“与”文本与图形以逻辑“与”的关系合成显示100文本属性文本显示特征以双字节表示在设置了文本属性显示方式后,图形显示区将转换成文本属性区,用于存储字符的属性代码,其地址与显示屏上的对应关系与文本显示区相同。因此在显示屏上某位置上显示的字符是由双字节数据组成,第一字节为字符代码存储在文本显示区内,第二字节为属性代码存储在文本属性区内。这种表示方法与计算机的字符显示数据相似。在文本属性显示方式下,宇符的属性代码由一字节的低4位组成:D7D6D5D4D3D2DlDOXXXXD3D2DlDO其中D3位是字符闪烁控制位。D3=0为不闪烁;D3=l为闪烁。D2-D0组合功能如下表所示。D2DlDO显示效果000正向显示001负向显示011禁止显示(正向)100禁止显示(负向)显示状态设置(DISPLAYMODE)1001N3N2NlNO该指令设置了当前的显示状态,无参数。该指令有4个设置位,每一位都代表一种显示状态的设置,它们可以同时有效,也可以部分有效,也可以都无效。这4个设置位的功能如下:NO光标闪烁设置开关NO=I为启用光标闪烁;N=O为禁止光标闪烁。Nl光标显示设置开关NO=I为启用光标显示;N=O为禁止光标显示。N2文本显示设置开关NO=I为启用文本显示;N=O为禁止文本显示。N3图形显示设置开关NO=I为启用图形显示;N=O为禁止图形显示。在文本显示与图形显示合成显示时,文本显示开关与图形显示开关应同时启用,在文本属性显示方式下,图形显示开关也应启用,只是特性不同。光标显示及光标闪烁功能的启用要在文本显示启用时进行,否则无效。光标形状设置(CURSORPATTERNSELECT)10100N2NlNO该指令设置光标的显示形状。无参数补充。在指令中的三个设置位设置了光标点数。光标是以8点列XN行,行的取值由设置位N2,NI,No组合完成。数据自动读写设置(DTUTOREADWRITE)1()110()NlNO使用该指令将进入或退出数据的自动读或自动写方式。在自动读或自动写方式中,计算机可以连续地将显示数据写人显示存储器中或从显示存储器中谈取数据。在每次读或写的操作后,显示地址自动加一。进入自动读方式或自动写方式时,状态位将由S2(自动读方式)或S3(自动写方式)代替Sl和SOo在自动读或自动写方式完成时要输入退出自动读写方式指令。在自动读写方式中写入其他指令都是无效的。该指令中有两位设置位NI,NO0这两位将产生三个子指令,如下表所示。NlNO指令代码功能00BOH进入自动写方式01BlH进入自动读方式11B2H/B3H退出自动读写方式数据一次读写设置(DATAREADWRITE)格式DlI1I1I0I0I0IN2INlINO该指令是一次读写数据操作指令。在每次读写数据操作后,显示地址都要根据指令代码的设置而修正:加一,减一或不变。该指令在写入数据时,所带的一个参数就是所要写入的显示数据。当读数据操作时,该指令不带参数,直接写入指令代码,T6963C在接收到该指令后将当前显示地址计数器所指的显示存储器单元的内容送入接口部的数据栈内,紧接着计算机的读数据操作将其读出。该指令有三个设置位N2,NI,NO(见下表)。它们的组合功能如下。参数DlN2NlNO指令代码功能数据000COH数据写,地址加-001ClH数据读,地址加一数据010C2H数据写,地址减一011C3H数据读,地址减一数据100C4H数据写,地址不变101C5H数据读,地址不变屏读(一字节)设置(SCREENPEEK)11100000所谓屏读是指把显示屏上显示的内容取出来作为数据提供给计算机使用,这个内容为一个字节的当前显示数据,它有可能是图形显示数据,也可能是文本显示的某一个字符上的某一行的字模数据,更多的是文本与图形合成显示的内容。屏读指令将使计算机能够直接获得显示屏上的数据,这是其他控制器所没有的功能。屏读指令要求当前显示地址指针指在图形显示区内,所以屏读指令只能在图形显示功能有效时才能使用。在屏读指令写入后要立即检查状态S6,判断该指令执行是否正确。如果执行正确,就可以读取数据。该指令为无参数指令。不能应用在文本属性显示方式下。由于屏读操作所得的数据是由T6963C驱动部数据合成后反馈产生的,所对应的单元地址与硬件引脚设置窗口长度有关,所以要求显示区域宽度的软件设置与硬件显示数据传输量设置端MD3,MD2所设置的显示窗口长度相同才能正确的计算出对应单元的地址,屏读出正确的数据来。屏拷贝(一行)设置(SCREENCOPY)11101000所谓屏拷贝是指把显示屏上的某行显示的内容取出来作为图形显示数据返写回图形显示区相应的显示单元内,这个内容为一行数个字节的当前显示数据,它有可能是图形显示数据,也可能是文本显示的某一个字符上的某一行的字模数据,更多的是文本与图形合成显示的内容。屏拷贝功能将当前显示屏上的显示内容拷贝到图形显示区内作为计算机的处理使用。这是其他控制器所没有的功能。屏拷贝指令要求当前显示地址指针指在图形显示区内,所以屏拷贝指令只能在图形显示功能有效时才能使用。在屏拷贝指令写入后要立即检查状态S6,判断该指令执行得是否正确。如果执行正确,就可以读取数据。该指令为无参数指令。不能应用在文本属性显示方式下,也不能应用在双屏结构的液晶显示器件的控制上。由于屏拷贝操作所得的数据是由T6963C驱动部数据合成后反馈产生的,所对应的单元地址与硬件引脚设置窗口长度有关,所以要求显示区域宽度的软件设置与硬件显示数据传输量设置端MD3,MD2所设置的显示窗口长度相同才能正确的计算出对应单元的地址,屏拷贝出正确的数据来。位操作(BITSETRESET)1111N3N2NlNO该指令可以对当前显示地址指针所指的显示单元中的数据的任一位写“0”或写“1”。操作应由N2,NI,NO确定,它们取值在。7之间,对应着数据的DOD7位。N3为写入的数据,是“1”表示该位将置“1”;是“0”表示该位将清“0”。该指令一次仅能操作一位。该指令无参数。数据写操作(DATAWRITE)格式数据数据写操作是向数据通道里写数据,指令的参数也同样是这样操作。一次写数据或参数时,该数据将写入到数据栈中,再由紧接着写入的指令代码决定将该数据是作为数据写入当前的显示地址指针所指的单元内,还是作为参数写入相应的寄存器中。数据读操作(DATAREAD)格式数据数据读操作是从数据通道中读取数据。在一次读数据操作时,读数据指令的写入将当前显示地址指针所指的单元的数据取出写入数据栈中,读数据操作将该数据提出送入数据总线上供计算机获取。在自动读操作时连续的读操作将连续地从显示存储器内读取数据,显示地址将自动加一。第三节内置T6963C控制器的液晶显示模块的接口技术内置T6963C控制器的液晶显示模块与计算机的接口时序为InteI8080时序。本节以常用的单片机8031为实验样机,以模块MGLS240128T为显示样片叙述计算机与内置T6963C控制器的液晶显示模块的接口技术。一、直接访问方式直接访问方式是把内置T6963C控制器的液晶显示模块作为存储器或I/0设备直接挂在计算机的总线上。模块的数据线接计算机的数据总线上,片选及寄存器选择信号线由计算机的地址总线提供,读和写操作由计算机的读写操作信号控制。计算机直接访问方式下与内置T6963C控制器的液晶显示模块的实用接口电路如下图所示。在图中使用了地址线A8作为模块的寄存器选择线C/D,使用地址线A15作为模块操作的片选线;模块的VO端所接的电位器是作为液晶驱动电源的调节器,调节显示的对比度。图直接访问方式下接口电路图直接访问方式的驱动程序如下:DATlEQU30H;第一参数单元DT2EQU31H;第二参数/数据单元COMEQU32H;指令代码单元C_ADDEQU8100H:指令通道地址D_ADDEQU8000H;数据通道地址:直接访问方式驱动子程序:读状态字子程序R_ST:MOVDPTR,#C_ADD;设置指令通道地址MOVXA,DPTRRET;判状态位SI,SO子程序(读写指令和读写数据状态)ST01:LCALLJNBJNBRETR_STACC.0,STOlACC.1,STOl判状态位S2子程序ST2:LCALLJNBRET(数据自动读状态)R_STACC.2,ST2判状态位S3子程序(数据自动写状态)ST3:LCALLR_STJNBACC.3,ST3RET;判状态位S6子程序(屏读/屏拷贝状态)ST6:LCALLR_STJBACC.6,ERRRETERR:LJMPST6;出错处理程序;写指令和写数据子程序PR1:LCALLMOVLCALLSTOlA,DATlPR13;双字节参数指令写入入口;取第一参数单元数据;写入参数PR11:LCALLSTOl;单字节参数指令写入入口MOVA,DAT2;取第二参数单元数据LCALLPR13;写入参数PR12:LCALLSTOl;无参数指令写入入口MOVA,COM;取指令代码单元数据LJMPPR14;写入指令代码PR13:MOVDPTR,#D_ADD;设置数据通道地址/数据写入入口PR14:MOVXRET读数据子程序DPTR,A;写入操作PR2:LCALLSTOl;判状态位MOVDPTR,#D_ADD;设置数据通道地址MOVXA,DPTR;读数据操作MOVDAT2,A;数据存入第二参数/数据单元RET二、间接控制方式间接控制方式是将内置T6963C控制器的液晶显示模块与计算机系统中的某个并行I/0接口连接,计算机通过对该I/0接口的操作间接的实现对模块的控制。间接控制方式在硬件电路上需要一个8位并行接口(如8031的Pl口)与模块的数据线连接,作为数据总线,还需要一个3位并行接口作为时序控制信号线如8031的P3.2作为C/D,P3.3作为WR,以及P3.4作为RD。由于使用了专用的并行接口连接模块,而且该并行接口自身在计算机系统中有相应的片选地址,所以模块的片选信号可以直接接地作选通态,间接控制方式的接口电路与时序无关,时序完全靠软件编程实现。计算机间接控制方式下与内置T6963C控制器的液晶显示模块的实用接口电路如下图所示。模块的VO端所接的电位器是作为液晶驱动电源的调节器,调节显示的对比度。图间接控制方式下的接口电路图渔9 31苦CDEQUP3.2:通道选择信号WREQUP3.3;写操作信号RDEQUP3.4;读操作信号间接控制方式驱动子程序读状态字子程序R_ST:MOVPb #0FFH:Pl 口置 “1”SETBCD;CD=ICLRRD;RD=OMOVA, Pl:读操作SETBRD;RD=IRET写指令和写数据子程序PR1:LCALLSTOl;双字节参数指令写入入口MOVA, DATl;取第一参数单元数据LCALLPR13:写入参数PR11:LCALLSTOl:单字节参数指令写入入口MOVA, DAT2:取第二参数单元数据LCALLPR13;写入参数PR12:LCALLSTOl:无参数指令写入入口MOVA, COM;取指令代码单元数据LJMPPR14;写入指令代码PR13:CLRCD;C D=0数据写入入口PR14:MOVPb A:设置数据CLRWR;WR=OSETBWR;WR=IRET间接控制方式的驱动程序如下:;读数据子程序PR2:LCALLSTOl判状态位CLRCDC/D=OMOVPl,#0FFHPl口置itCLRRDRD=OMOVA,Pl读取数据SETBRDRD=IMOVDAT2,A数据存入第二参数/数据单元RET第四节内置T6963C控制器型图形液晶显示模块的应用软件本节以MGLS240128T为例屏,应用上一节接口电路及驱动程序,列举一些应用程序,在软件编程方面进一步对内置T6963C控制器的液晶显示模块的使用作一说明,并对一些指令的使用特性提供演示程序,供使用者参考。示例一初始化设置子程序初始化设置主要是对显示区域的设置和显示方式的设置。这个程序只需在主程序对系统初始化时调用一次就可以了,除非要在应用中需要改变设置。初始化子程序清单如下:INT:MOVDATb#00H;设置文本显示区域首地址MOVDAT2,#00HMOVCOM,#40HLCALLPRlMOVDATl,#20H;设置文本显示区域宽度MOVDAT2,#00H:即一行显示所占字节数MOVCOM,#41HLCALLPRlMOVDATb#00H;设置图形显示区域首地址MOVDAT2,#08H;或为文本属性区域首地址MOVCOM,#42HLCALLPRlMOVDATl,#20H;设置图形显示区域宽度MOVDAT2,#00H;或为文本属性区域宽度MOVCOM,#43H;即一行显示所占字节数LCALLPRlMOVCOM,#0A7H;光标形状设置LCALLPR12MOVCOM,#80H;显示方式设置逻辑“或”合成LCALLPR12MOVCOM,#9CH;显示开关设置开文本和图形显示LCALLPR12RET需要说明的是为了计算地址的方便,设置显示区域的宽度为20H初始化子程序通常在主程序开始时调用。如:ORLP3,#1CH;间接控制方式控制线初始化LCALLINT初始化完成后,开文本和图形显示。此时调整对比度电压,显示屏上将因显示存储器上电时的随机数据而显示出随机的图形和字符。以此可以验证接口电路和驱动程序的正确性。示例二清显示存储器子程序该子程序对显示存储器完全清零,不分显示区域性质。所以在初始化时使用和在全显示存储器需要清零时使用。另外该程序也可以作为接口电路及驱动程序的调试使用,将写入的数据不为“0”,即可以观察显示效果。CLEAR:MOVDATb#00H;设置显示存储器首地址MOVDAT2,#00HMOVCOM,#24HLCALLPRlMOVR3,#00H;设置循环量(8K字节)MOVR4,#20HMOVCOM,#0BOH;设置自动写方式LCALLPR12CLEARhLCALLST3;判状态位S2MOVA,#00H;置数据“0”LCALLPR13;写入数据DJNZR3,CLEARl;循环DJNZR4,CLEARlMOVCOM,#0B2H;设置自动写结束指令LCALLPR12RET示例三建立CGRAM子程序(地址设定在代码为80H起处)该程序是在内部CGROM有效时建立CGRAM的子程序,所以使用的字符代码是从80H开始的。子程序有一个参数为COUNT,它用于设置写入8X8点阵字符的字模的个数。如果是汉字字模,那么一个汉字字模就需要4个8X8点阵字符字模组合。子程序如下:COUNTEQU34H;西文字符(8X8点阵)个数CGRAM:MOVDATb#03H;设置CGRAM偏置地址MOVDATA2,#00HMOVCOM,#22HLCALLPRlMOVDATb#00H;设置存储器地址指针MOVDAT2,#1CHMOVCOM,#24HLCALLPRlMOVCOM,#0BOH;设置自动写方式LCALLPR12MOVA,COUNT;计算写入的字节数MOVB,#08HMULABMOVCOUNT,A;计算器低8位数据INCB;计算器高8位数据MOVDPTR,#CGTAB;取字符库首地址PUSHDPH;存字符库指针PUSHDPLCGRAM1:LCALLST3;判自动写状态位POPDPL;取字符库指针POPDPHCLRAMOVCA,A+DPTR;取数据INCDPTR;字符库指针加一PUSHDPH;存字符库指针PUSHDPLLCALLPR13;写入数据DJNZCOUNT,CGRAMl;计数循环DJNZB,CGRAMlMOVCOM,#0B2H;写入结束自动写指令LCALLPR12POPACC;修正栈指针POPACCRET建立CGRAM的步骤1 .在程序区内建立汉字字模表CGTAB;2 .汉字代码定义(以“清”=80H为例)80H汉字代码(表示汉字左上半部字模代码)81H隐含代码(表示汉字左下半部字模代码)82H隐合代码(表示汉字右上半部字模代码)83H隐合代码(表示汉字右下半部字模代码)3 .写入两个汉字的字模数据,设置COUNT值为8;4 调用CGRAM子程序MOVCOUNT,#08HLCALLCGRAMSJMP$CCTAB:DB000H,040H,037H,010H,083H,060H,02FH,008H;清=80DB013H,022H,0E3H,022H,023H,022H,022H,022HDB040H,048H,OFCH,040H,0F8H,040H,OFEH,008HDBOFCH,008H,0F8H,008H,0F8H,008H,028H,OlOHDB004H,004H,008H,008H,018H,029H,04AH,008H;华=84DB009H,001H,OFFH,001H,001H,001H,001H,OOlHDB040H,048H,058H,060H,OCOH,040H,044H,044HDB03CH,000H,OFEH,000H,000H,000H,000H,000H注:这里提供的汉字字模数据表是应用清华蓬远公司提供的汉字字模提取程序PlCKHZB.EXE建立的。汉字字模排列格式为第116字书为汉字左半部分自上而下排列的字符数据,第1732字节为汉字右半部分自上而下排列的字模数据。示例四汉字写入子程序(文本方式)在文本方式下显示汉字,首先要建立汉字CGRAM(如上一例所示),要定义汉字代码。在文本方式下写汉字需要写入4个代码以组成一个汉字,子程序如下:CODEEQU33H;汉字字符代码0_YEQU35H;Y坐标(0_15)0_XEQU36H;X坐标(0_29)WRI_CT:MOVA,0_Y;计算显示RAM地址MOVB,#20HMULABADDA,0_XMOV0_X,AMOVDATbAMOVA,BADDCA,#00H;文本显示区首地址为OOOOHMOV0_Y,AMOVDAT2,A;设置显示RAM地址MOVCOM,#24HLCALLPRlMOVA,CODE;取汉字代码MOVDAT2,A;写入左上半部汉字代码MOVCOM,#OCOHLCALLPRllMOVA,CODEADDA,#02HMOVDAT2,A;写入右上半部汉字代码LCALLPRllMOVA,#20H;显示RAM地址修正ADDA,0_XMOVDATbACLRAADDCA,0_YMOVDAT2,AMOVCOM,#24H;设置显示RAM地址LCALLPRlMOVA,CODEINCAMOVDAT2,A;写入左下半部汉字代码MOVCOM,#OCOHLCALLPRllMOVA,CODEADDA,#03HMOVDAT2,A;写入右下半部汉字代码LCALLPRllRET文本方式下汉字显示演示程序:MOVCODE,#80HMOV0_X,#03HMOV0_Y,#02HLCALLWRI_CTMOVCODE,#84HMOV0_X,#07HMOV0_Y,#02HLCALLWRI_CT示例五汉字写入子程序(图形方式)在图形方式下显示汉字是比较常用的方法。汉字库作在程序区内,按排序定义各汉字的代码。写入汉字字模如同写入图形数据一般,这里提供单字节汉字代码使用的汉字写入子程序。CODEEQU33H