版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第9章章 液晶显示控制系统设计实例液晶显示控制系统设计实例Proteus实例教程实例教程 常用的液晶显示器有两种,一种是“Alphanumeric LCDs”,只能显示字符和数字;另一种是“Graphical LCDs”,既能显示字符和数字,又能显示汉字和图形。液晶显示器由液晶显示屏及控制器两部分组成,不同的液晶显示器所对应的控制器不尽相同。 本章主要介绍字符液晶显示器(HD44780控制器)和图形液晶显示器(T6963C控制器)的工作原理和汉字显示控制实例。通常,控制器和液晶屏制作在一起。弄清液晶显示控制器的工作原理是应用液晶显示器的第一个步骤。本章主要内容本章主要内容9.1 HD4478
2、0的工作原理9.2 基于HD44780的液晶显示应用实例9.3 T6963C控制器的工作原理9.4 基于T6963C的汉字显示应用实例9.1 HD44780的工作原理的工作原理 HD44780是一种点阵字符液晶显示控制器,具有以下特点: (1) 内置CGROM字符发生器,含192个固定字符,可供用户显示调用。 (2) 内置CGRAM字符发生器,用户通过编写程序最多可设计8个自定义字符,存放其中,供显示调用。 (3) 内置DDRAM显示数据存储器,可以存放最多80个显示字符。把CGROM或CGRAM中的显示数据调入DDRAM,便可在显示屏上显示。DDRAM中的单元和显示屏的位置存在一一对应关系。
3、 (4) 自动复位上电功能。 (5) 双向8位或4位总线接口。 (6) 丰富的控制指令:清显存、光标位置设置、数据输入时光标或数据移位设置、开或关显示屏等。 HD44780的三个内存之间的关系如图9-1所示。 图9-1 HD44780内存之间的关系 其中,192个常用的字符和数字都存在CGROM中,需显示时由单片机把要显示字符的显示代码从CGROM中调出写入DDRAM,便可显示在LCD显示屏上;用户自定义的字符由用户编程先把自定义字符的点阵写入CGRAM,然后再从CGRAM中读出对应的显示代码,由单片机写入DDRAM便可显示了。 下面详细介绍HD44780的各项功能。 9.1.1 初始化初始化
4、 HD44780模块有两个寄存器,一个用来输入指令,另一个用来读写数据。指令用来告诉模块怎样存放或哪里存放数据。 如果模块上电时,上升沿时间满足图9-2所示的要求,则模块缺省执行内置的上电初始化程序。 (1) 清显存; (2) 功能设置(DL=1,8位接口;N=0,单行显示;F=0,57点阵字体); (3) 显示开关控制(D=0,关闭显示;C=0,关闭光标;B=0,字符闪烁关闭); (4) 输入方式设置(I/D=1,设DDRAM计数器为自动加1方式);DDRAM被选择。 上电之后,显示器将会忙大约15ms,用以模块内部初始化。 如果上电时,上升沿时间trcc不能满足图9-2中的要求,或系统有不
5、同于缺省设置的参数需求(如显示屏需双行显示等),则初始化程序必须从主机(比如单片机)发出。图9-2 内部初始化的供电时序需求 推荐初始化指令如下:(1) 单行显示,57点阵字体 30H,30H,06H,0EH,01H(十六进制)(2) 单行显示,510点阵字体 34H,34H,06H,0EH,01H(十六进制)(3) 双行显示,57点阵字体 38H,38H,06H,0EH,01H(十六进制) LCD初始化具体应用程序举例如下:INIT_LCD1: (初始化子程序)MOV A,#3CH; 送初始化指令到累加器,8位接口,双行显示, 510字体CALL WCOM ; 调指令写入子程序MOV A,#
6、0EH ; 送初始化指令到累加器,开显示,开光标,关字符 闪烁CALL WCOM ; 调指令写入子程序MOV A,#06H ; DDRAM计数器自动加1,数据输入时显示不移位CALL WCOM ; 调指令写入子程序MOV A,#01H ; 清显示,光标返回显示屏左上角CALL WCOM ; 调指令写入子程序RET ; 返回 为了确保初始化程序的执行,在调用初始化程序后,应调用一个15ms延时子程序。15ms的延时子程序如下,供读者参考: MOV R5,#10 CALL DELAYDELAY: MOV R6,#50D1: MOV R7,#100 DJNZ R7,$ DJNZ R6,D1 DJNZ
7、 R5,DELAY RET 9.1.2 四位总线操作四位总线操作 HD44780模块的数据线D0D7与主机接口可以选择8位或4位两种通讯方式,在初始化时指定。4位总线操作方式使用D4D7,D0D3悬空。8位十六进制代码或显示数据分两次传送,一次4位,高4位先传送。4位总线操作方式编程时比8位稍复杂,但可以节省主机资源,模块初始化时,按以下指令操作: 双行显示,57点阵字体: 28H,28H,06H,0EH,01H(十六进制) 9.1.3 显示存储器地址显示存储器地址 HD44780模块的显示RAM共可存放80个字符。如果显示内容不多于80个字符,显示屏上要显示的内容与显示RAM之间是一对一的映
8、射关系,显示内容取决于输入模式设置指令。 HD44780支持以下几种字符液晶显示屏: (1) 单行或双行16字符显示; (2) 四行16或20字符显示; (3) 四行40字符显示。 HD44780的显示存储器采用固定地址分配方案,即控制不同的液晶显示屏,采用不同的显存地址,而且显存地址不能由用户来改变。 下面以常用的字符液晶显示器1602C为例,来说明HD44780的显存地址分配。 表9-1是HD44780的一个四行16个字符的液晶显示屏所对应的显存地址表。 表9-1 HD44780 416显示屏DDRAM地址分配一览表 要想把一个字符显示在液晶屏的某个位置,只需要把该字符的显示代码送到该位置
9、所对应地址指向的DDRAM中去即可。比如,要把某个字符显示在屏幕的左上角位置,则把该字符的显示数据送到80H中去。 对于1602C来说,它是一个两行16字符的液晶显示器,显存地址的分配应该对应表9-1的前两行。即第一行的16个字符显示位置分别对应于DDRAM的80H8FH,第二行的16个字符显示位置分别对应于DDRAM的C0HCFH。显示一个字符时,应该先由主机通过8位或4位接口把显存地址以命令方式送出,再由主机通过8位或4位接口把显示字符代码以数据方式送出。 9.1.4 指令表指令表 HD44780模块有11条专用控制指令。认识各条指令的功能及用法,是使用液晶控制器HD44780的关键。 表
10、9-2是HD44780控制指令一览表。 查看指令表 9.1.5 读写时序读写时序 HD44780模块的读操作主要完成主机从模块内读取状态字或读取显示数据。只有主机判断HD44780处于不忙状态才能发送其他指令,如果主机与模块匹配较好或模块运行速度快时,也可以不进行判断操作。写操作主要完成主机向HD44780进行指令传送或显示数据传送。图9-3是HD44780的写操作时序。图9-3 HD44780的写操作时序图读写操作读写操作一定要按一定要按照照HD44780内部的读内部的读写时序写时序编编程程才能正才能正常进行。常进行。 图9-3中,EN是模块HD44780的使能端,必须给一个周期的脉冲信号才
11、能有效,不能为固定的高电平。EN为高电平的宽度不少于450ns,在程序实现上,可以调用一个周期为1000ns、占空比为50%的脉冲子程序产生,也可以用SETB和CLR指令搭配来完成。RS为命令或数据选择端,当RS=0时,总线上传送的是命令;当RS=1时,总线上传送的是数据。RW为读/写选择端,当RW=0时,为写操作(主机向LCD传送数据为写);当RW=1时,为读操作。D0D7为总线数据,可以传送命令,也可以传送数据,由RS来控制。 HD44780的读操作时序可以参考写操作时序,区别在于读操作时RW=1。初学者暂时只掌握写操作时序即可。 通常,在程序设计时,按照读、写时序分别编写读操作和写操作子
12、程序。当需要写入命令或数据时,只需调用相应的子程序即可。 下面是写操作子程序(又分为写命令和写数据)的例子,请大家认真分析并牢记,在本章的实例中要频繁使用。 WCOM: ; 写命令子程序 MOV P0,A ; A中存放命令字 CLR RS ; RS=0,说明总线P0上传送的为命令 CLR WWR ; R/W=0,为写操作 CALL EN1 ; 调使能脉冲产生子程序 RETWDATA: ; 写数据子程序MOV P0,ASETB RS ; RS=1,说明总线P0上传送的为数据CLR WWRCALL EN1RETEN1: ; 使能脉冲产生子程序SETB EN ; E=1 CALL DE ; 延时 C
13、LR EN ; E=0CALL DE ; 延时RETDE: MOV R7,#5 ; 延时子程序DJNZ R7,$RET HD44780模块的CGROM中存放的字符以及字符的显示代码如表9-3所示。用户只能选择192个字符中的字符来显示,另外可以通过编程自定义8个字符来显示。 在表表9-3中,有两种字体,一种是57点阵字体,其实是88点阵字体,左右留3列,下方留一行;另一种是510点阵字体,每个字实际占用816点阵。 显示数据按照表中的行、列坐标可以查出。高四位是列坐标,低四位是行坐标。比如第一行第二列的空格字符(即不显示任何字符),它的显示数据为00100000,即20H;第二行第四列的大写A
14、,它的显示数据为01000001,即41H。不过,在显示固定字符时,一般不采用查表方式,而是在程序中以数据块中存放字符串的形式来表示,具体见下一节实例。 9.1.6 CGROM 9.2 基于基于HD44780的的液晶显示应用实例液晶显示应用实例 任务:任务: 在Proteus中设计一个由单片机AT89C51控制的字符液晶显示器LM016L显示电路,完成以下功能: (1) 把程序中存放的两个数据块中的字符分别显示在LM016L的第一行和第二行。显示数据块为: DBAT89C51-LM016L DBZhu Qinghui Test (2) 自定义一个特殊字符“ ”,写入LCD的CGRAM,并取出该
15、字符使之显示在LM016L的首行第16列。 训练目的:训练目的: (1) 了解HD44780的各引脚的功能; (2) 掌握HD44780的常用命令及编程方法; (3) 能够把希望显示的字符显示在指定位置,能够自定义字符并显示。 LM016L是是Proteus ISIS中的一中的一个个2行行16列字符液晶列字符液晶显示器件,相当于显示器件,相当于实际器件实际器件1602C,它的控制器是它的控制器是HD44780。在第。在第8章章中,我们已经知道中,我们已经知道了了LM016L在在Proteus中存放的位中存放的位置和如何取出该元置和如何取出该元件。下面直接给出件。下面直接给出系统电路原理图,系统
16、电路原理图,如图如图9-4所示。所示。 9.2.1 Proteus电路设电路设计 XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922
17、P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016L234567891RP11K图图9-4 Proteus中的电路原理图中的电路原理图 9.2.2 程序程序设设计 图9-5 主程序流程图 1. 主程序设计主程序设计 系统主程序设计流程如图9-5所示,主要完成LCD初始化、DB块显示内容以及对CGRAM的读、写。LM016L上电后15ms内进行内部初始化,此时不能完成对部分命令的操作,所以在主程序中初始化后调用一个
18、延时子程序,以等待初始化的完成。LM016L的初始化程序如下:MOV A,#3CH; 设LCD为两行显示,字体 57,8线输入方式CALL WCOM ; 调用写命令子程序MOV A,#0EH ; 设置光标显示方式CALL WCOM MOV A,#06H ; 设置显示存储器地址计数 器为自动加1方式CALL WCOM MOV A,#01H ; 清显示屏并使光标位于 LCD首行首列 CALL WCOM 在主程序流程图中,判断累加器A中的数据为1时,把第一个DB块中的字符显示在LM016L的第一行,否则把第二个DB块中的字符显示在LM016L的第二行。显示完DB块内容后,向CGRAM中写入用户自定义
19、字符,并把该字符显示在LCD首行末位。 2. 子程序设计子程序设计 子程序模块设计的主要内容有显示子程序、写命令子程序、写数据子程序、使能脉冲产生子程序、延时子程序、写CGARM子程序和读CGRAM子程序。 显示子程序流程图如图9-6(a)所示。首先判断累加器A的内容是否为1,如果为1,把LM016L的DDRAM首行首列地址80H送入累加器A中,调命令写入子程序,把DDRAM的首地址80H通过AT89C51的P0口送给LM016L。如果累加器中的内容不为1,则把LM016L的DDRAM第二行首地址0C0H送入累加器A中,调命令写入子程序,把0C0H通过AT89C51的P0口送给LM016L。即
20、先指定显示数据应显示的位置,再调用显示数据写入子程序,把DB块内容逐字符送出。图9-6 子程序流程图图9-6 子程序流程图 写命令子程序完成一个命令由单片机写入LCD,本设计主要用来完成LCD显示地址的写入。先把显示地址送入P0,再设RS=0、WR=0,即置LM016L为写命令状态,最后调用使能脉冲产生子程序,即把指定的显示地址送给LM016L。流程图如图9-6(b)所示。 写数据子程序流程图如图9-6(c)所示。写数据和写命令子程序结构相似,不同的是写数据子程序中送给P0口的是显示数据(字符或数字的显示代码,见表9-3),LM016L的状态设为RS=1、WR=0。 使能脉冲产生子程序流程图如
21、图9-6(d)所示,主程序中已经对E清零,所以子程序中置E为1,延时500ns,然后清E,再延时500ns,产生一个占空比为50%的使能脉冲信号。每次写命令或写数据时,必须调用该子程序才能完成相应的操作。两个延时子程序,一个在主程序中调用,完成对LM016L的初始化延时,时间要在15ms以上。另一个在使能脉冲子程序中调用,时间要求大于450ns。流程图略。 3. CGRAM的读写实现的读写实现 如果想显示一个特殊的、CGROM中不存在的字符,可以向CGRAM中写入自定义字符,然后再调入DDRAM中即可显示。CGRAM共64字节,可存入用户自定义的57特殊字符8个或510特殊字符4个。CGRAM
22、地址为40H7FH。40H47H存放用户的第一个57字符,依次类推。而40H中存放自定义字符的第一行编码,47H中存放该字符的第八行编码。如自定义字符“ ”,57(宽高),可以分8行向CGRAM中写入数据。每行写入一个字节,高3位不用,设为000。LCD中对应显示的点为1,不显示的点为0,则40H47H中应分别写入的低5位二进制编码为:0 0 1 0 0 (04H)0 1 0 1 0 (0AH)1 0 0 0 1 (11H)0 1 0 1 0 (0AH)0 0 1 0 0 (04H)0 1 0 1 0 (0AH)0 0 1 0 0 (04H)0 0 0 0 0 (00H) 从数据的排列即可看出
23、该字符的形状。写CGRAM的具体程序如下: MOV A,#40H ; 设CGRAM首字符首行地址 CALL WCOM ; 调命令写入子程序 SETB RS ; 设RS为1 MOV A,#04H ; 字符首行编码值送累加器 CALL WDATA ; 调数据写入子程序 MOV A,#0AH ; 字符第二行编码值送累加器 CALL WDATA ; 调数据写入子程序 MOV A,#11H ; 字符第三行编码值送累加器 CALL WDATA ; 调数据写入子程序 MOV A,#0AH ; 字符第四行编码值送累加器CALL WDATA ; 调数据写入子程序MOV A,#04H ; 字符第五行编码值送累加器
24、CALL WDATA ; 调数据写入子程序MOV A,#0AH ; 字符第六行编码值送累加器CALL WDATA ; 调数据写入子程序MOV A,#04H ; 字符第七行编码值送累加器CALL WDATA ; 调数据写入子程序MOV A,#00H ; 字符第八行编码值送累加器CALL WDATA ; 调数据写入子程序 由于LCD初始化时已设CGRAM地址指针为自动加1方式,所以只需设CGRAM的首行地址,以后顺序写入编码即可。因为是57字符,所以写入最后一行47H中的是#00H,即不显示任何点。 上述自定义字符分别存入了CGRAM中的40H47H中,读者还可以再自定义7个字符,分别存入CGRA
25、M中的48H4FH、50H57H、58H5FH、60H67H、68H6FH、70H77H、78H7FH中。只要模仿上段程序,先指定CGRAM首地址,顺序写入即可。 以上只是完成了字符的创建和存储任务,如果想把自定义字符显示在LCD上,还需要再编一小段程序才能实现。HD44780内部已定义好,CGRAM中40H47H、48H4FH、50H57H、58H5FH、60H67H、68H6FH、70H77H、78H7FH存入的自定义字符无论是什么,这8个字符对应的显示代码分别为00H、01H、02H、03H、04H、05H、06、07H。在上段程序中,因为我们把自定义字符存入了CGRAM的40H中,因此
26、,只要把显示代码00H写入DDRAM的8FH中,上述自定义的符号“ ”就会显示在LM016L的右上角位置。读CGRAM或显示自定义字符子程序的流程图如图9-7所示。 图9-7 读CGRAM子程序 在程序中用以下语句实现自定义字符的显示:MOV A, #00H ; 把自定义自符显示代码送累加器AMOV B, #15 ; 设置显示位置为第“1”行的第16列CALL LCDP1 ; 调第一行显示子程序LCDP1 在子程序LCDP1中,执行80H+15,即把第一行DDRAM首地址加15,计算出第一行第16列的DDRAM地址,然后再把自定义符号的显示代码写入该显示单元。 4. 汇编语言源程序汇编语言源程
27、序 查看源程序查看源程序 在Proteus ISIS 中双击单片机元件AT89C51,出现编辑元件对话框,在“Program File”一项中选择已经编译好的16进制程序文件“LM016L.hex”,单击“OK”按钮,程序即虚拟下载到了单片机AT89C51中。 程序下载到AT89C51后,选择Proteus ISIS 的仿真运行控制按钮 中的“Play”键即可进行系统软、硬件的交互仿真。本例的仿真结果如图9-8所示。可以看到,在设计中我们把自定义的特殊符号“ ”显示在了LM016L的首行最后一列上。 9.2.3 Proteus调试与仿真调试与仿真 通过仿真结果可见,已成功实现了原设计目的。如果
28、要改变显示信息,只需改变主程序中的显示数据块内容或向CGRAM写入新的自定义字符即可。另外,LM016L的光标显示方式多样化,通过LCD初始化程序设置,可变换出不同的显示方式。D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016L图9-8 系统在Proteus ISIS中的仿真结果9.3 T6963C控制器的工作原理控制器的工作原理 T6963C是一种专用的、和LCD驱动电路以及数据显示存储器一起控制图形液晶显示的控制器,具有8位并行数据总线和几位控制线,具有128字符的字符发生器ROM,能够控制64KB的外部数据存储器。在RAM
29、中,文本、图形和外部字符发生器可方便地配制,显示窗口可自由地移动。T6963C支持的LCD格式很宽泛,编程灵活,具有文本显示方式、图形显示方式以及文本图形相结合的显示方式。 在Proteus中,LM3229是内置T6963C控制器的128240点阵的图形液晶显示器。接下来以LM3229为例来说明T6963C在液晶显示器结构中所处的位置及作用。图9-9是LM3229的内部结构图。 9.3.1 LM3229内部结构内部结构 LM3229的核心部件是控制器T6963C,还有行列驱动电路、8KB显示RAM、液晶面板和电源电路。 T6963C主要完成各种命令控制、数据读写等功能,内含CGROM字符产生器
30、,存储了128种58字体的ASCII字符字模可供显示调用。8KB的显示RAM主要用来存放显示数据,它分为图形区、文本区、CGRAM区及文本属性区,由用户定义各区的容量。文本区和图形区的首地址必须通过程序指定,它们都对应于LCD显示屏的左上角位置。只要把显示数据写入文本区或图形区,便会在LCD屏的对应位置上显示。CGRAM是在显示RAM中建立的一个字符发生区,由用户写入自定义字符并调入文本区来显示。 T6963C的控制线有 、 、 、 、 、FS1和FS0。 和 是读、写控制端,低电平有效; 是使能端,低电平有效; 是命令/数据选择端,当此端为高电平时,D0D7上传送的是命令,当此端为低电平时,
31、D0D7上传送的是数据; 是复位端,低电平有效;FS1和FS0是字体选择端,共有四种字体可以选择,即58、68、78、88,分别对应于FS1和FS0的以下取值:11、10、01、00。如果只有FS1一个端子,则认为FS0为0,这种情况下,通常把FS1接地,即选择88字体。字体的选择有两个含义:一是当文本方式显示时,显存中所放的显示数据一个字节对应于显示屏上一个88点阵;二是当图形方式显示时,显存中所放的显示数据一个字节对应于显示屏上一个81点阵,即一行8个点。WRRDCEC/DRESETRDWRCEC/DRESET T6963C的外部RAM主要用来存储显示数据(文本、图形和外部字符发生数据)。
32、对于单屏LCD,文本、图形和外部字符发生数据可以在64KB RAM显存中自由分配存储区。对于双屏来说,LCDI分配的显存地址为00007FFFH(最大32k),LCDII分配的显存地址为8000FFFFH(最大32k)。 和HD44780不一样,T6963C的外部显存地址与显示屏的对应关系不是固定不变的,而是存在一种灵活的对应关系,需在程序初始化中指定。了解显示RAM中文本区和图形区的编址方式是显示控制的关键。因为外部RAM最大为64k,故显示RAM的地址为16位,由单片机分两字节写入LCD,先送入低字节,再送入高字节,最后送入写显示地址命令代码24H。显示RAM区可分为文本显示区和图形区以及
33、文本属性区(如必要)。 9.3.2 显示显示RAM的编址方式的编址方式 1. 文本显示区文本显示区 在程序中,必须先指定文本显示区的首地址,它与显示屏左上角位置对应,占据显示屏上一个字符位,即88点阵。每行240个点可显示30(通常用20H来表示)个字符,每列128个点可显示16行。文本区的编址方式如表9-4所示。其中,TH是用户通过程序定义的文本区首地址,TA是字符宽度(FS1接地时为8),CL为列数1,m为行数1。在程序中设定了TH、TA和m、CL值后,即可计算出文本显示区的地址。表9-4 文本显示区编址方式 2. 图形显示区图形显示区 图形显示区首地址的设置应和文本区不一样,但它也对应于
34、LCD显示屏的左上角位置。地址的编址方式和表9-4基本一致,不同的是这里的m指的是点行数。另外通常使用GH代替TH,GA代替TA。 当文本显示区和图形显示区同时使用时,图形和文字重叠显示,重叠的方式可选择“与”、“或”、“异或”逻辑进行点对点的运算。 1. 写操作写操作 T6963C有一套专用指令,如读状态字、显示RAM区域设置、显示地址设置、显示方式和光标形状设置、数据一次读写和自动读写设置以及位操作等。T6963C的命令共有三种格式:一种是单字节命令,无参数;另一种是双字节命令,除了命令代码还带有单字节参数;还有一种是三字节命令,即带有双字节参数,比如写显示RAM地址命令。带双字节参数的命
35、令从单片机通过P0口发送给LCD的顺序是:先发送低字节参数D1,再发送高字节参数D2,最后发送命令代码字节COM。参数和命令写入时靠LM3229的 口来区分应存入T6963C的是命令寄存器还是数据寄存器。 9.3.3 T6963C的读、写操作的读、写操作 C/DC/DC/D写操作程序流程如图9-10所示。 2. 读操作读操作 读操作分两种,一种是单片机从LCD中读取状态字,另一种是单片机从LCD的显存中读取数据。读状态字是必须的,因为单片机每次写指令或读写数据时,都需要判断LCD是否准备好。只有状态字的低两位S0和S1同时为1,才认为可以执行读写命令和数据。读数据操作则应先判断状态位,再读入数
36、据。在一次读数据操作时,将当前显示地址指针所指的单元的数据取出到写入数据栈中,读数据时将该数据提出送入数据总线上供单片机获取。在自动读操作时,连续的读操作将连续地从显示存储器中读取数据,显示地址自动加1。 由于T6963C使用了硬件初始化设置,使得其指令功能集中于显示功能的设置上,从而加强了T6963C的显示控制能力。 T6963C的指令表如表9-5所示。 下面对表9-5中的指令进行详细讲解,以便读者在编程时能正确应用这些指令。 1. 读状态字读状态字(STATUS READ)格式格式:单字节:单字节 9.3.4 T6963C的的指令指令 C/DC/DS7S6S5S4S3S2S1S0状 态 字
37、含 义取值及含义S0(STA0)指令读写状态1:准备好 0:忙S1(STA1)数据读写状态1:准备好 0:忙S2(STA2)数据自动读状态1:准备好0:忙S3(STA3)数据自动写状态1:准备好0:忙S4(STA4)未用S5(STA5)控制器运行检测可能性1:可能0:不能S6(STA6)屏读/拷贝出错状态1:出错0:正确S7(STA7)闪烁状态检测1:显示0:关显示 T6963C的状态字由七位标志位组成,如表9-6所示。 表9-6 T6963C状态字 每次对每次对T6963C的软件操作之前都要进行判的软件操作之前都要进行判“忙忙”。仅在不。仅在不“忙忙”状态下,状态下,计算机对计算机对T696
38、3C的操作才有效。的操作才有效。但但Proteus仿真时可以省去。仿真时可以省去。 2. 地址指针设置地址指针设置(REGISTER SET)格式格式:D1D2(1字节字节)+指令(指令(1字节)字节) 其中,D1D2为地址参数,指令各位分布如下:C/DC/D00100N2N1N0 该指令为双参数(D1,D2)指令。指令代码中的N2、N1、N0取值“1”为有效,“0”为无效,而且不能同时为“1”,根据N的取值,该指令有三种含义,如表9-7所示。D1D2指 令 代 码功 能水平位置(低7位有效)垂直位置(低5位有效)21H(N0=1)光标地址设置偏置地址(低5位有效)00H22H(N1=1)CG
39、RAM偏置地址设置低字节高字节24H(N2=1)显示地址设置 (1) 光标地址设置 D1-D2-21H。 T6963C的光标控制是独立于显示地址控制的。它专门有一个光标指针寄存器存放当前的光标地址,而且光标地址不会自动修改。该指令设置或修改了光标在显示屏上的位置。光标的地址以二维坐标形式,以字符为单位设置。水平方向的位置由D1参数确定,取值范围为00H4FH(180字符位),表示显示屏左起第几个字符位;垂直方向由D2参数确定,取值范围为00H1FH(132字符行),表示显示屏上起第几个字符行。光标在双屏结构显示屏上的垂直方向位置的规定为上半屏为00H0FH,下半屏为10H1FH。这个规定不考虑
40、显示屏的实际点行数。 (2) CGRAM偏置地址设置D1-D2-22H。 T6963C可以管理2KB的CGRAM。在显示存储器内要划出2KB的区域作CGRAM使用,只需确定16位地址的高5位(ad15ad11)即可。CGRAM偏置地址寄存器就是用来存储这个地址值的。用户可以通过将这个寄存器的内容与自定义字符代码值组合出显示存储器中该字符模数组所在的地址: ad15 ad14 ad13 ad12 ad11 ad10 ad9 ad8 ad7 ad6 ad5 ad4 ad3 ad2 ad1 ad0 偏置地址值(5位) 字符代码值(8位) 0 0 0 ad2ad0从07指向该字符8个字节的字模。 偏置
41、地址的设置由参数D1的低5位值来实现,D2设置为00H。例如:指令03H-00H-22H 设置字符代码为80H。那么该字符字模组在显示存储器的首地址为1C00H,字模存放在1C00H1C07H单元内。 (3) 显示地址设置D1-D2-24H。 该指令将计算机要访问的显示存储器的地址写入T6963C的地址指针计数器中。该地址指针计数器为16位字长,需要两个字节。D1为低8位地址,D2为高8位字地址。 3. 显示区域设置显示区域设置(CONTROL WORD SET) 该指令为双参数指令,它将在显示存储器内划分出各显示区域的范围。它由设定显示区域的首地址和宽度来确定该显示区域的范围,同时也确定了显
42、示存储器单元与显示屏上各点像素的对应关系。格式格式:D1D2(1字节字节)+指令(指令(1字节)字节) 其中,D1D2为地址参数,指令各位分布如下:C/DC/D010000N1N0 该指令中N1、N0有四种组合,每个组合有不同的含义。具体功能如表9-8所示。N1 N0D1D2指 令 代 码功 能0 0低字节高字节40H文本显示区首地址0 1字节数00H41H文本显示区宽度1 0低字节高字节42H图形显示区首地址1 1字节数00H43H图形显示区宽度表9-8 指令功能 (1) 文本显示区首地址设置 D1-D2-40H。该指令设置了文本显示区在显示存储器中的始地址。该地址对应显示屏上左上角的第一个
43、字符位(home)。定时间定间隔地修改这个地址将会产生显示画面的平滑滚动。参数D1为该地址的低8位,D2为该地址的高8位。 (2) 文本显示区宽度设置D1-00H-41H。该指令规定了在文本显示区作为一行显示所占的单元(字节)数。该数据与文本显示首地址一起确定了显示单元与显示屏上各点像素的对应关系。具体见表9-4所示。 当设置的显示区宽度超过了实际显示屏上显示所需的单元数时,超出的部分不显示。但是要注意的是这里使用软件设置的显示区域宽度仅是T6963C作为计算每行显示数据传输的起始单元地址的参数,实际传输的字节数已由硬件引脚设置完成。比如MGLS240128T模块,通常为了计算地址方便,设置文
44、本显示区域宽度为20H(32字节),但T6963C实际一行传输数据为40个字节,也就是说T6963C将所设置的下一行单元的数据也作为这一行的数据传输了,只是由于屏点阵数小于所传输的数据量不显示而已。但是T6963C在传输下一行数据时要使用这个宽度参数计算起始单元的地址。 (3) 图形显示区宽度设置 D1-00H-43H。 该指令规定了在图形显示区中作为一行显示所占的单元(字节)数。该数据与图形显示首地址一起确定了显示单元与显示屏上各像素组(字节)的对应关系。 4. 显示方式设置显示方式设置(MODE SET) 该指令为显示方式的设置,无参数。它的几个设置位功能如下: CG位:字符发生器选择位。
45、当CG=0时,启用内部字符发生器CGROM,该字符库有128种字符,其代码为00H7FH;同时可以建立具有128种88点阵的自定义字符发生器CGRAM,其字符代码规定在80HFFH范围内;当CG=1时,禁止内部CGROM,字符显示完全取自自定义字符发生器CGRAM,该字符库为2KB容量,字符代码为00HFFH。 指令格式如下,其中,N2、N1、N0三位为显示方式设置位。C/DC/D00100N2N1N0 N2、N1、N0组合所产生的显示方式如表9-9所示。 表9-9 显示方式设置位N2 N1 N0显 示 方 式说 明0 0 0逻辑“或”文本与图表以逻辑“或”的关系合成显示0 0 1逻辑“异或”
46、文本与图表以逻辑“异或”的关系合成显示0 1 1逻辑“与”文本与图表以逻辑“与”的关系合成显示1 0 0文本属性文本显示特征以双字节表示 设置文本属性显示方式后,图形显示区将转换成文本属性区,用于存储字符的属性代码,其地址与显示屏上的对应关系与文本显示区相同。因此,在显示屏某位置上显示的字符由双字节数据组成。第一字节为字符代码,存储在文本显示区内;第二字节为属性代码,存储在文本属性区内。这种表示方法与计算机的字符显示数据相似。在文本属性显示方式下,字符的属性代码由一字节的低4位组成:D7D6D5D4D3D2D1D0d3d2d1d0 其中,d3位是字符闪烁控制位。d3=1为闪烁。 d2、d1、d
47、0组合功能如表9-10所示。d2 d1 d0显显 示示 数数 据据0 0 0正向显示正向显示1 0 1负向显示负向显示0 1 1禁止显示禁止显示(正向正向)1 0 0禁止显示禁止显示(负向负向)表9-10 d2、d1、d0组合功能 5. 显示状态设置显示状态设置(DISPLAY MODE) 该指令设置了当前的显示状态,无参数。该指令有4个设置位,每一位都代表一种显示状态的设置,它们可以同时有效,也可以部分有效,也可以都无效。 指令格式如下,其中,N2、N1、N0三位为显示方式设置位。C/DC/D1001N3N2N1N0 这4个设置位的功能如下:N0:光标闪烁设置开关N0=1为启用光标闪烁,N0
48、=0为禁止光标闪烁。N1:光标显示设置开关N0=1为启用光标显示,N0=0为禁止光标显示。N2:文本显示设置开关N0=1为启用文本显示,N0=0为禁止文本显示。N3:图形显示设置开关N0=1为启用图形显示,N0=0为禁止图形显示。 在文本显示与图形显示合成显示时,文本显示开关与图形显示开关应同时启用,在文本属性显示方式下,图形显示开关也应启用,只是特性不同。光标显示及光标闪烁功能的启用要在文本显示启用时进行,否则无效。 6. 光标形状设置光标形状设置(CURSOR PATTERN SELECT) 该指令设置光标的显示形状,无参数补充。指令中的三个设置位设置了光标点数。光标以8点列N行显示,行的
49、取值由设置位N2、N1、N0组合完成,指令格式如下:C/DC/D10100N2N1N0 光标设置位的取值与光标显示形状的对应关系如图9-11所示。图图9-11 光标显示的形状设置光标显示的形状设置 7. 数据自动读写设置数据自动读写设置(DATA AUTO READ/WRITE) 使用该指令将进入或退出数据的自动读或自动写方式。在自动读或自动写方式中,计算机连续地将显示数据写入显示存储器中或从显示存储器中读取数据。在每次读或写操作后,显示地址自动加1。进入自动读方式或自动写方式时,状态位将由S2(自动读方式)或S3(自动写方式)代替S1和S0。在自动读或自动写方式完成时要输入退出自动读写方式的
50、指令。在自动读写方式中写入其他指令是无效的。指令格式如下:C/DC/D101100N1N0 该指令中有两位设置位N1、N0。这两位将产生三个子指令,如表9-11所示。C/DC/D表9-11 数据自动读写方式选择位功能N1 N0指 令 代 码功 能0 0B0H进入自动写方式0 1B1H进入自动读方式0 *B2H/B3H退出自动读写方式自动读写方式的操作流程图如图9-12所示。C/DC/D图9-12 自动读写方式操作流程图 8. 数据一次读写设置数据一次读写设置(DATA READ/WRITE) 该指令是一次读写数据操作指令。在每次读写数据操作后,显示地址都要根据指令代码的设置而修正:加1、减1或
51、不变。该指令在写入数据时,所带的参数就是所要写入的显示数据。当读数据操作时,该指令不带参数,直接写入指令代码,T6963C在接收到该指令后将当前显示地址计数器所指的显示存储器单元的内容送入接口部的数据栈内,紧接着计算机的读数据操作将其读出。指令格式如下:C/DC/D11000N2N1N0 该指令有三个设置位N2、N1、N0,它们的组合功能如表9-12所示。C/DC/D表9-12 数据一次读写方式选择位功能参数D1N2 N1 N0指 令 代 码功 能数据0 0 0C0H数据写,地址加10 0 1C1H数据读,地址加1数据0 1 0C2H数据写,地址减10 1 1C3H数据读,地址减1数据1 0
52、0C4H数据写,地址不变1 0 1C5H数据读,地址不变 9. 屏读屏读(一字节一字节)设置设置(SCREEN PEEK) 所谓屏读,就是指把显示屏上显示的内容取出来作为数据提供给计算机使用,这个内容为一个字节的当前显示数据,它有可能是图形显示数据,也可能是文本显示的某一个字符上的某一行字模数据,更多的是文本与图形合成显示的内容。屏读指令将使计算机能够直接获得显示屏上的数据,这是其他控制器所没有的功能。屏读指令要求当前显示地址指针指在图形显示区内,所以屏读指令只有在图形显示功能有效时才能使用。在屏读指令写入后要立即检查状态S6,判断该指令的执行是否正确。如果执行正确,就可以读取数据。 该指令是
53、无参数指令,且不能应用在文本属性显示方式下。 C/DC/D屏读指令的执行流程如图9-13所示。C/DC/D图9-13 屏读操作流程图 10. 屏拷贝屏拷贝(一行一行)设置设置(SCREEN COPY) 所谓屏拷贝,是指把显示屏上某一行显示的内容取出来作为图形显示数据返回图形显示区相应的显示单元内,这个内容为一行数个字节的当前显示数据,它有可能是图形显示数据,也可能是文本显示的某一个字符上的某一行字模数据,更多的是文本与图形合成显示的内容。屏读指令将使计算机能够直接获得显示屏上的数据,这是其他控制器所没有的功能。屏拷贝指令要求当前显示地址指针指在图形显示区内,所以屏拷贝指令只有在图形显示功能有效
54、时才能使用。在屏拷贝指令写入后要立即检查状态S6,判断该指令执行是否正确。如果执行正确,就可以读取数据。屏拷贝指令的执行流程和图9-12类似。 该指令是无参数指令,不能应用在文本属性显示方式下,也不能应用在双屏结构的液晶显示器件的控制上。指令格式如下:C/DC/D11101000 11. 位操作位操作(BIT SET/RESET) 该指令可以对当前显示地址指针所指的显示单元中的数据的任一位写“0”或写“1”。操作位由N2、N1、N0确定,它们的取值为07,对应着数据的D0D7位。N3为写入的数据,是“1”表示该位将置“1”;是“0”表示该位将清“0”。该指令一次仅能操作一位。该指令无参数。指令
55、格式如下:C/DC/D1111N3N2N1N0 12. 数据写操作数据写操作(DATA WRITE) 数据写操作是向数据通道里写数据,指令后所带参数的写入也同样是这样操作的。一次写数据或参数时,该数据将写入到数据栈中,再由紧接着写入的指令代码决定该数据是作为数据写入当前的显示地址所指的单元内,还是作为参数写入相应的寄存器中。C/DC/D 13. 数据数据读读操作操作(DATA READ) 数据读操作是从数据通道里读取数据,在一次读数据操作时,读数据指令将当前显示地址指针所指的单元的数据取出写入数据栈中,读数据操作将该数据提出送入数据总线上供计算机获取。在自动读操作时连续读操作将连续从显示存储器
56、内读取数据,显示地址将自动加1。9.4 基于基于T6963C的汉字显示应用实例的汉字显示应用实例 以图形液晶显示器LM3229为例,来说明T6963C的汉字显示原理和应用。首先给出系统硬件电路,如图9-14所示。 单片机采用AT89C51,单片机与图形液晶显示器之间采用直接访问方式。AT89C51的P0口接LM3229的D0D7,传送数据或控制命令,同时P0口作为对外寻址的低8位地址。AT89C51的P2口接LM3229的控制端,即P2.7通过反相器后接LM3229的使能端 ,P2.0接LM3229的命令/数据选择端 ,P2口作为对外寻址的高8位地址。当传送命令时,P2、P0构成的16位地址为
57、8100H;当传送数据时,P2、P0构成的16位地址为8000H。具体的命令或数据在P0和D0D7之间传送。LM3229的 和 分别接AT89C51的 和 。这种直接访问方式可使编程简单化。图9-14 Proteus中电路原理图DB0DB1DB2DB3DB4DB5DB6DB7DB0DB7DB1DB2DB3DB4DB5DB6CE15RD5C/D4VSS1VDD2VO3WR6D07FS119D18D29D310D411D512D613D714RST16MD218HALT20VEE17LCD1LM3229XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/
58、AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51VCCRV110k-18VC10.1uFR110k12U2:
59、A74LS04 LM3229的其他控制端如下连接:Vss接地,Vdd接5V直流电源,Vo是背光调整端,接一个10k的滑动变阻器,电阻两端分别接-18V5V的电源。 是复位端,通过10k电阻和0.1F电容上电自动复位。其余端全部接地。9.4.1 直接访问方式驱动程序设计直接访问方式驱动程序设计 在上述直接访问方式下,我们来设计系统驱动子程序,以便在后面的实例设计中可直接拿来使用。直接访问驱动程序主要包括宏指令、读状态字子程序、判断状态位子程序、写指令和数据子程序以及读数据子程序。程序如下: 宏指令部分: DAT1EQU30H;指令第一参数存储单元 DAT2EQU31H;指令第二参数/数据存储单元
60、 COM EQU 32H;指令代码存储单元 C_ADDEQU8100H ;指令通道地址 D_ADDEQU8000H ;数据通道地址 读状态字子程序: R_ST: MOV DPTR,#C_ADD ;设置指令通道地址 MOVX A,DPTR ;读状态字 RET 判断状态位S1,S0子程序(判忙): ST01: LCALLR_ST JNB ACC.0,ST01 JNB ACC.1,ST01 RET判断状态位S2子程序(数据自动读状态):ST2:LCALL R _STJNB ACC.2,ST2RET判断状态位S3子程序(数据自动写状态):ST3:LCALL R _STJNB ACC.3,ST2RET判
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全面商场清洗服务合同
- 保密协议商业合同的常见问题
- 肉鸭购销合同范本
- 健康养生信息咨询服务合同
- 时尚耳机购买合同
- 陕西省劳动合同
- 2024标准的长期供货合同(服装类)
- 2024网上订货与回购交易客户合同格式
- 2021年注册城乡规划师《城乡规划相关知识》考试题库及答案解析
- 柑橘基地投资合同范例
- 缓冲托辊说明书
- 煤矿机电运输安全培训课件
- 2023年人教版新目标八年级英语下册全册教案
- 安抚(氟比洛芬酯注射液)-泌尿外科术后疼痛管理的基础药物
- 学前教育职业规划书
- GB/T 42249-2022矿产资源综合利用技术指标及其计算方法
- 中共屯垦史作业课件
- 《意识形态工作管理制度》
- GB/T 21010-2007土地利用现状分类
- GB/T 10125-2021人造气氛腐蚀试验盐雾试验
- 科研-稀土发光材料
评论
0/150
提交评论