1、摘 要在嵌入式系统软硬件设计仿真平台Proteus的基础上设计了公交车液晶显示报站系统。硬件电路包括控制器件AT89C51、显示模块AMPIRE12864和4个操作按键。通过汉字取模软件生成汉字点阵,实现了天津市第35路公交车单线方向的报站仿真。本系统是以单片机的基本语言C语言来进行软件设计,51的编程语言常用的有二种,一种是汇编语言,一种是C 语言。汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C 语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C 语言还可以嵌入汇编来解决高时效性的代码编写问题。对于开发周期来说,
2、中大型的软件编写用C 语言的开发周期通常要小于汇编语言很多。综合以上C 语言的优点,我在学习时选择了C 语言指令的执行速度快,节省存储空间。为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了,使硬件在软件的控制下协调运作。关键词:公交车报站系统;Proteus;AT89C51;AMPIRE12864ABSTRACT The LCD Bus Stop Announcement system have been designed based on Proteus software,an embedded system hardware and software simu
3、lation platformThe hardware circuits includes the control device AT89C51,display module AMPIRE 128 64 and 4 operation buttonVia Chinese modulus software togenerate Chinese characters lattice,and using C language,the simulation of No35 bus-stop-reportingin oneway direction was realized in the Tianjin
4、 city This system edits collected materials the language to proceed with single the basic language of a machine the software designs, the instruction carries out the speed quick, save memory. For the sake of easy to expand with the design adoption mold a logic for turning construction, making proced
5、ure designing relation that change, software more shorter and more easier to understand. Make hardware control in software descended to moderate the operation.Key words:busstopreporting system;Proteus;AT89C51;AMPIRE12864前 言公交车对提升城市形象、促进社会经济发展起到积极推动作用。但在我国偏远的西部和经济还不太发达的一些地方,公交车的发展还明显跟不上人们日益增长的物质需求,如2
6、009年3月,康定县才成为四川藏区第一个开通公交服务的城市。对于我国二级以下的城市,目前公交车报站的情况大多还存在以下问题:没有自动报站,实行人工报站;有自动报站,却停留在单一的语言报站上;LED站台数字编号(比如002)显示;LED汉字显示屏,但屏幕显示内容单一。这些在乘客对路线不熟悉或在乘车拥挤的情况下,势必会给乘客带来不便。本文设计了公交车报站系统液晶显示汉字的控制电路,并在Proteus仿真平台上完成了模拟。首先在绪论中介绍了本课题的课题背景、研究意义及完成的功能。本系统是以单片机的基本语言C语言来进行软件设计,可读性和可移植性强。正文中首先简单描述系统硬件工作原理,且附以系统硬件设计
7、框图,论述了本次毕业设计所应用的各硬件接口技术和各个接口模块的功能及工作过程, 并具体描述了AT89C51和液晶模块AMPIRE12864连接电路的软、硬件调式。阐述了程序的流程和和实现过程。本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。最后对我所开发的用单片机实现LCD液晶显示器控制原理的设计思想和软、硬件调试作了详细的论述。目 录第一章 绪论1 1.1课题背景及研究意义1 1.1.1 课题背景1 1.1.2 研究意义1 1.2报站器的动态发展趋势2 1.3本文主要内容2 第二章 硬件电路设计4 2.1硬件电路设计思路和框图4 2.2芯片AT89C514 2.2.
8、1芯片简介4 2.2.2管脚说明5 2.3液晶模块AWPIRE128646 2.4仿真电路设计10 第三章 系统软件设计12 3.1系统流程图设计12 3.2Proteus ISIS仿真系统基本知识133.2.1系统概述13 3.2.2进入Proteus ISIS143.2.3Proteus工作界面及窗口说明143.2.4Proteus绘图流程举例14 3.3KEIL Cx51软件的使用16 3.3.1创建项目16 3.3.2为项目新建文件173.3.3生成.HEX文件18 3.4汉字字模提取18 3.5程序功能说明20 3.5.1LCD的初始化20 3.5.2写命令20 3.5.3写数据20
9、 3.5.4汉字显示21 3.5.5主程序23 3.6仿真结果23第四章 结论28 参考文献29附录30谢辞42 天津工业大学2011届本科毕业设计(论文) 第一章 绪论1.1课题背景及研究意义1.1.1课题背景从1831英国人沃尔特汉考克为他的国家制造出了世界上第一辆装有发动机的公共汽车起,到今天,公交车已经历经了将近200年的发展过程。从最初的“闷罐头”到如今配套的空调系统;从专人售票到无人售票;从人工报站到半自动语音报站,公交车向着越来越人性化的方向发展。 单片机体积小,重量轻,具有很强的灵活性而且价格便宜,得到越来越广泛的运用,例如工业控制领域、家电产品,智能化仪器仪表,计算机外部设备
10、,特别是机电一体化产品中都有重要的用途。20世纪80年代中期,Intel公司将8051内核使用权以专利互换或出售的形式转给世界许多著名IC制造厂商,这样8051就变成有众多制造厂商支持的,发展出上百个品种的大家族。到目前为止,其它任何一个单片机系列均未发展到如此的规模。正因为51单片的运用是如此广泛,因此学习单片机的运用是非常重要的。学好单片机也是学习其他嵌入式控制器如ARM、DSP的基础,任何嵌入式控制器都离不开单片机种所涵盖的如中央处理器,定时器、中断控制器,IO口控制器, 串行通讯控制器,I2C总线控制器,片内外存储控制器,汇编语言,C语言,操作系统的概念。因此说学好单片机,再去学习其他
11、嵌入式控制器如ARM、DSP是比较简单的。可以说学好单片机是其它进阶微处理器的一个台阶。1.1.2研究意义 随着城市化进程的加快,公交车作为城市建设的基础设施之一,仍然是绝大多数出行者的首选交通方式。传统由乘务人员人工报站,该方式由于效果太差和工作强度太大,在绝大多数城市已经被淘汰。随着科学技术的日益发展和进步,微型计算机已经在很多领域得到广泛应用。LCD与微机技术结合,比传统的LED显示效果更佳。结合公交车报站的使用特点和运营环境,设计一种由单片机控制、LCD显示的公交车报站显示系统。公交车报站显示系统的设计应用单片机,LCD显示,使到站信息及提示信息以显示的方式告知市民,为市民提供人形化、
12、完美的服务。1.2报站器的发展趋势公共汽车行驶在现代文明程度高的市区,它是一道流动的风景线,因而对整车外形乃至色彩都有更高的要求。作为公共汽车还要求有醒目和减少乘务人员劳动强度的电子报站器,电子显示路牌,无人售票装置,前后电视监视系统等新技术的采用也将越来越普及。公交车报站器在公交事业中占有举足轻重的地位,它直接影响到公交车的服务质量。目前公交车报站有三种方式,一种是利用GPS全球卫星定位系统的公交车报站系统,在司机座位后面隔板上,安装了一台15英寸的液晶电视和 GPS信号接收器,安装了这套设备后,公交车在语音报站的同时,通过液晶电视还可以显示到站站名的字幕,这样如果没听清报站的话,通过显示屏
13、,乘客也可以一目了然。当出现紧急情况时,调度中心将会给公交车发出相应的信息,以短信的形式传送到显示屏上,同时车载台会发出相应的提示音;驾驶员也可以通过相应的工具进行回复。目前在美国部分城市GPS卫星定位系统已经投入使用,国内也有此类产品的研制开发,其功能强大,系统稳定,但其投资昂贵,尤其是一些中小城市无法承受。另外两种是手动电子报站和人工报站的方式,而它们都离不开司务人员,加大司乘人员的工作强度。手动电子报站一般有司机或者乘务员控制,经常出现错报,误报的情况。城市公共交通是市民出行的主要交通工具之一。提供舒适,安全、便捷的乘车环境,对于公交企业来说,不仅是应尽的责任,亦是不断追求的目标。1.3
14、本文主要内容本文系统的阐述了公交车报站器的相关知识,介绍了该课题的硬件电路的设计,说明了单片机89C51和液晶显示模块AMPIRE12864的功能,以及如何使用相关仿真软件Proteus和Keil Cx51进行课题的电路仿真。本文分为四个主要章节,其主要内容分别是:第一章 ,简要介绍了课题研究的相关背景和意义,公交车报站器的发展趋势和本论文的主要内容。第二章 ,主要介绍了课题的硬件电路设计方案,相关芯片AT89C51的使用,液晶显示模块AMPIRE12864的指令说明和硬件电路连接图。第三章 ,主要介绍课题的系统流程图设计,仿真软件Proteus和Keil Cx51的使用,以及课题的软件程序说
15、明和仿真结果。第四章 ,总结课题的相关内容,说明设计的意义和存在的缺陷。第二章 硬件电路设计2.1硬件电路设计思路和框图公交车液晶报站显示主要解决汉字的液晶显示和按键报站1-4。LCD液晶显示模块AMPIRE12864可以显示字母、数字符号、中文字型及自定图形,只要一个最小的微处理系统,将液晶显示模块的I/O设备直接与之连接,就可以进行控制液晶显示器和数据传输,从而达到理想的显示效果。使用P2口给液晶显示器提供控制信号,P0口给液晶显示器传送数据。由于公交车报站系统有起始站、终点站、上一站和下一站的差别,所以4个采用独立式按键分别进行控制,按键电路从P1口输入信号。系统设计框图如图2-1所示。
16、主要采用单片机的最小系统AT89C51、LCD液晶显示模块AMPIRE12864及外围电路组成。图2-1 系统设计框图2.2芯片AT89C512.2.1芯片简介 AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功
17、能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.2.2管脚说明 AT89C51的引脚排列如图2-2所示。图2-2 AT89C51引脚排列图 下面对设计中用到的管脚进行简要的介绍: P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流。 RS
18、T:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。2.3液晶模块AWPIRE12864 液晶显示器件(LCD)独具的低压、微功耗特性使他在单片机系统中特得到了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,因为汉字不能像西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。选择LCD液晶显示模块AMPIRE12864的汉字图形型液晶显示模块,可显示汉字及图形,图形液晶显示显示器如图2-3所示。 图2
19、-3 LCD电路图 其引脚功能如表2-1所示5。 表2-1 AMPIRE12864管脚说明序号管脚名称功 能1CS1左半屏片选端,低电平有效2CS2右半屏片选端,低电平有效3GND地4VCC逻辑电源5V0调节对比度6RS数据/指令控制信号:1为数据输入,0为指令输入7R/W数据/指令读写控制信号:1为读出,0为写入8E允许控制信号,R/W为0时,E信号下降沿锁存DB7DB0916DB0DB7数据总线17RST复位信号,低电平有效18Vout驱动电压 其指令描述如下: (1)显示开/关设置 CODE:R/W RS IDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 LLLLHHHH
20、HH/L 功能:设置屏幕显示开/关。 DB0=H,开显示;DB0=L,关显示。不影响显示RAM(DD RAM)中的内容。 (2)设置显示起始行 CODE:R/W RS IDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLHH行地址(063) 功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。 (3)设置页地址 CODE:R/W RS IDB7 DB6 DB5 DB4 DB3 DB2 DB
21、1 DB0 LLHLHHH页地址(07) 功能:执行本指令后,下面的读写操作将在指定页内,直到重新设置。页地址就是DD RAM 的行地址,页地址存储在X地址计数器中,A2-A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。 DD RAM地址映像表如表2-2所示。 表2-2 RAM地址映像表Y 地址 0 1 2 61 62 63 DB0 PAGE0 DB7 X=0 DB0 PAGE1 DB7 X=1 DB0 PAGE6 DB7 X=7 DB0 PAGE7 DB7 X=8 (4)设置列地址 CODE:R/W RS IDB7 DB6 DB5
22、 DB4 DB3 DB2 DB1 DB0LLLH列地址(063) 功能: DD RAM 的列地址存储在Y地址计数器中,读写数据对列地址有影响,在对DD RAM进行读写操作后,Y地址自动加一。 (5)状态检测 CODE:R/W RS IDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0HLBFLON/OFF RST LLLL功能:读忙信号标志位(BF)、复位标志位(RST)以及显示状态位(ON/OFF)。BF=H:内部正在执行操作; BF=L:空闲状态。RST=H:正处于复位初始化状态; RST=L:正常状态。ON/OFF=H:表示显示关闭; ON/OFF=L:表示显示开。 (6)写
23、显示数据 CODE:R/W RS IDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0L HD7D6D5D4D3D2D1D0 功能:写数据到DDRAM,DDRAM是存储图形显示数据的,写指令执行后Y地址计数器自动加1。D7-D0位数据为1表示显示,数据为0表示不显示。写数据到DDRAM前,要先执行“设置页地址”及“设置列地址”命令。 (7)读显示数据 CODE:R/W RS IDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0HHD7D6D5D4D3D2D1D0 基本操作时序: 读状态:输入:RS=L,R/W=H,CS1 或CS2=H,E=H 输出:D0D7=状态字 写
24、指令:输入:RS=L,R/W=L,D0D7=指令码,CS1或CS2=H,E=高脉冲输出:无 读数据:输入:RS=H,R/W=H,CS1 或CS2=H,E=H 输出:D0D7=数据 写数据:输入:RS=H,R/W=L,D0D7=数据,CS1 或CS2=H,E=高脉冲 输出:无RAM 地址映射图到LCD 显示屏由两片控制器控制,分别用和控制。每个内部带有64X64 位(512字节)的RAM 缓冲区,对应关系如下图2-4所示。图2-4 LCD地址映射图 (8)操作 1.设定开始页地址和列地址 2.设定读写模式,进行读写操作2.4 仿真电路设计控制电路选用单片机AT89C51,本电路接高电平,没有扩展
25、ROM。利用晶体本身的特性,可以利用晶振和电容搭建震荡电路与AT89C51的XTAL1和XTAL2相连,向单片机提供一个频率较高的时钟脉冲,具体连接见电路连接图。AT89C51的复位引脚外接开关复位电路。将液晶的数据输入端DB0DB7与单片机的P0口相连,进行数据传输操作。因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻,这样就用到排阻。排阻就是好多电阻连载一起,他们有一个公共端1端为公共端接VCC或地,看你是上拉还是下拉呢,其他接要操作的端口。本电路中P0口需要接上拉电阻,所以排阻的公共端接VCC。将P20,P21,P22分别与液晶的E,RW,RS端连接,用其组合来控制向LCD中
26、进行数据和指令的读与写操作,P24和P23分别和CS1和CS2端连接,用来控制液晶左右屏的显示。另外背光灯的电源正极、液晶显示模块的电源正极以及LCD驱动电压输入端都接在+5V的稳压电源上,背光灯负极和模块的电源负极统一接地。为了便于司机操作,采用4个独立式按键对显示进行控制,分别与单片机的P10P13相连,分别代表4种功能:起点站、上一站、下一站和终点站。报站系统液晶显示的电路连接图如图2-5所示。图2-5 公交车报站系统液晶显示仿真电路第三章 系统软件设计3.1系统流程图设计本设计针对天津市第35路公交车,共有7站,对单边线路的报站进行了仿真。软件流程图如上图3-1所示。 图3-1 系统流
27、程图系统上电后,对液晶模块进行初始化,并进行清屏。按键部分采用扫描法,当检测到按键按下时,进行键值判断,并进行相应显示程序的跳转,实现公交报站的功能。整个程序的详细流程如下: Stepl:对LCD进行初始化,即根据系统的需要对液晶控制器的各项参数进行设置,显示开关、显示起始行、光标位置等设置,再对LCD所有单元写零清屏后准备显示。 Step2:扫描P1端口,等待按键的按下,进行键值判断,不同的按键对应不同的分支:(1)K1按键:表示是起始站,显示欢迎词,在LCD上固定显示:“欢迎您乘坐康定城第2路公交车!”; (2)K2、K3按键:分别表示上一站和下一站,可方便进行站台调节,在LCD上显示:“
28、1 站到了!下一站2 。其中1 和2 分别是本站和下一站的站台名,如本线路要涉及5个站台(除去起始站和终点站)。而“站到了!”和“下一站”是公交线路中各站都要显示的,则固定显示,故按键改变的只是模块的左半屏上半部分和右半屏下半部分内容的显示。(3)K4键:表示终点站,显示欢送词,在LCD上固定显示:“终点站到了,请乘客依次从后门下车”。一定延迟后表明本次运行结束。Step3:若没有到终点站,返回Step2。3.2Proteus ISIS仿真系统基本知识3.2.1系统概述Proteus是英国Labcenter公司开发的电路分析与实物仿真软件6。它运行于Windows操作系统上,可以仿真、分析(S
29、PICE)各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。具有强大的原理图绘制功能。Proteus软件所提
30、供了30多个元件库,数千种元件。元件涉及到数字和模拟、交流和直流等。对于一个仿真软件或实验室,测试的仪器仪表的数量、类型和质量,是衡量实验室是否合格的一个关键因素。在Proteus 软件包中,不存在同类仪表使用数量的问题。Proteus 还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些
31、语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。3.2.2进入Proteus ISIS双击桌面上的ISIS 6 Professional图标或者单击屏幕左下方的“开始”“程序”“Proteus 6 Professional” “ISIS 6 Professional”,出现如图3-2所示屏幕,表明进入Proteus ISIS集成环境。 图3-2 启动时的屏幕3.2.3Proteus工作界面及窗口说明Proteus的工作界面是一种标准的Windows界面,如图3-2所示。
32、单击对象选择按钮P会出现如图3-4对话框。在keywords中输入需要的元器件型号如89C51会出现对话框在Results下选中需要的元器件然后按右下脚的OK关闭对话框,这时元器件列表中就会列出89c51。这时在原件列表中左键选取89c51,在原理图编辑窗口中单击左键,这样89c52就被放到原理图编辑窗口中了。同样放置其他元器件。3.2.4 Proteus绘图流程举例 1.元件设置,首先按刚才所述选取放置一元件电阻,然后在图形编辑窗口中右键选取电阻,然后单击左键会出现如图3-5对话框然后按需要进行设置即可。图3-3 Proteus工作界面图3-4 对象选择界面图3-5 修改元器件属性界面2.添
33、加仿真文件(.hex文件) 图3-6 添加十六进制文件界面连好电路图后右键单击图中的单片机选中,然后单击左键出现如图3-6对话框在program file中单击浏览图标,找到所需要的.hex文件最后单击ok退出。3.3 KEIL Cx51软件的使用Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。下面介绍Keil C51软件的使用方法。3.3.1创建项目启动后进入keil c的编辑界面如图3-7。此时点击projectNew Project菜单选项可创建一个新的项目文件。此时会弹出一个标准的W
34、indows对话框,询问新建项目文件的名字,建议每个项目都使用一个独立的文件夹。文件名写好后单击确定会出现如图3-8对话框要求选择单片机型号,keil c51几乎支持所有的51核的单片机,选好单片机后只要点击确定即可。图3-7 keil c的编辑界面图3-8 CPU选择界面3.3.2 为项目新建文件点击菜单FileNew File此时屏幕如图3-9此时在弹出的Text窗口中写入自己的程序,写完后点击FileSave As将文件保存。注意,如果用语言编写程序,则扩展名为.c,如果用汇编语言编写程序,则扩展名必须为.asm。此时回到编辑界面单击“Target 1”前面的“”号,然后在“Source
35、 Group 1”上单击右键,在弹出的下拉菜单中单击“Add File to Group Source Group 1”再在出现的对话框中选择自己需要.c文件或.asm文件,单击Add然后关闭此对话框。此时编辑界面如下图3-10所示。图3-9 新建文件界面图3-10 编辑界面3.3.3生成.HEX文件在生成.hex文件前要对程序进行编译看程序是否有误,单击图3-10中的编译按钮即可,如显示无误则右击“Target 1” 再在下拉菜单中单击“Options For Target target1,此时单击“Output”选中“Create HEX File” 选项,最后单击确定。此时再次点击编译按
36、钮进行编译则自动生成保存.hex文件,此时只需按刚才Proteus介绍所说,将.hex文件添加到单片机中就可以在Proteus进行仿真了。3.4汉字字模提取液晶显示模块中按字节为单位划分,单个屏幕中,共分为8个页,每页为8行,而每一行为64个位(即64列)。同计算机一样,单片机控制液晶点阵显示中的数据也是以“0 和“1”代码来表示的。一般地,“0”代表不显示数据,“1代表有显示数据,根据编码的不同,最终会显示出不同的字符。显示器上的显示点与驱动控制芯片中的显示缓存RAM 是一一对应的,即字模当中的一个位代表LCD显示中的一个像素点,取点方式为从左到右,自上到下的顺序。这里采用1616的点阵输出
37、显示每个汉字,那么就需要屏幕上的256个点组成的方块来显示。一个字节对应8个点,所以一个汉字需要32个字节来存储显示7,8。“汉字字模点阵数据批量生成工具”就是运用这个原理来实现汉字编码的软件。 图3-11 汉字字模点阵数据批量生成软件本文采用PCtoLCD2002汉字提取软件,打开窗口,如图3-11所示,设置好字体、字号等格式参数,在汉字输入区,输入汉字或其他字符,即得到需要的代码。将本设计所涉及的汉字用软件取模批量生成1616点阵代码,放入ROM 区的TABLE表格中,通过逻辑控制,最终可将代码读出到硬件驱动电路上,显示出不同的汉字。3.5程序功能说明 在软件设计中做好流程图设计后,就开始
38、对每一个流程进行相应的程序编写,本课题软件编程中涉及到LCD初始化、写命令和写数据,以及汉字显示,下面进行逐一说明。3.5.1 LCD的初始化 LCD 初始化程序包括设定显示起始行、DDRAM中页地址和列地址、开显示。程序如下:void lcdinti() /初始化 writecode(0X3f); 设置显示器开; writecode(0Xc0); 设置显示起始行为第一行; writecode(0Xb8); 设定列地址; writecode(0X40); 设定页地址;3.5.2写命令 如图3-12(1)所示为写命令子程序流程图。在写指令前必须进行判忙操作, 调用checkbusy() 即可。L
39、CD=dat 表示P0口输出信号为dat。 3.5.3写数据 (1)写命令 (2)写数据 图3-12 写指令、写数据子程序流程图 如图3-12(2)所示为写数据子程序流程图。写数据和写指令的程序流程基本相似,只有RS信号不同。3.5.4汉字显示 图3-13 汉字显示分布图 图3-14 汉字显示流程图 汉字为1616 点阵,按每次写一个字节来算,写一个汉字至少需要32 次写数据操作。另外,汉字必定是分布在两个页面上,如图3-13所示。因此,要写入一个完整的汉字,必定要进行换页操作。流程图中的page+k 即是用来换页的。AMPIRE12864的液晶显示部分是由2块6464的液晶屏横向拼接而成,所
40、以在汉字显示时需要分别写入命令和数据,其流程图如图3-14所示。其中CS1=1;CS2=0时左片显示,CS1=0;CS2=1时右片显示。3.5.5主程序 液晶显示系统的主程序由main 函数和液晶显示相关函数组成,本设计中把按键相关的代码也置于主程序中。其中,main 函数完成系统初始化、变量定义、变量初始化、寄存器初始化等工作;液晶显示相关函数实现在LCD 上显示字符和汉字的功能;按键实现对要显示的汉字的选择。对于液晶显示系统而言,主程序主要实现以下功能: (1)LCD 的初始化; (2)在LCD上选择性的显示一段汉字。 程序代码如下: main() lcdinti(); LCDDisplay(0xb9); LCDDisplay(0xbb); 初始化并清屏 if(X1!=1) LCDDisp