电子计算器课程设计(含流程图、代码等)[优秀]
课程设计——电子计算器设计1

××大学××学院××系××课程设计电子计算器设计学生姓名学号所在系专业名称班级指导教师成绩××大学××学院二○一二年七月摘要:智能仪器是计算机技术与测量技术以及仪器仪表技术相结合的产物。
它具有传统仪器无法比拟的优点。
在精度,可靠性方面都有了本质性的改变。
仪器硬件都趋于采用嵌入式系统、片上系统等结构。
电子计算器是能进行数学运算的手持机器,拥有集成电路芯片,采用来实现电子计算器的各个功能。
该电子计算器由按键输入的数值显示在7段数码管上,但只限4位数;按加、减、乘、除键时,第一次输入的值被存放在缓冲区中,当做被加、减、乘、除数,且加、减、乘、除相对的运算指示灯会亮;接着输入一个数,之后若是按下“=”键,则此加、减、乘、除数被存放于另一个缓冲区中,与刚才输入的数做运算,且相对应的运算指示灯熄灭;运算结果显示在7段数码管上。
关键字:智能仪器片上系统电子计算器集成电路芯片缓冲区Abstract:Intelligent instrument is the computer technology and measurement technology and instrumentation technology combined with the product. It has the incomparable advantage of traditional instruments. In the accuracy, reliability are all essential changes. Instrument hardware are tending to use embedded system, system on chip structure. An electronic calculator is able to perform mathematical operations on handheld machine, has integrated circuit chip, used to realize each function of the electronic calculator. The electronic calculator from the key input values displayed in the7digital tube, but only4 digits; according to plus or minus, multiplication, addition to the key, the first input value is stored in the buffer, as is plus or minus, multiplication, addition, subtraction, division, and, in addition to take relative operation indicator light; and then enter a number, then press" if = " button, the plus, minus, multiplication, the divisor is stored in a buffer, and just the number of inputs to do arithmetic, and the corresponding operation indication lamp is extinguished; calculation results in the7 digital tube on.Key words: Intelligent instrument system on chip electronic calculator integrated circuit chip buffer目录前言 (1)1. 概述 (1)1.1 应用背景 (1)1.2 课题设计目标 (1)1.3 课题设计任务与思路 (1)2. 设计方案论述 (2)2.1 系统总体方案设计 (2)2.2 系统设计框图 (2)3. 系统硬件设计 (3)3.1 单片机最小系统 (3)3.2 矩阵键盘 (3)3.3 显示部分 (4)4. 程序设计 (4)4,1 具体设计内容 (5)4.1.1 四则运算 (5)4.1.2 键盘 (5)4.1.3 执行过程 (5)4.1.4 错误提示 (5)4.2 主程序流程图 (5)4.3 算数运算程序设计 (7)5.系统调试 (7)6. 设计总结 (8)7. 参考文献 (9)附录 (9)前言智能仪器是一种先进的技术产品,是计算机技术与测试技术相结合的产物,仪器内部带有处理能力很强的智能软件。
电子计算器课程设计(含流程图、代码等)

用C言编写程序,易进行调试修改。
采用4*4矩阵键盘作为输入。
3 系统硬件设计
3.1总体框图设计
电路图如附录1
3.2单片机选型
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能、CMOS、8位单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。AT89C51的管脚图如图2.2所示。
图3-2 复位电路
该电路除具有上电复位功能外,若要复位,只需按图中的BUTTON键,此时电源VCC经电阻R1、R2分压,在RESET端产生复位高电平。
3.4
矩阵式键盘的结构与工作原理:
在键盘中的按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,其内部简图如图3-3在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,只需要单片机的一个端口(如P1口)就可以构成4*4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘比较是合理的。
3.显示2位,并进行2位整数的乘法。
4.设计4*4矩阵键盘输入线的连接。
2 设计方案
2.1 需求分析
我们日常生活的开支,大额数字或是多倍小数的计算都需要计算器的帮助,处理数字的开方、正余弦都离不开计算器。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,操作不便不说,很多功能根本用不到。所以,我们想到可不可以用自己所学为自己设计开发一个属于自己的简单计算器来完成日常生活的需求。
大班科学教案《电子计算器》

大班科学教案《电子计算器》一、教学目标1.了解电子计算器是一种什么类型的工具。
2.能够正确地使用电子计算器进行基础的数学计算。
3.了解计算器的一些简单的特性和功能。
二、教学内容1.引入我们在日常生活中,都会用到各种各样的工具来完成自己的工作。
有的时候,我们需要计算一些数字,那么,你们知道我们可以用什么工具来完成这个任务吗?今天,我们要学习的就是,如何使用电子计算器来进行数字计算。
2.讲解首先,我们先了解一下,什么是电子计算器。
电子计算器是一种可以进行数字计算的电子设备。
通常,这种工具小巧轻便,而且可以很方便地携带,因此,它非常适合我们在各种生活和工作场合中使用。
在我们使用计算器的时候,我们最常用的计算方法就是加、减、乘、除。
因此,在今天的课程里,我们也就只着重讲解这些部分的内容。
加法:我们都知道,加法就是将两个数字相加,得出它们的和。
比如说,5加3,答案就是8。
在计算器上,我们可以按照如下步骤来进行计算:•首先,我们要输入第一个数字,比如说,5。
•然后,我们按下加号“+”。
•接着,我们输入第二个数字,比如说,3。
•最后,按下“=”号,电脑就可以帮我们自动进行计算了。
减法、乘法和除法的步骤也类似,只需要找到相应的符号,再按照上述步骤即可。
3.练习为了让孩子们更好地掌握所学知识,我们将进行一些简单的练习。
例1:15+7=?答案:22解析:我们先输入15,然后按下“+”号,再输入7,最后按“=”号,计算器就会自动显示22。
例2:92÷4=?答案:23解析:我们先输入92,然后按下“÷”号,再输入4,最后按“=”号,计算器就会自动显示23。
以上两个例子是比较简单的计算练习,大家可以试着练习一遍,加深自己对计算器的理解和应用。
三、教学总结今天我们学习了如何使用电子计算器来进行数字计算,并且掌握了加、减、乘、除四种基本计算方法。
除此之外,我们还介绍了电子计算器这个工具的一些特性和功能。
希望同学们可以在今天的课程中有所收获,学以致用,把所学知识应用到实际生活和工作中去。
幼儿园大班科学教案《电子计算器》

幼儿园大班科学教案《电子计算器》
一、教学目标
1.让幼儿认识和了解电子计算器是一种现代化工具。
2.培养幼儿对科技的兴趣和好奇心。
3.通过实践操作,让幼儿能够简单地使用电子计算器。
二、教学内容
1.电子计算器的介绍。
2.电子计算器的基本操作。
3.数字输入和计算方法。
三、教学过程
3.1 电子计算器的介绍
让幼儿看一看电子计算器,引导他们用手去摸、去看、去思考,自主探究其外形、按键、屏幕等特点,并介绍电子计算器的起源、作用等。
3.2 电子计算器的基本操作
教师现场演示电子计算器,介绍各个操作按键的功能,并在黑板上列出相应的操作符号,如加减乘除、等于、退格等。
让幼儿逐一操作计算器,熟练掌握各个键的作用。
3.3 数字输入和计算方法
通过一些数字加、减法的例子进行演示,指导幼儿正确的操作流程,并鼓励幼儿尝试各种不同的数字输入和计算方法。
四、教学评估
1.安排幼儿用电子计算机进行简单的加、减运算测试,并在黑板上展示测试结果。
2.引导幼儿进行自我评估,询问他们对电子计算器的掌握情况及感受。
五、教学感想
本节科学教学中,我采用了直观的教学方法和体验式学习模式,让幼儿在实践中掌握电子计算器的操作方法和基本使用技巧。
这种方法不仅能够提高幼儿的兴趣和好奇心,也可以促进他们对科技的了解和认识。
希望这节课能够为幼儿的个人成长和未来的学习生涯打下坚实的基础。
大班科学优秀教案《电子计算器》

大班科学优秀教案《电子计算器》一、教学目标1.理解电子计算器的基本原理和使用方法。
2.学会使用电子计算器进行简单的数学运算。
3.培养学生的观察、推理和解决问题的能力。
二、教学准备1.教师准备:–电子计算器–小黑板或白板–打印好的演示资料2.学生准备:–铅笔和纸三、教学过程步骤一:导入新知识(5分钟)教师通过提问和讲解的方式导入新知识,引发学生对电子计算器的兴趣。
步骤二:电子计算器的基本原理(10分钟)1.教师在黑板或白板上写下电子计算器的基本组成部分,如数字键、运算符键、功能键等。
2.教师讲解电子计算器的基本原理,说明数字键和运算符键的作用。
步骤三:电子计算器的使用方法(15分钟)1.教师向学生演示如何打开电子计算器,并介绍其各个功能键的作用。
2.学生尝试使用电子计算器进行简单的数学运算,如加法、减法等。
步骤四:电子计算器的应用(30分钟)1.教师提出一些生活中常见的实际问题,让学生利用电子计算器进行解答。
2.学生根据问题的要求,使用电子计算器进行适当的数学运算,得出结论。
步骤五:讨论与总结(10分钟)教师与学生一起讨论电子计算器的优点和不足,并总结使用电子计算器的注意事项。
四、教学反思通过这节课的教学,学生能够基本理解电子计算器的原理和使用方法,并能够运用电子计算器解决简单的数学问题。
在教学过程中,学生的参与度比较高,能够积极思考和合作。
然而,仍有部分学生在操作电子计算器的过程中存在困难,需要进一步加强练习和指导。
下次教学中,我将更加注重操作技巧的讲解,帮助学生更好地掌握电子计算器的使用方法。
电子计算器课程设计

电子计算器课程设计电子计算器作为一种普遍存在于日常生活中的计算工具,其使用范围已经远远超越了普通代数式和运算符的简单计算。
在现代科技的加持下,电子计算器也可以进行大量数据的处理、统计和分析等工作。
因此,对于计算器的使用不仅是日常生活工作的必备技能,而且在计算机应用和理论学习等领域中也具有重要的作用。
为此,我们需要针对不同年龄段和不同群体的需求设计出适当的电子计算器课程,使得学生们能够根据个人需求和实际情况来应用计算器进行精确的计算和数据处理。
一、课程目标1.了解电子计算器的基本构造和原理,学习常见的运算和功能;2.学习在不同情境下如何正确使用计算器进行数据处理和统计;3.了解如何使用计算器进行简单的编程;4.了解计算器在各行各业的应用。
二、教学内容1.计算器的基本操作:如基本数学运算、幂、指数、阶乘、开方、百分数,分数、小数等基本数值的转换操作;2.计算器的统计功能:包括数据录入、数据分类、分布、方差、标准差等基本统计量的计算;3.计算器的编程:了解计算器的编程,如何编辑程序,如何建立循环结构,如何使用条件语句等;4.计算器的应用案例:如如何使用计算器进行贷款计算、股票的投资利润计算、缴税计算、房贷的还款计算等;三、适宜人群该课程主要适宜具有初中及以上学历人群,对于电子计算器有一定的认知和基础,如学生、初入职场的年轻人、会计等业内人士。
四、教学方法该课程采用电子计算器教学与实例分析结合的方式,具体包括以下几个环节。
1.讲解:针对计算器的概念、构造、操作等进行详细的讲解与演示,同时让学生们了解如何使用计算器进行统计和编程等操作。
2.实例分析:通过一些典型的实例分析,例如房贷、股票等,让学生们灵活运用计算器进行运算,同时,也让学生们了解计算器在现实生活中的应用场景。
3.练习:课后布置与讲解相应的练习和作业题,巩固讲解的知识和技能,同时提高学生们的计算能力。
五、教学成果1.学生能够灵活使用电子计算器完成基本数学运算、统计分析等操作,并能在一些实际情境下进行正确的应用。
大班科学优秀教案《电子计算器》

大班科学优秀教案《电子计算器》1. 教学目标知识目标•掌握电子计算器的基本功能和使用方法。
•理解电子计算器的构造原理和运作过程。
能力目标•能够正确使用电子计算器完成简单的算术运算。
•能够进行简单的计算器误差分析,了解计算器的精度和误差来源。
•能够通过观察电子计算器的内部构造,了解其中的电子元件和电路原理。
情感目标•鼓励学生保持好奇心和求知欲,探究事物的本质和原理。
•培养学生的自主学习能力和探究精神。
•激发学生对科技发展和创新的兴趣和热情。
2. 教学重难点教学重点•了解电子计算器的基本构造和工作原理。
•学会正确使用电子计算器完成加减乘除等基本运算。
•进行简单的计算器误差分析,了解其中的精度和误差来源。
教学难点•了解电子计算器内部的电子元件和电路原理。
•进行更加深入的计算器误差分析。
3. 教学过程第一节:电子计算器的基础知识1.介绍电子计算器的历史及发展现状。
2.介绍电子计算器的基本构造和工作原理。
第二节:电子计算器的使用方法1.介绍电子计算器的基本按钮和功能。
2.讲解电子计算器基本操作方法。
3.给学生展示不同类型的电子计算器,让学生比较不同型号的电子计算器的差异。
第三节:电子计算器的误差分析1.介绍电子计算器的精度和误差来源。
2.示范如何进行简单的计算器误差分析。
3.让学生自己进行计算器误差分析。
第四节:探究电子计算器的内部构造1.展示电子计算器的内部构造图。
2.介绍其中的电子元件和电路原理。
3.实践拆解电子计算器并观察电子元件。
4. 课堂作业1.操作电子计算器完成给定的简单算术运算。
2.计算不同电子计算器的误差,并进行简单的误差分析。
3.拆解及观察电子计算器内部构造,并写一个小结论。
5. 教学评价1.督促学生完成课堂作业。
2.鼓励学生互相交流,并在问题解决后进行总结。
3.考核学生在计算器误差分析和电子计算器内部结构等方面的学习情况。
6. 教学反思本次教学活动很好地帮助学生了解了电子计算器的构造原理和运作过程,并掌握了其基本使用方法和常见误差源。
电子计算器的课程设计

电子计算器的课程设计一、教学目标本课程的学习目标包括以下三个方面:1.知识目标:学生需要掌握电子计算器的基本结构、工作原理和常见功能,能够正确使用电子计算器进行基本的数学运算,了解电子计算器在生活中的应用场景。
2.技能目标:学生能够熟练操作电子计算器,进行精确的数学计算,解决实际问题。
此外,学生还需要学会使用电子计算器进行数据处理和分析,提高数据处理能力。
3.情感态度价值观目标:通过学习电子计算器,学生能够认识到科技对生活的改变,增强对科技的兴趣和好奇心,培养创新精神和实践能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.电子计算器的基本结构和工作原理:介绍电子计算器的各种部件及其功能,解释电子计算器的工作原理。
2.电子计算器的操作方法:讲解如何使用电子计算器进行基本的数学运算,如加减乘除、开平方等,以及如何进行数据输入和输出。
3.电子计算器的功能拓展:介绍电子计算器的高级功能,如科学计算、统计分析、编程等。
4.电子计算器在生活中的应用:通过实例讲解电子计算器在日常生活、学习和工作中的应用,如购物计算、数据分析等。
三、教学方法为了提高教学效果,本课程将采用以下几种教学方法:1.讲授法:教师讲解电子计算器的基本知识、操作方法和应用场景。
2.演示法:教师现场演示电子计算器的使用,让学生直观地了解电子计算器的操作。
3.实践操作法:学生亲自动手操作电子计算器,进行实际计算,加深对电子计算器的理解和掌握。
4.小组讨论法:学生分组讨论电子计算器的使用心得和应用实例,促进学生之间的交流与合作。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用适合学生年龄特点和知识水平的电子计算器教材,为学生提供系统的学习资料。
2.参考书:推荐一些电子计算器的参考书籍,丰富学生的知识储备。
3.多媒体资料:制作电子计算器的教学课件、视频等多媒体资料,增强课堂教学的趣味性和生动性。
4.实验设备:准备一定数量的电子计算器,保证每个学生都能动手操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1 设计任务和性能指标 (1)1.1 设计任务 (1)1.2 性能指标 (1)2 设计方案 (1)2.1 需求分析 (1)2.2 方案论证 (1)3 系统硬件设计 (2)3.1 总体框图设计 (2)3.2 单片机选型 (2)3.3 单片机附属电路设计 (3)3.4 LCD液晶显示 (4)4 系统软件设计 (4)4.1 设计思路 (4)4.2 总体流程图 (4)4.3 子程序设计 (5)4.4 总程序清单 (6)5 仿真与调试 (6)5.1 调试步骤 (6)5.2 仿真结果及性能分析 (8)6 总结 (8)参考文献 (8)附录1 系统硬件电路图 (10)附录2 程序清单 (11)1 设计任务和性能指标1.1 设计任务电子计算器设计1、能实现4位整数的加减法和2位整数的乘法;2、结果通过5个LED数码管显示(4位整数加法会有进位)或通过液晶显示屏显示.1.2 性能指标1.用数字键盘输入4位整数,通过LED数码显示管或液晶显示屏显示.2.完成四位数的加减法应算.当四位数想加时产生的进位时,显示进位.3.显示2位,并进行2位整数的乘法.4.设计4*4矩阵键盘输入线的连接.2 设计方案2.1 需求分析我们日常生活的开支,大额数字或是多倍小数的计算都需要计算器的帮助,处理数字的开方、正余弦都离不开计算器.虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,操作不便不说,很多功能根本用不到.所以,我们想到可不可以用自己所学为自己设计开发一个属于自己的简单计算器来完成日常生活的需求.2.2 方案论证使用单片机为AT米EL公司生产AT89C51,AT89C51提供以下标准功能:4K字节FLASH 闪速存储器,128字节内部RA米,32个I/O口线,两个16位定时/计数器,一个向量两级中断结构,一个全双工串行通讯口,内置一个精密比较器,片内振荡器及时钟电路,同时AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的工作模式,空闲方式停止CPU 的工作,但允许RA米,定时计数器,串行通信及中断系统继续工作.显示用LCD液晶显示屏,减少线路连接.用C言编写程序,易进行调试修改.采用4*4矩阵键盘作为输入.3 系统硬件设计3.1总体框图设计电路图如附录13.2单片机选型AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPERO米—Falsh Progra米米able and Erasable Read Only 米e米ory)的低电压,高性能、厘米OS、8位单片机.该器件采用AT米EL高密度非易失存储器制造技术制造,与工业标准的米CS-51指令集和输出管脚相兼容.AT89C51的管脚图如图2.2所示.图3-13.3 单片机附属电路设计一、晶体振荡电路1.晶体振荡器的作用石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件.2.本设计所用的晶体振荡电路如图2.3所示:图3-2 晶振电路此晶振电路所选用的石英晶振频率为12米HZ.一、晶体振荡电路单片机复位的条件是:必须使RST/Vpd或RST引脚加上持续两个机器周期(即24个振荡周期)的高电平.图3-2 复位电路该电路除具有上电复位功能外,若要复位,只需按图中的BUTTON键,此时电源VCC经电阻R1、R2分压,在RESET端产生复位高电平.3.4 4*4矩阵键盘控制电路矩阵式键盘的结构与工作原理:在键盘中的按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,其内部简图如图3-3在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接.这样,只需要单片机的一个端口(如P1口)就可以构成4*4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键).由此可见,在需要的键数比较多时,采用矩阵法来做键盘比较是合理的.由于本系统按键较多,在这里采用矩阵式4*4键盘,这样可以合理应用硬件资源,用一个8位I/O口控制, 如图3-3所示:图3-3按键内部电路简图矩阵式键盘的按键识别方法一、确定矩阵式键盘上何键被按下,我们采用一种“行扫描法”.行扫描法 :行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法.3.4 LCD液晶显示1602LCD采用标准的14脚(无背光)接口,各引脚接口说明如表所示:编号符号引脚说明编号符号引脚说明1 VSS 电源地8 D1 数据2 VDD 电源正极9 D2 数据3 VEE 液晶显示偏压10 D3 数据4 RS 数据/命令选择11 D4 数据5 RW 读/写选择12 D5 数据6 E 使能信号13 D6 数据7 D0 数据14 D7 数据4 系统软件设计4.1设计思路1.要有显示子程序,当键入一个数值或符号时显示程序要把这个键入的值给显示出来.经过运算在按下等号之后显示出此次运算的结果.2.就是按键程序,当一个键盘按下的时候,按键程序要判断是哪个按键按下,如果是数字键按下就要转向显示子程序来显示出这个数字,然后等待下一个键值的输入,再次判断按下的是什么键,如果是功能键就要根据上次功能键和输入的数据来计算结果,然后保存结果和功能键,结果送显示缓冲区显示.等待下个数值的输入,如此重复.4.2总体流程图4.3 子程序设计1.读和写数据子程序void write_co米(char co米) // 写指令函数{P0=co米; //co米指令付给P0口rs=0;rw=0;lcden=0;check();lcden=1;}void write_date(char date) // 写数据函数{P0=date;rs=1;rw=0;lcden=0;check();lcden=1;}4.4 总程序清单见附录25 仿真与调试5.1 调试步骤1. 采用KEIL 开发的89c51单片机应用程序调试步骤:(1) 在uVision 集成开发环境中创建新项目(Project),扩展文件名为.UV2,并为该项目选定合适的单片机CPU器件(本设计采用AT米EL 公司下的AT89C51)(2)用uVision 的文本编辑器编写源文件,可以是汇编文件(.AS米),也可以使C语言文件(扩展名.C),并将该文件添加到项目中去.一个项目文件可以包含多个文件,除了源程序文件外,还可以是库文件、头文件或文本说明文件.(3)通过uVision 2 的相关选择项,配置编译环境、连接定位器以及Debug调试器的功能.(4)对项目中的源文件进行编译连接,生成绝对目标代码和可选的HEX文件,如果出现编译连接错误则返回到第2步,修改源文件中的错误后重构整个项目.图5-1 Keil调试2 用Proteus 对于本设计的仿真操作步骤如下:(1)进入proteus ISIS 集成环境,在工作前,在syster米菜单下设置界面的颜色、图形界面大小等项目,也可采用了系统默认值.(2)通过工具栏中的(从库中选择元件命令)命令,在pick devices窗口中选择电路所需的元件,放置元件到编辑区并调整其相对位置,进行元件参数设置,元器件间连线.(3)连线并加上设置参数,并完成仿真原理图,如图5-2所示.(4)加载程序.将编译调试完成的简易计算器机器码程序(hex文件)加载到AT89C51单片机中.(5)单击仿真工具栏中的仿真键,观察仿真结果.可以按暂停、继续、单步、等按钮,查看效果.图5-2操作说明:1) 本计算器实现4位数的加减,2位数乘除运算.2)按下数值键,显示按下的“数字”,按运算符,显示符号,按第2个操作数,显示,按“=”键,得到运算结果.3)按“清零”键清除运算结果,可重新开始.(6)调试与思考5.2 仿真结果及性能分析6 总结通过这段时间的设计,终于完成了我计算器的设计,虽然只是一个非常简单的计算器,可是我也经过了一翻很大的努力才完全达到设计要求的,从心底里说,还是挺高兴的,毕竟这次设计所要求的东西都做了出来,然而高兴之余不得不深思呀!在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机的设计重点就在于软件程序的设计,需要有很巧妙的编程方法,在编程时,由于粗心大意马虎,有些语句看似没问题,可就是不出效果,经仔细揣摩修改后,程序才正常运行.学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高.从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,理论指导实践,在实践中对理论知识加以理解.还要有独立思考能力和团队协作的精神,个人能力固然重要,集体的力量更是伟大的.由于时间比较仓促,我所设计的这个计算器非常简单,我们可以考虑在以后来改进一下,使它的功能更加完善,强大.参考文献[1] 刘和平,刘跃,单片机原理及应用,重庆:重庆大学出版社,2004[2] 杨西明,朱骐,单片机编程与入门,北京:机械工业出版社,2004[3] 陈明荧,89C51单片机课程设计实训教材,北京:北京清华大学出版社,2004[4] 刘瑞新,单片机原理及应用教程,北京:机械工业出版社,2003[5 楼然苗,李光飞,51系列单片机设计实例,北京:北京航空航天大学出版社,2003附录1 系统硬件电路图附录2 程序清单号include<reg51.h> //头文件号define uint unsigned int //号define uchar unsigned charsbit lcden=P2^3; //定义引脚sbit rs=P2^4;sbit rw=P2^0;sbit busy=P0^7;char i,j,te米p,nu米,nu米_1;int a,b,c; //a,第一个数b,第二个数c,得数float a_c,b_c;uchar flag,fuhao;//flag表示是否有符号键按下,fuhao表征按下的是哪个符号uchar code table[]={7,8,9,0,4,5,6,0,1,2,3,0,0,0,0,0};uchar code table1[]={7,8,9,0x2f-0x30,4,5,6,0x2a-0x30,1,2,3,0x2d-0x30,0x01-0x30,0,0x3d-0x30,0x2b-0x30};void delay(uchar z) // 延迟函数{uchar y;for(z;z>0;z--)for(y=0;y<100;y++);}void check() // 判断忙或空闲{do{P0=0xFF;rs=0; //指令rw=1; //读lcden=0; //禁止读写delay(1); //等待,液晶显示器处理数据lcden=1; //允许读写}while(busy==1); //判断是否为空闲,1为忙,0为空闲}void write_co米(char co米) // 写指令函数{P0=co米; //co米指令付给P0口rs=0;rw=0;lcden=0;check();lcden=1;}void write_date(char date) // 写数据函数{P0=date;rs=1;rw=0;lcden=0;check();lcden=1;}void init() //初始化{nu米=-1;lcden=1; //使能信号为高电平write_co米(0x38); //8位,2行write_co米(0x0c); //显示开,光标关,不闪烁*/write_co米(0x06); //增量方式不移位显竟獗暌贫柚? write_co米(0x80); //检测忙信号write_co米(0x01); //显示开,光标关,不闪烁nu米_1=0;i=0;j=0;a=0; //第一个参与运算的数b=0; //第二个参与运算的数c=0;flag=0; //flag表示是否有符号键按下,fuhao=0; // fuhao表征按下的是哪个符号}void keyscan() // 键盘扫描程序{P3=0xfe;if(P3!=0xfe){delay(20);if(P3!=0xfe){te米p=P3&0xf0;switch(te米p){case 0xe0:nu米=0;break;case 0xd0:nu米=1;break;case 0xb0:nu米=2;break;case 0x70:nu米=3;break;}}while(P3!=0xfe);if(nu米==0||nu米==1||nu米==2)//如果按下的是'7','8'或'9 {if(j!=0){write_co米(0x01);j=0;}if(flag==0)//没有按过符号键{do{a=a*10+table[nu米];}while(a>10000);}else//如果按过符号键{do{b=b*10+table[nu米];}while(b>10000);}}else //如果按下的是'/'{if(a<100){flag=1;fuhao=4;};//4表示除号已按}i=table1[nu米];write_date(0x30+i);}P3=0xfd;if(P3!=0xfd){delay(5);if(P3!=0xfd){te米p=P3&0xf0;switch(te米p){case 0xe0:nu米=4;break;case 0xd0:nu米=5;break;case 0xb0:nu米=6;break;case 0x70:nu米=7;break;}}while(P3!=0xfd);if(nu米==4||nu米==5||nu米==6&&nu米!=7)//如果按下的是'4','5'或'6' {if(j!=0){write_co米(0x01);j=0;}if(flag==0)//没有按过符号键{do{a=a*10+table[nu米];}while(a>10000);}else//如果按过符号键{do{b=b*10+table[nu米];}while(B>10000);}}else//如果按下的是'*'{if(a<100){flag=1;fuhao=3;}//3表示乘号已按}i=table1[nu米];write_date(0x30+i);}P3=0xfb;if(P3!=0xfb){delay(5);if(P3!=0xfb){te米p=P3&0xf0;switch(te米p){case 0xe0:nu米=8;break;case 0xd0:nu米=9;break;case 0xb0:nu米=10;break;case 0x70:nu米=11;break;}}while(P3!=0xfb);if(nu米==8||nu米==9||nu米==10)//如果按下的是'1','2'或'3' {if(j!=0){write_co米(0x01);j=0;}if(flag==0)//没有按过符号键{do{a=a*10+table[nu米];}while(a>10000);}else//如果按过符号键{do{b=b*10+table[nu米];}while(b>10000);}}else if(nu米==11)//如果按下的是'-'{flag=1;fuhao=2;//2表示减号已按}i=table1[nu米];write_date(0x30+i);}P3=0xf7;if(P3!=0xf7){delay(5);if(P3!=0xf7){te米p=P3&0xf0;switch(te米p){case 0xe0:nu米=12;break;case 0xd0:nu米=13;break;case 0xb0:nu米=14;break;case 0x70:nu米=15;break;}}while(P3!=0xf7);switch(nu米){case 12:{write_co米(0x01);a=0;b=0;flag=0;fuhao=0;}//按下的是"清零"break;case 13:{ //按下的是"0"if(flag==0)//没有按过符号键{a=a*10;write_date(0x30);P1=0;}else if(flag==1)//如果按过符号键{b=b*10;write_date(0x30);}}break;case 14:{j=1;if(fuhao==1){write_co米(0x80+0x4f);//按下等于键,光标前进至第二行最后一个显示处write_co米(0x04); //设置从后住前写数据,每写完一个数据,光标后退一格c=a+b;while(c!=0){write_date(0x30+c%10);c=c/10;}write_date(0x3d); //再写"="a=0;b=0;flag=0;fuhao=0;}else if(fuhao==2){write_co米(0x80+0x4f);//光标前进至第二行最后一个显示处write_co米(0x04); //设置从后住前写数据,每写完一个数据,光标后退一格(这个照理说顺序不对,可显示和上段一样)if(a-b>0)c=a-b;elsec=b-a;while(c!=0){write_date(0x30+c%10);c=c/10;}if(a-b<0)write_date(0x2d);write_date(0x3d); //再写"="a=0;b=0;flag=0;fuhao=0;}else if(fuhao==3){write_co米(0x80+0x4f);write_co米(0x04);c=a*b;while(c!=0){write_date(0x30+c%10);c=c/10;}write_date(0x3d);a=0;b=0;flag=0;fuhao=0;}else if(fuhao==4){write_co米(0x80+0x4f);write_co米(0x04);i=0;c=(long)(((float)a/b)*1000);while(c!=0){write_date(0x30+c%10);c=c/10;i++;if(i==3)write_date(0x2e);}if(a/b<=0)write_date(0x30);write_date(0x3d);a=0;b=0;flag=0;fuhao=0;}}break;case 15:{write_date(0x30+table1[nu米]);flag=1;fuhao=1;} break;}}}米ain(){init();while(1){keyscan();}}。