毕业设计GDM12864A显示模块与单片机的接口技术及仿真.doc_第1页
毕业设计GDM12864A显示模块与单片机的接口技术及仿真.doc_第2页
毕业设计GDM12864A显示模块与单片机的接口技术及仿真.doc_第3页
毕业设计GDM12864A显示模块与单片机的接口技术及仿真.doc_第4页
毕业设计GDM12864A显示模块与单片机的接口技术及仿真.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

前 言液晶显示器件在中国已有二十余年的发展历史。二十余年来,液晶显示器件从实验室走向大规模生产集团,形成了独立的产业部门。现在,液晶显示几乎已经应用于生产,生活的各个领域,人们几乎时时处处都要与这一神奇而又普通的面孔打交道。 液晶显示是集单片机技术、微电子技术、信息处理于一体的新型显示方式。由于液晶显示器具有低压低功耗,显示信息量大易于彩色化,无电磁辐射,长寿命,无污染等特点。LCD是目前显示产业中发展速度最快,市场应用最广的显示器件,成为众多显示媒体中的佼佼者,在越来越多的领域中发挥作用,是目前显示器件中一个理想的选择。随着计算机技术及电子通信技术的发展,LCD显示屏作为一种新的传媒工具,现已经应用到商业、军事、车站、宾馆、体育、新闻、金融、证券、广告以及交通运输等许多行业,大到几十平方米的大屏幕,小到家庭影院用的图文显示屏,以及政府部门应用的电子黑板,证券、银行等部门用的信息数字混合屏。LCD显示屏带来广泛的社会效益和经济效益,具有良好的发展前景。LCD在监控系统中的应用:目前大多数监控系统自带的显示系统为LED数码管显示,这样显示效果比较单一,只能显示监控系统的测量值。而LCD液晶显示器不仅可以显示数值、汉字等,并且可以显示文本和图形。利用LCD和键盘实现人机交互,使监控系统独立工作成为可能。通过监控系统对现场的单回路控制器进行参数设置,对各个单回路控制器的工作进行监控。LCD在时钟中的应用:在日常生活中我们会经常看到时间的显示,这些显示大都是采用液晶显示器来显示的,而对其中的汉字无法用显示来解决。我们利用LCD液晶模块制成的小屏幕实现了时间的显示,显示格式为“时时:分分:秒秒”。另外,可以增加闹钟功能,时间到了则产生音乐声;还可以增加万年历显示“年月日”等多项功能。LCD在大屏幕显示中的应用:大屏幕显示的应用范围极广,随着社会发展,公众生活的加强,人们对能够面向广大公众传递信息的显示装置越来越感到必需。使用液晶投影显示大屏幕,不仅有投影仪,指挥用大屏幕,还有液晶投影彩色电视。它可以用一个体积很小的系统装置,实现100英寸以上的非常漂亮的大屏幕电视显示。它与传统的显示媒体相比,具有分辨率极高,透过性好,显示内容丰富,彩色易于控制等优点。随着LCD显示屏的广泛应用,其控制系统也层出不穷。由于它的控制系统均是基于嵌入式微处理器开发,所以单片机在其中也占有一席之地。近年来,单片机已经成为科技领域的有力工具,人类社会生活的得力助手。它的广泛应用,不仅仅体现在工业控制、机电应用、智能仪表、实时控制、航空航天、尖端武器等行业和领域的智能化、高精度化,而且在人类日常生活中也随处可见它的身影。单片机是嵌入式系统的独立发展之路,向MCU阶段发展的中国要因素,就是寻求应用系统在芯片上的最大化解决。目前,单片机正朝着高性能和多种方向发展,其趋势将进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格等几个方向发展,其功能也将越来越丰富,速度越来越快,甚至有些方面不会逊于ARM或DSP。单片机芯片是按工业测控环境要求设计的,故抗干扰的能力优于PC机。系统软件(如:程序指令,常数,表格)固化在ROM中,不易受病毒破坏。许多信号的通道均在一个芯片内,故运作时系统稳定可靠。便于拓展,片内具有计算机正常运行所必需的部件,片外有很多供扩展用的(总线,并行和串行的输入/输出)管脚,很容易组成一定规模的计算机应用系统。具有丰富的控制指令体现了其较强的控制功能:如:条件分支转移指令,I/O口的逻辑操作指令,位处理指令。本文研制一种基于51单片机实时控制的LCD液晶显示屏控制系统。硬件系统由单片机最小系统和液晶显示系统组成,PC机进行显示内容的编辑和字模数据的提取;本系统主要是实现单片机与液晶显示模块之间的接口技术,可以采用间接控制方式完成。将液晶显示模块接口与单片机系统板中的某个并行I/O接口连接,计算机通过对该I/O接口的操作间接的实现对模块的控制。本文主要对液晶显示器的控制原理进行详细的说明,重点研究液晶显示控制器构成、液晶显示控制器功能、液晶显示控制器的硬件组成。在液晶控制器的基础上,设计液晶驱动接口电路,重点是驱动接口电路与点阵式液晶显示器12864LCD的连接。系统软件设计,包括绘制液晶显示初始化流程图、清除显示中的AT89S52 单片机的子程序流程图及图形方式下汉字显示程序;然后编制语言进行调试。本文对单片机液晶显示驱动技术现状及 发展趋势进行了分析,然后进行了单片机液晶驱动开发和相关接 口电路设计。采用proteus软件对硬件电路进行相关设计,包括设计各器件之间的接口电路,并对每个器件的管脚功能作了详细的说明。在分析系统硬件电路各个模块功能之后,绘制系统硬件流程图。最后通过硬件流程图,采用汇编语言编制相应的程序,并且绘制软件流程图,最后对所编辑的程序进行上机调试,将预先设定的代码输入计算机,基本达到预期目标,显示出相应图像。第1章 系统硬件设计1.1单片机1.1.1单片机概述单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机也被称为微控制器(MicroController),是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。1.1.2单片机系列芯片介绍 (1)PIC单片机 是MICROCHIP公司的产品,其突出的特点是体积小,功耗低,精简指令集,抗干扰性好,可靠性高,有较强的模拟接口,代码保密性好,大部分芯片有其兼容的FLASH程序存储器的芯片. (2)EMC单片机是台湾义隆公司的产品,有很大一部分与PIC 8位单片机兼容,且相兼容产品的资源相对比PIC的多,价格便宜,有很多系列可选,但抗干扰较差. (3)ATMEL单片机(51单片机)ATMEL公司的8位单片机有AT89、AT90两个系列,AT89系列是8位Flash单片机,与8051系列单片机相兼容,静态时钟模式;AT90系列单片机是增强RISC结构、全静态工作方式、内载在线可编程Flash的单片机,也叫AVR单片机. (4)PHLIPIS 51PLC系列单片机(51单片机)PHILIPS公司的单片机是基于80C51内核的单片机,嵌入了掉电检测、模拟以及片内RC振荡器等功能,这使51LPC在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求. (5)HOLTEK单片机台湾盛扬半导体的单片机,价格便宜,种类较多,但抗干扰较差,适用于消费类产品. (6)TI公司单片机(51单片机)德州仪器提供了TMS370和MSP430两大系列通用单片机.TMS370系列单片机是8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合;MSP430系列单片机是一种超低功耗、功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合1.1.3 AT89C52单片机介绍 在众多的单片机系列中,AT89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系列可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,也适用于常规编程。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、超高效的解决方案。 AT89C52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,3个16位定时器/计数器,一个响亮2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C52可降至0HZ静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。AT89C52单片机为很多嵌入式控制系统提供了一种灵活性高且廉价的方案。故此选用AT89C52单片机。如图1-1所示,为AT89C52的硬件结构图。AT89C52单片机的内部结构与MCS-51系列单片机的构成基本相同。CPU是由运算器和控制器所构成的。运算器主要用来对操作数进行算术、逻辑运算和位操作的。控制器是单片机的指挥控制部件,主要任务的识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。它的程序存储器为8K字节可重擦写Flash闪速存储器,闪烁存储器允许在线+5V电擦除、电写入或使用编程器对其重复编程。数据存储器比51系列的单片机相比大了许多为256字节RAM。AT89C52单片机的指令系统和引脚功能与MCS-51的完全兼容。CPUFLASH串行通讯口RAM输入输出接口计数器定时器时钟图 1-1 单片机89C52结构框图主要性能参数 8K字节可重擦写Flash闪速存储器 1000次可擦写周期 全静态操作:0Hz-24MHz 三级加密程序存储器 2568字节内部RAM 32个可编程I/O口线 3个16位定时/计数器 8个中断源 可编程串行UART通道 低功耗空闲和掉电模式 图1-2 AT89C5外部引脚图AT89C52管脚说明VCC:电源GND:接地P0口:P0口是一个8位漏级开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0口端口写“1”时,引脚作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接受指令字节:在程序效验时,输出指令字节。程序效验时,需要外部上拉电阻。 P1口:P1口是一个具有内部上拉电阻的8位是双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电平。对P1口写“1”时,内部上拉电阻的原因,将输出电流ILL。 此外,与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输出(P1.1/T2EX),具体如下表所示。 表 1-1 P1.0和P1.1的第二功能 引脚号功能特性P1.0T2(定时/计数器2外部计数脉冲输入),时钟输出P1.1T2EX定时/计数2捕获/重装载触发和方向控制 在Flash编程和校验时,P1口接收低8位地址字节。 P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲级可驱动吸收或输出电流4个TTL逻辑电平。对P2口写“1”时,通过内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流ILL。 在访问外部好曾许存储器或用16位地址读取外部数据存储器时,P2口送出高8位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在Flash编程和校验时,P2口接收低8位地址字节和一些控制信号。 P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电平。对P3口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入端口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流ILL。P3口除了作为一般、的I/O口线外,更重要的是它的第二功能,如下表所示。 表1-2 P3口引脚第二功能引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通) 在Flash编程和校验时,P3口也接收一些控制信号。 RST:复位输入。晶振工作时,RST脚持续2个机器周期以高电平将使用单片机复位。 ALE/:地址锁存器控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚()也使用作编程输入脉冲。 在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。 如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作无效。这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位的设置对微控制器处于外部执行模式下无效。 :外部程序储存器选通信号()是外部程序存储器选通信号。当AT89C52从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而在访问外部数据储存器时,将不被激活。 :访问外部程序存储器控制信号。为使能从0000HFFFFH的外部程序存储器读取指令,端必须保持低电平(接地)。为了执行内部程序指令,应该接VCC。 在flash编程期间,也接受12伏VPP电压。 XTA L1:振荡器反相放大器及内部时钟发生器的输入端。XTA L2:振荡器反相放大器的输出端。1.2LCD液晶显示器1.2.1LCD液晶器工作原理自人类进入信息时代以来,信息显示技术在人们社会活动和日常生活中的作用日益明显。例如,信息处理、接收及发送等操作均借助于信息系统终端与人之间的界面 显示来完成。另一方面,60年代以后,半导体集成电路技术的飞速发展和广泛应用,使信息系统设备向小型化、轻型化、节能化、高密度化发展。液晶显示具有低电压、微功耗、易彩色化等特点,恰好符合技术发展趋势和信息时代的需求,促使了液晶显示技术的发展。LCD显示模式早在上世纪60年代就己出现,并于上世纪70年代形成扭曲相列型TN-LCD产业,主要应用于电子手表、计算器当中。到上世纪80年代中期开发的超扭曲相列型STN-LCD产品,在显示品质上相比TN-LCD有了很大的进步。随着应用领域的不断扩大,TN和ST显示模式由于其固有的不足己无法适应显示技术的发展,其缺陷主要表现在交叉效应严重、显示容量小、响应速度慢等。TFT-LCD显示技术彻底克服了上述两种显示方式的不足,以其大容量、高清晰度和全彩色视频显示成为LCD显示的主导技术。LCD技术是把液晶灌入两个列有细槽的平面之间。这两个平面上的槽互相垂直(相交成90度)。也就是说,若一个平面上的分子南北向排列,则另一平面上的分子东西向排列,而位于两个平面之间的分子被强迫进入一种90度扭转的状态。由于光线顺着分子的排列方向传播,所以光线经过液晶时也被扭转90度。但当液晶上加一个电压时,分子便会重新垂直排列,使光线能直射出去,而不发生任何扭转。LCD正是由这样两个相互垂直的极化滤光器构成,所以在正常情况下应该阻断所有试图穿透的光线。但是,由于两个滤光器之间充满了扭曲液晶,所以在光线穿出第一个滤光器后,会被液晶分子扭转90度,最后从第二个滤光器中穿出。另一方面,若为液晶加一个电压,分子又会重新排列并完全平行,使光线不再扭转,所以正好被第二个滤光器挡住。总之,加电将光线阻断,不加电则使光线射出。(a)无外加电压 (b)有外加电压图1-3 液晶器件的显示原理1.2.2 GDM12864A 图形液晶显示模块电路特性(一) GDM12864A 的电特性配置于 GW48-PK 系统的 LCD GDM12864A 是带显示存储器的图形液晶显示列驱动控制器。它的特点是内置 6464 位的显示存储器,显示屏上各像素点的显示状态与显示存储器的各位数据一对应,显示存储器的数据直接作为图形显示的驱动信号。显示数据为“1”,相应的像素点显示;显示数据为“0“,相应的像素点就不显示。同时 GDM12864A 配备了一套显示存储器的管理电路和与计算机接口电路,允许计算机直接访问显示存储器,也就是说 GDM12864A 可以直接与计算机的总线连接。 GDM12864A 的主要特性为: 拥有 6464 位(512 字节)的显示存储器,其数据直接作为显示驱动信号。 8 位并行数据接口,适配 M6800 系列时序。 64 路列驱动输出。 简单的操作指令显示开关设置,显示起始行设置,地址指针设置和数据读写等指令。 低功耗,在显示期间功耗最大为2mW。 宽电压工作 Vcc=2.7V5.5V Vee=0V-10V(二) GDM12864A模块特性GDM12864A 的接口电路定义如下表所示:表1-3电路接口定义序号符号电平状态功能1GND0V电源地2Vcc5.0V逻辑电源正3V00-5V液晶显示驱动电源4D/IH/L输入寄存器选择信号7R/WH/L输入读写选择信号8EH/L输入使能信号7DB0H/L三态数据总线(最低位)8DB1H/L三态数据总线9DB2H/L三态数据总线10DB3H/L三态数据总线11DB4H/L三态数据总线12DB5H/L三态数据总线13DB6H/L三态数据总线14DB7H/L三态数据总线(最高位)15CS2H输入片选2(高电平有效)16CS1H输入片选1(高电平有效)17/RESL输入复位信号(低电平有效)18VEE-输出LCD驱动负电压19A4.2V输入背光电源(+)20K0V背光电源(-)表1-4接口信号中的两个片选信号的组合定义CS1CS2GDM12864A00禁止使用01左区10右区11未选1.3单片机与LCD连接本设计选用AT89c52单片机、和GDM12864A型LCD,本连接为间接控制方式。间接控制方式是计算机通过自身的或系统中的并行接口与液晶显示模块连接,计算机通过对这些接口的操作,以达到对液晶显示模块的控制。这种方式的特点是电路简单,控制时序由软件实现,可以实现高速计算机与液晶显示模块的接口。实用电路图如下图所示。在图中电路中以 89c51的P0口作为数据口,P2.4为CS2, P2.3为CS1, P2.2为E,P2.1为R/W和P2.0为DI等信号。电位器用于显示对比度的调节。图1-4 单片机与LCD连接图第2章 系统软件设计2.1GDM12864A 图形液晶显示模块的软件特性了解GDM12864A 图形液晶显示模块的电路特性后,要使用GDM12864A图形液晶显示模块还需要熟悉其软件特性,即GDM12864A 的指令功能,才能很好地应用图形液晶显示模块。GDM12864A 的指令功能非常简单,指令一览表如下表所示。 表2-1 GDM12864A 指令表指令名称控制信号控制代码D/I R/WD7 D6 D5 D4 D3 D2 D1 D0显示开头设置0 00 0 1 1 1 1 1 D显示起始行设置0 0 1 1 L5 L4 L3 L2 L1 L0页面地址设置0 01 0 1 1 1 P2 P1 P0 列地址设置0 0 0 1 C5 C4 C3 C2 C1 C0 读取状态字0 1 BUSY 0 ON/OFF REST 0 0 0 0写显示数据1 0数 据读显示数据1 1数 据 图2-1 DDRAM地址表GDM12864A 一共有七条指令,从作用上可分为两类。第一条和第二条指令为显示状态设置类;其余指令为数据读写操作指令。下面详细解释各个指令的功能: l 读状态字(Status Read)RSR/WDB7DB7DB5DB4DB3DB2DB1DB001BUSYOON/OFFRESET0000 状态字是计算机了解GDM12864A 当前状态的唯一的信息渠道。状态字为一个字节,其中仅有3位有效位,它们是: BUSY:表示当前 GDM12864A 接口控制电路运行状态。BUSY=1表示 GDM12864A 正在处理计算机发来的指令或数据。此时接口电路被封锁,不能接受除读状态字以外的任何操作。BUSY0表示 GDM12864A 接口控制电路已处于“准备好”状态,等待计算机的访问。 ONOFF:表示当前的显示状态。ONOFF=l表示关显示状态,ONOFF=0表示开显示状态。 RESET:表示当前 GDM12864A 的工作状态,即反映RST端的电平状态。当RST为低电平状态时,GDM12864A 处于复位工作状态,RESET=1。当RST为高电平状态时,GDM12864A 为正常工作状态,RESET=0。 在指令设置和数据读写时要注意状态字中的BUSY标志。只有在BUSY=0时,计算机对GDM12864A 的操作才能有效。因此计算机在每次对GDM12864A 操作之前,都要读出状态字判断BUSY是否为“0”。若不为“0”,则计算机需要等待,直至 BUSY=0为止。 显示开关设置(Display onoff) RSR/WDB7DB7DB5DB4DB3DB2DB1DB00O11111D该指令设置显示开关触发器的状态,由此控制显示数据锁存器的工作方式,从而控制显示屏上的显示状态。D位为显示开关的控制位。当D=1为开显示设置,显示数据锁存器正常工作,显示屏上呈现所需的显示效果。此时在状态字中 ONOFF=0。当 D=0为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态,但显示存储器并没有被破坏,在状态字中 ONOFF1。 显示起始行设置(Display Start Line)RSR/WDB7DB7DB5DB4DB3DB2DB1DB00011显示起始行(063) 该指令设置了显示起始行寄存器的内容。HD612O2U有64行显示的管理能力,该指令中 L5LO为显示起始行的地址,取值在O3FH(164行)范围内,它规定了显示屏上最顶一行所对应的显示存储器的行地址。如果定时间隔地,等间距地修改(如加一或减一)显示起始行寄存器的内容,则显示屏将呈现显示内容向上或向下平滑滚动的显示效果。 页面地址设置Set Page(X address)RSR/WDB7DB7DB5DB4DB3DB2DB1DB00010111Page(07) 该指令设置了页面地址X地址寄存器的内容。GDM12864A 将显示存储器分成8页,指令代码中P2PO就是要确定当前所要选择的页面地址,取值范围为07H,代表第l8页。该指令规定了以后的读写操作将在哪一个页面上进行。 列地址设置(Set Y address)RSR/WDB7DB7DB5DB4DB3DB2DB1DB001Y address(063) 该指令设置了Y地址计数器的内容,C5COO3FH(164)代表某一页面上的某一单元地址,随后的一次读或写数据将在这个单元上进行。Y地址计数器具有自动加一功能,在每一次读写数据后它将自动加一,所以在连续进行读写数据时,Y地址计数器不必每次都设置一次。 页面地址的设置和列地址的设置将显示存储器单元唯一地确定下来,为后来的显示数据的读写作了地址的选通。 写显示数据(Write Display Data)RSR/WDB7DB7DB5DB4DB3DB2DB1DB0显 示 数 据 该操作将8位数据写入先前已确定的显示存储器的单元内。操作完成后列地址计数器自动加一。 读显示数据(Read Display Data) RSR/WDB7DB7DB5DB4DB3DB2DB1DB0显 示 数 据 图2-2 软件流程图 下面是程序代码及解释#include#include#includeZK.h /中文字库#define uchar unsigned char#define uint unsigned int#define LCD_databus P0 /LCD8位数据口sbit RS=P22; /RS为0命令;1数据sbit RW=P21; /RW为1-写;0-读sbit EN=P20; /使能端sbit CS1=P24; /片选1低电平有效,控制左半屏sbit CS2=P23; /片选1低电平有效,控制右半屏void Read_busy() /读“忙”函数-数据线的最高位DB71则busy P0=0x00; RS=0; RW=1; EN=1; while(P0 & 0x80); EN=0;void write_LCD_command(uchar value)/写命令函数 Read_busy(); /每次读写都要忙判断 RS=0; /选择命令 RW=0; /读操作 LCD_databus=value; EN=1; /EN由1-0锁存有效数据 _nop_(); _nop_(); EN=0;void write_LCD_data(uchar value)/写数据函数 Read_busy(); RS=1; /选择数据 RW=0; LCD_databus=value; EN=1; /EN由1-0锁存有效数据 _nop_(); _nop_(); EN=0;void Set_page(uchar page) /设置“页”LCD12864共8页,一页是8行点阵点 page=0xb8|page; /页的首地址为0xB8 write_LCD_command(page);void Set_line(uchar startline) /设置显示的起始行 startline=0xC0|startline; /起始行地址为0xC0 write_LCD_command(startline); /设置从哪行开始:共0-63;一般从0行开始显示void Set_column(uchar column) /设置显示的列 column=column &0x3f; /列的最大值为64 column=0x40|column; /列的首地址为0x40 write_LCD_command(column); /列位置void SetOnOff(uchar onoff) /显示开关函数:0x3E是关显示,0x3F是开显示 onoff=0x3e|onoff; /0011 111x,onoff只能为0或者1 write_LCD_command(onoff);void SelectScreen(uchar screen) /选屏 switch(screen) case 0: CS1=0;CS2=0;break; /全屏 case 1: CS1=0;CS2=1;break; /左半屏 case 2: CS1=1;CS2=0;break; /右半屏 default:break; void ClearScreen(uchar screen) /清屏 uchar i,j; SelectScreen(screen); for(i=0;i8;i+) /控制页数0-7,共8页 Set_page(i); Set_column(0); for(j=0;j64;j+) /控制列数0-63,共64列 write_LCD_data(0x00); /写入0, 地址指针自加1 void InitLCD() /LCD的初始化 Read_busy(); SelectScreen(0); SetOnOff(0); /关显示 SelectScreen(0); SetOnOff(1); /开显示 SelectScreen(0); ClearScreen(0); /清屏 Set_line(0);/开始行:0 void Display_HZ(uchar ss,uchar page,uchar column,uchar *p) /显示汉字 uchar i; SelectScreen(ss); Set_page(page); /写上半页 Set_column(column); /控制列 for(i=0;i16;i+) /控制16列的数据输出 write_LCD_data(pi); /汉字的上半部分 Set_page(page+1); /写下半页 Set_column(column); /控制列 for(i=0;i16;i+) /控制16列的数据输出 write_LCD_data(pi+16);/汉字的下半部分 void main() InitLCD(); /初始化 ClearScreen(0); /清屏 Set_line(0); /显示开始行 Display_HZ(1,0,2*16,shan);/陕 Display_HZ(1,0,3*16,xi);/西 Display_HZ(2,0,0*16,xi2);/西 Display_HZ(2,0,1*16,an);/安 Display_HZ(1,2,0*16,li);/理 Display_HZ(1,2,1*16,gong);/工 Display_HZ(1,2,2*16,da);/大 Display_HZ(1,2,3*16,xue);/学 Display_HZ(2,2,0*16,gao);/高 Display_HZ(2,2,1*16,ke);/科 Display_HZ(2,2,2*16,xue2);/学 Display_HZ(2,2,3*16,yuan);/院 while(1);2.2显示汉字由于GDM12864A显示模块不带字库我们需要自己编写字库,编写字库的软件用Zimo21。不过在取模之前我们要进行一些设定,根据此液晶显示显示的原理,设置如下:在此,我们选择楷体小四号,在文字输入框中输入要显示的字体,然后按ctrl+Enter结束输入,上面会显示取模的效果,之后再对要显示的汉子进行取模,如下图所示: 图2-4 编写字库软件设置图取模字库为:unsigned char code shan=0x00,0x10,0xF0,0xF8,0xF8,0xF8,0xA8,0xA0,0xFC,0xFC,0xFC,0xD0,0x50,0x00,0x00,0x00,0x00,0x30,0x7F,0x3F,0x03,0x63,0x32,0x3A,0x1F,0x0F,0x1F,0x39,0x31,0x61,0x61,0x40;unsigned char code xi=0x00,0x80,0x80,0x88,0x88,0xF8,0xF8,0xF8,0xF8,0x7C,0x4C,0x44,0xC0,0xC0,0x80,0x00,0x00,0x00,0x0F,0x1F,0x1E,0x17,0x13,0x19,0x0B,0x0A,0x3A,0x3C,0x3F,0x1F,0x01,0x00;unsigned char code xi2=0x00,0x80,0x80,0x88,0x88,0xF8,0xF8,0xF8,0xF8,0x7C,0x4C,0x44,0xC0,0xC0,0x80,0x00,0x00,0x00,0x0F,0x1F,0x1E,0x17,0x13,0x19,0x0B,0x0A,0x3A,0x3C,0x3F,0x1F,0x01,0x00;unsigned char code an=0x00,0x00,0x00,0x60,0x70,0x30,0xA4,0xF4,0xFC,0x1C,0x70,0x70,0x30,0x30,0x00,0x00,0x02,0x02,0x02,0x42,0x42,0x66,0x3F,0x3B,0x1F,0x1F,0x33,0x71,0x61,0x01,0x03,0x03;unsigned char code li=0x00,0x20,0x30,0xF0,0xF0,0x90,0xF0,0xF0,0xD8,0xF8,0xF8,0xE8,0xFC,0x7C,0x18,0x00,0x10,0x11,0x19,0x1F,0x2F,0x2C,0x24,0x29,0x2D,0x3F,0x3F,0x25,0x25,0x30,0x30,0x20;unsigned char code gong=0x00,0x00,0x00,0x10,0x10,0x10,0x10,0xF0,0xF0,0x10,0x18,0x18,0x10,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0x1F,0x18,0x08,0x08,0x08,0x08,0x18,0x10;unsigned char code da=0x00,0x00,0x80,0x80,0x80,0x80,0xFC,0xFC,0xFC,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x40,0x60,0x70,0x38,0x1F,0x0F,0x0F,0x1C,0x38,0x30,0x60,0x60,0x40,0x40;unsigned char code xue=0x00,0x80,0xE0,0xE0,0xEC,0xAC,0xA8,0xAC,0xEC,0xFE,0xBE,0x76,0x70,0x30,0x20,0x00,0x00,0x04,0x04,0x04,0x04,0x44,0xC6,0xFF,0x7F,0x3E,0x02,0x02,0x02,0x06,0x00,0x00;unsigned char code gao=0x00,0x00,0x08,0x08,0x28,0xE8,0xEA,0xAE,0xFE,0x78,0x28,0x08,0x08,0x08,0x00,0x00,0x00,0x01,0x3F,0x3F,0x0F,0x1F,0x1D,0x15,0x1D,0x3D,0x65,0x73,0x7F,0x7F,0x01,0x00;unsigned char code ke=0x80,0x80,0x80,0xF0,0xF8,0xFC,0x5C,0x44,0x50,0xD0,0xFE,0xFE,0xFC,0x00,0x00,0x00,0x08,0x0C,0x0E,0x07,0x3F,0x3F,0x03,0x03,0x02,0x02,0x3F,0xFF,0x7F,0x01,0x01,0x01;unsigned char code xue2=0x00,0x80,0xE0,0xE0,0xEC,0xAC,0xA8,0xAC,0xEC,0xFE,0xBE,0x76,0x70,0x30,0x20,0x00,0x00,0x04,0x04,0x04,0x04,0x44,0xC6,0xFF,0x7F,0x3E,0x02,0x02,0x02,0x06,0x00,0x00;unsigned char code yuan=0x00,0x08,0xF8,0xF8,0xF8,0xF8,0x78,0xF0,0xA4,0xFC,0xDC,0xB0,0x30,0x30,0x00,0x00,0x00,0x30,0x3F,0x3F,0x21,0x21,0x3A,0x1E,0x0E,0x3F,0x3F,0x21,0x21,0x38,0x38,0x00; 第3章 仿真结果利用proteus软件仿真结果为 图3

温馨提示

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

评论

0/150

提交评论