




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于嵌入式系统的汉字输入及液晶显示技术 chinese character input and liquid crystal display based on embedded system 摘 要 着眼于在嵌入式系统的基础上解决用有限键盘输入汉字的问题。首先阐述了嵌入式 系统的基本概念,介绍了几种中文输入法尤其是目前流行的几种拼音输入法及手机的输 入法。然后提出了一种适用于在数字键盘上使用的汉字拼音输入技术,并以at89s52单片 机为控制核心,以奥可拉ocmj28c液晶模块为显示器件,在硬件上实现了预期功能。 软件部分采用高级语言c51进行设计,编程效率高,出错率小且具有良好的可读性与可移 植性。 关键词 嵌入式系统 数字键盘 拼音输入 液晶显示 单片机 abstract this paper is focused on the method of inputting chinese characters in an embedded system with limited keyboard. firstly it introduces the basic concept of embedded system and several chinese input method, particularly several popular pinyin input method and the phone input method. then it proposes an applicable pinyin chinese character input solution used a digital keyboard. the system uses a mcu of at89s52 as controlling nucleus, uses the ocmj2x8c lcd modules as display hardware to achieve the desired functionality. c51 high-level language is used for software design, it programs efficiently, has small rate of making mistakes and good readability and is easy to transplant. keywords embedded system digital keyboard pinyin input lcd mcu 目 录 前 言.1 第 1 章 嵌入式系统及汉字输入法概述.2 1.1 嵌入式系统.2 1.1.1 嵌入式系统的概念2 1.1.2 嵌入式系统的特点2 1.1.3 嵌入式系统的发展趋势2 1.2 汉字输入法.3 1.2.1 汉字输入法概述3 1.2.2 几种汉字输入法的介绍3 1.2.3 有限键盘中文输入法4 第 2 章 内容概述及总体方案.5 第 3 章 系统硬件设计.8 3.1 单片机.8 3.2 液晶显示模块.8 3.2.1 液晶显示器件的结构及工作原理8 3.2.2 点阵式汉字显示原理9 3.2.3 本设计所用液晶显示模块简介10 3.3 键盘的设计.14 第 4 章 系统软件设计.16 4.1 c51 程序设计概述16 4.2 程序总体设计.17 4.3 输入法程序设计.18 4.3.1 键盘扫描程序18 4.3.2 键值转换19 4.3.3 拼音查询20 4.3.4 汉字查询20 4.4 液晶显示程序.21 4.5 中断处理程序.22 第 5 章 软件仿真.24 5.1 创建一个工程.24 5.2 文件管理及编辑.26 5.3 程序编译.29 结束语.31 谢 辞.32 参考文献.33 附 录.34 前 言 在日益信息化的现代社会中,计算机和网络已经全面渗透到日常生活的每一个角落, 各种各样的新型嵌入式系统设备在应用数量上已经远远超过通用计算机,任何一个普通 人可能拥有从大到小的各种使用嵌入式技术的电子产品,小到 mp3,pda 等微型数字化 产品,大到网络家电,智能家电,车载电子设备。而在工业和服务领域中,使用嵌入式 技术的数字机床,智能工具,工业机器人,服务机器人也将逐渐改变传统的工业和服务 方式。 现代信息设备的特征之一就是允许企业和用户之间、用户和用户之间进行交互式的 信息交换。在中国,大量的信息是以中文形式存在的,因此,为各种信息设备提供易于 使用的汉字输入能力是非常重要的。汉字输入法是中文信息处理中的重要研究问题之一, 目前已有大量的输入法问世并投入了使用,但是,其中大多数应用较成功的输入法都是 为普通计算机的通用键盘而设计的,像移动电话,信息家电这类信息设备,其键盘一般 仅具有有限的输入键,因此其输入方法必须针对其自身的特点而设计。 液晶显示器具有功耗低、寿命长、价格低、体积小、重量轻、显示信息多等优点, 在嵌入式系统中被广泛用于人机界面。而点阵式 lcd 显示模块是一种集显示、控制与驱 动为一体的显示器件,更具有可显示复杂文字及图形,显示屏面积大小随意等优点,因 此在智能仪表、电子设备、各种便携式设备等工业、民用各方面有着日益广泛的应用前 景。 据报道,目前的电子信息大部分是英文,中文的信息量还不到百分之一。中国要强 大,中华民族要实现伟大的复兴,不解决中文的信息化是不可能实现的。无论是对于广 大的中国人,还是对于那些习惯用中文的在世界各个角落人来说,如果能实现方便快捷 的汉字输入,其意义无疑是非常重大的。嵌入式系统的发展,手机的普及,都对拼音输 入法提出了更为严峻的挑战。在一个很小的系统中,甚至在一片 mpu 中用有限的键实现 中文的输入并在液晶显示器上同步显示,将是本设计的一个重点。 第 1 章 嵌入式系统及汉字输入法概述 1.1 嵌入式系统 1.1.1 嵌入式系统的概念 随着信息技术的飞速发展,3c(计算机、通讯、消费电子)合一的加速,数字化时 代已经来临,嵌入式系统在产业发展过程中扮演了越来越重要的角色,制造工业、过程 控制、通讯、仪器仪表、汽车船舶、航空航天、军事装备、消费类产品等方面均是嵌入 式系统的应用领域。目前嵌入式系统技术已经成为了最热门的技术之一,吸引了大批的 优秀人才投入其中。 通常,嵌入式系统应定义为:“嵌入到对象系统中的专用计算机系统” 。 “嵌入性” 、 “专用性”与“计算机系统”是嵌入式系统的三个基本要素。对象系统则是指嵌入式系 统所嵌入的宿主系统1。 1.1.2 嵌入式系统的特点 嵌入式系统可以称为后 pc 时代和后网络时代的新秀,与传统的通用计算机,数字产 品相比,利用嵌入式技术的产品有其自己的特点: 1.嵌入式系统采用的是微处理器,实现相对单一的功能,采用独立的操作系统,往往 不需要大量的外围器件。 2.嵌入式系统的硬件和软件都必须高效率地设计,力争在同样的硅片面积上实现更高 的性能。 3.嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中。 4. 嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也是不能对其 中的程序功能进行修改的,必须有一套开发工具和环境才能进行开发。 总之,嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具 体应用相结合的产物,这就决定了它必然是一个技术密集、资金密集、高度分散、不断 创新的知识集成系统2。 1.1.3 嵌入式系统的发展趋势 1.随着微电子技术的快速发展,芯片功能更加强大,soc(system on chip)将成为 趋势,这不仅能降低成本,缩小产品体积,还将增强产品的可靠性。同时,软件硬件的 紧密结合,嵌入式软件与硬件界线更加模糊,嵌入式软件时常以硬件形态存在,这种方 式可提高实时性,增强可维护性3。 2.嵌入式产品将成为互联网的主要终端之一,从而在更好地利用 internet 庞大信息资 源的同时,实现嵌入式系统功能上的质的飞跃4。网上将出现大量的服务于嵌入式产品的 软件,并有专门服务于嵌入式产品的内容。 3.无线通讯产品将成为嵌入式系统的重要应用领域。一方面,已有无线产品将借助芯 片技术和嵌入式软件来提高性能,另一方面,当前许多嵌入式产品都将增加无线通讯功 能。因此,蓝牙等相关技术会与嵌入式系统相互促进,共同发展,使更多的产品具有通 讯功能,使更多的通讯产品更好地为用户服务。 4. 随着嵌入式系统的广泛应用,信息交换、资源共享机会增多,由此相关的标准问 题也将日渐突出,如何建立相关标准成为业界关注的问题。 1.2 汉字输入法 1.2.1 汉字输入法概述 在计算机迅速发展和普及的今天,用计算机对汉字进行输入、编辑、处理已经是非 常普通的事。文字处理占计算机应用很大比例,几乎所有计算机的应用者都离不开汉字 输入这一操作。 尽管现有的汉字输入方案成百上千,但能够被广大用户所接受,得到普遍推广的只 有为数不多的几种。据对编码使用者的调查,其中使用者超过 10%的编码有:五笔字型、 智能 abc、全拼、微软拼音。 1.2.2 几种汉字输入法的介绍 1.区位码输入法 区位码定长 4 位,前 2 位表示区号,后 2 位表示位号,区号和位号用十进制数表示, 都是从 01 到 94。区位码输入汉字的特点是没有重码,但由于要查阅区位码表,所以较麻 烦。 2.五笔字型输入法 五笔字形码是一种形码,它是按照汉字的字形(笔划、部首)进行编码的,在国内 非常普及。 3.五笔数码 五笔数码是一种只用数字键,单手操作的输入法,它的技术核心是把汉字划分为首 部、余部,然后分别进行取码。五笔数码包括易学性 6 键 6 码和快捷性 9 键 6 码两种数 码输入法,6 键 6 码是用 16,6 个数字键来输入汉字的,9 键 6 码是用 19,9 个数字 键来输入汉字的。6 码是指任何单字和词汇最多打 6 下。 4.全拼双音输入法 该输入法是按我国标准的汉字拼音作为汉字的输入编码。所谓全拼就是输入汉字时 必须输入汉字的全部拼音字母。而且以小写英文字母作为汉语拼音字母。当输入的拼音 是非自然结束时,必须按空格键结束。另外全拼双音既可以输入一个单字,也可以输入 2 个汉字组成的词组。 5.双拼双音输入法 该输入法也是以汉字拼音为基础的,但与全拼双音的区别在于,它是组成汉字拼音 的声母、韵母各用一个字母(或个别符号)代替构成的拼音编码。 6.智能 abc 输入法 该输入法是一种以拼音为基础、以词组输入为主的普及型汉字输入方法,易学易用。 只要会拼音,了解汉字书写顺序,无需培训就可利用它输入汉字。而且,以词语输入为 主,具有较低的重码率和较快的输入速度。 1.2.3 有限键盘中文输入法 有限键的中文输入法要解决的关键问题是如何用有限的键盘(一般不会多于 16 个键) 完成 26 个字母输入以及其他功能的操作,目前主要有以下三种输入法: 1.itap 输入法:其全名为 itap 智能按键输入法,该输入法由总部设在美国加州的摩 托罗拉文字与语言识别研发部研制,能够根据最常用的声、韵母组合和最频繁使用的文 字统计、声调和词语联想等先进技术,实现简便、快捷的输入。 2. “字能”中文输入法:这是 zi corporation 与爱立信公司合作开发的输入技术,它支 持 17 种语言,包括中文简繁体。中文输入部分同样以笔画顺序为依据,共要 8 笔输入, 其好处在于提供万能键代替疑难笔画。目前采用这种输入法的手机厂商有爱立信、阿尔 卡特、厦华、tcl 等。 3.t9 输入法:其全名是 t9 智能中文输入法,字库容量九千多个,该输入法解决了小 型掌上设备的文字输入问题,已经成为全球手机文字输入的标准之一。该输入法具有拼 音和笔画两种中文简体输入方式,其拼音输入的特点是只按键一次,不用输入声调就能 推测出用户想输入的文字,如果选择声调,将进一步提高输入效率。其笔画输入法则根 据中国国家标准将笔画归为五类并分别对应手机的五个键,用户只须按笔画顺序便能简 单快捷地输入文字。这两种输入方式均支持词语联想功能5。 第 2 章 内容概述及总体方案 当前,在手持设备和仪器仪表等嵌入式系统中,一般要求实现汉字的输入,以实现 人机信息交互。但是目前大多数中文输入法都是基于计算机标准键盘的,虽然应用于手 机等设备的有限按键输入法也比较成熟,但其程序代码是不公开的商业机密,或者要获 得这些现有的程序需付出较高的成本。故本设计着眼于开发一种低成本的可用于数字键 盘的中文输入法,并在液晶显示屏上同步显示。 单片机由于其成本低廉但功能强大,因此在现代工业控制中得到了广泛应用,以单 片机作为控制核心的系统就是一个最常见的典型的嵌入式系统。基于本设计要完成的内 容考虑,以单片机作为控制器件无疑是一个合适的选择。因此,本设计的硬件由单片机、 数字键盘和液晶显示模块三大部分组成。其中,单片机主要起控制作用,以使液晶显示 模块实现对文字、图片等内容的显示;数字键盘作为输入设备;液晶显示模块是实现显 示功能的主体模块。系统硬件框图如图 2.1。 图 2.1 系统硬件结构框图 由于本设计的硬件使用较少,因此偏重于软件的设计。通常,开发一个汉字输入系 统需要对输入法进行研究。输入法就是根据用户的输入查找出相应的汉字供用户选择, 它分为两部份,一是运用分析、综合的方法将汉字排序,称为“排” ,也就是字库和码表 的生成;二是运用一定的方法将需要的汉字从字库中取出来,称为“检” ,其难点在于检 索算法的构造6。 汉字输入法的实质是建立一种按键组合到汉字编码的映射关系,因此,使用数字键 盘的嵌入式系统的输入法与使用标准键盘的 pc 机的输入法没有本质的不同,其区别主要 在于嵌入式应用中处理器、存储器等资源比较有限。如对应汉字“你” ,拼音输入法下 pc 键盘按键组合为“ni” ,而在一般数字键盘下,其按键组合则为“64” 。常用的汉字输入法 分为拼音输入和笔画输入两类,本文研究拼音输入。拼音输入法是一种有重码的输入法, 即一个拼音对应多个汉字。采用拼音音序排检汉字的方法,主要有两种,第一是完全按 汉语拼音方案拼写词连缀的字母顺序排列,例如:mianhua (棉花),这也是我们在 windows 中常用的全拼、智能拼音采用的方法,它包含汉字、词语、成语,因为在词语、 成语中汉字大量重复,字库较大,经过 windows 上码表逆转化发现,其体积约有 1m 多, 这在 pc 机上实现是可以的,但是对于嵌入式系统则过于庞大。第二是以字母排序,辅以 音调,这也不适合在嵌入式系统中使用。将两种方法结合起来,去掉词语和成语,将汉 字按字母排序,如第一个字母相同,则比较第二个,依此类推,若是字母都相同,则按 音调排序,这样得到精简后的字库只有几十 k,适合在嵌入式系统中使用。 在普通的 pc 机上,由于系统资源较为充足,输入法的实现主要考虑功能全、易用性, 而在嵌入式系统中,资源非常有限,主要考虑算法的高效性。在嵌入式系统中应用的输 入法具有如下要求:结构紧凑,便于移植;体积较小,因为嵌入式系统的存储空间有一 定限制;检索效率高,因为嵌入式处理器的速度有限,检索效率直接影响用户的使用; 最好具有联想功能,加快用户的输入。但是增加联想功能使得输入法变得庞大,又不利 于在嵌入式系统中使用,可以根据实际的情况加以选择。 在嵌入式系统中,构造拼音外码到内码的转换通常有两种方法,一是采用数组,二 是采用有序树。若采用有序树的方法,虽然可以动态的释放内存,占用内存小,系统运 行速度较快,并容易实现较多的功能,但其涉及的数据结构比较复杂。而 8 位、l6 位 mcu 的应用场合多是低成本的设备,就是因为商用输入法成本太高才考虑自行编写输入 法,基于实现简洁及实现汉字输入基本功能的考虑,本设计中采用数组的方法。 在汉字中拼音组合共有四百多个,可以将相同键值的拼音组合放在同一个数组里, 再将该数组放在一个结构体里,结构体的成员包括键值、该拼音对应汉字的标号(通过 该标号建立拼音与汉字的联系)及拼音在液晶屏上显示的编码。例如,键值为 32 和 42 的结构体定义如下所示: code struct index uint aa; uint p_y6; uchar pinyinma16; /存放拼音字符,在选择拼音时显示在显示屏上 ; code struct index py16= 32,0x0004,0x0005,“da fa “, /da, fa 42,0x0006,0x0007,“ga ha “, /ga, ha ; 同理,再定义一个结构体,成员包括标号,数组中汉字的个数及存放拼音相同的汉 字的数组(不区分声调) ,例如与键值“32”和“42”对应的结构体如下: code struct index1 /定义一个结构体型的一维数组 uint hh; uchar ii; /该组中的汉字个数 uint h_z20; /20 表示一个汉字的拼音最多有 20 个对应得汉字 ; code struct index1 hanzi30= /30 表示这个结构体一维数组一共有 30 行 0x0004,1,0xb4ee,0xb4ef,0xb4f0,0xb4f1,0xb4f2,0xb4f3, /搭 0x0005,5,0xb7a2,0xb7a3,0xb7a4,0xb7a5,0xb7a6, /发,罚,筏,乏, 阀 0x0006,2,0xb8c1,0xb8c2, /噶,嘎 0x0007,1,0xb9fe, /哈 ; 在系统初始化后,若键盘有键按下则进入中断处理程序,根据用户的输入在拼音结 构体中查询,直到找到需要的拼音组合,再由该结构体中拼音数组的标号找到对应的汉 字数组,并将全部备选汉字显示在液晶显示屏的第二行,通过数字键选择需要的汉字, 最后显示在液晶显示屏的第一行。 第 3 章 系统硬件设计 3.1 单片机 本设计中使用一片 at89s52 单片机,以下对其特性做简单介绍: at89s 系列单片机是继 at89c 系列之后推出的功能更强的新产品,与 at89c 系列 相比,运算速度有了很大的提高,片内集成有双数据指针 dptr、盯梢监视器(看门狗) 、 低功休闲状态及关电方式、关电方式下的中断恢复等诸多功能,极大的满足了各种不同 的应用要求。 at89s52 单片机是 at89s 系列中的增强型高档机产品,是一个低功耗,高性能 cmos8 位单片机,片内含 8k bytes isp(in-system programmable)的可反复擦写 1000 次的 flash 只读程序存储器,器件采用 atmel 公司的高密度,非易失性存储技术制造,兼容 标准 mcs-51 指令系统及 80c51 引脚结构。 at89s52 具有如下特点:40 个引脚,8k bytes flash 片内程序存储器,256 bytes 的随 机存取数据存储器(ram) ,32 个外部双向输入/输出(i/o)口,5 个中断优先级 2 层中 断嵌套中断,2 个 16 位可编程定时计数器,2 个全双工串行通信口,看门狗(wdt)电路, 片内时钟振荡器7。 此外,at89s52 设计和配置了振荡频率可为 0hz 并可通过软件设置的省电模式。此 模式下,cpu 暂停工作,而 ram 定时计数器,串行口,外中断系统可继续工作。同时该 芯片还具有 pdip、tqfp 和 plcc 三种封装形式,以适应不同产品的需求8。总之,功能 强大的 at89s52 可为许多嵌入式控制应用系统提供高性价比的解决方案。 3.2 液晶显示模块 3.2.1 液晶显示器件的结构及工作原理 液晶显示器的结构如图 3.1: 在上、下玻璃电极之间封入向列型液晶材料,液晶分子平行排列,上、下扭曲 90 度, 外部入射光线通过上偏光片,该偏振光通过平行排列的液晶材料后被旋转 90 度再通过与 上偏振片垂直的下偏光片,被反射板反射回来,呈透明状态;当上、下电极加上一定的 电压后,电极部分的液晶分子转成垂直排列,失去旋光性,从上偏振片入射的偏振光不 被旋转,光无法通过下偏振片返回,因而呈黑色9。如图 3.2 所示: 图 3.2 液晶显示器工作原理示意图 因此,如果将液晶盒放置在正交或平行偏光片之间,即可用给液晶盒通电的办法使 光改变其透过遮住状态,从而实现显示。平时我们看到的液晶显示器件时隐时现的 黑字,不是液晶在变色,而是液晶显示器件使光透过或被吸收所致。根据实际的需要, 将电极做成各种文字、数字、图形,就可以获得各种状态显示。 3.2.2 点阵式汉字显示原理 以 ucdos 中文宋体字库为例,每一个字由 16 行 16 列的点阵组成显示。即国标汉字 库中的每一个字均由 256 点阵来表示。我们可以把每一个点理解为一个像素,而把每一 个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在 256 像素。图 3.3 是汉字“大”的点阵示意图: 图 3.1 液晶显示器的结构 图 3.3 汉字“大”的点阵 下面以显示汉字“大”为例,来说明其扫描原理: 每一个字由 16 行 16 列的点阵组成显示,如果用 8 位的 at89s52 单片机控制,由于 单片机的总线为 8 位,一个字需要拆分为 2 个部分。一般把它拆分为上部和下部,上部 由 8*16 点阵组成,下部也由 8*16 点阵组成。单片机首先显示的是左上角的第一列的上 半部分,即第 0 列的 p00-p07 口。方向为 p00 到 p07,显示汉字“大”时,p05 点亮,由上 往下排列,为 p00 灭,p01 灭,p02 灭,p03 灭,p04 灭,p05 亮,p06 灭,p07 灭。即二 进制 00000100,转换为 16 进制为 04h。 上半部第一列完成后,继续扫描下半部的第一列,仍由上往下扫描,即从 p27 向 p20 方向扫描,从上图可以看到,这一列全部为不亮,即为 00000000,16 进制则为 00h。 然后转向上半部第二列,仍为 p05 点亮,为 00000100,即 16 进制 04h.。这一列完 成后继续进行下半部分的扫描,p21 点亮,为二进制 00000010,即 16 进制 02h。依照这 个方法,继续进行下面的扫描,一共扫描 32 个 8 位, 可以得出汉字“大”的扫描代码为: 04h, 00h, 04h, 02h, 04h, 02h, 04h, 04h 04h, 08h, 04h, 30h, 05h, 0c0h, 0feh, 00h 05h, 80h, 04h, 60h, 04h, 10h, 04h, 08h 04h, 04h, 0ch, 06h, 04h, 04h, 00h, 00h 由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的 扫描代码从而显示在屏幕上。 3.2.3 本设计所用液晶显示模块简介 本设计采用金鹏公司生产的奥可拉 12832 点阵中文液晶图形显示模块 ocmj 28c,该模块由于内含中文字库从而使得汉字显示异常方便,并且硬件接口电路简单, 这对于硬件资源十分紧张的单片机来说是十分重要的。ocmj28c 模块非常适用于显示 汉字信息量较大的智能仪器仪表系统及家用电器,它提供多种功能指令:画面清除 (display clear) 、光标归位(return home) 、显示打开/关闭(display on/off) 、光标显示/ 隐藏(cursor on/off) 、显示字符闪烁(display character blink) 、光标移位(cursor shift) 、 显示移位(display shift) 、垂直画面卷动(vertical line scroll) 、反白显示(by-line reverse display) 、待命模式(standby mode)10。该模块的主要特性如下: 1.内含 gb2312 标准的 1616 点阵国标一级简体汉字字库; 2.内含 ascii 码 88(半高)及 816(全高)点阵英文字库; 3.输入区位码或 ascii 码即可实现汉字或字符显示; 4.具有位点阵和字节点阵两种图形显示功能,完全兼容普通的液晶显示模块; 5.可实现汉字、ascii 码、点阵图形和变化曲线的同屏显示; 6.内部可提供液晶显示驱动的负电压; 7.具有 led 背光源。 主要参数: 1.工作电压(vdd):4.55.5v; 2.逻辑电平:2.75.5v; 3.lcd 驱动电压(vo):07v; 4.工作温度(ta):055(常温)/-2075(宽温) 保存温度(tstg):-10 65(常温)/-3085(宽温)。 ocmj28c 型中文图形点阵液晶显示模块的外部引脚功能说明如表 3.1。 表 3.1 ocmj28c 型中文图形点阵液晶显示模块的外部引脚功能 汉字字符显示坐标如表 3.2 所示: 表 3.2 汉字字符显示坐标 x 坐 标 line1 80h 81h 82h 83h 84h 85h 86h 87h line2 90h 91h 92h 93h 94h 95h 96h 97h 该模块具体指令介绍: 1. 清除显示(指令代码为 01h) code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 l l l l l l l l l h 功能:将 ddram 填满“20h”(空格),把 ddram 地址计数器调整为“00h” ,重 新进入点设定将 i/d 设为“1” ,光标右移 ac 加 1。 2. 地址归位(02h) code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 l l l l l l l l h x 功能:把 ddram 地址计数器调整为“00h” ,光标回原点,该功能不影响显示 ddram。 3. 点设定(04h/05h/06h/07h) code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 l l l l l l l h i/d s 功能:设定光标移动方向并指定整体显示是否移动。 i/d=1 光标右移,ac 自动加 1;i/d=0 光标左移,ac 自动减 1。sh=1 且 ddram 为 写状态:整体显示移动,方向由 i/d 决定(i/d=1 左移,i/d=0 右移) ;sh=0 或 ddram 为读状态:整体显示不移动。 4. 显示状态 开/关(08h/0ch/odh/0eh/0fh) code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 l l l l l l h d c b 功能:d=1 整体显示 on;d=0 整体显示 off。c=1 光标显示 on;c=0 光标显示 off。b=1 光标位置反白且闪烁;b=0 光标位置不反白闪烁。 5. 光标或显示移位控制(10h/14h/18h/1ch) code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 l l l l l h s/c r/l x x 功能:10h/14h:光标左/右移动,ac 减/加 1;18h/1ch:整体显示左/右移动,光标 跟随移动,ac 值不变。 6. 功能设定(20h/24h/26h/30h/34h/36h) code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 l l l l h dl x re x x 功能:dl=1:8-bit 控制接口;dl=0:4-bit 控制接口。re=1:扩充指令集动作; re=0:基本指令集动作。 7. 设定 cgram 地址(40h-7fh) code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 l l l h ac5 ac4 ac3 ac2 ac1 ac0 功能:设定 cgram 地址到地址计数器(ac) ,需确定扩充指令中 sr=0(卷动地址或 ram 地址选择)。 8. 设定 ddram 地址(80h-9fh) code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 l l hac6 ac5 ac4 ac3 ac2 ac1 ac0 功能:设定 ddram 地址到地址计数器(ac) 。 9. 读取忙碌状态(bf)和地址 code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 l h bf ac6ac5ac4ac3ac2ac1ac0 功能:读取忙碌状态(bf)可以确认内部动作是否完成,同时可以读出地址计数器 (ac)的值。当 bf=1,表示内部忙碌中,此时不可下指令,需等 bf=0 才可下新指令。 10. 写资料到 ram code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 h l d7 d6 d5 d4 d3 d2 d1 d0 功能:写入资料到内部的 ram(ddram/cgram/gdram) ,每个 ram 地址都要 连续写入两个字节的资料。 11. 待命模式(01h) code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 l l l l l l l l l h 功能:进入待命模式,执行其它命令都可终止待命模式 。 12. 扩充功能设定(20h/24h/26h/30h/34h/36h) code: rs rw db7 db6 db5 db4 db3 db2 db1 db0 l l l l h dl x re g l 功能:dl=1:8-bit 控制接口;dl=0:4-bit 控制接口。re=1:扩充指令集动作; re=0:基本指令集动作。g=1:绘图显示 on;g=0:绘图显示 off。 该模块可工作在串行和并行两种模式下,由于串行模式具有接线简单的特点,在本 设计采用串行方式连接。当 psb 脚接低电位时,模块就进入串行模式。从一个完整的串 行传输流程来看,一开始先传输起始字节,它需要先接收到五个连续的“1” ,即同步位 字符串,此时传输计数将被重置并且串行传输将被同步,再跟随的两个位字符串分别指 定传输方向位(rw)及寄存器选择位(rs) ,最后第八位则为“0” 。在接收到同步位及 rw 和 rs 资料的起始字节后,每一个八位的指令将被分为两个字节接收:较高 4 位 (db7db4)的指令资料会被放在第一个字节的 lsb 部分,而较低 4 位(db3db0)的 指令资料则会被放在第二个字节的 lsb 部分,至于相关的另四位则都为 0。 串行传输信号说明图如图 3.4 所示: 图 3.4 串行传输信号说明图 3.3 键盘的设计 本设计采用一个类似于固定电话键盘的 44 触发式矩阵键盘,一共 16 个按键,按 键如图 3.5 所示定义: 图 3.5 键盘定义 其中编号为 2-9 按键上定义了 26 个字母, “2”上定义了“a,b,c”三个字母, “3” 上定义了“d,e,f”三个字母, “4”上定义了“g,h,i”三个字母, “5”上定义了 “j,k,l”三个字母, “6”上定义了“m,n,o”三个字母, “7”上定义了 “p,q,r,s”四个字母, “8”上定义了“t,u,v”三个字母, “9”上定义了“ w,x,y,z”四个字母, “1”为备用键, “c” 为确认键(输入结束标志键) , “a” 为上翻键, “b”为下翻键, “d”为“*”键, “e”为“#”键, “f”为退格键。 矩阵键盘的原理是:按键设置在行、列线交点上,行、列分别连接到按键开关的两 端。行线通过上拉电阻接到+5v。平时无按键动作时,行线处于高电平状态,而当有按键 按下时,行线电平状态将由与此行线相连的列线电平决定。列线电平如果低,则行线电 平为低;列线电平如果高,则行线电平亦为高。这一点是识别矩阵键盘按键是否被按下 的关键所在。由于矩阵键盘中行、列线为多键共用,各按键均影响该键所在行和列的电 平11。 第 4 章 系统软件设计 4.1 c51 程序设计概述 在研制单片机应用系统时,汇编语言是一种常用的软件工具,它能直接操作硬件, 指令的执行速度快。但其指令系统的固有格式受硬件结构的限制很大,难以编写与调试, 可移植性也差。随着单片机硬件性能的提高,工作速度越来越快,在编写单片机应用系 统程序时,更注重于程序本身的编写效率。所以,c51 已成为目前流行的单片机开发软件 工具。 与汇编语言相比,c51 在功能、结构、可读性、可维护性上有明显的优势,因而易学 易用12。c 语言是一种编译型程序设计语言,是为了能胜任系统程序设计的要求而开发 的,有很强的表达能力,能够用于描述系统软件各方面的特性。它具有较高的可移植性, 提供了丰富的运算符和数据类型,极大的方便了程序设计。同时,它有功能丰富的库函 数,运算速度快、编译效率高,且可以直接实现对系统硬件的控制。它是一种结构化程 序设计语言,支持自顶向下的结构化程序设计技术,也具有完善的模块程序结构,在软 件开发中可以采用模块化程序设计方法。目前,使用 c 语言进行程序设计已成为软件开 发的一个主流。用 c 语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便 于改进和扩充。使用 c 语言进行单片机系统开发,编程者可以专注于应用软件部分的设 计,而不必将大量的精力花在内存分配等底层工作上,从而大大加快了软件开发的速度13。 总体来说一个 c 程序可分为两大部分:数据说明部分和数据操作部分。数据说明部分 主要对程序中所用到的数据结构进行定义和赋初值;数据操作部分通过一定的语句和流 程对数据进行加工达到设计的目的。从结构化编程的角度来说,为了便于开发和扩展, 程序应分为可独立完成特定功能的若干源程序。在 c51 语言中,这些源程序中可重复使 用的部分由函数来完成。一个 c51 程序的组成如图 4.1 所示: 图 4.1 c51 程序的组成 目前在程序开发过程中一般都采用模块化编程,将一个大的程序分成若干个功能独 立的模块分别开发,最后将各个模块进行整合。这种方法可以使程序开发更有效,避免 重复编写同类程序,简化调试和方便扩展14。图 4.2 给出了使用汇编语言和 c51 语言混 合编程的程序开发流程。 图 4.2 c51 语言和汇编语言混合编程开发流程图 4.2 程序总体设计 程序的总体设计是从系统的角度考虑程序的结构,数据形式和程序实现系统功能的 方法与手段。程序总体设计包括总体方案设计,确定算法和绘制程序流程图等。 在拟定总体方案时,由于一个实际的单片机应用系统较为复杂,信息量较大,程序 较长,这就要求设计者能合理选用切合实际的程序设计方法。目前,程序设计方法多种 多样,在单片机应用系统中较常用的程序设计方法有模块化程序设计方法、自顶而下逐 步求精程序设计方法、结构化程序设计方法等。 模块化程序设计的中心思想是把一个多功能的、复杂的应用程序,按子功能划分成 若干相对独立的程序设计模块,各模块可单独设计、编程、调试和查错,然后装配起来 进行联调,最终成为一个完整的、有使用价值的应用程序。这种程序设计结构思想清晰, 便于调试,而且组织灵活,是目前较多采用的一种程序设计方法。 自顶而下逐步求精的程序设计,要求先从系统一级的主干程序开始集中解决全局问 题,然后层层细化逐步求精,最终完成一个应用程序的设计。这种程序设计方法在一般 的单片机系统中较多采用。 结构化程序设计是一种较理想的程序设计方法。它是指在编程过程中对程序进行适 当的限制,特别是限制转移、分支指令的使用,用以控制程序的复杂程度,使程序的上 下文与执行流程保持一致。 不论采用何种程序设计方法,均应根据的总任务和控制对象的功能要求(或者数学 模型)画出程序的总体框图,以描述程序的总体结构。在总体结构框图的基础上,设计 者还需要结合功能算法(或数学模型)进行细化,绘制出具体的程序流程图。 绘制程序流程图后,整个程序的结构和思路已经十分清楚,这时就可统筹考虑和安 排一些带有全局性的问题。在编制程序时要重视指令的合理选择,特别是重要部分,涉 及算法之类的程序段更要细心编写。 通过分析本课题的要求,可以看出整个程序部分可以分为七个模块,即:键盘扫描 部分、键值转换部分、拼音查询部分、汉字查询部分、液晶显示部分、键盘中断处理程 序及主程序。故采用模块化程序设计方法。整个软件部分的框图如图 4.3 所示。 图 4.3 软件总体框图 采用这种方法有以下几个优点: 1、模块化编程使程序开发更有效,小块程序更容易理解和调试。当知道模块的输入 和所要求的输出时,接可以直接测试小模块。 2、当同类的需求较多时,可把程序放入库中以备以后使用。 3、模块化编程使得要解决的问题与特定的模块分离,很容易找到出错的模块,大大 简化了调试15。 4.3 输入法程序设计 4.3.1 键盘扫描程序 键盘扫描程序原理:键盘扫描程序用的是反转编码,反转编码的好处是硬件结构简 单,扫描电平的高低都由软件来完成。通常,键盘编码有两种方式:一种是特征编码, 另一种是顺序编码.对于小键盘,特征编码比较有用.对于中、大型键盘,有效键码较多,监 控中一般采取散转处理或查表处理,这时就要采用顺序编码。在读键盘过程中,通过键 盘扫描等方法得到的是特征码,离散度很大。就必须将特征码转化为顺序码。由于 44 的十六键的键盘有效键不是很多,因而只须用特征码就可以。 键盘扫描程序开始时,先向 p1 口赋值“0xf0” ,即给行送高电平,给列送低电平,然 后读 p1 口的值,判断是否有键按下,并将该值存储在一个变量中;接着再向 p1 口赋值 “0x0f” ,即给列送高电平,给行送低电平,然后读 p1 口的值,存储在另一个变量里。最 后将两次 p1 口读回的值相与就可得到 16 进制的扫描码。图 4.4 为键盘扫描程序流程图: 图 4.4 键盘扫描程序流程图 4.3.2 键值转换 将键盘扫描得到的 16 进制扫描码传递给键值转换程序,就可转换成键盘上所标的数 值。其对应关系如表 4.1 所示:(详细程序见附录) 表 4.1 按键的 16 进制特征编码与键盘数字对应关系 10x7b20xbb30xdb110xeb 40x7d50xbd60xdd140xed 70x7e80xbe90xde120xee 100x7700xb7150xd7130xe7 4.3.3 拼音查询 原理:利用键盘上定义的字母,将拼音输入。例如:我们要输入一个章老师的“章” 字。其拼音为“zhang”共有 5 个字母组成,再加上最后的“确定”键,所以需要按键 6 次。 “z” 定义在 9 键,所以首先按 9 键;“h” 定义在 4 键,接着按 4 键;“a” 定义 在 2 键上,第三次按 2 键;“n” 定义在 6 键,第四次按 6 键;“g”在也是定义在 4 上, 所以再按一次 4 键。当按完“94264”后,再按“确定”键,这时会出现多个合法的拼音 组合(如:“xiang”的编码也是“94264” ) ,这些拼音组合会同时显示在液晶屏上,然后 按数字键进行选择。例如“zhang”在显示屏上排第一个,就按“1”键,程序就会将该拼 音编码对应得汉字的标号传递给汉字查询程序。拼音查询程序流程图如图 4.5 所示: 图 4.5 拼音查询程序流程图 拼音查询程序中的结构体定义如下: code struct index /定义一个结构体 uint aa; /汉字标号,通过这个标号将键值和汉字数组对应 uint p_y6; /每一种键值组合最多有 6 种拼音组合 uchar pinyinma16; /存放拼音字符,在选择拼音时显示在显示屏上 ; 4.3.4 汉字查询 原理:利用拼音查找程序传递过来的所需拼音对应的标号,找到汉字所在的结构体 成员数组。例如拼音查找程序传递过来的是“ba”的标号“0x0001” ,那么在汉字查找程 序中应该找到 haizi2,然后 hanzi2中数组 h_z中的前 8 个汉字将显示在液晶显示屏的 第二行(因为该液晶模块一行显示 8 个汉字) ,显示的第一个汉字是“扒” ,如果输入者 需要输入“吧” ,那么按一下数字键“3” ,将找到“吧”字的地址 hanzi2.h_z3,并将其 机内码“0xb0c9”作为返回值,传递到汉字显示程序,并最终将“吧”字显示在液晶显 示屏的第一行。如果第一屏显示的 8 个汉字中没有所需的汉字,则按“下翻”键翻页, 显示屏将依次显示第 9 到第 16 个汉字以供用户选择,直到找到所需汉字。汉字查询程序 流程图如图 4.6 所示: 图 4.6 汉字查询程序流程图 汉字查询程序中的结构体定义如下: code struct index1 /定义一个结构体 uint hh; /汉字标号,通过这个标号将键值和汉字数组对应 uchar ii; /该组中的汉字个数 uint h_z20; /20 表示一个汉字的拼音最多有 20 个对应得汉字 ; 4.4 液晶显示程序 由于本设计选用的液晶显示模块说明书中有完整的显示示例程序,经试验验证运行 可靠,故这部分的子程序不需要自己编写。实现显示功能的子程序主要包括以下几个部 分: 模块初始化程序,串行传输程序,单个字符显示程序,字符串显示程序,延时程序,清 ddram 程序。 (详细程序见附录) 4.5 中断处理程序 本设计采用中断方式,即只有在键盘有键按下时才执行汉字输入操作,正常情况下 单片机可执行其他任务。 中断处理的过程如下:当需要输入汉字时,直接在键盘上按键,单片机检测到中断 信号后,转入中断处理程序。程序首先调用键盘扫描程序,再经过键值转换程序转换后, 判断该键值是否为数字键,如果不是就退出,否则记录下本次特征值所对应的键盘定义 的十进制数,继续扫描键盘直到有“确定键”按下为止。例:需要的拼音编码为“22” , 键盘扫描到第一个特征值为“0xbb” ,经键值转换程序后可知是数字键“2” ,该值被赋予 变量“key” ,程序判断该键值是数字键,将 key 的值再赋给“sa” ,接着扫描键盘,又返 回一个特征值“0xbb” ,经转换还是数字键“2” ,仍将该值送入变量“key”中,再调用 语句“sa=sa*10+key” ,将两次十进制数“2”转化为“22”并存储在变量“sa”中。接着 调用键盘扫描程序及键值转换程序,判断是“确定”键的十进制编码“12” 。于是依次调 用拼音查询程序,汉字查询程序及汉字显示程序将所需要的汉字显示在液晶显示屏上, 最后退出中断。 图 4.7 中断处理程序流程图 第 5 章 软件仿真 本设计用 uvision2 来实现程序的软仿真,uvision2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初级软件测试技术实战教程与案例分析
- 临床老师教学规范课件
- 2025年汽车维修技师考试题库及答案集
- 2025年物业管理高级考试备考指南及模拟题答案
- 药事管理与药物治疗学委员会工作制度
- 甲状腺疾病护理课件
- 甲状腺滤泡课件
- 物流管理专业毕业设计
- 中文教学课件新年
- 甲流乙流课件
- 2024年高考山东物理试题分析及2025届高三复习备考策略
- 环境内审员试题及答案
- 铁路机务安全管理
- 2025中国人寿养老笔试题库
- 中国车路云一体化发展研究报告(2024)-赛文研究院
- 销售客户跟进培训
- 2025年河南航空港发展投资集团有限公司社会招聘45人笔试参考题库附带答案详解
- 市政工程施工进度计划表范文
- 商铺撤场申请书
- AI赋能高校美术理论课程教学与改革初探
- 2025年四川雅安市川藏工业园区发展有限责任公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论