(机械工程专业论文)分布式压力监测系统.pdf_第1页
(机械工程专业论文)分布式压力监测系统.pdf_第2页
(机械工程专业论文)分布式压力监测系统.pdf_第3页
(机械工程专业论文)分布式压力监测系统.pdf_第4页
(机械工程专业论文)分布式压力监测系统.pdf_第5页
已阅读5页,还剩58页未读 继续免费阅读

(机械工程专业论文)分布式压力监测系统.pdf.pdf 免费下载

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

文档简介

西南交通大学硕士研究生学位论文第1 页 摘要 汽轮机是关系国计民生的重大技术装备,是一个非常复杂而精密的系统, 安装质量是决定汽轮机工作状况和寿命的关键因素之一。在安装过程中,需要 把汽轮机机座各支点的压力调整到规定的技术范围内,以防止压力分布不合理 对基承造成破坏。 本文研究的分布式压力监测系统是用于在汽轮机安装过程中精确测量各支 点压力的现场智能仪器。 系统分为上位机系统和下位机系统两个部分。下位机系统采用最新的增强 型5 1 单片机作为c p u ,可脱离上位机独立完成压力测量、液晶显示、数据打印 和简单数据处理。上位机系统中用c 十+ b u i l d e r 编写的可视化程序,实现压力 在线监测、图表分析、数据存储和打印等功能。为便于日后为用户提供软件定 制和升级、测量精度修正等人性化服务,在设计过程中增加了系统下位机程序 的自动远程升级功能。 针对目前利用单片机的i s p 技术进行远程升级过程中,程序容易泄露、系 统可能瘫痪等问题,本文中提出了相应的见解和解决办法。同时针对目前称重 传感器中的一些缺点提出了改进意见。 关键词:分布式压力监测:单片机开发应用;可视化程序设计:远程升级 西南交通大学硕士研究生学位论文第1 1 页 a b s tr a c t s t e a mt u r b i n ei so n eo f k e yt e e h n i c a lf a c i l i t i e sw h i c hh a sm o r er e l a t i o n s h i pw i t h n a t i o n a lw e l f a r ea n dt h ep e o p l e sl i v e l i h o o d i t saq u i t ec o m p l e xa n dp r e c i s es y s t e m , i n s t a l l a t i o n q u a l i t yi s o n eo fk e yf a c t o rt h a tl i m i t st h e o p e r a t i o nc o n d i t i o na n d w o r k i n gl i f e d u r i n gi n s t a l l a t i o n ,t h ep r e s s u r eo fe a c hs u p p o r ts h o u l db ea d j u s t e dt o r e q u i r e dt e c h n i c a ls p e c i f i c a t i o n o t h e r w i s e ,u n b a l a n c e dd i s t r i b u t i o nw i l lb r e a kt h e b a s eo fs t e a mt u r b i n e d i s t r i b u t i n gp r e s s u r em o n i t o r i n g & m e a s u r i n gs y s t e mi st h eo r i e n t a t i o no ft h i s r e s e a r c h t h i ss y s t e mi so n - s i t e i n t e l l i g e n tf a c i l i t y w h i c h a p p l i e dt o a c c u r a t e m e a s u r i n g t h ep r e s s u r e so f e a c hs u p p o r t t h ew h o l es y s t e mi n c l u d e st w o p a r t s h o s tc o m p u t e ra n ds l a v ec o m p u t e r s y s t e m 。t h es l a v es y s t e ma d o p t e dn e w e s te n h a n c e d51m c ua sc p u ,e a r l p e r f o r m sm e a s u r ep r e s s u r e ,l c dd i s p l a y , p r i n t i n gd a t aa n ds i m p l ed a t ap r o c e s s i n g s e p a r a t e l yw i t h o u th o s tc o m p u t e r t h eh o s tc o m p u t e r ss o f t w a r ei sp r o g r a m m e db y c + + b u i l d e r ,p e r f o r m sp r e s s u r eo n s i t em o n i t o r i n g ,c h a r ta n a l y s i s ,d a t as t o r a g e a n dp r i n t i n g i no r d e rt of u r t h e ri m p r o v ei n c l u d i n gs y s t e mu p g r a d i n ga n da d j u s t i n g m e a s u r e m e n ta c c u r a c y , t h es y s t e mc a nb er e m o t eu p g r a d e d c o n s i d e r i n gp r o g r a ml e a k a g ea n ds y s t e mm a y b eb r o k e nd o w nd u r i n gr e m o t e u p g r a d i n gv i ai s pt e c h n o l o g yo fm c u ,s o m eo p i n i o n sa n dp r o p o s a l s h a v eb e e n p r o p o s e d m e a n w h i l e ,s o m ei m p r o v e m e n ts u g g e s t i o n sh a v e b e e nr a i s e df o rt h e d i s a d v a n t a g eo fw e i g h t i n gs e n s o r k e y w o r d :d i s t r i b u t i n gp r e s s u r em o n i t o r i n g & m e a s u r i n g :m c ua p p l i c a t i o n d e v e l o p m e n t ;v i s u a lp r o g r a m m i n g ;r e m o t eu p g r a d i n g 西南交通大学硕士研究生学位论文第1 页 1 1 课题来源 第1 章绪论 汽轮机是热电厂发电的重要动力设备,是国家经济建设中的一项重要产业, 是电力工业的基础,也体现着一个国家的机械制造水平。经过5 0 年的不断努力, 我国汽轮机行业已从最初建立时的完全使用国外技术逐步迈到具有自主开发能 力的道路上来。改革开放2 0 多年,是我国汽轮机行业高速发展的时期,随着我 国经济的高速稳定的发展,电力需求逐年增多,尤其是近两年需求剧增,汽轮 机行业出现了供不应求的局面,迎来5 0 年来最大机遇。 汽轮机是大型、复杂、精密的设备。是由阀门、管道、喷嘴、叶片、叶轮、 转子、轴承、轴封、汽缸、冷凝器等部件构成的一个非常复杂的系统,制造过 程有很高的难度。由于依靠高温高压蒸汽工作,所以对汽路的密闭性、设备工 作的稳定性和可靠性都有特别高的要求,因此,汽轮机的生产和安装对工程质 量都起到了决定性的影响。 汽轮机的安装过程十分复杂。由于整体运输不便,制造厂提供的汽轮机本 体一般是散装件,要在现场进行垫铁台板的调整安装、低压缸拼缸组装、低压 内外缸找中、轴承检修找中、转子接长短轴安装、转子找中及扬度调整、隔板( 套) 找中、转子通流间隙调整、各缸转子值测量确定及最大轴向位移测量与确认、 盘车装置安装、汽缸扣缸安装、主汽门,调节门及再热汽门与汽轮机位置确认 和缸体保温等安装工作。 一般情况下,汽轮机本体安装施工工序为:基础验收一錾基础一设备清洗 检查一台板安装一低压外缸拼装就位一低压内缸安装一前轴承座安装一汽缸、 轴承座找平找正及外上缸组合一高压内、外缸安装一半缸找中心一合缸找中心 一汽门焊接一半缸复找中心一隔板安装、找中一支持轴承检修安装一试放转予, 轴系初找中一低压缸与凝汽器连接一通流间隙测量、检查、调整一挡油环安装 一主油泵安装一推力轴承安装一滑销系统安装配一汽缸扣大盖前检查及扣大盖 一高压缸负荷分配一锚固板配制、推拉杆连接一基础二次灌浆一联轴器复找中 心,联轴器连接,联轴器罩盖安装一盘车装置安装一油冲洗一翻瓦检查一轴承 座最终组装扣盖。 汽轮机缸体安装过程中,有一个非常重要的环节,就是在把下缸体吊装到 西南交通大学硕士研究生学位论文第2 页 基础上时,必须保证汽缸各支点上承受的载荷合理分布。高、中、低压汽缸均 需要进行负荷分配,将各支点上承受的负荷调整到技术要求范围之内,否则汽 轮机在运行的过程中会造成基承受力不均,从而影响机组的正常运行。目前, 安装技术人员在实施这个环节时一般是通过垫垫铁的方法来估计,安装过程非 常麻烦,而且完全是凭借经验进行操作,很难比较准确地掌握各支点的受力情 况,会给工程的施工质量埋下隐患。 图卜1 汽轮机安装现场 2 0 0 4 年初,笔者受德阳东鑫电站机械有限公司委托,为其开发一个能精确 测量各支点负荷的测力装置。 需方提出的主要技术指标如下: 支持2 4 个支点的压力测量 测量速度每1 秒1 次 相对误差 1 6 0 m s ) ,把m c u 的p s e n 端拉成低电平。在m c u 的p 1 ,0 输出低电平的同 时,二极管d 2 导通,r e s e t 端口得到低电平,u 3 系统监控芯片i m p 7 0 8 输出复 位信号使m c u 复位,从而激活p 8 9 c 5 1 r d 2 f a 进入i s p 模式。 3 1 5a d 转换与a d 板电路 由于需方提出的系统分辨率是1 ,因此所选择的a d 转换器的分辨率必 须是l o b i t 以上。综合考虑分辨率、转换速度、接口设计和价格因素等诸多因 素,本系统选用的是m a x i m 公司生产的1 2 h i t 逐次比较模数转换器m a x l 9 7 。 m a x l 9 7 是一个功能齐全、多量程、1 2 位数据采集系统芯片,只需单一的+ 5 v 电源供电即可工作,但在其模拟输入端可以承受幅度高于电源电压和低于地的 信号,其允许的最大幅值可达1 6 5 v 。该芯片提供8 个模拟输入通道,当任一 通道发生故障后,将不影响其它通道的正常操作。每一通道均可独立地由软件 编程以得到多种输入范围:l o v 、5 v 、o - 1 0 v 或o 一5 v ,这使得其有效的动 态范围增加至1 4 位,并使用户能灵活地把4 - 2 0 m a 、1 2 v 和1 5 v 供电的传感 器方便地与单一+ 5 v 供电的系统接口。该器件的其它特点还包括具有5 m h z 带宽 的跟踪保持电路、l o o k s p s 的采样速率、软件可选的内部或外部时钟、可变的 西南交通大学硕士研究生学位论文第1 9 页 采集控制、8 + 4 位并行接口,以及内置4 0 9 6 v 电压基准或可选的外部基准源。 m a x l 9 7 使用标准的微处理器接口单元,三态数据i o 端口配置成与8 位数 据总线一起工作。数据存取和总线释放的时序性能指标与大多数通用的微处理 器相兼容,所有逻辑输入与输出均是t t l c m o s 兼容的。在电源管理方面,该器 件还提供硬件上的s d n 引脚和可编程的掉电方式( s t b y p d 、f u l l p d ) ,使芯片在 两次变换之间能处于低电流的关断状态。 m a x l 9 7 内部结构很完善,用户几乎可以不用外接元件就可以得到一个高质 量的a d 转换电路。本系统中一共使用了3 片m a x l 9 7 ,每片m a x l 9 7 接收8 个模 拟输入通道。m a x l 9 7 与p 8 9 c 5 r d 2 f a | :】勺接口电路如图3 7 所示。 图3 7p 8 9 c 5 1 r b 2 和m a x l 9 7 接口电路图 整个a d 板共有3 个图3 8 所示单元。图3 7 所示电路中g 1 6 v 8 芯片 用于决定a d 板中三块m a x l 9 7 的地址,在本系统中分别是:o x 8 0 0 0 、o x 9 0 0 0 、 o x a 0 0 0 。 在整个测试系统中,传感器部分和a d 采样部分是影响测试精度的决定性 因素。传感器以及配套的放大器在出厂时已经调校过,并且得到了计量监督部 门的认可,因此本系统中重点是考虑的是如何消除信号自放大器到a d 板这段 连接线上可能串入的干扰,以及如何增加a d 板的输入电阻,以减小对放大器 输出电压的影响。至于a d 转换器部分,影响转换精度和稳定性的关键因素在 于参考电压的稳定性,参考电压越稳定,则转换结果越准确。对于一般的a d 器件,通常是在其参考电压输入端外接一个高稳定度的电压基准芯片,而m a x l 9 7 西南交通大学硕士研究生学位论文 第2 0 页 图3 - 8a d 板单元电路图 在图3 - 8 中,考虑到c p u 主板上电源电压中有比较强的高频谐波干扰,极 易造成a d 转换器输出数据波动,所以取,下关电源的+ 1 2 v 输出电压经三端稳压 芯片7 8 l 0 5 单独稳压后,单独为a d 板提供电源电压。这样c p u 主板和a d 板 只共地而不共电源,能有效地降低彼此间的互相干扰。电路中利用了m h x l 9 7 内 部自带的5 v 的高精度参考电压和r c 振荡器,因此几乎没有外围元件。传感器 的输出电压在出厂时已经整定为o 一5 v ,运放l m 3 2 4 构成的放大电路引入深度交 直流负反馈。接成跟随器方式,作为传感器电路和a d 之间的缓冲级。在运放 的同相输入端外接r c 滤波电路用来消除传感器长线传输中可能串入的高频电 磁干扰。同样为消除高频干扰,在每个运放芯片外接退耦电容。 3 1 6 系统监控和复位 系统监控对于一个实际的微电脑应用系统来讲是非常重要的。由于选用的 p 8 9 c 5 1 r d 2 f a 单片机本身具有w a t c h d o g ,因此外部选配的系统监控芯片不需要 此功能。在本系统中由于m c u 的i s p 硬件激活是在复位结束时实现,因此复位 电路结构想对复杂一点。在图3 6 中。系统监控芯片i m p 7 0 8 用于完成上电复位、 手动复位和电压跌落检测。p 8 9 c 5 1 r d 2 f a 的w a t c h d o g 定时器在用户程序中由软 件激活。 在测量过程中,因为要获取测量当时的时间,因此在系统中接入实时时钟 芯片x 1 2 0 5 。根据前面的设计思路,当系统升级时,用户p c 要先从下位机获取 西南交通大学硕士研究生学位论文 第2 1 页 1 1 ) 号。i d 号按理可以存储在m c u 的f l a s h 里,但这样就会造成每片m c u 的代码 各不相同,为出厂时批量代码下载和日后升级时远端服务器的软件编写带来很 多困难。因此,本系统在没有找到比较好的解决办法之前,在电路设计时采用 带i2 c 总线接口的串行e 2 p r o m 芯片2 4 c 0 2 来存储i d 号和其他重要数据。电路如 图3 9 所示。 图3 - 9i c 总线接口电路图 图3 9 中,b t l 是实时时钟芯片x 1 2 0 5 的后备电源,采用3 6 v 1 5 0 m a h 的锂 电池,d 1 、r 3 是电池的充电支路。 3 2 下位机系统结构及工艺设计 在汽轮机的安装现场,工作环境相当复杂,噪音、振动、电磁干扰等诸多 因素对系统设计提出了比较高的要求。为确保系统在现场可靠工作,下位机系 统的结构和工艺上做如下考虑。 3 2 1 防电磁干扰设计 在汽轮机安装现场,有许多像塔吊一类的电动设备。这些设备在运转的过 程中产生比较强的电磁干扰,容易引起系统工作紊乱。为尽可能减少外界电磁 场对系统的影响,下位机系统采用铝板全封闭机箱,并将机箱可靠接地,以达 到良好的屏蔽效果。连接下位机系统和传感器放大器箱之间的所有连线全部采 用屏蔽电缆,所有连接件律使用航空插件 西南交通大学硕士研究生学位论文 第2 2 页 3 2 2 防电源谐波干扰设计 在工业现场各种用电设备在起动和停止时会对电网产生比较大的冲击,正 常运转时会通过电网向四周扩散非常复杂的谐波干扰,尤其是在汽轮机的安装 现场,由于各种用电设备都是大功率设备,对电网的冲击和谐波干扰会更加强 烈,所以在设计下位机系统时,必须对如何降低电网对系统的影响做充分的考 虑。要降低电网对系统的谐波干扰,首先必须要有一台优质电源。为降低电网 冲击和电网波动的影响,电源应该选择开关电源。为了尽可能避免电网谐波的 影响,应该选择纹波系数小,热稳定性好的电源。其次,为进一步降低谐波干 扰,在电源的进线端增加共模纹波抑制电路。再其次,在电路设计上尽可能采 用数字电路并充分退耦,提高电路自身的抗干扰能力。 3 2 3 下位机系统内部结构设计 不良的布局结构会在系统内部产生电磁干扰。在下位机系统中,开关电源 本身会输出定的纹波电压,液晶的背光驱动器是一个1 0 0 0 v 的逆变器,为尽 可能降低各部分之间的相互干扰,在内部结构设计上按其产生电磁干扰的大小 进行分区,用机架把干扰源和其他电路隔开。 任何电气设备在使用过程中都会不同程度地发热。本系统由于采用密封式 机箱,散热问题更加突出。为确保系统的热稳定性,本系统采用强制散热设计, 在面板下方安装风扇和防尘罩,把电源等发热量大的部件临近风扇放置,确保 机箱内的温度不会太高。 西南交通大学硕士研究生学位论文第2 3 页 第4 章软件设计 软件设计是智能仪器开发的核心。本系统中,软件开发包含了下位机系统 中单片机应用程序开发,用户p c 即上位机的可视化程序设计和远端服务器程序 设计三个部分。在这里主要介绍我所做的前两部分程序设计工作。 4 1 测力系统下位机程序 系统下位机程序设计就是单片机内的应用程序开发,可以采用汇编语言来 编写,但本系统因为涉及到液晶显示、打印驱动、1 2 c 接口、a d 驱动、数字滤 波、数学运算和复杂的串口通信程序,如果采用汇编语言书写,程序的结构性 会很差,编写也很麻烦,因此,本系统设计时采用5 1 系列单片机的c 语言k e i l c 5 1 编写。 4 1 1 下位机主函数 下位机的主函数主要完成系统初始化、信息显示、在定时背景程序的控制 下进行a d 转换、数据处理、计算和显示、数据打印控制和显示控制等功能, 流程图如图4 - 1 所示。 4 1 2a o 转换接口及数字滤波 本系统中一共有3 片a d 转换器m a x l 9 7 ,通道卜8 对应芯片1 ,地址是 o x 8 0 0 0 :通道9 1 6 对应芯片2 ,地址是o x 9 0 0 0 :通道1 7 2 4 对应芯片3 ,地址 是o x a 0 0 0 。 由于本系统中传感器的线路比较长,尽管采用了屏蔽和硬件滤波等方法消 除干扰,但小量的随机干扰仍然客观存在,所以对a d 转换的结果进行数字滤 波处理是非常必要的。鉴于本系统在硬件设计时,没有给c p u 外扩r a m ,而只采 用了c p u 内部的7 6 8 字节的扩展r a m ,在扣除打印缓冲区和a d 数据区等特定区 域后r a m 空间已十分有限,而且p 8 9 c 5 1 r d 2 f a 的运算速度也比较慢,所以对a d 转换结果的数字滤波采用了最简单的算术平均值滤波法。c p u 在启动某个通道进 行a d 转换时,连续采样8 次,再计算算术平均值。这种方法尽管在理论上存 在缺陷,但用在本系统中却效果明显。该部分程序清单如下: 西南交通大学硕士研究生学位论文第2 4 页 图4 - i下位机主函数流程图 i f ( s a m p l e f la g )t 定对进行a d 转换 ( p r e ss u r c s u m = o ; f o r ( i = o :i t o n g d a o s h u ;i + + ) 西南交通大学硕士研究生学位论文第2 5 页 ( i f ( i 7 i = l5 ) ( f o r ( x = 0 :x 8 :x + + ) (a d b o a r d 2 = i 0 x 0 7 : w h i1 e ( a d o v e r ) ( :) h b e n = 1 ; j = a d b o a r d 2 0 x o f : j = j * 2 5 6 ; h b e n = o ; s o m e n o p o ; j = a d b o a r d 2 + j ; h b e n = l : a d r e s u l tf x 】= j ; 】 j = a v e r a g e ( & a d r e s u lt ,8 ) ) e ls e f f o r ( x = 0 :x 8 :x + + ) a d b o a r d 3 = i 0 x 0 7 : w h 1 e ( a d o v e r ) ( :) h b e n = i ; j = a d b o a r d 3 0 x o f : + w a i t i n gf o ra dc o n v e r s i o no v e r * * g e tt h eh i g h4b i tso fa dr e s u l t * g e tt h e 1 0 wb y t eo fa or e s u lt * + w aiti n gf o ra dc o f l v e r si o no v e f * * g e tt h eh i g h4b i tso fa dr e s u l t * 西南交通大学硕士研究生学位论文 第2 6 页 _ - 一 h _ _ _ _ - 一 j = j 2 5 6 ; h b e n c 0 :* g e tt h el o wb y t eo fa dr e s u lt * s o m e n o p o ; j = a d b o a r d 3 + j ; h b e n = 1 ; a d r e s u lt 【x 】= j ; , j = a v e r a g e ( & a d r e s u l t ,8 ) ; 】 + ( c h a d v a l u e + i ) = j ; i f ( j = ( c h u z h i + i ) ) 如果传感器测出的压力值小于初值,按压力为0 处理 j = 0 ; ) e ls e (j t j - * ( c h u z h i + i ) ; ) i f ( j = = 0 ) ( c h v a l u e + i ) = o :) e ts e ( c h v a l u e + i ) = ( 1 0 n g ) ( j + 3 73 6 8 5 ) ;】畸 换成对应的压力值 h e x t o a s c ( ( c h v a l u e + i ) ,& c h a s c + i 8 ,8 ) : p r e ss u r e s u m = p r e ss u r e s o m + * ( c h v a l u e + i ) ; s a m p l e f l a g = o ; * c l e a rt h ea ds a m p l ef l a g * ) i = p a g e * 8 + 1 : s h o w p r e e s u r e ( i 8 ,4 0 ,1 ) ; 显示指定通道的压力值 s h o w p r e e s u r e ( i + 2 ,8 ,7 2 ,1 ) ;显示指定通道的压力值 s h o w p r e e s u r e ( i + 4 ,8 ,1 0 4 ,1 ) ; 显示指定通道的压力值 s h o w p r e e s u r e ( i + 6 ,8 ,13 6 ,1 ) ;+ 显示指定通道的压力值 s h o w p r e e s u r e ( i + 1 ,2 7 ,4 0 ,1 ) : s h o w p r e e s u r e ( i + 3 ,2 7 ,7 2 1 ) ; s h o w p r e e s t i l e ( i + 5 ,2 7 。10 4 ,1 ) ; s h o w p r e e s u r e ( i + 7 ,2 7 。13 6 ,1 ) : s h o w f l o a t p a r a ( p r e ss u r e s u m ,8 ,18 7 ,1 ) ;* d is p l a yt h ep r e ss u r es l l m 4 1 3 液晶显示驱动程序 本系统所选液晶是图形点阵液晶显示器,可工作于文本和图形两种方式。 由于在使用中要显示汉字和矩形等图形,因此把液晶显示器设定为图形方式。 液晶显示器的驱动程序尤其是画图程序用c 5 1 编写还是有一定的难度。为 一一_-_h_。一 西南交通大学硕士研究生学位论文第2 7 页 保证程序的结构性,这部分的程序分成了l c h 清屏、l c m 初始化、矩形绘图、字 符显示等模块( 函数) 。 l c m 清屏函数如下: $ + 川l c m 清屏函数 川 v o i dc l e a r ( u i n tb e g i n a d d r ess u i n te n d a d d r e ss ) f t l n s i g n e di n tj ; w c a d d l = o x 4 c ;c s r d i r 代码,光标自动右移+ w c a d d i = o x 4 6 ;“c s r w 代码f w d a d d l _ b e g i n a d d r e ss 2 56 :+ 设置光标指针低8 住+ w d a d d l 曲e g i n d d r e s s 2 5 6 ;设置光标指针高8 位,指向显存0 0 0 0 h 单元, w c a d d l = 0 x 4 2 ;m w r i t e 代码 f o r ( j = b e g i n a d d r e ss ;j = e n d h d d r e ss ;j + + ) fw d a d dl = 0 x 0 0 ;) ) l c m 初始化函数如下: l c m 初始化函数川+ v o i di n i t l c d0 f u n s i g n e dc h a ri ; w c a d d l = o x 40 :s y s t e ms e t 代码 f o r ( i = 0 :i t e m p l ; w c a d d l = o x 4 6 : w d a d d l = k i 2 56 : w d a d d l ;k 1 2 56 : w c a d d l = o x 4 3 : t e m p l = r d a d d l : w c a d d l = o x 4 c ; w c a d d l = 0 x 4 6 ; w d a d d l = k 1 2 5 6 ; w d a d d l = k l 2 5 6 ; w c a d d l = o x 4 2 : w d a d d l = t e m p 2t e m p l : ,t e m p 2 ,t e m p 3 ,t e m p 4 ,t e m p s ,x g a p n e : l 点和2 点间间隔的横向字节敷 “c s r w 代码t i x 1 光标地址低8 位 f o r ( t e m p 2 = o ;t e m p 2 x g a p f w d a d d l = o x f f ;) t e m p 5 = o x f f ; t e m p 2 = 7 一( x 2 8 ) : t e m p 5 = t e m p 5 ( x 2 8 ) :计算右边框的位置 f o r ( t e m p 2 = y l :t e m p 2 y 2 ;t e m p 2 + + ) 画右边框 ( w c a d d i = o x 43 :m r e a d 代码+ t e m p 3 = r d a d d l ; 读取当前显示数据 j t j + o x 3 0 ; w c a d d l = o x 4 6 :设置光标地址 w d a d d l = j 25 6 ;+ 计算光标地址 w d a d d l = j 2 5 6 ; w c a d d l = o x 4 2 :m w r i t e 代码 w d a d d l = t e m p lit e m p 3 ; 写入合成数据 j l e m p l = o x f f : t e m p 2 = 7 一( x 2 8 ) : t e m p l = t e m p l e m p 2 ; j = o x 3 6 * y 2 ; t e m p 2 = x 1 1 8 ; 画矩形的下边框, 光标自动左移 设置光标地址 计算光标地址 m w r i t e 代码 写八合成数据 t e m p 2 + + ) m r e a d 代码 读取当前显示数 西南交通大学硕士研究生学位论文 第3 0 页 j f j + t e m p 2 + lc d z o a e w c a d dl = o x 4 e : w c a d d l = o x 4 6 : w d a d d l = j , 2 5 6 ; w d a d d l = j 2 5 6 ; 光标自动上秽 设置光标地址+ h 计算兄标地址 w c a d d l = o x 4 2 :m w r i t e 代码 w d a d d l = t e m p llt e m p 3 ; 写入合成数据 t e m p l = o x 80 ( x 1 8 ) :+ 计算右边框的位置 f o r ( t e m p 2 = y 2 ;t e m p 2 y l ;t e m p 2 一) 画右边框+ f w c a d d l = 0 x 4 3 ;m r e a d 代码 t e m p 3 = r d a d d l :读取当前显示数据+ j = j 一0 x 3 0 ; w c a d d l = o x 4 6 ;+ 设置光标地址 w d a d d l = j 2 5 6 ;汪计算芄标地址 w d a d d l = j 2 56 ; w c a d d l = 0 x 4 2 ;m w r i t e 代码 w d a d d l = t e m p lt e m p 3 ;+ 写八合成数据 】 j r e c t ( u i n tx l ,u c h a ry l ,u i n tx 2 ,u e h a ry 2 ,u c h a rs c r e e n ) 函数中,( x l ,y 1 ) 是矩形左上角的坐标,( x 2 ,y 2 ) 是矩形右下角的坐标,参数代表矩形要绘在哪一 屏上,依照前面初始化的设置,s c r e e n 参数可以在1 和2 中选择。 字符显示 在本系统中要显示两种字符,一种是汉字字符,显示格式是1 6 x1 6 点阵; 另一种是1 6 8 点阵的a s c l i 字符。由于l c m 工作于图形方式,所以点阵字库 需要自行建立。点阵字库采用清华蓬远提供的字模提取软件完成,按照先上下、 后左右的顺序提取出待用汉字的1 6 x 1 6 字符点阵数据以及常用a s c i i 码字符的 8 1 6 点阵数据并以c o d e 数组形式存入c p u 的f l a s h m e m o r y 中。a s c i i 字符的 存放依照a s c i i 码从小到大顺序排放,以便查找。由于考虑到p 8 9 c 5 1 r d 2 f a 的 f l a s hm e m o r y 很小( 6 4 k ) ,不可能把所有汉字的字符点阵都存放在里面,只能 选部分在本系统中要用到的汉字依次存放,因此汉字的查找就比较麻烦。在程 序里解决此问题的方法是这样设计的: 每个汉字在计算机里都有一个4 位1 6 进制的内码,在a n s ic 中如果把 汉字以字符串的形式进行参数传递,编译软件在传递参数时传递的就是汉字的 内码。在此系统中,由于待用汉字只是字库的一部分,内码是断续的,因此直 接用内码去查汉字的点阵无法实现。可行的方法是用内码转换软件提取所有待 西南交通大学硕士研究生学位论文 第3 1 页 用汉字的内码,按照它们在f l a s hm e m o r y 里的安放顺序编排成一个数组。要查 找某个汉- 7 6 1 字符点阵时,通过它的内码,可以找到这个内码在内码表中的位 置,从而也就找到了这个汉字在f l a s hm e m o r y 里字符点阵的存放位置。 字符显示部分源代码如下: v o i ds h o w z f ( u c h arc o d e + z i f u ,u c h a rl e n g t h ,u i n tx ,u i n ty ,u c h a rs c r e e n ) u i n tp o s i t i o n ,n o i m a ; u c h a rc o d e t a b ; u c h a ri ,j ,d a i m a ; u i f t tl c d z o n e ; i f ( s c r e e n = = 1 ) f l c d z o n e = o x 0 0 0 0 :) e ls e 1 c d z o n e = 0 x 40 0 0 ;) p o siti o n = y o x3 0 + x + i c d z o n e ; 计算汉字显示的位置 w c a d d l = o x 4 f ; + c s r d i r 代码( 下移) + f o r ( i - 0 :i ( 】e n g t h ;i + + ) 显示汉字 ( d a i m a = * z i f u ; 取出汉字内码或字符的a s c i i 码 i f ( d a i m o x 8 0 )* d a i m a o x s o ,则一定是a s c 字符的a s c i i 码,而不 是汉字内码 ( d a i m a = d ai t n a o x 2 0 ; t a b = a s c l 6 : t a b = t a b + d a i m a 1 6 : w c a d d l = 0 x 4 6 : w d a d d l = p o s iti o n 2 5 6 w d a d d l = p o siti o n 2 5 6 w c a d d l = 0 x 4 2 : f o r ( j = 0 ;j 16 ;j + + ) (w d a d d l = + t b + + :) p o s i t i o n + + : z i f u + + : ) e ls e f n ei m a = d ai m a 2 5 6 ; z i r u + + : d a i m a ;+ z i f u ; n e l m a = n e i m a + d a i m a ; f o r ( j = o :j 8 5 ;j + + ) ( i f ( n e i m a t a b 【j 】一n e i m ) t a b = c g t a b ; c s r w 代码 设置光标地址c s r m w r i t e 代码+ 显示汉字 b r e a k ;) * j 是汉字在c g t a b 里的编号 西南交通大学硕士研究生学位论文第3 2 页 t a b = t a b + 0 x 2 0 * j : + 找出汉字在c g t a b 里的位置+ w c a d d l = o x 4 6 ; c s r w 代码 w d a d d l = p o s i t i o n 2 5 6 ; + 设置光标地址c s r w d a d d i = p o s iti o n 2 5 6 ; w c a d d l = 0 x 4 2 ;m w r i t e 代码 f o r ( j = 0 ;j = 15 ;j + + ) fw d a d d l = t a b “:)$ 写入数据 p o s i t i o n + + : w c a d d l = 0 x 4 6 ; c s r w 代码 w d a d d l = p o s i t i o n 2 5 6 ;设置光标地址c s r w d a d d l = p o siti o n 2 5 6 : w c a d d l = o x 4 2 :m w r i t e 代码+ f o r ( j = 0 ;j = 15 ;j + + ) ( w d a d d l = t a b “:)写入数据 z i f u + + : p o s i t i o n + + : ) ) 】 程序中a s c l 6 是存放a s c i i 码从2 0 h 一7 f i 的所有a s c i i 字符的8 x1 6 点阵 c o d e 型数组,c g t a b 是存放待用汉字1 6 1 6 点阵的c o d e 型数组。 在程序调试过程中,我发现k e i lc 在编译时会把汉字内码中的o x f d 过滤 掉,造成显示错误。比如汉字“正”的内码是o x d f f d ,在参数传递时低位字节 o x f d 会被自动去除,显示结果自然就是错误的,这显然是k e i lc 软件设计上的 漏洞。在网上,有很多网友也反映了这个问题并给出了一些解决方法,其中有 一个网友给出的办法最简便有效,办法是:用u l t r a e d i t 打开k e i lc b i n 文件 夹下的a 5 1 e x e 、a x 5 1 e x e 、c 5 1 e x e 、c x 5 1 e x e 等四个文件,用二进制格式查 找“6 38 a5 c2 40 88 0f bf d ”并替换为“5 38 a 5 c2 40 88 0f bf f ”即可。 4 1 4 打印机驱动 本系统中采用的打印机是标准的面板式微型打印机,提供2 6 脚标准接口。 c t e l 机自带有国标

温馨提示

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

评论

0/150

提交评论