基于图形液晶控制器T6963C的显示驱动程序(C语言)设计(共43页).doc

上传人:飞****2 文档编号:6498562 上传时间:2022-02-04 格式:DOC 页数:43 大小:1.13MB
返回 下载 相关 举报
基于图形液晶控制器T6963C的显示驱动程序(C语言)设计(共43页).doc_第1页
第1页 / 共43页
基于图形液晶控制器T6963C的显示驱动程序(C语言)设计(共43页).doc_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《基于图形液晶控制器T6963C的显示驱动程序(C语言)设计(共43页).doc》由会员分享,可在线阅读,更多相关《基于图形液晶控制器T6963C的显示驱动程序(C语言)设计(共43页).doc(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上 本科生毕业设计(论文)学院(系):电子与电气工程学院 专 业:电气工程及其自动化 学 生: * * * 指导教师: * * * 完成日期 2000年 5 月 专心-专注-专业*学院本科生毕业设计(论文)基于图形液晶控制器T6963C的显示驱动程序(C语言)设计 Design of Display Driver (C Language) Based onGraphical LCD Controller T6963C 总 计: 42 页表 格: 7 个插 图: 20 幅l * * * 学 院 本 科 毕 业 设 计(论文)基于图形液晶控制器T6963C的显示驱动程序(C

2、语言)设计Design of Display Driver (C Language) Based onGraphical LCD Controller T6963C学 院(系): 电子与电气工程学院 专 业: 电气工程及其自动化 学 生 姓 名: * * * 学 号: 3 指 导 教 师(职称): * * *(正高级工程师)评 阅 教 师: 完 成 日 期: *学院l * Institute of Technology基于图形液晶控制器T6963C的显示驱动程序(C语言)设计电气工程及其自动化专业 *摘 要随着AT89C51单片机在各个领域的应用, 图形液晶显示控制器T6963C的应用也正在不

3、断地走向深入。设计以C语言为编程语言,以控制器T6963C来控制液晶显示器LM3229的显示,对核心绘点子程序、绘直线子程序、绘圆子程序的算法设计做了详细剖析。在Keil中进行了程序编写和调试, 在Proteus ISIS中进行了系统软、硬件交互仿真,最后完成了实际电路连接并实现了系统各项功能。基于C语言的T6963C显示驱动程序,具有很好的可移植性,节约了使用者单独编程和开发的时间和效率,有很好的市场发展前景。关键词 AT89C51单片机;Proteus仿真软件;T6963C控制器;图形液晶LM3229Design of Display Driver (C Language) Based o

4、nGraphical LCD Controller T6963CElectrical Engineering and Automation SpecialtyGU Qing-GuangAbstract: Along with the AT89C51 microcontroller is widely used in various fields of applications,the display controller T6963C is continuously, drawing system design example based on graphical liquid display

5、 controller T6963C. C language for programming language,the author analyzes the core subprogram of plotting dot seriously and deals with the subprograms of typical graphics drawing in detail. The system program writing and debugging are performed in keil and the system software and hardware interact

6、ive simulation is performed in Proteus ISIS. Finally,the author performed the actual circuit connection and realized the system function. C language-based T6963C display driver has good portability, saving time and efficiency of users separate programming and development, and good market prospects.K

7、eywords: AT89C51 microcontroller; proteus simulation; T6963C controller; graphicalLCDLM3229目 录1 引言1.1课题背景介绍随着国内外工业的日益发展,目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC 卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。LCD 低压微功耗平板型结构,被动显示(无眩

8、光,不刺激人眼,不会引起眼睛疲劳),显示信息量大(因为像素可以做得很小),易于彩色化(在色谱上可以非常准确的复现),无电磁辐射(对人体安全,利于信息保密),长寿命。广泛应用于可视化,人机交互界面。从世界范围来看,液晶显示产业方兴未艾,发展势头正旺。预计今后十年、二十年液晶显示器都将是平板显示的主流产品。我国液晶显示行业尽管也走过了二十多个年头,有了一定的基础。但与先进国家与地区相比差距还很大,要迎头赶上,还只能算刚刚开始。俗话说:兵马未动,粮草先行。液晶显示相关材料对于器件产业的发展至关重要。我们在这方面总体讲,还很落后,还有许多薄弱环节,应当引起各方重视。液晶显示器(LCD)具有功耗低、体积

9、小、重量轻、超薄等许多其它显示器无法比拟的优点,近几年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。LCD 可分为段位式LCD、字符式LCD 和点阵式LCD。其中,段位式LCD 和字符式LCD 只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求;而点阵式LCD 不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动,动画功能,分区开窗口,反转,闪烁等功能,用途十分广泛。LCD 产品制造涉及光学、半导体、电机、化工、材料等各项领域,上下游所需VI技术层面极广,极少有单一厂商能从材料到成品全部都做,因此各领域分工明显。LCD 产业上游材料包括玻

10、璃基板、ITO 导电玻璃、偏光板、彩色滤光片、背光模块、液晶、半导体制造工序所需光罩,液晶驱动IC、印刷电路板(PCB)等。1.2 研究现状综述如何开发智能型的图形液晶控制系统已成为人们研究的当务之急。我们知道,一个较好的系统既要有较强的适应性和通用性,还要有较强的功能性,较高的性价比,很高的实用价值。图形液晶控制技术也有了不断的进步。图形液晶显示已成为大多数仪器正常工作的前提,而且对显示的要求也越来越严格。因此,液晶显示与控制方法的研究越来越受到人们的重视。图形液晶控制系统能很好解决显示控制中的各种问题,所以图形液晶显示控制系统的研究具有很大的市场潜力。随着国内外工业的日益发展,图形液晶显示

11、技术也有了不断的进步。图形液晶显示作为显示终端,图形液晶显示器主要用来显示图形、汉字和字符。T6963C是一种常用的功能较强但单片机控制程序较难的一种图形液晶显示控制器,而C语言作为单片机编程语言具有通用性和移植性强的等特点。开发基于C语言的T6963C显示驱动程序,可被其他应用系统直接嵌入和移植使用,节约了使用者单独编程和开发的时间和效率,对简化工业控制设计过程和缩短设计周期有着非常积极和促进作用。目前国内外的图形显示控制方式越来越趋向于智能化,T6963C是一种专用的、和LCD驱动电路以及数据显示存储器一起来控制图形液晶显示的控制器,具有八位并行数据总线和控制线用以和上位机通信,具有128

12、字符的字符发生器ROM,能够控制可以扩展到64K的外部数据存储器。在RAM中,文本、图形和外部字符发生器可方便地配制,显示窗口可自由地移动。T6963C支持的LCD格式很宽泛,编程灵活,具有文本显示方式、图形显示方式以及文本图形相结合的显示方式。对于我们普通的电子爱好者来说,T6963C的优势更是学习单片机技术和开发图形液晶显示产品的不二选择。2 T6963C控制器的显示原理T6963C是一种专用的、和LCD驱动电路以及数据显示存储器一起来控制图形液晶显示的控制器,具有八位并行数据总线和控制线用以和上位机通信,具有128字符的字符发生器ROM,能够控制可以扩展到64K的外部数据存储器。在RAM

13、中,文本、图形和外部字符发生器可方便地配制,显示窗口可自由地移动。T6963C支持的LCD格式很宽泛,编程灵活,具有文本显示方式、图形显示方式以及文本图形相结合的显示方式。2.1 LM3229内部结构在Proteus中,LM3229是内置T6963C控制器的128240点阵的图形液晶显示器。我们以LM3229为例来说明T6963C在液晶显示器结构中所处的位置及作用。图1是LM3229的内部结构图。核心部件是控制器T6963C,还有行列驱动电路、8K显示RAM、液晶面板和电源电路3。T6369C主要完成各种命令控制、数据读写等功能,内含CGROM字符产生器,存储了128种58字体的ASCII字符

14、字模可供显示调用。8K的显示RAM主要用来存放显示数据,它分为图形区、文本区、CGRAM区及文本属性区,由用户来定义各区的容量。文本区和图形区的首地址必须通过程序指定,它们都对应于LCD显示屏的左上角位置。只要把显示数据写入文本区或图形区,便会在LCD屏对应位置上显示。CGRAM是在显示RAM中建立的一个字符发生区,由用户写入自定义字符并调入文本区来显示。图1 LM3229的内部结构图T6963C的控制线有、FS1和FS0。和是写、读控制端,低电平有效;是使能端,低电平有效;是命令/数据选择端,当此端为高电平时,D0D7上传送的是命令,当此端为低电平时,D0D7上传送的是数据;是复位端,低电平

15、有效;FS1和FS0是字体选择端,共有四种字体可以选择,即58、68、78、88,分别对应于FS1和FS0的以下取值:11、10、01、00。2.2 显示RAM的编址方式了解显示RAM中文本区和图形区的编址方式是显示控制的关键。因为外部RAM最大为64k,故显示RAM的地址为16位,由单片机分两字节写入LCD,先送入低字节,再送入高字节,最后送入写显示地址命令代码24H。显示RAM区可分为文本区和图形区以及文本属性区(如必要)。2.2.1文本显示区在程序中,必须先指定文本显示区的首地址,它与显示屏左上角位置对应,占据显示屏上一个字符位,即88点阵。每行240个点可显示30(通常用20H来表示)

16、个字符,每列128个点可显示16行。文本区的编址方式如表1所示。其中,TH是用户通过程序定义的文本区首地址,TA是字符宽度(FS1接地时为8),CL为列数1,m为行数1。在程序中设定了TH、TA和m、CL值后,即可计算出文本显示区的址址3。表1 文本显示区编址方式THTH+1TH+CL-1TH+CLTH+TATH+TA+1TH+TA+CL-1TH+TA+CLTH+(m-2)TATH+(m-2)TA+1TH+(m-2)TA+CL-1TH+(m-2)TA+CLTH+(m-1)TATH+(m-1)TA+1TH+(m-1)TA+CL-1TH+(m-1)TA+CL2.2.2图形显示区图形显示区的首地址应

17、设为和文本区不一样,但它也对应的LCD显示屏的左上角位置。地址的编址方式和表1基本一致,不同的是这里的m指的是点行数。另外通常使用GH代替TH,GA代替TA。当文本显示区和图形显示区同时使用时,图形和文字重叠显示,重叠的方式可选择“与”、“或”、“异或”逻辑进行点对点的运算。2.3 T6963C的读、写操作2.3.1写操作T6369C有一套专用指令,如读状态字、显示RAM区域设置、显示地址设置、显示方式和光标形状设置、数据一次读写和自动读写设置以及位操作等。T6369C的命令共有三种格式:一种是单节节命令,无参数;另一种是双字节命令,除了命令代码还带有字节参数;还有一种是三字节命令,即带有双字

18、节参数,比如写显示RAM地址命令。带双字节参数的命令从单片机通过P0口发送给LCD的顺序是:先发送低字节参数D1,再发送高字节参数D2,最后发送命令代码字节COM。参数和命令写入时靠LM3229的口来区分应存入T6369C的命令寄存器或是数据寄存器3。写操作程序流程如图2所示。图2 写操作程序流程2.3.2读操作读操作分两种,一种是单片机从LCD中读取状态字,另一种是单片机从LCD的显存中读取数据。只有状态字的低两位S0和S1同时为1,才认为可以执行读写命令和数据。读数据则应先判断状态位,再读入数据。在一次读数据操作时,将当前显示地址指针所指的单元的数据取出到写入数据栈中,读数据时将该数据提出

19、送入数据总线上供单片机获取。在自动读操作时,连续的读将连续地从显存中读取数据,显示地址自动加1。2.4 T6963C指令由于T6963C使用了硬件初始化设置,所以使得其指令功能集中于显示功能的设置上,从而加强了T6963C的显示控制能力。T6963C的指令表如表2所示。表2 T6963C指令一览表指令名称控制状态 指令代码D7 D6 D5 D4 D3 D2 D1 D0参数量读状态字1 0 1S7 S6 S5 S4 S3 S2 S1 S0无地址指针设置1 1 00 0 1 0 0 N2 N1 N02显示区域设置1 1 00 1 0 0 0 0 N1 N02显示方式设置1 1 01 0 0 0 C

20、G N2 N1 N0无显示状态设置1 1 01 0 0 1 N3 N2 N1 N0无光标形状设置1 1 01 1 0 0 0 N2 N1 N0无数据自动读写设置1 1 01 0 1 1 0 0 N1 N0无数据一次读写设置1 1 01 1 0 0 0 N2 N1 N01屏读(一字节)设置1 1 01 1 1 0 0 0 0 0无屏拷贝(一行)设置1 1 01 1 1 0 1 0 0 0无位操作1 1 01 1 1 1 N3 N2 N1 N0无数据写操作0 1 0数据无数据读操作0 0 1数据无l 读状态字(STATUS READ)S7S6S5S4S3S2S1S0格式 T6963C的状态字由七位

21、标志位组成,它们是: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的软件操作之前都要进行判“忙”。只有仅有在不“忙”状态下,计算机对T6963C的操作才有效。l 地址指针设置(REGISTE

22、R SET)00100N2N1N0格式 D1 D2该指令为双参数(D1,D2)指令。指令代码中的N2,N1,N0取值“1”为有效,“0”为无效,而且不能同时为“1”,根据N的取值,该指令有三种含义,如表3所示。 表3 指令含义D1D2指令代码功能水平位置(低7位有效)垂直位置(低5位有效)21H(N0=1)光标地址设置偏置地址(低5位有效)00H22H(N1=1)CGRAM偏置地址设置低字节高字节24H(N2=1)显示地址设置2.4.1光标地址设置 T6963C的光标控制是独立于显示地址控制的。水平方向的位置由D1参数确定,取值范围在00H4FH(180字符位),表示显示屏左起第几个字符位;垂

23、直方向由D2参数确定,取值范围在00H1FH(132字符行),表示显示屏上起第几个字符行。光标在双屏结构的显示屏上的垂直方向位置的规定为上半屏为00H0FH,下半屏10H1FH5。2.4.2显示地址设置 该指令将计算机所要访问的显示存储器的地址写入T6963C的地址指针计数器中。该地址指针计数器为16位字长,需要两个字节。D1为低8位地址,D2为高八位字地址。l 显示区域设置(CONTROL WORD SET)010000N1N0格式 D1 D2该指令为双参数指令,它将在显示存储器内划分出各显示区域的范围。该指令中N1,N0有四种组合,每个组合有不同的含义。具体功能如表4所示。 表4 指令功能

24、N1 N0D1D2指令代码功能0 0低字节高字节40H文本显示区首地址0 1字节数00H41H文本显示区宽度1 0低字节高字节42H图形显示区首地址1 1字节数00H43H图形显示区宽度2.4.3文本显示区首地址设置该指令设置了文本显示区在显示存储器中的始地址。该地址对应显示屏上左上角的第一个字符位(home)。定时间定间隔地修改这个地址将会产生显示画面的平滑滚动。参数D1为该地址的低8位,D2为该地址的高8位。2.4.4文本显示区宽度设置该指令规定了在文本显示区作为一行显示所占的单元(字节)数。该数据与文本显示首地址一起确定了显示单元与显示屏上各点像素的对应关系。具体见表1所示。当设置的显示

25、区宽度超过了实际显示屏上显示所需的单元数,那么超出的部分不显示。但是要注意的是这里使用软件设置的显示区域宽度仅是T6963C作为计算每行显示数据传输的起始单元地址的参数,实际传输的字节数已由硬件引脚设置完成。比如MGLST模块,通常为了计算地址方便,设置文本显示区域宽度为20H(32字节),但T6963C实际一行传输数据为40个字节,也就是说T6963C将所设置的下一行单元的数据也作为这一行的数据传输了,只是由于屏点阵数小于所传输的数据量不显示而已。但是T6963C在传输下一行数据时要使用这个宽度参数计算起始单元的地址。2.4.5图形显示区宽度设置该指令规定了在图形显示区中作为一行显示所占的单

26、元(字节)数。该数据与图形显示首地址一起确定了显示单元与显示屏上各像素组(字节)的对应关系。l 显示方式设置(MODE SET)1000CGN2 N1N0格式 该指令为显示方式的设置,无参数。它的几个设置位功能如下:CG位:字符发生器选择位。当CG=0时,启用内部字符发生器CGROM,该字符库有128种字符,其代码为00H7FH;同时可以建立128种88点阵的自定义字符发生器CGRAM,其字符代码规定在80HFFH范围内;当CG=1时,禁止内部CGROM,字符显示完全取自自定义字符发生器CGRAM,该字符库为2k字节容量,字符代码为00HFFH。N2,N1,N0位:显示方式设置位。它们组合所产

27、生的显示方式如表5所示8。表5 显示方式设置位N2 N1 N0显示方式说明0 0 0逻辑“或”文本与图表以逻辑“或”的关系合成显示0 0 1逻辑“异或”文本与图表以逻辑“异或”的关系合成显示0 1 1逻辑“与”文本与图表以逻辑“与”的关系合成显示1 0 0文本属性文本显示特征以双字节表示在设置了文本属性显示方式后,图形显示区将转换成文本属性区,用于存储字符的属性代码,其地址与显示屏上的对应关系与文本显示区相同。因此,在显示屏某位置上显示的字符是由双字节数据组成。第一字节为字符代码存储在文本显示区内,第二字节为属性代码存储在文本属性区内。这种表示方法与计算机的字符显示数据相似。在文本属性显示方式

28、下,字符的属性代码由一字节的低4位组成:D7 D6 D5 D4 D3 D2 D1 D 0d3d2 d1d0其中,d3位是字符闪烁控制位。D3=1为闪烁。d2,d1,d0组合功能如表6所示。表6 d2,d1,d0组合功能d2 d1 d0显示数据0 0 0正向显示1 0 1负向显示0 1 1禁止显示(正向)1 0 0禁止显示(负向)l 显示状态设置(DISPLAY MODE)1001N3N2N1N0格式 该指令设置了当前的显示状态,无参数。该指令有4个设置位,每一位都代表一种显示状态的设置,它们可以同时有效,也可以部分有效,也可以都无效。这4个设置位的功能如下:N0:光标闪烁设置开关 N0=1为启

29、用光标闪烁,N0=0为禁止光标闪烁。N1:光标显示设置开关 N0=1为启用光标显示,N0=0为禁止光标显示。N2:文本显示设置开关 N0=1为启用文本显示,N0=0为禁止文本显示。N3:图形显示设置开关 N0=1为启用图形显示,N0=0为禁止图形显示。在文本显示与图形显示合成显示时,文本显示开关与图形显示开关应同时启用,在文本属性显示方式下,图形显示开关也应启用,只是特性不同。光标显示及光标闪烁功能的启用要在文本显示启用时进行,否则无效。l 光标形状设置(CURSOR PATTERN SELECT)10100N2N1N0格式 该指令设置光标的显示形状。无参数补充。在指令中的三个设置位设置了光标

30、点数。光标是以8点列N行,行的取值由设置位N2,N1,N0组合完成。l 数据自动读写设置(DATA AUATO READ)10110 0N1N0格式 使用该指令将进入或退出数据的自动读或自动写方式。在自动读或自动写方式中,计算机连续地将显示数据写入显示存储器中或从显示存储器中读取数据。在每次读或写操作后,显示地址自动加1。进入自动读方式或自动写方式时,状态位将由S2(自动读方式)或S3(自动写方式)代替S1和S0。在自动读或自动写方式完成时要输入退出自动读写方式指令。在自动读写方式中写入其它指令是无效的6。 该指令中有两位设置位N1,N0。这两位将产生三个子指令,如表7所示。表7 数据自动读写

31、方式选择位功能N1 N0指令代码功能0 0B0H进入自动写方式0 1B1H进入自动读方式0 *B2H/B3H退出自动读写方式自动读写方式的操作流程图如图3所示。l 数据一次读写设置(DATA READ WRITE)11000N2N1N0格式 D1该指令是一次读写数据操作指令。在每次读写数据操作后,显示地址都要根据指令代码的设置而修正:加1,减1或不变。该指令在写入数据时,所带的一个参数就是所要写入的显示数据。当读数据操作时,该指令不带参数,直接写入指令代码,T6963C在接收到该指令后将当前显示地址计数器所指的显示存储器单元的内容送入接口部的数据栈内,紧接着计算机的读数据操作将其读出。该指令有

32、三个设置位N2,N1,N0,它们的组合功能如表8所示10。图3 自动读写方式操作流程图表8 数据一次读写方式选择位功能参数D1N2 N1 N0指令代码功能数据0 0 0C0H数据写,地址加10 0 1C1H数据读,地址加1数据0 1 0C2H数据写,地址减10 1 1C3H数据读,地址减1数据1 0 0C4H数据写,地址不变1 0 1C5H数据读,地址不变l 屏读(一字节)设置(SCREEN PEEK)11100 0 0 0格式 所谓屏读就是指把显示屏上显示的内容取出来作为数据提供给计算机使用,这个内容为一个字节的当前显示数据,它有可能是图形显示数据,也可能是文本显示的某一个字符上的某一行的字

33、模数据,更多的是文本与图形合成显示的内容。屏读指令将使计算机能够直接获得显示屏上的数据,这是其它控制器所没有的功能。屏读指令要求当前显示地址指针指在图形显示区内,所以屏读指令只有在图形显示功能有效时才能使用。在屏读指令写入后要立即检查状态S6,判断该指令执行是否正确。如果执行正确,就可以读取数据。屏读指令的执行流程如图4所示。该指令是无参数指令,不能应用在文本属性显示方式下。由于屏读操作所得的数据是由T6963C驱动部数据合成后反馈产生的,所对应的单元地址与硬件设置窗口长度无关。所以要求显示区域宽度的软件设置与硬件显示数据传输量设置MD3,MD2所设置的显示窗口长度相同才能正确计算出对应单元的

34、地址,屏读出正确的数据来8。图4 屏读操作流程图l 屏拷贝(一行)设置(SCREEN COPY)11101 0 0 0格式 所谓屏拷贝是指把显示屏上某一行显示的内容取出来作为图形显示数据返回图形显示区相应的显示单元内,这个内容为一行数个字节的当前显示数据,它有可能是图形显示数据,也可能是文本显示的某一个字符上的某一行的字模数据,更多的是文本与图形合成显示的内容。屏读指令将使计算机能够直接获得显示屏上的数据,这是其它控制器所没有的功能。屏拷贝指令要求当前显示地址指针指在图形显示区内,所以屏拷贝指令只有在图形显示功能有效时才能使用。在屏拷贝指令写入后要立即检查状态S6,判断该指令执行是否正确。如果

35、执行正确,就可以读取数据。屏拷贝指令的执行流程和图5类似。该指令是无参数指令,不能应用在文本属性显示方式下,也不能应用在双屏结构的液晶显示器件的控制上。l 位操作 (BIT SET/RESET)格式 1111N3N2N1 N0该指令可以对当前显示地址指针所指的显示单元中的数据的任一位写“0”或写“1”。操作位由N2,N1,N0确定,它们的取值在07之间,对应着数据的D0D7位。N3为写入的数据,是“1”表示该位将置“1”;是“0”表示该位将清“0”。该指令一次仅能操作一位。该指令无参数。l 数据写操作(DATA WRITE)数 据 格式 数据写操作是向数据通道里写数据,指令的参数也同样是这样操

36、作的。一次写数据或参数时,该数据将写入到数据栈中,再由紧接着写入的指令代码决定该数据是作为数据写入当前的显示地址所指的单元内,还是作为参数写入相应的寄存器中。数据读操作是从数据通道里读取数据,在一次读数据操作时,读数据指令将当前显示地址指针所指的单元的数据取出写入数据栈中,读数据操作将该数据提出送入数据总线上供计算机获取。在自动读操作时连续读操作将连续地从显示存储器内读取数据,显示地址将自动加1。3 基于T6963C的显示驱动程序设计本节要讨论的图形显示主要包括绘图和图片调用两个内容。绘图指绘点、画直线和画圆等。图形显示与图形方式下的汉字显示又有不同,图形显示时,液晶显示器上的每一个像素点都是

37、一个坐标点,主要通过绘点子程序来完成不同图形的绘制和显示4。3.1 硬件电路基于图形液晶显示器T6963C在Proteus中的电路原理图所图5所示。图5 基于液晶控制器T6963C的电路原理图3.2 绘点子程序T6963C的位操作命令中,给出了设置点或清除点的操作指令,使得作图或绘制曲线非常简单。现在来回顾一下T6963C的位操作指令。1111N3N2N1 N0格式 该指令可以对当前显示地址指针所指的显示单元中的一字节数据的任一位写“0”或写“1”。绘点操作位(该显示单元中的一个字节中具体哪一位需绘点)由N2,N1,N0确定,取值在07之间,对应着数据的D0D7位。N3为写入的数据,是“1”表

38、示该位将置“1”;是“0”表示该位将清“0”。该指令一次仅能操作一位且该指令无参数。利用这条指令,我们可以指定液晶显示屏上任何一点为“1”或为“0”,为“1”即显示该点,为“0”即不显示该点3。绘点子程序的关键在于显示点的显存地址的计算。绘点子程序流程如图6所示。图6 绘点子程序流程图绘点子程序调用前,应先指定目标点的屏幕坐标。绘点子程序归根结底是要对当前显示地址指针所指的显示单元中的一字节数据的指定位写“0”或写“1”。在上段程序中,计算、设置显示RAM地址后,主要任务是把屏幕坐标点转换成为位操作指令中的N2N1N0位地址,然后通过行坐标D7位中事先设定的1或0来进行绘点或清除点。比如,要在

39、屏幕上的A点上绘点,A点的行坐标为115,列坐标为122。按照上段程序,可计算出A点对应的显示RAM相对地址为:11532(20H)=3690(0E68H)因为显示RAM图形显示区的首地址设为了0800H,所以显示RAM的绝对地址为:0E68H+0800H=1668H,即高八位为16H,低八位为68H。通过指令24H把该显存地址写入。接下来计算查找A点对应于当前显存地址中数据的哪一位,即置/消点位。把A点的列坐标除以8,得到的余数即为A点在当前显存中数据的位数。计算如下:122/8=152余数2说明,应该在第116行(行坐标115)第17字符列(16+1)的第3位上绘点。由于第17字符列上自左

40、至右对应的显示存中的数据为D7D6D5D4D3D2D1D0,故实际上是把当前显存的D5位设置为1,即绘点。所以,对以上除法运算得到的余数进行取反进行转换,可得到置/消点位。然后根据列坐标中D7位的数据来置点或消点。即把以上得到的结果转换为位操作指令所要求的形式,并把该位操作指令写入即完成了A点的绘点任务。3.3 绘直线算法及子程序在图形显示器上显示的各种曲线实际上是由若干段直线组成的。所以,直线的绘制就是曲线绘制的子程序。直线绘制的算法有多种,为了避免复杂的浮点运算,这里采用了整数数字微分分析法(INTEGER DAA)。制作以(Xs,Ys)为起点,(Xe,Ye)为终点的直线,其斜率K=(Ye

41、- Ys/ Xe- Xs)。整数数字微分法的基本思路是回避计算斜率K过程中的除法运算,应用Y=Ye-Ys和X=Xe-Xs之间的关系,在保证Y0的条件下将斜率K的取值分成四个范围,在每一个范围内使用ERR参数指明建立点的位置与真实线点之间的误差,并以此确定相应的作点规则。同时也考虑了终点的情况。这四个范围如下3:(1)K=01此时有Y0,X0,且YX关系成立。作点规则如下:在当前(X,Y)点处:若ERR0,则在(X+1,Y)坐标上绘点,且ERR=ERR+Y;若ERR0,则在(X+1,Y+1)坐标上绘点,且ERR=ERR+Y-X。然后将新的绘点坐标作为当前(X,Y)点,而所得到的ERR值为该点坐标

42、的偏差值,重复上述和工作直至X=Xe为止。(X,Y)的初始坐标值为(Xs,Ys),且ERR=0(2)K0此时有Y0,X0,且YX关系成立。作点规则如下:在当前(X,Y)点处:若ERR0,则在(X+1,Y+1)坐标上绘点,且ERR=ERR+Y-X;若ERR0,则在(X,Y+1)坐标上绘点,且ERR=ERR-X。然后将新的绘点坐标作为当前(X,Y)点,而所得到的ERR值为该点坐标的偏差值,重复上述和工作直至Y=Ye为止。(X,Y)的初始坐标值为(Xs,Ys),且ERR=0(3)K=-10此时有Y0,X0,且YX关系成立。作点规则如下:在当前(X,Y)点处:若ERR0,则在(X-1,Y)坐标上绘点,且ERR=ERR+Y;若ERR0,则在(X-1,Y+1)坐标上绘点,且ERR=ERR+Y-X。然后将新的绘点坐标作为当前(X,Y)点,而所得到的ERR值为该点坐标的偏差值,重复上述和工作直至X=Xe为止。(X,Y)的初

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 教育教学

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁