科学计算器设计-本科毕业论.doc_第1页
科学计算器设计-本科毕业论.doc_第2页
科学计算器设计-本科毕业论.doc_第3页
科学计算器设计-本科毕业论.doc_第4页
科学计算器设计-本科毕业论.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

XX大学2014届本科生毕业论文 学科分类号(二级学科) 本科学生毕业论文(设计)题 目 科学计算器设计 姓 名 阿克萨啊 学 号 2010052301288 论文编号 En14141023 指导教师 杨不赶 职称(学历) 工程师 完成时间 2014年5月20 XX大学教务处制XX大学2014届本科毕业论文摘 要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。计算机在人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计是用STC90C516RD+单片机、LCD显示器、输入采用57矩阵键盘,可以进行加、减、乘、除12位带符号数字运算,还可以进行乘方、开方运算,具有指数、对数、三角函数、反三角函数等计算功能。利用此设计熟悉单片机微控制器及C语言编程,对其片资源及各个I/O端口的功能和基本用途的了解。掌握keiluvision应用程序开发环境,常用的LCD显示器的使用方法和一般键盘的使用方法。关键字:单片机;矩阵键盘;计算器IIAbstractIn recent years, with the rapid development of technology, SCM applications are deepening the traditional control while driving detection technology is increasingly updates. In the real-time detection and automatic control of microcomputer application system, the microcontroller is often used as a core component, but only knowledge of SCM is not enough, should be combined according to specific hardware architecture, software and hardware to be improved.Computers in peoples daily lives is one of the more common electronic products. But also in development, the latter is bound to appear more powerful computers, based on this concept, this design is STC90C516RD + MCU, LCD display, 5 7 matrix input using the keyboard, you can add, subtract, multiply, In addition to 12 signed digital operation can also be used involution, evolution operator, with exponential, logarithmic, trigonometric functions, inverse trigonometric functions, such as computing and storage. With this single-chip microcontroller design and familiar with the C programming language, understanding of their on-chip resources and various I / O port functions and basic use. Master keiluvision application development environment, the use of common LCD monitor and keyboard in general use.Keywords: Single chip microcomputer; Matrix keyboard; The calculator目 录摘 要IAbstractII0前言11系统设计背景、意义和目的11.1系统设计背景11.2系统设计意义11.3 设计目的22设计要求与方案论证22.1设计要求22.2方案论证与比较32.2.1方案论证32.2.2方案比较与选择43系统设计43.1总体设计43.1.1系统组成43.1.2工作原理53.2硬件设计53.2.1主控模块设计53.2.2主控芯片STC90c516RD+特点63.2.3显示电路的设计73.2.4按键模块设计83.2.5电源设计93.2.6复位电路设计93.3软件设计93.3.1算法设计与实现93.3.2程序设计与实现103.3.3主程序103.3.4显示模块的程序设计113.3.5按键扫描的程序设计123.4 其它设计133.4.1优化硬件电路133.4.2可靠性及抗干扰设计133.4.3扩展性设计133.4.4可靠性设计144测试与性能分析144.1 测试方法及测试结果144.1.1用仿真软件Proteus测试及测试结果144.1.2硬件测试及测试结果144.2测试中出现的问题及解决措施144.2.1仿真软件测试中出现的问题及解决措施144.2.2硬件测试中出现的问题及解决措施155展望与总结15参考文献16致谢17附录18附录一:系统原理图18附录二:硬件实物图18附录三:源代码19XX大学2014届本科毕业论文(设计)0前言 中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的,约二百七十枚一束,放在布袋里可随身携带。直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用。计算器可谓是我们最亲密的电子伙伴之一。本设计着重在于填补简单计算器的一些函数功能,分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。1系统设计背景、意义和目的1.1系统设计背景1956年,美国贝尔实验室用晶体管代替真空管,制成了世界上第一台全晶体管计算器Lepreachaun。它使计算器的体积、重量、耗电都大为减少,但是计算能力较差。至60年代,世界上已产了3万多台晶体管计算器,运算速度达到了每秒300万次,逐步发展成了计算机现在,除了日本、美国以外,欧亚的多功能计算机发展也很迅速。计算器的发展在其设计上,普遍追寻用简单经济的技术芯片实现功能齐全的市场产品如日本卡本欧Casio FX系列科学计算器、佳能(Canon)WS、信发TR 12位数电子计算器等,功能齐备,运算精确但都使用了自家的专用集成芯片,市场价格在100元至几百元不等。国外电子计算器正向着智能化、高精度、小体积方向发展,所以用单片机实现多功能计算器的设计是很具有推广性的。中国近年来,随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了。计算器在人们的日常中是比较的常见的电子产品之一。如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好的为各个行业服务,成了如今电子领域重要的研究课题。1.2系统设计意义说起计算器,值得我们骄傲的是,最早的计算工具诞生在中国。中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的。约二百七十枚一束,放在布袋里可随身携带。直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的纳皮尔算筹,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。我们知道计算器是日常工作和学习生活中的常用工具,人们利用它代替了许多多位数的复杂运算,包括加减乘除和其他运算。尤其是小型计算器,它携带方便,在学习生活中用起来方便快捷,成为了财政、学习、生意上都青睐的必需品。今天,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店,办公室,学校。因此设计一款科学计算器会有很大的实际意义。1.3 设计目的本设计旨在进一步掌握单片机理论知识,理解嵌入式单片机系统的硬软件设计,加强对实际应用系统设计的能力。通过本设计的学习,使我掌握单片机程序设计和微机接口应用的基本方法,并能综合运用本科阶段所学软、硬件知识分析实际问题,提高解决毕业设计实际问题的能力,为单片机应用和开发打下良好的基础。(1)通过实际产品的设计和制作,了解现代IT产品的开发流程,全面提高机、电知识的综合应用能力,在从系统级到电路级到芯片级各个层次的设计和实现。(2)巩固、加深和扩大51系列单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制能力。(3)学会查阅书籍,并且熟练编写程序、绘制流程图及原理图。(4)对课题设计方案的分析、选择、比较、熟悉用51单片机做系统开发、研制的过程,软硬件设计的方法、内容及步骤。2设计要求与方案论证2.1设计要求预期能够实现12位数的加、减、乘、除,运算精确度达小数点6位。实现sin、cos、tan、反三角、xy、开方、cosh、sinh、tanh、log、ln、e(x) 、1E3=1000、取余、绝对值这一系列的函数表达式的计算(1)可以进行四则运算精确度达小数点6位,还可实现sin、cos、tan、反三角、xy等函数。为了得到较好的显示效果,采用LCD显示数据和结果。(2)键盘包括数字键(0-9)、符号键(+、-、*、/)、清除键、等号键和一些函数按键,故需要35个按键,设计中采用集成的矩阵键盘。(3)执行程序:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。(4)支持表达式输入:对输入的表达式进行处理,当输入“=”后,计算出表达式的结果。(5)错误提示:当单片机执行程序中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算器得到的结果大于计算器的显示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD上提示错误。2.2方案论证与比较2.2.1方案论证本设计可以采用两种方案,一种是以FPGA为核心处理芯片,配备相应的外设;另外一种是以STC90C516RD+处理器,配备相应的外设。(1)方案一:采用FPGA控制FPGA是一种高密度的可编程逻辑器件,自从Xilinx公司1985年推出第一片FPGA以来,FPGA的集成密度和性能提高很快,其集成密度最高达500万门/片以上,系统性能可达200MHz1。由于FPGA器件集成度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。但是基于SRAM编程的FPGA,其编程信息需存放在外部存储器上,需外部存储器芯片,编程数据信息在系统断电时会丢失,每次上电时需从器件的外部存储器或计算机中将编程数据写入SRAM。且使用方法复杂,保密性差。FPGA开发流程复杂,要经过设计输入(原理图/HDL文本编辑)、综合、适配、时序仿真与功能仿真、编程下载和硬件测试。在开发语言方面 VHDL和VORILOG是现在最流行的,其他还有ABEL,SYSTEM C这样的语言,不过用的较少。VHDL就是语法严格,显呆板,但是一旦语法检查通过,程序上出错的机会就比较小。VORILOG很灵活,类似C,比较容易上手,语法检查通过,程序也不一定正确。在功耗上由于FPGA集成度很高,所以功耗较大。在价格上一个FPGA芯片价格一般在100元以上,而其对于一个简单的计算器而言,实用FPGA有点大材小用成本太高。(2)方案二:采用STC90C516RD+单片机单片机是单片微型机的简称,故又称为微控制器MCU2(Micro Control Unit)。通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器CPU,存储器和I/O接口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机的发展趋势:低功耗CMOS化;微型单片化;主流与多品种共存;单片机从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。在开发流程上较简单,一般经过绘制原理图、编写程序、仿真、下载和硬件测试。在编程上常用的是汇编语言和C语言。汇编语言编程较难,可读性和可移植性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。在功耗上MCS-51系列的8051推出时的功耗达630mW,而现在的单片机普遍都在100mW左右3,随着对单片机功耗的要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。在价格上一片单片机芯片价格在几元左右有着价格低廉,操作简单,实用方便,等优点,因此单片机广泛用于智能产品,智能仪表,测控技术,智能接口等。 2.2.2 方案比较与选择(1)开发流程:FPGA开发流程(设计输入、综合、适配、时序仿真与功能仿真、编程下载和硬件测试)复杂,而单片机开发流程(绘制原理图、编写程序、仿真、载和硬件测试)较简单的多。(2)编程::FPGA常采用 VHDL和VORILOG。VHDL语法严格,显呆板,但是一旦语法检查通过,程序上出错的机会就比较小。VORILOG很灵活,类似C,比较容易上手,语法检查通过,程序也不一定正确。而单片机常采用C语言,C语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等优点。(3)功率消耗:由于FPGA集成度很高,所以功耗较大。而单片机在功耗上MCS-51系列的8051推出时的功耗达630mW,而现在的单片机普遍都在100mW左右。(4)芯片价格:一片FPGA芯片价格在100元以上,而一片普通的单片机芯片在几元在左右。(5)资源利用率:FPGA芯片的引脚在100只以上,而单片机只有40只引脚,但本设计只需23个接口。通过以上比较,从设计的复杂性,实用性,方便性,资源利用率,功耗和成本出发,选择了以STC90C516RD+单片机作为中央处理单元进行科学计算器的设计,这样设计能够实现12位的四则运算以及一些函数。3系统设计3.1总体设计3.1.1系统组成本设计可分为5个模块,分别是单片机主控模块,LCD液晶显示模块,电源模块,编码键盘模块和复位电路。单片机主控模块以STC90C516RD+单片机为核心进行数据处理,LCD液晶显示模块以LCD1602液晶显示初始状态,数据和运算结果。电源模块为整个设计提供必不可少的电能。编码键盘模块为整个设计提供数据输入。复位电路则当系统出现错误或者要恢复初始状态设计的电路。系统框图如图3.1所示。图3.1 系统框图3.1.2工作原理上电后,LCD屏初始状态为0,按下编码按键上的按键会在LCD屏上显示相应的按键。如果按下函数按键输入数值再按=键计算结果会在LCD屏上显示。如果按下数值按键再按功能键,输入数值并按=键计算结果会在LCD屏上显示。如果有需要恢复初始状态,则需按下复位键,使用方法同一般的计算器。3.2硬件设计本设计可分为5个模块,分别是单片机主控模块,LCD液晶显示模块,电源模块,编码键盘模块和复位电路。主控模块采用STC90C516RD+型号单片机实现,LCD液晶显示模块选用LCD1602型号LCD显示屏,编码键盘模块由35个普通按键构成。单片机P2口和P3口做为数据输入口,与键盘连接,P0口为数据输出端与LCD液晶显示屏第7引脚至第14引脚相连为液晶显示屏输入数据。 P1.0、P1.1、P1.2分别与LCD液晶显示屏的第4引脚,第5引脚,第6引脚相连,控制LCD液晶显示屏显示。系统原理图如图3.2所示。图3.2 系统原理图3.2.1主控模块设计 采用STC90C516RD+单片机,单片机是为了工业控制需要满足而诞生的,是自动控制系统的核心部件,因而也主要用于工业控制、智能化仪器仪表、家用电器中。它具有体积小,功能多、价格低、使用方便、系统设计灵活等优点,应用领域不断扩大,除了工业控制;智能化仪表;通讯;家用电器外,在智能化高档电子玩具产品中也大量采用单片机芯片作为核心控制部件4。由于单片机主要面向工业控制,工作环境比较恶劣,高温,强电磁干扰,甚至含有腐蚀性气体,在太空中工作的单片机控制系统,还必须具有抗辐射能力,这决定了单片机CPU于通用微机CPU具有不同的技术特征和发展方向:(1)可靠性高;(2)控制功能往往很强,数值计算交叉;(3)指令系统比通用微处理器慢的多;(4)X系列芯片取代;(5)抗干扰性强,工作温度范围宽。3.2.2主控芯片 STC90C516RD+特点(1)主要性能: 61K字节可编程FLASH存储器(寿命:10000写/擦循环) 全静态工作:0Hz-33MHz 三级加密程序存储器 128*8位内部RAM 32条可编程I/O线 三个16位定时器/计数器 5个中断源 全双工UART串行通道 低功耗的闲置和掉电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 掉电标识符 片内振荡器和时钟电路 (2)STC90C516RD+的功能特性STC90C516RD+是一种低功耗、高性能CMOS8位微控制器,具有61K在系统可编程Flash 存储器。与工业80C51 产品指令和引脚完全兼容5,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编Flash,使得STC90C516RD+众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC90C516RD+具有以下标准功能:61k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。此外,STC90C516RD+可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。(3)STC90C516RD+引脚与事物图STC90C516RD+ 单片机实物图和40 引脚芯片图如图3.3所示。 图3.3 STC90C516RD+实物图(左)引脚图(右)3.2.3显示电路的设计当系统需要显示少量数据时,采用LCD液晶显示屏进行显示是一种经济实用的方法。单片机的 P0口为数据输出端与LCD液晶显示屏第7引脚至第14引脚相连为液晶显示屏输入数据。 P1.0、P1.1、P1.2分别与LCD液晶显示屏的第4引脚,第5引脚,第6引脚相连,控制LCD液晶显示屏显示,LCD1602接口电路如图3.4所示。图3.4 LCD1602接口电路1、LCD液晶显示屏应用简介模块内部自带字符发生存储器(CGROM),字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是(41H),显示时模块把代码41H发给液晶模块,我们就能在液晶上看到字母“A”。1602液晶模块内部的控制器共有11条控制指令,丰富的指令可以完成液晶的时序控制、工作方式式设置和数据显示等。采用的LCD1602液晶模块是标准16针插座,LCD1602引脚说明6如表1所示。表3.1 LCD1602引脚说明第1脚VSS为地电源第2脚VDD接5V正电源第3脚V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚RS为寄存器选择,高电平选择数据寄存器、低电平选择指令寄存器。第5脚RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时 (00)可以写入指令或者显示地址;当RS为低电平RW为高电平时(01)可以读入忙信号;当RS为高电平RW为低电平时(10)可以写入数据。第6脚E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚D0D7为8位双向数据线。第1516脚背光阳极和背光阴极。2 、LCD的特点:(1)低压微功耗;(2)平板型结构;(3)被动显示型(无眩光,不刺激人眼,不会引起眼睛疲劳);(4)显示信息量大(因为像素可以做得很小);(5)易于彩色化(在色谱上可以非常准确的复现);(6)无电磁辐射(对人体安全,利于信息保密);(7)长寿命(这种器件几乎没有什么劣化问题,因此寿命极长,但是液晶背光寿命有限,不过背光部分可以更换)。3.2.4按键模块设计键盘模块由键盘阵列实现,行列与单片机的P2.0、P2.2、P2.3、P2.4、P2.5、P2.6、P2.7相连,竖列与单片机的P3.0、P3.1、P3.2、P3.3、P3.4相连构成5X7的矩阵键盘做为整个系统的数据输入。矩阵键盘采用7条I/O线作为行线,5条I/O线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的数量就为5X7个,这样行列式键盘结构能有效的提高单片机系统中I/O口的利用率。按键接口电路如图3.5所示。(1)按键简介每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能7。图3.5 按键接口电路(2)工作原理当无按键闭合时,P2口与P3.0P3.4之间开路;当有键闭合时,与闭合键相连的两条I/O 口线之间短路。判断有无按键按下的方法是:第一步,置列线P3.0P3.4为输入状态,从行线P2口输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P3.0P3.4读入数据,若有某一列为低电平,则对应行线上有键按下。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。3.2.5 电源设计 电源做为整个系统不可缺少的一部份,电源设计为插针式,即可用干电池供电又可用USB供电方便灵活。3.2.6 复位电路设计复位电路设计分为两部份,硬件复位和软件复位,这样设计方便灵活便于操作。3.3软件设计软件设计包括算法设计和程序设计。3.3.1算法设计与实现将一个普通的中序表达式转换为逆波兰表达式的一般算法是:(1)首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高的原则。(2)读入一个用中缀表示的简单算术表达式,为方便起见,设该简单算术表达式的右端多加上了优先级最低的特殊符号“#”。(3)从左至右扫描该算术表达式,从第一个字符开始判断,如果该字符是数字,则分析到该数字串的结束并将该数字串直接输出。(4)如果不是数字,该字符则是运算符,此时需比较优先关系。做法如下:将该字符与运算符栈顶的运算符的优先关系相比较。如果,该字符优先关系高于此运算符栈顶的运算符,则将该运算符入栈。倘若不是的话,则将栈顶的运算符从栈中弹出,直到栈顶运算符的优先级低于当前运算符,将该字符入栈。(5)重复上述操作1-2直至扫描完整个简单算术表达式,确定所有字符都得到正确处理,我们便可以将中缀式表示的简单算术表达式转化为逆波兰表示的简单算术表达式。算法流程图如图3.6所示。图3.6 算法流程图3.3.2 程序设计与实现计算器的程序主要包括以下功能模块: (1)主模块,为算法程序。(2)LCD液晶显示屏控制程序; (3)定时查键模块(子程序),分为读键程序(子程序)、判键程序段(子程序)、运算操作子程序等部分。3.3.3主程序输入字符Key判断是不是=号,若不是=号存储字符key到字符串数组reCBuf中。若是检查字符是否有错,若没有错误将其转化为逆波兰表达式并显示,之后清除字符数组reCBuf。若检查字符有错,也将清除字符数组reCBuf。主程序流程图如图3.7所示。图3.7主程序流程图3.3.4 显示模块的程序设计显示模块程序首先要对显示模块进行初始化,判断是否有按键按下,如果有按键按下取键码并判断是什么键。如果是数字键和清零键将相应值送入显示缓冲并显示。如果是功能键并判断是哪个功能键将相应值送入缓冲区等待数值输入将结果送入缓冲区,等待数值输入将结果显示。如果功能键是函数,输入数值后将结果送入缓冲区直接显示。 显示模块程序流程图如图3.8所示。显示模块程序入口 void lcdInit()/lcd初始化函数 uchar i; keyCounter=0; selectKey=0; DRG=0; isequal=0;/等号初始化没有按下图3.8 显示模块流程图3.3.5 按键扫描的程序设计为了实现按键的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码键码。为了得到被按键的键码,现使用行列扫描法识别按键。键扫程序的过程为:开始时,键盘初始化,先判断是否有列线按下,若有延时消抖动在判断是否有行线按下若有就转化为按键编码并显示键值,按键扫描流程图如图3.9所示。按键扫描程序入口uchar scanKeyboaRD() uchar tmp1,tmp2,key; LCD_KEY_P3=0XFF;/扫描第一行 LCD_KEY_P2=0XFe; tmp1=LCD_KEY_P3; tmp2=tmp1; if(tmp2!=0xFF)图3.9 按键程序扫描流程图3.4 其它设计为了更好的实现系统得功能,硬件电路的设计应该遵循以下原则:3.4.1优化硬件电路采用软件设计与硬件设计相结合的方法;尽管采用软件来实现硬件系统的功能时,也许响应时间会比单纯使用硬件时长,而且还要占用微处理器(MCU)的时间;但是,用软件实现硬件的功能可以简化硬件结构,提高电路的可靠性。所以,在设计本系统得时候,在满足可靠性和实时性的前提下,尽可能的通过软件来实现硬件功能8。3.4.2可靠性及抗干扰设计根据可靠性设计理论,系统所用芯片数量越少,系统的平均无故障时间越长。而且,所用芯片数量越少,地址和数据总线在电路板上受干扰的可能性也就越小。因此,系统的设计思想是在满足功能的情况下力争使用较少数量的芯片。3.4.3扩展性设计功能扩展是否灵活是衡量一个系统优劣的重要指标。一次设计往往不能完全考虑到系统的各个方面,系统需要不断完善以及进行功能升级。进行功能扩展时,应该在原有设计的基础上,通过修改软件程序和少量硬件完成。对于本系统而言,就是要求在系统硬件不变的情况下,能够通过修改软件程序,完成功能的升级和扩展。3.4.4可靠性设计提高本仪器其可靠性措施主要有:(1)为防止程序跑飞,软件中设置了软件陷阱。 (2)为防止程序死循环,软件中使用了看门狗技术9。(3)先刮净被焊表面,并在它上面涂上一点焊剂,再用带焊锡的烙铁头在它上面轻轻摩擦, 这样就可在被焊表面沾上一层焊锡层,然后进行焊接。(4)烙铁头要有足够的温度。一般来说,当烙铁头触及松香时会发出“哧哧”声并有烟冒出,说明烙铁头的温度已足够;若只有少量烟冒出而无“哧哧”声,说明烙铁头温度太低;若“哧哧”声很大,冒烟很多,说明烙铁头温度太高。(5)焊接的布局要合理避免焊接短路、干扰等。4测试与性能分析4.1 测试方法及测试结果4.1.1用仿真软件Proteus测试及测试结果用仿真软件Proteus绘制好原理图后,在用keiluvision软件编写程序,在添加到仿真软件中,进行仿真。在软件测试中原理图不会出错,主要是程序编写中会出现很多错误以及一些函数功能无法实现,经过多次程序的修改基本上达到预期效果。软件调试如图4.1所示。图4.1 软件调试4.1.2硬件测试及测试结果用仿真软件测试正确后,焊接好硬件电路,下载好程序后上电进行硬件测试。进行硬件测试过程中会出现很多错误,经过仔细分析和排除后发现虚焊、漏焊、焊接短路、按下按键后LCD显示屏无输出,出现乱码,系统不工作,电源的正负极接错等。4.2测试中出现的问题及解决措施4.2.1仿真软件测试中出现的问题及解决措施仿真软件调试一般分为以下四个阶段:1、编写程序并查错;2、在C语言的编译系统中编译源程序;3、对程序进行编译连接,并及时发现程序中存在的错误;4、改正错误。在本次调试中出现的问题及解决措施:(1)在程序中有的函数名未定义。定义函数名。(2)在编写程序时,少写入一些字符,如:“;”、“”、“-”等符号,而出现错误。添加相应字符。(3)有一些函数名写入时少写一个字母或顺序颠倒。写入正确的函数名。(4)芯片引脚定义出错而导致没有实验现象。定义正确的芯片引脚。在软件调试过程中,对出现的错误进行了认真的分析和修改,多次调试成功后,达到既定的设计要求。4.2.2硬件测试中出现的问题及解决措施(1)上电后按下按键LCD屏输出乱码。分析原因:用万用表测试硬件电路是漏焊一条单片机数据输出线所造成的。解决措施:补焊这条数据输出线。 (2)单片机无法烧写程序。分析原因:仔细观察发现烧写的单片机型号不对。解决措施:更改烧写程序的单片机型号。(3)上电后按下按键LCD屏无输出。分析原因:用万用表测试硬件电路发现电源功率不足和电源正负极接错。解决措施:更换电源和接入正确的电源正负极。本次硬件调试过程中,对所出现的问题进行了认真的分析和改正,最后能够很好的达到设计要求的效果。5展望与总结设计实现了12位数的加、减、乘、除,运算精确度达小数点6位。实现sin、cos、tan、反三角、xy、开方、cosh、sinh、tanh、log、ln、e(x) 、1E3=1000、取余、绝对值这一系列的函数表达式的计算。期间虽然道路坎坷,但是最终我确立了设计方案,完成仿真,程序以及实物的制作。系统整体运行情况良好,但还有很多不足,比如计算精度不是很高,还有一些函数功能无法实现(不能实现一个数的倒数,cot函数等),记忆等功能,有待以后的研究填补不足。在硬件的制作过程中我走了好多的弯路,主要是在系统设计还没有把握就开始动手制作了。后来发现与设计的要求还有偏差,反复的改过了几次,浪费了大量的时间。感受到设计人员要有耐心,要认真的从要求开始研究。软件的编写过程中费了很大的力气,因为软件的编写要求很高,要很细心,一不小心就会调用错误,深刻的体会到作为软件编程人员是绝不能粗心大意的,一个程序的完成的速度和质量高低与细心与否有着很大联系。编程时,我充分使用了结构化的思想。因为这样语句较少,程序调试比较方便,功能模块可以逐一的调试,充分体现了结构化编程的优势。当每个模块都完成时,将其功能加到一起就完成了整体的设计。参考文献1潘松,黄继业,潘明EDA技术实用教程Vrilog HDL版M北京:北京科学出版社,20102肖 倩单片机系统设计与仿真基于ProteusM北京:北京航空航天大学出版社,20103周润景,袁伟亭,景晓松Proteus在MCS-51-ARM7系统中的应用百例M北京:电子工业出版社,20064刘建清51单片机C语言非常入门与视频演练M北京:电子工业出版社,20105李朝清单片机原理及接口技术M北京:北京航空航天大学出版社,20056和卫星,李长杰Protel99 SE电子电路CAD实用技术M合肥:中国科学技术大学出版社,20107刘同法,肖志刚,彭继卫C51单片机C程序模板与应用工程实践M北京:北京航空航天大学出版社,20108郭天祥,51单片机C语言教程入门、提高、开发、拓展全攻略M北京:电子工业出版社,2010年9赵建领51单片机开发宝典M北京:电子工业出版社,200810谭浩强C语言程序设计M北京:清华大学出版社,200011蔡杏山电子元器件识别.检测与应用M北京:化学工业出版社,2013致 谢经过近两个月的努力,终于顺利完成了毕业设计。刚开始,头绪不是很清楚,不知道从哪里入手,但通过老师的耐心指导并和同学认真研究设计课题,跑图书馆查资料、确定基本设计方案、对所用芯片功能进行查找、调试、上机仿真等,经历了一次次的困难,积累了很多宝贵的经验。在整个设计的过程中遇到的问题主要有以下三点,第一:基础知识掌握的不牢固,主要表现在一些常用的电路的形式和功能不清楚,对书本上的内容理解不够透彻。第二:对一些常用的应用软件缺少应用,体现在画电路图和系统的仿真的时候,对这些软件的操作不熟练,浪费了很多时间。第三:相关知识掌握的不够全面,缺少系统设计的经验这次设计进一步端正了我的学习态度,学会了实事求是,严谨的作风,对自己要严格要求,不能够一知半解,要力求明明白白。如果省略了那些必要的步骤,急于求成,不仅会浪费时间,还会适得其反。我觉得动手之前,头脑里必须清楚该怎么做,这一点是很重要的。就目前来说,我的动手能力虽然差一点,但我想,通过我的不懈努力,在这方面,我总会得到提高。这一点,我坚信,因为别人能做到的,我也一定能做到。本次毕业设计得到导师杨雅宁老师的热心指导,在这里对杨老师表示最衷心的感谢。杨老师平易近人,对学生的设计进度和学习很关心。在毕业设计的前期,首先给我们介绍了不少有用的资料和书籍;在硬件设计等方面给予悉心的指导;在调试的过程中杨老师给每个出现的问题给予及时的指导。在写毕业设计论文的阶段,杨老师让我们提前给她评审,不论内容字体,还是格式上的问题都一一指出。待人平和、工作认真、治学严谨的她给我留下深刻的印象。更重要的是,她善于与学生沟通,不仅在毕业设计上给我及时的指导,更为我大学最后阶段的学习提出了许多宝贵的意见。这一切都在潜移默化地影响着我,为我以后进入工作岗位树立了良好的榜样。附录附录一:系统原理图附图A 系统原理图附录二:硬件实物图附图B Cos(45)值附图C 1/3的值附录三:源代码28#inClude#inClude#inClude#inClude#inClude#define PI 3.1415926#define MAX30#defineLCD_DATA P0 /lCd数据显示#define LCD_KEY_P2 P2/键盘接口#defineLCD_KEY_P3 P3/键盘接口 #defineuChar unsigned Char#defineuint unsigned intsbitLCD_RS=P10;sbitLCD_RW=P11;sbitLCD_E=P12;bit DRG;/DRG为角度DEG和弧度RAD的切换,值为0时为弧度,1是为角度uChar dataseleCtKey;/按键所选择键值 uChar datakeyCounter;/记录连续输入数字的个数 /记录连续接收到的数字,最多输入14位uChar datareCBufMAX+MAX; /接收字符串是操作符的两倍/记录存储结果double data result;/输入数据暂存uChar isequal;/等号标记,有等号按下则置1bit shift;/标记复选键是否按下,按下则置1bit hyp;/双曲函数的复用标志,按下为1struCt Bolan /存放波兰表达式的结构int flag; /标识该节点是数值、运算符还是函数 /0为数值,1为运算符,2为函数double value; /数值值Char oper; /运算符 +,-,*,/,(取反),(,)int funC; /函数的编号,各函数编号及功能见开始部分; /存放转化后的波兰表达式,长度为MAX=40struCt Bolan xdata bolanMAX;void Timer0();/定时器0void lCdInit();/LCD初始化void lCdWriteData(uChar dat);/LCD写数据 void lCdWriteCommand(uChar Com);阿/LCD写命令 /最小延时1ms时参数为1 void delay1ms(); /键盘扫描程序uChar sCanKeyboaRD();/将字符写入第Y行第x个位置voi

温馨提示

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

评论

0/150

提交评论