基于FPGA的LCD显示控制系统的设计毕业论文.doc_第1页
基于FPGA的LCD显示控制系统的设计毕业论文.doc_第2页
基于FPGA的LCD显示控制系统的设计毕业论文.doc_第3页
基于FPGA的LCD显示控制系统的设计毕业论文.doc_第4页
基于FPGA的LCD显示控制系统的设计毕业论文.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

天津工业大学本科毕业论文第一章 基于FPGA的LCD显示控制系统的设计毕业论文 绪 论1.1 选题的背景与意义液晶,是一种在一定温度范围内呈现既不同于固态、液态,又不同于气态的特殊物质态,它既具有各向异性的晶体所特有的双折射性,又具有液体的流动性。一般可分热致液晶和溶致液晶两类。在显示应用领域,使用的是热致液晶,超出一定温度范围,热致液晶就不再呈现液晶态,温度低了,出现结晶现象,温度升高了,就变成液体;液晶显示器件所标注的存储温度指的就是呈现液晶态的温度范围。液晶由于它的各向异性而具有的电光效应,尤其扭曲向列效应和超扭曲效应,所以能制成不同类型的显示器件(Liquid Crystal Display 简称LCD)。在平板显示器件领域,目前应用较广泛的有液晶(LCD)、电致发光显示(EL)、等离子体(PDP)、发光二极管(LED)、低压荧光显示器件(VFD)等。 液晶显示器件有以下一些特点 低压微功耗,平板型结构,被动显示型(无眩光,不刺激人眼,不会引起眼睛疲劳),显示信息量大(因为像素可以做得很小),易于彩色化(在色谱上可以非常准确的复现),无电磁辐射(对人体安全,利于信息保密),长寿命(这种器件几乎没有什么劣化问题,因此寿命极长,但是液晶背光寿命有限,不过背光部分可以更换)。之前,一般流行采用单片机来控制驱动LCD。采用单片机控制LCD的显示在设计上相对比较简单。可以通过KEIL等软件的编写方便地控制LCD的图形以及字符的现实。但是由于单片机的顺序执行结构。决定了在现实图片或者字符的同时,单片机本身无法处理其他数据或者执行其他的运算命令。这在某种程度上大大地降低了工作的效率。而采用FPGA来控制LCD则不存在这个问题。但是由于FPGA不像单片机,可以直接使用控制语句来方便地控制LCD。因此需要编写大量的代码来控制LCD。因为这个原因,采用FPGA的设计一般都会再一次通过单片机来驱动LCD的显示。本课题主要任务是设计基于FPGA的LCD控制器,兼顾好程序的易用性,以方便之后模块的移植和应用。最后在FPGA上的任意位置显示任意的16*16D的中文字符以及16*8的英文字符,另外要能根据输入数据的变化同步变化LCD上显示的内容。同时要能将储存模块中的图片数据正常地显示在LCD上。该课题的研究将有助于采用FPGA的系列产品的开发,特别是需要用到LCD得采用FPGA的产品的开发。同时可以大大缩短FPGA的开发时间。另外,由于模块的易用性,也将使得更多的采用FPGA的产品之上出现LCD,增加人机之间的交互性,为行业和我们的生活带来新的变化。1.1.11.1.21.2 LCD的控制、应用和市场的发展现状在技术方面,因集成式的控制芯片具有包括了缩小了IC的体积、低功率消耗、降低封装的成本、节省电路板的数量及体积等优点,并使材料成本及LCD后段组装成本得以降低,因此许多厂商纷纷朝向高集成度控制芯片发展,并积极开发视讯应用的控制芯片。而最新趋势Smart Panel,在制程上则有简化流程、减少材料成本等优点。根据相关资料显示,Smart Panel可降低约10%15%的成本,这也是国外一些大厂所钟爱的方式。 为降低控制IC 成本,众多IC厂商纷纷推出集成式的单芯片控制IC。美国的Genesis最早推出集成式IC,将ADC、Scaler、OSD (内置菜单)与PLL(锁相环)为一颗单芯片控制IC。接着更进一步集成入DVI 组件,形成LCD 双模控制IC。其组件集成数量持续增多,并渐渐添加Video 的功能。当前Genesis 最高集成度的产品,集成入的组件已经包括ADC、Scaler、PLL、OSD、TCON 与DVI,仅剩Video 的功能以及SDRAM 的组件尚未集成。 随着市场竞争的加剧,液晶显示器厂商的成本压力越来越大,必须采用更简单的线路设计实现液晶显示器的功能,以期降低成本,才能在市场竞争中立于不败之地。 LCD控制IC必将向高集成度方向发展,以满足市场需要。而在LCD的应用以及市场方面,虽然手机仍然是中小尺寸液晶显示屏(LCD)的最主要应用设备,但便携导航设备(PND)、数码相框和MP3/便携媒体播放器(PMP)等新型设备,正在该市场的销售额中占有越来越大的份额。由于这些产品所使用的显示屏大于手机所用的显示屏,因此在供应商的工厂中同样需要更多的面板,这对于LCD面板生产商来说是个绝好的机会。各种中小尺寸LCD的产能扩张和价格下降,促进了其应用领域的多元化。这又进一步刺激了需求,并吸引许多其它产品来采用中小型LCD,如白色家电和零售标牌。大多数行业内的公司认为,为了利用手机市场和新兴产品,中小尺寸显示屏供应商必须相应地平衡和调整策略,否则就可能错失整个市场。1、导航设备PND的主要功能是显示GPS信息,因此能否显示详细并准确地图影像非常关键。这使得许多PND制造商把目光转向了更加精确的小型LCD。这方面出现的需求促使iSuppli公司把2011年PND显示屏市场的出货量预测提高到了6,050万部。2006年的出货量为1,080万部,2006-2011年出货量的年复合增长率是41.3%。iSuppli以前预测2011年出货量是5,400万部。尽管中小尺寸LCD价格下降,但2011年PND显示屏的营业额将从2006年的3.24亿美元上升到7.76亿美元,年复合增长率为19.1%。2007年一年,PND显示屏销售额将比2006年的3.24亿美元增长近一倍,达到6.35亿美元。2、媒体播放器但PND不是推动中小尺寸显示屏市场繁荣的唯一消费电子产品。MP3/PMP目前是使此类显示屏出货量增长最快的领域之一。 iSuppli公司预测,2011年底MP3/PMP单位出货量将达到2.05亿,而2007年预计为1.63亿。这相当于2011年显示屏销售额将达到16亿美元,略低于2007年的17亿美元,这主要是因为中小型LCD价格随着产能扩张和制造工艺改进而不断下降。推动显示屏单位出货量增长的因素包括:消费电子公司苹果和它的iPod产品线,以及距苹果最近的竞争对手紧追不舍,从而推动MP3/PMP市场整体增长。MP3音乐播放器变身进入了PMP领域。有源矩阵LCD供应商正在紧盯这个市场,以防止AMOLED供应商染指。因为PMP是消费电子产业中增长最快的领域之一,而且随着更多的产品涌现,将需要更多的LCD来满足需求。数码相框和便携DVD播放器等其它应用每年需要的显示屏越来越多。这些应用需要较大的显示屏(约7.0英寸),因此它们的需求增长可能对产能分配和供需平衡造成较大的影响。1.3 课题的主要研究内容和重点、难点本课题的主要内容是基于FPGA的LCD控制器的设计研究,并兼顾程序的易用性以方便以后模块的移植。该课题设计到FPGA得应用,LCD驱动的研究,字符以及图像显示模式的研究等知识。并利用QUARTUS II 实现相关模块的设计,在FPGA上实现对LCD的控制,显示任意中文,英文和图像。本课题研究重点及难点:1、12864-12的液晶模块指令集较为复杂,采用FPGA设计需要定义的变量和状态将会很多;2、中英文字符的显示部分程序要考虑到程序的易用性,方便将来移植后的使用;3、图形显示部分,由于12864-12内部图形显示GDRAM的地址寻址方式的独特性,并不是始终从0到15循环,而是随着行数的增加会做一个移位。同时LCD屏幕上的点阵也被拆分为上下两个半屏,分别对应Y地址的0-8和9-15这导致了取模后的图形所对应的数组,如若按普通方法则不能正常显示。1.4 课题研究预期目标本课题研究预期目标主要包括采用FPGA控制LCD在任意位置显示任意中文以及英文字符,和在LCD上显示储存模块中的图像数据。课题研究预期理论目标:1、掌握FPGA对LCD的控制方法,为课题研究做好理论准备;2、通过FPGA对LCD的控制,使得任何开发者都可以较为容易地通过此显示控制模块,在液晶上显示所需的内容。;3、算法实现:对于12864-12的特殊图形RAM对应LCD的显示方式,采用特定算法,使得取模后的图像所对应的数组,无需经过处理便可以通过FPGA (Filed-Programmable Gate Array)在LCD上显示。课题研究预期技术目标:1、中文及英文字符在LCD上的正常显示;2、图像数据在LCD上的正常显示;3、输入变动的数据能在LCD上的同步刷新显示;天津工业大学本科毕业论文第二章 第二章 系统总体设计 2.1 系统设计要求根据本系统设计要求,使用VHDL语言,利用Altera提供的FPGA/CPLD开发集成环境Quartus调试开发。要求能够方便地使用所开发的LCD控制模块,在LCD屏幕上的任意位置显示任意的中文以及英文字符,同时可以根据输入的动态数据进行动态输出,另外在图片显示模式下可以直接将取模后的图片显示在LCD上。2.1.12.2 系统总体设计框图系统设计总体框图如图2-1所示,在系统上电后,FPGA将首先对系统进行初始化操作,在初始化操作中最重要的是寄存器的复位,显示开关的控制,功能设置以及对显示屏幕进行清屏。之后通过显示控制模块对LCD进行显示的控制。显示控制模块主要负责在LCD显示多行字符时进行换行操作,在用户指定数据在屏幕的指定显示位置时设置该位置所对应的RAM的值,以及在图像显示时进行的ROM地址重映射算法,和对LCD显示区对应RAM进行的写入操作。其中的数据分别来自中英文字符模块,动态数据模块,以及图像数据模块。对此模块的设计,主体结构以状态机来实现。图2-1系统设计总体框图2.3 系统开发资源选用2.3.1液晶模块选用FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864,内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字,也可完成图形显示。低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。1、基本特性:l 低电源电压(VDD:+3.0-+5.5V)l 显示分辨率:12864点l 内置汉字字库,提供8192个1616点阵汉字(简繁体可选)l 内置128个168点阵字符l 2MHZ时钟频率l 显示方式:STN、半透、正显l 驱动方式:1/32DUTY,1/5BIASl 视角方向:6点l 背光方式:侧部高亮白色LED,功耗仅为普通LED的1/51/10l 通讯方式:串行、并口可选l 内置DC-DC转换电路,无需外加负压l 无需片选信号,简化软件设计l 工作温度:0-+55,存储温度:-20-+602、外观尺寸图:FYD12864-0402B点阵图形液晶显示模块外观尺寸如图2-2所示:图2-2 FYD12864-0402B点阵图形液晶显示模块外观尺寸图3、模块接口说明:串行接口管脚信号,如表2-1所示:表2-1串行接口管脚信号说明并行接口,如表2-2所示:表2-2并行接口说明2.3.2 FPGA选用XC2S50系列开发板是针对FPGA的初、中级学习者设计,帮助用户降低学习成本和加快用户快速进入可编程逻辑器件设计开发领域,提供一个帮助用户快速开始可编程逻辑器件学习之旅的硬件平台。针对FPGA初、中级学习者设计,该核心板可配合与之配套的实验主板进行相应的实验,也可做为CPLD、FPGA研发的原形。核心板简单实用、扩展性好,尤其适合前期用户开发验证用。板上提供ISP接口、并将FPGA的部分引脚引出。方便用户开发自己的产品,最大限度的为用户节约学习成本和加快学习的速度。核心板上拥有下面资源:l FPGA主芯片:XC2STQ144l 有源晶振:40MHzl 支持JTAG下载,Slave Serial下载l 实验用法:核心板可以作为原型板,用户可以根据自己需要自行扩展。也可配合EDA实验主板进行可编程逻辑器件的入门学习用。天津工业大学本科毕业论文第三章 第三章 系统硬件设计 3.1 系统设计总体框图系统设计总体框图如图4-1所示,在系统上电后,FPGA将首先对系统进行初始化操作,在初始化操作中最重要的是寄存器的复位,显示开关的控制,功能设置以及对显示屏幕进行清屏。之后通过显示控制模块对LCD进行显示的控制。显示控制模块主要负责在LCD显示多行字符时进行换行操作,在用户指定数据在屏幕的指定显示位置时设置该位置所对应的RAM的值,以及在图像显示时进行的ROM地址重映射算法,和对LCD显示区对应RAM进行的写入操作。其中的数据分别来自中英文字符模块,动态数据模块,以及图像数据模块。对此模块的设计,主体结构以状态机来实现,如图3-1所示图4-1 系统设计总体框图3.2 系统硬件资源选用3.2.1液晶模块选用本设计选用了带ST7920驱动的LCD12864-12模块来进行设计和调试。该模块自带字库。其中,12864-12汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192个中文汉字(16X16点阵),128个字符(8X16点阵)几64X256点阵显示RAM(GDRAM)。3.3天津工业大学本科毕业论文第四章 第四章 系统软件设计本章首先对该系统的各个模块的设计思路进行描述,并给出框图。首先介绍了初始化模块的设计,然后介绍了分别针对字符以及图片的写入数据模块。之后介绍了本设计中最关键的显示控制模块,并列举了详细的设计方法。最后给出系统设计的整体Block Diagram。 4.1 初始化模块设计4.1.1 LCD模块初始化设计对12864-12模块的初始化采用状态机的方式,通过资料中给出的12864-12模块的说明,选择所需要的初始化命令,结合特定的时钟频率,对LCD进行初始化。最终使屏幕清屏,显示区对应RAM复位,LCD的功能则设置为所需要的功能。其中,字符显示模块的初始化流程图如图4-1所示:图4-1字符初始化流程图其中直至写数据这一步骤之前都为起始的初始化动作。与字符显示不同,图片的现实需要使用特殊指令集中的指令,因此需要在功能设定时做出改动。而同时,在对GDRAM的地址以及内容进行操作时,必须保持绘图显示的关闭状态,因此在初始化时,需要将绘图显示关闭。但是由于写数据这一指令属于常规指令集,因此在设置完GDRAM地址后,需要重新使用功能设定,将指令集的使用改回常规指令集。当数据全部写入完毕,则可以通过再次使用特殊指令集,开启图像显示,将GDRAM中的数据显示在屏幕上。图片显示模块的初始化流程图如图4-2所示:图4-2 图片显示初始化流程图4.1.2 时钟模块初始化设计由LCD初始化的流程图可得大部分指令的执行时间为72us,而清除显示和地址归位则需要4.6ms,为72us的64倍左右,因此需要选择一个合适的时钟来作为ENABLE信号的输入。 时钟电路的设计:由于FPGA开发板上自带的晶振频率为50MHZ,而所需要的时钟频率则需要小于13.9KHZ,因此需要一个分频器对其进行分频。这里采用简单的计数器对其进行分频,计数器上限经过计算设为4000.经过分频后的时钟信号频率为12.5KHZ,满足实验需要。在分频之后由于时钟信号需要同时控制LCD模块以及FPGA的模块,因此需要编写一个程序,使得两者之间同步。最终的时钟控制模块如图4-3所示:图4-3 时钟模块其中CLOCK_LOGIC模块的设计通过几个触发器来实现,部分程序如下:component DFF port( d : in std_logic; clk: in std_logic; q : out std_logic);end component;signal sig1,sig2,sig3 : std_logic;begin sig1= not sig2; sig3= not clock; out_clksig1,clk=clock, q=sig2); mydff2 : DFF port map (d=sig2,clk=sig3, q=enable);4.1.3 字符显示前初始化模块的设计1、初始化部分的状态机设计根据字符模块初始化的流程图如图4-4所示:图4-4 LCD初始化流程图因此,此部分的状态机设计如下: when IDLE= -空闲状态if flag =0 thenstate = CLEAR;flag=1;elsestate -清屏状态,使LCD屏幕上显示全白if div_counter2 DIVSS2 then -DIVSS2为64,由于清屏状态所需要的执div_counter2 = div_counter2+1; -行时间为普通指令的64倍,因此采用state=CLEAR; -一个0到64的计数器对其进行延迟处理elsediv_counter2 =0;state -地址归位,使DDRAM地址复位if div_counter2 DIVSS2 then -这里和清屏状态一样,需要延迟64倍的时div_counter2 = div_counter2+1; -钟时间state=RETURNCURSOR;elsediv_counter2 =0;state -点设置,选择整体画面的移位方式state -显示状态开state -控制游标的移动和显示移位state -功能设置state -设置DDRAM地址 state=WRITERAM; 其中,由于时钟信号的周期约为80us,而CLEAR清屏和RETURNCURSOR点设定这两个操作需要4.6ms的操作时间,因此在这两个状态中加入了计数器用以延迟,延迟时间为时钟周期的64倍,约为5.12ms.这样设计可以最大化地提高LCD的响应速度。2、字符显示的数据选择l 清除显示(对应状态机状态为CLEAR)对应的数据接口的数据(DB7DB0)为00000001,RS,RW为0;l 地址归位(对应状态机状态为RETURNCURSOR)对应(DB7DB0)的数据为00000010,RS,RW为0;l 点设定(对应状态机状态为SETMODE)选择整体画面不移位,DDRAM地址+1,因此对应DB7DB0数据为00000110,RS,RW为0;l 显示状态开(对应状态机状态为SWITHMODE),光标显示关,字符不反白,因此对应DB7DB0数据为00001100,RS,RW为0;l 游标和显示控制(对应状态机状态为SHIFT)选择AC=AC+1,因此对应DB7DB0数据为00010100,RS,RW为0;l 功能设定(对应状态机状态为SETFUNCTION)选择8为数据线接口,以及基本指令集动作,因此对应DB7DB0数据为00110000,RS,RW为0;l DDRAM(对应状态机状态为SETDDRAM)地址的设定则根据需要设定,对应DB7DB0数据为1000000010011111之间,RS为1,RW为0;另外,根据模块引脚说明,FPGA还需要同时控制其他几个引脚。其中,为了选择并行的数据发送模式,PSB引脚应为H。RET引脚则由FPGA控制在经过一段时间的L复位后跳为H。初始数据的赋值:psb=1;rs=1 when state = WRITERAM or state = READRAM else 0; -当状态为读写RAM时,RS为1rw=0 when state = CLEAR or state = RETURNCURSOR or state = SETMODE or state = SWITCHMODE or state = SHIFT or state = SETFUNCTION or state = SETCGRAM or state = SETDDRAM or state = WRITERAM else 1; -当状态为如上时,RW为0data -游标和显示移位,这一部和字符显示部分一样state -设置8位数据传输方式state -启用特殊指令集if flag_p=0 then -这个选择结构用于选择打开或者关闭显示,state=DRAWFUNOFF; -默认为关闭显示,只有当图像数据写入完成else -才会使flag_p等于1,这时打开显示。state -关闭显示 state -设置GDRAM起始地址state -在使用写入数据命令前,必须转会常规指令集 state=CLEARRAM; -使GDRAM中数据清02、 图片显示初始化数据的选择其中与字符显示不同的指令集数据如下:l 功能设定1(对应状态机状态为SETFUNCTION1)选择8为数据线接口,以及特殊指令集动作,因此对应DB7DB0数据为00110100,RS,RW为0;(由于对此指令集的更改,改动了2个数据,需要2个时钟周期,因此增加一个同样的状态SETFUNCTION2)l 特殊功能设定(对应状态机状态为DRAWFUNR)选择绘图显示关,以及基本指令集动作,因此对应DB7DB0数据为00110000,RS,RW为0;l 绘图显示开(对应状态机状态为DRAWFUNON)选择绘图显示开,以及特殊指令集动作,因此对应DB7DB0数据为00110100,RS,RW为0;l 绘图显示关(对应状态机状态为DRAWFUNOFF)选择绘图显示关,以及基本指令集动作,因此对应DB7DB0数据为00110100,RS,RW为0;对应的赋值部分程序如下:.Data result := 16#20#; when . = result := 16#2E#; when : = result := 16#3A#; when a = result := 16#61#; when b = result := 16#62#; when c = result := 16#63#; when d = result := 16#64#;. when X = result := 16#58#; when Y = result := 16#59#; when Z = result := 16#5A#; when others = result := 16#20#; end case; return result;end function;当程序运行时,每当一个时钟信号来临,显示控制模块的输出地址自动加1,并且把地址传输到输入字符模块,模块通过输入地址的加1,从第一个字符数据开始输出对应数据,直到控制模块所设定的输出字符数为止。其中对没有在模块中定义的地址,一致输出“ ”所对应的数据,即16*8的空白。以显示“This is a simple test for LCD Display.”为例核心程序如下:if(clk2event and clk2=0) then case address is when 000000 =datadatadatadatadatadatadatadatadatadatadatadata result := 16#B2#; when # = result := 16#E2#;调用时的只需将和#这两个符号来代替中文字符即可when 000000 =datadatastateif counter = 7 or counter = 15 then -这里假定要在屏幕上显示3组state=SETDDRAM1; -长度均为8位的数据position=position+1; -因此需2次改变显示位置counter=counter+1;elsif counter 24 then -总共共计24个16进制数据state=WRITERAM; counter=counter+1;else counter=0; state if counter_a=0 then -counter_a为2值变量,确保每次在屏幕上显示2 state=WRITERAM1; -个16*8的数据 counter_a1001 then -判断输入数据是否大于9 addr=110001; -对应数据RAM中的字符“1” else addr1001 then -判断数据是否大于9 stream1=11 & (stream-1010); -个位显示X-10的数据 else stream1=11 & stream; -个位数据直接显示 end if; -以上是个位数字的显示 state=SETDDRAM2; -下一个状态为重置显示位置 counter_a state=WRITERAM1;4.3.3图像数据显示控制设计绘图显示RAM提供128X8个字节的记忆空间,在更改绘图RAM时,先连续写入水平与垂直的坐标值,再写入两个字节的数据到绘图RAM,而地址计数器(AC)会自动加一;在写入绘图RAM的期间,绘图显示必须关闭,整个写入绘图RAM的步骤如下:1) 关闭绘图显示功能2) 先将水平坐标(X)写入绘图RAM地址;3) 再将垂直坐标(Y)写入绘图RAM地址;4) 将D15-D8写入到RAM中;5) 将D7-D0写入到RAM中;6) 打开绘图显示功能;绘图显示的缓冲区如图4-9所示:图4-9 图像显示缓冲区坐标对应屏幕位置因此,图像显示的程序设计示意图大体如图4-10所示:图4-10 图片显示流程图在实际操作时,发现GDRAM的显示方式与DATASHEET上不同。首先,直接将数据给GDRAM并将其显示后发现屏幕上有非常多的杂点,因此在对其进行写入正式数据前,必须将其清0。其次当将32个8位数据写入GDRAM后,Y地址不变,需要人为将其设定为下一行,X地址自动加1。但是之后X地址并不是从0开始到15,而是从1开始到15,在跳到0。第三行的情况则是X从2到15,然后是0-1。因此发现X的地址不断在往前移位。同时,由于GDRAM缓冲区特殊的分行显示方式,和普通取模软件从图片最上开始直接到最底部的取模方式不同。若初始的数据如图4-11所示:0123456789101112131415161718192021222324252627282930313233343536373839.图4-11 欲显示数据则直接按普通寻址方式输入数据后,显示的结果如图4-12所示:0123456789392021222324252627281011121314151617181929303132333435363738图4-12 实际显示数据这显然不是我们要的结果,因此,如果想让图片在LCD上正常显示,有两种方式。第一种是在图片进行取模后,通过电脑中编写的特殊程序对其进行处理。但是这种方法有可能使之后的开发过于依赖上位机,因此这里采用第二种方法。第二种方法是将图片取模后的数据直接放入ROM中,但是在对ROM进行读取数据时,按照特定的算法进行读取,最后使图片正常显示。具体操作方式如下A)换行的算法:设定一个计数器counter,使其每次进行写RAM操作时加1。当counter等于31+j的时候则进入设置GDRAM的换行状态,同时j加32。如此久完成了换行的过程。B)上下半屏的合并算法:再设置另一个0到31的计数器r_counter,每次进行写RAM操作时加1。J1为另一个计数器。寻址的地址为r_counter与j1的和。当r_counter在0到15时,则正常寻址,每换一行j1需要加16。如果r_counter大于15,那么寻址时C需要在原来的基础上加上512-16。同理,在换行后,寻址时j1也要再加上16。C)X地址向前移位的处理:同样的计数器r_counter,每次换行后在原来的基础上加上2,如此即可解决所有问题。 程序设计示意图如图4-13所示,其中,r_counter为5位的2进制数,范围为0到31图4-13 改进后的图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论