毕业设计论文1616点阵液晶字模研究

上传人:仙*** 文档编号:34625662 上传时间:2021-10-22 格式:DOC 页数:31 大小:562KB
收藏 版权申诉 举报 下载
毕业设计论文1616点阵液晶字模研究_第1页
第1页 / 共31页
毕业设计论文1616点阵液晶字模研究_第2页
第2页 / 共31页
毕业设计论文1616点阵液晶字模研究_第3页
第3页 / 共31页
资源描述:

《毕业设计论文1616点阵液晶字模研究》由会员分享,可在线阅读,更多相关《毕业设计论文1616点阵液晶字模研究(31页珍藏版)》请在装配图网上搜索。

1、1 引言1.1 本设计的目的和意义由于有些液晶本身不带字库,要将字转成1616点阵字模,单片机对于不带字库的液晶硬件进行编程时,需要查询所需显示的汉字字模数据,将其添加到汇编语言文件中,并保存该汇编文件。常用的液晶字模程序都是针对单个汉字的查询,当需要显示汉字数较多时候,查询和添加字模数据的操作较繁琐。如果能够有一个液晶字模程序能一次性生成多个汉字字模,就可以提高研发人员编程工作的效率。1.2 液晶字模的研究现状液晶的诞生要追溯液晶显示器的来源,必须先从液晶的诞生开始讲起。在公元1888年,一位奥地利的植物学家,菲德烈莱尼泽发现了一种特殊的物质。他从植物中提炼出一种称为螺旋性甲苯酸盐的化合物,

2、在为这种化合物做加热实验时,意外的发现此种化合物具有两个不同温度的熔点。而它的状态介于我们一般所熟知的液态与固态物质之间,有点类似肥皂水的胶状溶液,但它在某一温度范围内却具有液体和结晶双方性质的物质,也由于其独特的状态,后来便把它命名为Liquid Crystal,就是液态结晶物质的意思。不过,虽然液晶早在1888年就被发现,但是真正实用在生活周遭的用品时,却是在80年后的事情了。公元1968年,在美国RCA公司的沙诺夫研发中心,工程师们发现液晶分子会受到电压的影响,改变其分子的排列状态,并且可以让射入的光线产生偏转的现象。利用此一原理,RCA公司发明了世界第一台使用液晶显示的屏幕。而后,液晶

3、显示技术被广泛的用在一般的电子产品中,举凡计算器、电子表、手机屏幕、医院所使用的仪器或是数字相机上面的屏幕等等。令人玩味的是,液晶的发现比真空管或是阴极射线管还早,但世人了解此一现象的并不多,直到1962年才有第一本,由RCA研究小组的化学家乔卡司特雷诺先生所出版的书籍来描述。而与映像管相同的,这两项技术虽然都是由美国的RCA公司所发明的,却分别被日本的新力与夏普两家公司发扬光大。当今是一个信息化的时代,信息的重要性是不言而喻的,获取手段显得尤其重要。人们所接受的信息有70%来自于人的视觉,无论用何种方式获取的信息最终需要有某种显示方式来表示。在当代显示技术中,主流的有LED显示屏及LCD液晶

4、显示,而在这些显示技术中,尤其以液晶显示器LCD(Liquid Crystal Display)为代表的平板显示器发展最快、应用最广。LCD是典型的光电器件,它以材料科学为基础,综合利用了精密机械、光电及计算机技术,并正在微机械、微光学、纤维光学等前沿领域研究基础上,向高集成化、智能化方向发展。随着液晶技术的飞速发展,液晶显示模块在各种场合得到了越来越广泛的应用。在日常生活中,人们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通用器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、

5、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在小型智能化电子产品中,普通的7段LED数码管只能显示数字,若要显示英文字母或图像汉字,则必须使用液晶显示器。本设计的软件系统将自定义的带有汉字字符的汇编语言源文件进行添加字模数据的转换,主要用于不带字模的液晶硬件1。1.3 本设计所要解决的问题及完成的主要内容在设计中遇到的问题也很多,主要是如何从汇编源文件中找到自定义的汉字字符串部分,找到以后又将如何截取汉字,并将每个汉字用“,”分开,怎样将截取的汉字转换成为内码,如何将内码转换为对应的区位码,怎样根据区位码去找HZK16里的32个字节的数据,在单片机开发过程中要用到

6、十进制和十六进制、二进制的互相转换,这就需要一个计算器,实现转换功能,同时也需要一个可以计算51单片机波特率和定时器初值的软件。设计完成后软件系统可以读取汇编语言源文件中自定义的带有汉字字符的模块,进行截取汉字字符串,并查询HZK16.bin文件,从中获取该汉字的字模数据,并将数据部分添加到asm文件尾部,并且软件系统可以实现简单的十进制加减乘除运算,并能将计算结果转换成十六进制和二进制,也能完成51单片机波特率和定时器初值的运算。2 相关技术介绍2.1 delphi概述Delphi是著名的Borland(现在已和Inprise合并)公司开发的可视化软件开发工具。“真正的程序员用C语言,聪明的

7、程序员用Delphi”,这句话是对Delphi最经典、最实在的描述。Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和Visual C+相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和Visual Basic相比,Delphi则功能更强大、更实用。可以说Delphi同时兼备了Visual C+功能强大和Visual Basic简单易学的特点。它一直是程序员至爱的编程工具。 Delphi是Pascal语言的一种版本,但它与传统的Pascal语言有很大差别。一个Delphi程序首先应是程序框架(Frame),而这一框架正式应用程序的“骨架”。在骨架上即使没有附着

8、任何东西,仍然可以运行。所要做的工作只是在“骨架”中加入程序。缺省的应用程序是一个空白的窗体(Form),运行可以得到一个空白的窗口。这个窗口具有Windows窗口的全部性质,可以被放大缩小、移动、最大最小化等。程序框架及一个空白的窗体已经是一个可运行应用程序,只是不处理任何事情。Delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开发工具。它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术

9、。它简单易学、效率高,且功能强大,可以与Windows的专业开发工具SDK相媲美,使用Delphi开发应用软件,无疑会大大地提高编程效率 2。2.1.1 Delphi特点Delphi自从1995年2月诞生以来,获得了巨大的荣誉和广泛的影响力,以可视化编程、强大的编译功能、友好的用户界面闻名于世。其主要特点是:高效的可视化组件库和面向对象的架构;具有多种操作向导和在线帮助,大大方便程序编写;界面设计所见即所得和鼠标拖曳方式,可以轻松设计出华丽的界面;支持各种最新及最常用的技术如 Win32 API、OLE、COM、DCOM、ActiveX、ISAPI、NSAPI、DirectX等;全面支持Win

10、dows 应用程序;具有开放式数据库结构,集成了丰富的数据库开发工具;具有强大的面向网络编程功能,其C/S开发工具在高性能的快速应用程序开发领域成为行业标准。Delphi产品按照功能可以分为4个类型:(1)Delphi集成开发环境(Integrate Develop Environment):提供友好的用户编程开发界面,集成了高效的编译器、项目管理器、团队开发支持、高级调试等功能。(2)Delphi可视化组件库(Visual Component Library):提供几百个常用组件,用于数据库访问、用户接口、数据处理、报表和Internet开发。(3)Borland数据引擎(Borland D

11、ata Engineer):能够进行数据库管理,并与数据库服务器高速连接。(4)MIDAS:是一个集成与Delphi的分布式应用稽核,功能强大,主要用于商业逻辑的智能集中管理和企业交易的快速处理。2002年8月6日,Borland公司正式宣布推出Delphi 7 Studio,全面支持Microsoft公司.NET平台应用的开发。Delphi7是一个针对Windows平台上的跨平台快速开发(RAD)环境。Delphi7的一个显著特性是企业开发和部署。Delphi7的有以下新特点:(1)企业应用的MDA开发:通过让开发者从设计到发布都重复使用一个应用程序,加速开发进程,同时显著减少代码量和需要的

12、开发时间。(2)可视化的快速Web开发:让开发者能够在Delphi7环境中可视化地创建Web应用,并且利用它的应用模型框架,不必再考虑通用的服务器端的开发任务,还能透明地处理会话管理。(3)内建的Linux的跨平台支持:Delphi7在出售时将附带Delphi语言版本的Dylix3。Kylix3是第一个Linux操作系统上的高性能的可视化集成开发环境(IDE),它适用来快速创建数据库应用、GUI应用、Web应用和Web服务应用。(4)企业级的报表能力:让开发者能创建跨平台的报表,这些报表能帮助查看应用程序运行的效率。(5)Windows XP应用:Delphi7包含了对Windows XP风格

13、支持,让开发者能够创建可以利用Windows XP 使用者界面风格的应用。3 字模显示的原理3.1 字模生成的原理显示一个汉字,必然要用到汉字的点阵字形信息,也叫做汉字的字模,根据汉字的不同字体,可分为宋体字模、楷体字模、黑体字模等等。根据汉字的显示清晰度,叉可分为1616点阵字模、3232点阵字模等等。汉字的字模是汉字字形的数字化。汉字字模是这样得出来的:把汉字写在一个同一大小阿格组成的方格块内,将方格块分成M行N列共MN个小格组成点阵,而将汉字离散成网点,汉字的笔画能过某网格,则必有一个离散的点落在该网格内,该阿格对应的一位二进制数为1,否则该网格为空,对应的一位二进制为0,这样每一网格均

14、可对应一位确定的二进制数,把所有网格对应的二进数组合起来便组成了汉字的字模 3,4。那么一个点阵字模究竟占用多少字节数呢?我们来分析一下汉字字模的具体排列方式。例如下图中显示的“汉”字,使用1616点阵。字模中每一点使用一个二进制位(Bit)表示,如果是1,则说明此处有点,若是0,则说明没有。这样,一个1616点阵的汉字总共需要16*16/8=32个字节表示。字模的表示顺序为:先从左到右,再从上到下,也就是先画左上方的8个点,再是右上方的8个点,然后是第二行左边8个点,右边8个点,依此类推,画满1616个点。图 3-1 汉字字模的排列方式HZK16文件是按照GB 2312-80标准,也就是通常

15、所说的国标码或区位码的标准排列的。国标码分为 94 个区(Section),每个区 94 个位(Position),所以也称为区位码。其中0109 区为符号、数字区,1687 区为汉字区。而 1015 区、8894 区是空白区域。取得汉字区位码的方法:在计算机处理汉字和ASCII字符时,使每个ASCII字符占用1个字节,而一个汉字占用两个字节,其值称为汉字的内码。其中第一个字节的值为区号加上32(20H),第二个字节的值为位号加上32(20H)。为了与ASCII字符区别开,表示汉字的两个字节的最高位都是1,也就是两个字节的值都又加上了128(80H)。这样,通过汉字的内码,就可以计算出汉字的区

16、位码。具体算式如下: qh=c1-32-128=c1-160 wh=c2-32-128=c2-160 /其中qh,wh为汉字的区号和位号,c1,c2为汉字的第一字节和第二字节。 (3-1)根据区号和位号可以得到汉字字模在文件中的位置:location=(94*(qh1)+(wh1)*一个点阵字模的字节数。 (3-2)3.2 内码汉字机内码,又称“汉字ASCII码”,简称“内码”,指计算机内部存储,处理加工和传输汉字时所用的由0和1符号组成的代码。输入码被接受后就由汉字操作系统的“输入码转换模块”转换为机内码,与所采用的键盘输入法无关。机内码是汉字最基本的编码,不管是什么汉字系统和汉字输入方法,

17、输入的汉字外码到机器内部都要转换成机内码,才能被存储和进行各种处理。3.3 区位码为了使每一个汉字有一个全国统一的代码,1980年,我国颁布了第一个汉字编码的国家标准: GB2312-80信息交换用汉字编码字符集基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。由于国标码是四位十六进制,为了便于交流,大家常用的是四位十进制的区位码。所有的国标汉字与符号组成一个9494的矩阵。在此方阵中,每一行称为一个区,每一列称为一个位,因此,这个方阵实际上组成了一个有94个区、每个区内有94个位的汉字字符集。一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的区位码

18、。4 需求分析和可行性分析4.1 功能性需求软件需求分析是指对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析是软件设计、实现测试直至维护的主要基础,良好的需求分析可以避免或尽早提出早期的错误,从而降低软件的开发成本,改进软件的质量。该软件能够实现将自定义的带有汉字字符的汇编语言源文件进行添加字模数据的转换。4.2 非功能性需求用户界面需求:简洁、易用、易懂,友好的用户界面运行环境需求:windows 98及以上操作系统可靠性需求:保证用户在正常使用本系统时,用户的操作或误操作不会产生数据丢失4.3 可行性分析开发任何一个系统,都会受到时间和资源上的限制。因此,在每一个项目开发之

19、前,都要进行可行性分析,以减少项目的开发风险,避免人力,物力和财力的浪费。可行性分析主要包括经济可行性和技术可行性等。4.3.1 经济可行性经济可行性,主要是针对单片机开发者的开发成本与收益相比较。在单片机学习和开发过程中,常常需要得到汉字的字模数据,该软件可以给个人带来高效的工作效益和经济效益,同时也减少了购买带字库的液晶硬件开销,所以在经济上具有完全的可行性。4.3.2 技术可行性本系统开发平台是Delphi。 Delphi具有可视化界面,是一种面向对象的语言,简单易学而且灵活方便。在大二期间,就已学过Delphi,具备一定的系统分析与设计能力。因此,本系统的实现在技术上是可行的。5 系统

20、的实现开始选择取模方向、字体操作完成读HZK16.bin文件转换覆盖保存询问是否退出结束加载文件图5-1系统流程图5.1 字模生成的方法5.1.1 汉字的获取5.1.1.1 汉字的查找本设计程序通过查找寻找;hz,来确定汉字的所在行,再通过查找第一个开始截取,从第一个处开始找第二个,其中获取的内容就是所要操作的汉字。5.1.1.2 逐个汉字的截取众所周知,一个汉字占用了两个字节,通过计算字节数就可以得到对应的汉字数量,从而实现逐个的截取和转换汉字。截取的程序如下:beginResult:=; /避免出现重复hzNum:=length(hzstr) div 2; /获取汉字个数i:=0;Whil

21、e(i=0 then /L42345已经存在Exit /存在退出elseNeiMaStr.Add(Result); /不存在添加end;5.1.2.2 内码和区位码的转换过程通过内码和区位码的关系可以得出内码和区位码的转换程序如下:beginQ := Byte(HZ1) - $A0;W := Byte(HZ2) - $A0;end;5.1.3 HZK16字库概述HZK16字库是符合GB2312标准的1616点阵字库,HZK16的GB2312-80支持的汉字有6763个,符号682个。其中一级汉字有3755个,按声序排列,二级汉字有3008个,按偏旁部首排列。我们在一些应用场合根本用不到这么多汉

22、字字模,所以在应用时就可以只提取部分字体作为己用。HZK16字库里的1616汉字一共需要256个点来显示,也就是说需要32个字节才能达到显示一个普通汉字的目的。一个GB2312汉字是由两个字节编码的。每一个区有94个字符,下面以汉字“我”为例,介绍如何在HZK16文件中找到它对应的32个字节的字模数据。一个汉字占两个字节,这两个中前一个字节为该汉字的区号,后一个字节为该字的位号。其中,每个区记录94个汉字,位号为该字在该区中的位置。所以要找到“我”在hzk16库中的位置就必须得到它的区码和位码。这样我们就可以得到汉字在HZK16中的绝对偏移位置:offset=(94*(区码-1)+(位码-1)

23、*32 (5-1)注释:1、区码减1是因为数组是以0为开始而区号位号是以1为开始的 2、(94*(区号-1)+位号-1)是一个汉字字模占用的字节数3、最后乘以32是因为汉字库文应从该位置起的32字节信息记录该字的字模信息(前面提到一个汉字要有32个字节显示)5.1.4 字模生成的方法很多汉字有其复杂的结构。不少字模都可生成,并有其唯一的形状特性。美丽的汉字可以用矩阵方式来存储。矩阵越大则表示字符的准确度越高,需要的存储量越大。这就需要一个大的存储量以保证八千以上的汉字常用字摸大小的存储。大家都知字由笔画组成。公用字根到由基本笔画组成,字根和基本笔面一起拄规定的顺序和连接关系就可组成字。笔面之间

24、的连接关系代表了一个字的结构特性,称为连接结构。每个汉字有其一定的连接结构和意义。因而字形可以变换,而连接结构则是不能变的。不同的字有不同的连接结构和结构特性。一个字的连接结构,由其有关信息来描绘,这种信息描绘了一个字的结构。从而可得各字模的公用信息。换言之,只描绘各笔画连接结构的,仅适用于很多字模的基本形状,而不描绘笔面结构 5。5.2 波特率和定时器初值的计算5.2.1 波特率和定时器初值计算程序procedure TFrmMain.Button5Click(Sender: TObject);var temp:string;var int_t:real;beginif(radiogroup

25、1.ItemIndex=0)then /定时器T1选中beginif(radiobutton1.Checked =true)then /工作方式1,3beginif(checkbox1.Checked =true)then /smod=1begin edit5.Text :=floattostr(256-(strtofloat(edit3.Text)*1000000/(192*strtoint(combobox1.Text); /求的是定时初值TH1endelse /smod=0begin edit5.Text :=floattostr(256-(strtofloat(edit3.Text)*

26、1000000/(384*strtoint(combobox1.Text);end; temp:=floattostr(strtofloat(edit5.Text)-Frac(strtofloat(edit5.Text); /算十进制对应的十六进制数if(Frac(strtofloat(edit5.Text)=0.5)thenedit4.Text :=inttohex(strtoint(temp)+1,2)elseedit4.Text :=inttohex(strtoint(temp),2);end;end;if(radiogroup1.ItemIndex=1)then /T2选中begini

27、f(radiobutton1.Checked =true)thenbegin edit5.Text :=floattostr(65536-(strtofloat(edit3.Text)*1000000/(32*strtoint(combobox1.Text); temp:=floattostr(strtofloat(edit5.Text)-Frac(strtofloat(edit5.Text);if(Frac(strtofloat(edit5.Text)=0.5)thenedit4.Text :=inttohex(strtoint(temp)+1,2)elseedit4.Text :=intt

28、ohex(strtoint(temp),2);end;end;if(radiobutton2.Checked =true)then /工作模式2 模式2的波特率是固定在fosc/64 或fosc/32,具体用那一种就取决于PCON 寄存器中的SMOD位,如SMOD 为0,波特率为focs/64,SMOD 为1,波特率为focs/32;beginif(checkbox1.Checked =true)then /smod=0;edit5.Text :=floattostr(strtofloat(edit3.Text)*1000000/32)else /smod=1;edit5.Text :=flo

29、attostr(strtofloat(edit3.Text)*1000000/64); temp:=floattostr(strtofloat(edit5.Text)-Frac(strtofloat(edit5.Text);if(Frac(strtofloat(edit5.Text)=0.5)thenedit4.Text :=inttohex(strtoint(temp)+1,2)elseedit4.Text :=inttohex(strtoint(temp),2);end;if(radiobutton3.Checked =true)then /工作模式0beginif(checkbox1.C

30、hecked =true)thenedit5.Text :=floattostr(strtofloat(edit3.Text)*1000000/12) /51芯片的串口工作模式0的波特率是固定的,为fosc/12;elseedit5.Text :=floattostr(strtofloat(edit3.Text)*1000000/12); temp:=floattostr(strtofloat(edit5.Text)-Frac(strtofloat(edit5.Text);if(Frac(strtofloat(edit5.Text)=0.5)thenedit4.Text :=inttohex(

31、strtoint(temp)+1,2)elseedit4.Text :=inttohex(strtoint(temp),2);end;end;5.2.2 波特率计算在电子通信领域,波特率(Baud rate)即调制速率,指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数。它是对符号传输速率的一种度量,1波特即指每秒传输1个符号。在串行通信中,收发双方对发送或接收的数据速率要有一定的约定,我们通过软件对MCS51串行口编程可约定四种工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率决定。串行口的四种工作方式对应着三种波特率。

32、由于输人的移位时钟的来源不同,所以,各种方式的波特率计算公式也不同 6,7,8,9。5.2.2.1 方式0的波特率计算方式0时,移位时钟脉冲由56(即第6个状态周期,第12个节拍)给出,即每个机器周期产生一个移位时钟,发送或接收一位数据。所以,波特率为振荡频率的十二分之一,并不受 PCON寄存器中SMOD的影响,即:方式0的波特率fosc12 (5-2)5.2.2.2 方式2的波特率计算串行口方式2波特率的产生与方式0不同,即输入时钟的频率不同,控制接收与发送的移位时钟由振荡频率fosc的第二节拍P2(即fosc/2)给出,所以方式2波特率取决于PCON中SMOD位的值,当SMOD=0时。波特

33、率为fosc的六十四分之一;若SMOD=1则波特率为fosc的三十二分之一,即:方式2的波特率=2smod/64*fosc (5-3)5.2.2.3 方式l和方式3的波特率计算方式1和方式3的移位时钟脉冲由定时器T1的溢出率决定,故波特率由定时器T1的溢出率与SMOD值同时决定,即:方式1和方式3的波特率2SMOD/32*T1溢出率 (5-4)而T1的溢出率取决于计数速率和定时常数,即:T1的溢出率=计数速率/256-N (5-5)其中N为在TH1和TL1中装入的初始计数值,即定时常数。当T1选择为定时器工作方式时,计数速率为fosc/12,即振荡频率的十二分之一。由此可得:波特率=(2smo

34、d/32)*(fosc/12)*(1/256)-N (5-6)5.2.3 定时器初值计算MCS-51单片机中可编程定时器的功能,是通过系统时钟脉冲的计数来实现的。在具体应用时必须设定其计数初值,不同的计数初值,也就有不同的定时时间。所以在对定时器编程时必须根据实际的需要分析初值的设置,特别在对定时时间精确要求比较高的场合,显得更为重要10。8051单片机有2个16位的定时/计数器:定时器0(T0)和定时器1(T1)。它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。作计数器时,通过引脚T0(

35、P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。定时器共有四种工作方式 表5-1 定时器工作方式工作模式功能描述模式013位定时器该定时器是一个带有32预分频的8位计数器。包含此工作模式仅仅是为了和Intel的8048器件兼容。模式116位定时器定时器寄存器TLx和THx级联构成一个16位计数器。模式2具有自动重载的8位定时器定时器寄存器TLx溢出时,THx中用户定义的8位数据自动重新装入TLx。模式3定时器0作为两个独立的8位定时器工作定时器寄存器TH0和TL0作为两个独立的8位定时器。 在定时器模式

36、下,计数器由单片机主脉冲fosc经12分频后计数。因此,定时器定时初值计算公式:X=M-(要求的定时值)/(12/fosc) (5-7) 式中,M为定时器模值(根据不同工作方式,M可以是213、216或28)6 系统的详细设计在本系统的设计中,我所完成的任务主要有液晶字模转换模块、计算器模块、波特率和定时器初值计算模块。详细设计如下:开始液晶字模转换模块计算器模块波特率定时器模块操作完成退出系统模块选择图6-1 系统模块图6.1 液晶字模转换模块6.1.1 液晶字模转换模块界面设计图6-2 液晶字模转换模块图6.1.2 液晶字模转换模块说明该界面背景采用Delphi美化控件VCLSKIN把按钮

37、图标美化,并且通过控件raize实现按钮选项框的透明,在美化界面方面下了颇多的心思。在操作方面将该系统文件的打开、转换、覆盖保存等诸多操作集于一体。在界面的左上角有当前系统的时间,这个时间与电脑上设置的时间是一致的,在软件操作过程中,时间一目了然。在界面的左下角,分别给出了字体、取模方向的选项。这样做的目的是方便用户和快捷的查询到具体的参数的设定,极大地方便了用户的操作。当按下打开文件按钮时,可以很清晰的看到一个加载弹窗,可以加载电脑硬盘中任意的.ASM文件,加载完点击打开后能在显示窗口看到.ASM文件中的具体内容。此时点击开始转换,就可以得出;hz王彬的毕业设计 DW L52725,L455

38、54,L46532,L45519,L53941,L51688,L48326; HZ Code L52725: ;(王)DB 00H,00H,0FEH,3FH,80H,00H,80H,00H,80H,00H,80H,00H,80H,00H,0FCH,1FHDB 80H,00H,80H,00H,80H,00H,80H,00H,80H,00H,80H,00H,0FFH,7FH,00H,00HL45554: ;(彬)DB 08H,41H,08H,41H,08H,21H,08H,11H,0DFH,0BH,08H,41H,0CH,41H,9CH,23HDB 0AAH,15H,4AH,09H,49H,41H

39、,28H,41H,08H,21H,08H,11H,08H,09H,08H,05HL46532: ;(的)DB 08H,02H,08H,02H,04H,02H,7EH,3EH,42H,21H,42H,21H,0C2H,20H,42H,22HDB 7EH,24H,42H,24H,42H,20H,42H,20H,42H,20H,7EH,20H,42H,14H,00H,08HL45519: ;(毕)DB 04H,01H,04H,11H,04H,0DH,7CH,03H,04H,01H,04H,21H,64H,21H,1CH,3EHDB 84H,00H,80H,00H,0FFH,7FH,80H,00H,8

40、0H,00H,80H,00H,80H,00H,80H,00HL53941: ;(业)DB 20H,02H,20H,02H,20H,02H,20H,02H,22H,22H,24H,22H,24H,12H,28H,12HDB 28H,0AH,28H,06H,20H,02H,20H,02H,20H,02H,20H,02H,0FFH,7FH,00H,00HL51688: ;(设)DB 00H,00H,84H,0FH,88H,08H,88H,08H,80H,08H,40H,70H,2FH,00H,0C8H,1FHDB 88H,10H,88H,08H,08H,09H,28H,05H,18H,02H,08H

41、,05H,0C0H,18H,30H,60HL48326: ;(计)DB 00H,02H,04H,02H,08H,02H,08H,02H,00H,02H,00H,02H,0EFH,7FH,08H,02HDB 08H,02H,08H,02H,08H,02H,08H,02H,28H,02H,18H,02H,08H,02H,00H,02H系统会提示转换完毕。如果需要保存数据就点击覆盖保存,经过此项操作,上述内容将替换原文件中的所有信息。这样的界面设计完全是考虑到使用的大众性。这样华丽、大方的界面既让人使看着舒服,并且操作简单,任何用户都可以很快的上手进行操作。6.2 计算器模块6.2.1 计算器模块界

42、面设计图6-3 计算器模块图6.2.2 计算器模块说明在此界面中可以进行十进制数的加减乘除运算。6.3 波特率和定时器初值计算模块6.3.1 波特率和定时器初值计算模块界面设计图6-4 波特率和定时器初值计算模块图6.3.2 波特率和定时器初值计算模块说明 通过选择工作方式、定时器、系统时钟、波特率、倍率就可以进行波特率或者定时器初值的计算,并且可以将计算结果转换成为对应的十六进制。6.4 程序的调试6.4.1 编译期错误与程序的运行期错误相比,代码的编译期错误比较容易发现。编译期一旦检测到这种类型的错误,就会在代码编辑器下方的messages窗口中给出相应的说明并指出存在问题的代码行号,同时

43、在发现致命错误时停止编译。通常,程序员可以根据编译期所给出的这些信息来消除此类错误。在message窗口,编译器通过Error标识出在编译过程中检测到了错误,并详细说明了存在错误的单元文件、出错行号以及错误原因。由于该错误导致不能最终完成对主程序所引用的单元文件的编译,编译器又通过Fatal Error标识出程序存在致命错误,并同时给出导致该致命错误的程序文件、行号和原因11。编译器在编译过程中会根据检测到的错误情况在messages窗口中给出4种不同的消息:(1)致命错误Fatal Error(2)错误消息Error(3)警告Warnings(4)消息和提示Hints致命错误消息通常和错误消

44、息一起出现,用于报告程序中所存在的编译期错误。一旦出现致命错误,编译器将在给出消息后停止编译。致命错误消息和错误消息是不能够也不应该屏蔽的。警告消息用来报告程序中存在的兼容性等问题,而提示消息则用来指出程序中的无效代码等问题。警告和提示消息都可以通过对“工程选项”对话框“compiler message”选项卡中相关选项的设置进行屏蔽。7 系统的测试7.1 测试的目的在软件生命周期的每个阶段都不可避免的会引入新的错误。如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分差错,则这些差错迟早会在生产过程中暴露出来,那时不仅纠正这些错误的代价更高,而且往往会造成很恶劣的后果。测试的目的就是在

45、软件投入生产性运行之前,尽可能多的发现软件中的错误。7.2 测试结果本人对此系统的功能、性能,以及可用性均进行了测试,通过对测试结果的分析总结得出:此系统的功能基本满足用户需求,性能基本达到需求,具有可用性和友好性。结果显示在.ASM汇编语言源文件中汉字间添加标点符号就会影响显示的结果,所以此程序只适用于纯汉字。但是测试有一定的局限性,测试环境和实际运行环境也存在着一定的差异,所以不能完全地、准确地测试出系统存在的问题,还需要在后期的维护过程中,对系统暴露出来的问题进行纠正和更新。8 结束语在这个几个月的系统设计中,我查阅了许多相关的资料和文献,在这个过程中接触了很多新的东西,获取了很多新的信

46、息。由于要独立地进行整个系统的设计,需要自己去分析架构和设计,提高了自己分析问题和解决问题的能力,在学习软件工程以后,有了一次实际的锻炼。在动手实践的过程中,要不断地查阅资料来实现系统的功能。这次实践动手能力和编程能力方面也有很大的提高,对于如何编写调试程序有了更深的认识。实践是对理论学习的一个很好的巩固,并且加深了对理论知识的认识,学到了平时很多书上所不能得到的实践经验,由于实践中碰到许多以前从未碰到过的问题,需要很多新的知识,并且促进对理论知识的学习。通过这个系统设计,令我收获颇丰。参考文献1 钟承尧. 单片机汉字显示系统的设计. 电脑与电信. 2009,08:70.2 赛奎春. DELP

47、HI工程应用与项目实践. 北京:机械工业出版社,2005: 26-96.3 蒲保兴. 汉字显示技术及其相关程序. 邵阳高等专科学校学报. 2000,02:105.4 黄金龙. 点阵汉字字模提取软件设计. 南昌职业技术师范学院学报. 2001.05:3-6.5 李烈忠. 汉字字模生成和字形设计的数学方法. 中文信息. 1992,03:11-14.6 高玉芹. IBM-PC微机与MCS-51单片机串行通讯波特率的计算. 彭州大学学报.1998,13:41-46.7 刘燕. 串行通信波特率自动检测方法的实现. 大连民族学院学报. 2008.10:31-34.8 赵达飞. 波特率自适应的模拟串行通信.

48、 中国计量. 2009.07:58-59.9 乔赞丽. 一种串行接口波特率自适应新算法. 通讯与广播电视. 2009.01:16-21. 10 李绍平. MCS-51单片机可编程定时器初值的设置研究. 茂名学院学报. 2003.03:34-36.11 高永惠. 浅谈Delphi中的异常处理方法. 长沙理工大学学报.2004,02:31. 致 谢首先感谢学校为我提供了深造的机会,在四年的学习时间里,各位老师悉心教导,使我学到了很多知识也学会了独立处理问题的本领。在毕业设计过程中,导师循循善诱的教导,在学习、工作和思想上都给予了我莫大的帮助和鼓励,在此,对老师表示深深的感谢。老师深厚的学术造诣、严

49、谨的治学态度和忘我的工作作风永远是我学习的榜样和追求的目标。 最后,衷心的感谢所有关心和帮助过我的老师和朋友。并向参与此次答辩的老师致以深深的谢意。附录系统主程序 函数名: NeiMa 用途: 产生单个汉字的内码十进制数据 参数: s: string 返回值: L+汉字内码十进制表示-function TFrmMain.NeiMa(s: string): string; /获取一个汉字内码beginResult:=L+IntToStr(word(s1) shl 8+word(s2); /L42345;if NeiMaStr.IndexOf(Result)=0 then /L42345已经存在E

50、xit /存在退出elseNeiMaStr.Add(Result); /不存在添加/if WhlHZ.IndexOf(s)=0 then /汉字是否已经存在Exit /存在退出elseWhlHZ.Add(s); /不存在添加/ Result:=inttostr(Ord(s1)*$100+Ord(s2);end;- 函数名: AllNM 用途: 一行汉字串全部生成十进制格式的内码数据 参数: hzstr:string 返回值: DW L46025,L46025,L53490-function TFrmMain.AllNM(hzstr:string):string; /获取引号内全部汉字内码var

51、hzNum:integer;i:integer;hz:string;beginResult:=; /不初始化可能会出现重复hzNum:=length(hzstr) div 2; /获取汉字个数i:=0;While(i0 then /找到beginpos2:=PosEx(,fileOrg.Stringsi,pos1+4); /从第一个处开始找第二个allhz:=Copy(fileOrg.Stringsi,pos1+4,pos2-pos1-4); /复制两个之间的字符串fileAim.Text:=fileAim.Text+ DW +AllNM(allhz);/ fileAim.SaveToFile

52、(AsmFile);end;end;RzRichEdit1.Text:=fileAim.Text;/ RzRichEdit1.Lines.Assign(fileAim);fileOrg.Free;fileAim.Free;endelseShowMessage(请先打开要转换的文件);end;- 函数名: GetQWCode 用途: 获取汉字区位码 参数: HZ(单个汉字): string; var Q(区码), W(位码): Word 返回值: var Q(区码), W(位码): Word-procedure GetQWCode(HZ: string; var Q, W: Word); /获取校验汉字区位码beginQ := Byte(HZ1) - $A0;W := Byte(HZ2) - $A0;end;- 函数名: RzGroup1Items3Click 用途: 激活页面为TabSheet2 参数: 无 返回值: 无-

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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