电子计算器课程设计
大班科学优秀教案《电子计算器》

大班科学优秀教案《电子计算器》教学目标1.能够正确使用电子计算器进行简单的加、减、乘、除运算和开方运算。
2.能够了解电子计算器的结构和使用方法,提高对电子产品的认识和运用能力。
3.能够自主探究电子计算器的其他功能,如百分数、科学计数法等。
教学准备1.教师准备一台电子计算器并熟悉其各种功能。
2.为学生准备足够的练习用纸和笔。
教学过程1. 电子计算器的介绍•首先,教师举起一台电子计算器,向学生介绍其功能和用途,并指出其特点和优势。
•接着,教师让学生互相交流分享自己用过的电子计算器,并从中找出相似和不同之处。
2. 电子计算器的基本操作•教师引导学生逐步掌握电子计算器的基本按钮和操作,如加减乘除、取余、正负号等。
•以加法为例,教师演示如何输入数字和符号,然后学生跟随操作,完成加法练习。
•之后,教师引导学生自主探索减法、乘法、除法和开方等基本运算的操作方法。
3. 电子计算器的高级操作•教师进一步介绍电子计算器的高级功能,如百分数、科学计数法等。
•学生可以自主探索和练习这些功能,如输入小数,再把小数转换成百分数或科学计数法进行计算。
•最后,教师可以利用实际问题来引导学生运用电子计算器解决实际问题,如计算折扣、税收等。
教学评估1.教师可提出一些口头问题,考查学生对电子计算器使用的掌握度,如如何进行开方运算等。
2.也可让学生自主完成一些练习题,考核他们对所学知识的掌握情况,例如计算一个具体的实际问题。
总结与反思通过上述授课过程,学生可以获得丰富的用计算器解决数学问题的经验,并且进一步了解电子产品的结构和使用方法,提高自己的计算能力。
教学中还应引导学生正确使用计算器,灵活运用计算器辅助自己的学习,在提高计算能力的同时增进对计算器的理解与掌握。
大班科学教案《电子计算器》及教学反思

大班科学教案《电子计算器》及教学反思一、教学目标本次课程的教学目标如下:1.学生能正确操作电子计算器进行简单运算;2.学生能够理解电子计算器的原理和作用;3.学生能够体会在日常生活中使用电子计算器的便利性。
二、教学准备1.准备足够数量的带有基本四则运算功能的电子计算器;2.准备黑板、彩色粉笔、教案、试卷等教学辅助工具;3.准备并制作好相关的教学PPT和视频。
三、教学过程1. 导入环节1.介绍电子计算器的概念、作用和历史背景;2.通过引导学生回忆日常生活中的计算经验,激发学生对电子计算器的兴趣;3.列举电子计算器在日常生活中的应用场景。
2. 讲解与操作1.教师用PPT展示电子计算器的结构和原理,介绍各个按键的功能;2.操作演示,让学生亲自操作电子计算器并进行简单的四则运算;3.解答学生关于电子计算器使用和相关知识的疑问。
3. 练习与巩固1.分发练习册,让学生在讲解的基础上进行电子计算器的练习;2.对学生进行鼓励和指导,纠正学生的错误操作。
4. 板书总结与反思教师对本节课所讲解的内容进行总结,对学生提出的问题进行解答,并引导学生对本节课学到的知识进行思考和总结。
四、教学反思通过本次课程的教学,我认为有以下几个方面需要改进和调整:1.教学内容设计需要针对学生的认知水平和实际需求进行;2.在操作演示环节中需要给学生更多的宽限和支持,避免让学生失去信心;3.教师在讲解和回答疑问环节中需要注重语言表达和沟通技巧;4.针对学生解决问题的能力、合作精神和自我学习的能力进行训练和提高。
通过本次教学反思,我认为自己需要不断学习、思考和实践,以提高自己教学能力,更好地为学生服务。
加减计算器电子课程设计

加减计算器电子课程设计一、课程目标知识目标:1. 学生能理解加减计算器的基本原理,掌握电子元件的功能和使用方法。
2. 学生能运用所学的数学知识,设计并搭建一个简单的加减计算器电路。
3. 学生了解电子技术在日常生活中的应用,理解电子计算器的发展历程。
技能目标:1. 学生能运用所学知识,分析问题,提出解决方案,具备初步的电子电路设计和搭建能力。
2. 学生能通过实际操作,提高动手能力,培养观察能力和问题解决能力。
3. 学生能通过团队合作,学会沟通与协作,提高项目执行能力。
情感态度价值观目标:1. 学生对电子技术产生兴趣,激发学习热情,培养科技创新意识。
2. 学生在课程学习中,培养耐心、细心和专注的品质,养成严谨的科学态度。
3. 学生通过实践,体会团队合作的重要性,培养集体荣誉感和责任感。
课程性质:本课程为实践性课程,结合数学和电子技术知识,培养学生的动手能力和问题解决能力。
学生特点:六年级学生具备一定的数学知识基础,好奇心强,喜欢动手操作,但可能对电子技术了解较少。
教学要求:教师需引导学生运用所学知识,注重实践操作,鼓励学生思考、提问,培养其创新精神和团队合作能力。
通过课程目标的具体分解,使学生在实践中达成学习成果,提高综合素养。
二、教学内容1. 电子元件基础知识:介绍电子元件的分类、功能及使用方法,如电阻、电容、二极管、三极管等。
- 教材章节:电子技术基础2. 加减计算器原理:讲解加减计算器的基本工作原理,引导学生理解数字电路的运算过程。
- 教材章节:数字电路基础3. 电路设计与搭建:指导学生运用电子元件,设计并搭建一个简单的加减计算器电路。
- 教材章节:电路设计与实践4. 数学知识应用:结合教材中的数学知识,分析加减计算器电路中的数值计算过程。
- 教材章节:数学基础知识5. 电子计算器发展史:介绍电子计算器的发展历程,使学生了解科技进步对社会发展的推动作用。
- 教材章节:电子技术发展史6. 团队合作与沟通:通过分组合作,培养学生的团队协作能力和沟通能力。
大班科学教案《电子计算器》含反思

大班科学教案《电子计算器》含反思一、教学目标1.知识目标:通过本节课的学习,学生能够了解电子计算器的基本原理和使用方法,掌握电子计算器的四则运算和小数运算,并能够熟练地使用电子计算器进行计算。
2.能力目标:培养学生运用电子计算器进行计算的能力,提高学生解决实际问题的能力。
3.情感目标:通过本节课的学习,培养学生的观察、思考和分析问题的能力,培养学生的合作意识和创新意识。
二、教学重点和难点1.教学重点:电子计算器的基本原理和使用方法,四则运算和小数运算的使用。
2.教学难点:小数运算的使用。
三、教学准备1.教材:电子计算器、教学PPT。
2.素材:小数计算题。
四、教学过程1.导入(5分钟)教师通过出示一张纸上有几道小数运算题的图片,让学生尝试用纸和笔计算这些题目,并在黑板上进行展示。
然后,教师提问:“这里的计算涉及的数很多,我们能通过使用一种工具来更快地计算这些题目吗?”提醒学生思考解决问题的方式,导入本节课的内容。
2.学习电子计算器的基本原理和使用方法(10分钟)教师向学生介绍电子计算器的基本原理和使用方法,包括通电开关、数字按键、功能按键等。
教师通过实际操作电子计算器,并在教学PPT上展示相应的操作步骤,让学生理解和掌握电子计算器的使用方法。
3.学习四则运算的使用(15分钟)教师向学生介绍电子计算器的四则运算功能,并通过实际操作电子计算器,让学生掌握加法、减法、乘法和除法的使用方法。
教师设置一些简单的四则运算题目,让学生用电子计算器进行计算,并在黑板上进行展示和讲解。
4.学习小数运算的使用(20分钟)教师向学生介绍电子计算器的小数运算功能,并通过实际操作电子计算器,让学生掌握小数加减、小数乘除的使用方法。
教师设置一些小数运算题目,让学生用电子计算器进行计算,并在黑板上进行展示和讲解。
5.综合练习(25分钟)教师设置一些综合运算题目,其中包括整数运算、小数运算和混合运算。
学生用电子计算器进行计算,并在黑板上进行展示和讲解。
《电子计算器》大班教案(1)

《电子计算器》大班教案一、教学内容本节课选自《小学数学》教材第五册第十章《计算器与计算法则》,具体内容包括:电子计算器的认识,基本操作与使用方法,计算器在数学运算中的应用。
二、教学目标1. 让学生掌握电子计算器的基本结构、功能及操作方法。
2. 培养学生运用计算器进行数学运算的能力,提高计算速度和准确性。
3. 培养学生的动手操作能力和解决问题的能力。
三、教学难点与重点重点:电子计算器的操作方法及在数学运算中的应用。
难点:电子计算器的高级功能使用及计算器在解决实际问题中的应用。
四、教具与学具准备教具:电子计算器、教学PPT。
学具:每人一台电子计算器、练习本。
五、教学过程1. 实践情景引入(5分钟)教师展示一个购物场景,让学生通过计算器计算商品价格及找零。
2. 电子计算器的基本认识(10分钟)教师通过PPT介绍电子计算器的基本结构、功能键及操作方法。
学生跟随教师一起学习,了解电子计算器的使用方法。
3. 例题讲解(15分钟)教师选取几个典型例题,通过计算器进行演示,讲解计算步骤。
学生跟随教师一起操作计算器,学习计算方法。
4. 随堂练习(10分钟)教师布置一些练习题,让学生使用计算器进行计算。
教师巡回指导,解答学生的疑问。
5. 高级功能介绍(10分钟)教师介绍电子计算器的高级功能,如科学计算、统计功能等。
学生学习并尝试使用这些高级功能。
6. 解决实际问题(15分钟)教师给出几个实际问题,让学生运用计算器进行解决。
学生分组讨论,合作解决问题。
学生分享自己在课堂上的收获,提出疑问和拓展性问题。
六、板书设计1. 电子计算器的基本结构、功能及操作方法。
2. 例题及解答过程。
3. 高级功能介绍。
七、作业设计1. 作业题目:2. 答案:579、468、4032、8。
八、课后反思及拓展延伸1. 反思:本节课学生对电子计算器的操作方法掌握程度如何?在解决实际问题中,学生能否灵活运用计算器?2. 拓展延伸:让学生研究计算器的高级功能,如编程计算、图形计算等,提高学生的动手操作能力和解决问题的能力。
《电子计算器》大班教案

《电子计算器》大班教案一、教学内容本节课选自《小学数学》教材第五册第十章,具体内容为《电子计算器》。
通过本章学习,学生将掌握电子计算器的基本操作,理解计算器在数学计算中的应用,并能够运用电子计算器解决实际问题。
二、教学目标1. 知识目标:让学生掌握电子计算器的基本功能,了解计算器屏幕上显示符号的含义,学会使用计算器进行基本的数学运算。
2. 能力目标:培养学生运用电子计算器解决实际问题的能力,提高计算速度和准确性。
3. 情感目标:激发学生学习数学的兴趣,增强对计算器的探究欲望。
三、教学难点与重点教学难点:理解电子计算器屏幕上显示符号的含义,熟练运用计算器进行各种运算。
教学重点:掌握电子计算器的基本操作,运用计算器解决实际问题。
四、教具与学具准备1. 教具:电子计算器、多媒体教学设备、PPT课件。
2. 学具:每人一台电子计算器。
五、教学过程1. 实践情景引入利用多媒体展示一个购物场景,让学生帮助计算总价。
引导学生思考如何快速准确地完成计算,从而引出电子计算器。
2. 讲解计算器基本操作介绍电子计算器的基本功能、屏幕上显示符号的含义以及如何进行基本运算。
3. 例题讲解讲解具体的计算实例,让学生跟随老师一起操作计算器,加深对计算器操作的理解。
4. 随堂练习分组进行计算练习,鼓励学生互相交流、讨论,提高计算速度和准确性。
六、板书设计1. 电子计算器的基本功能2. 计算器屏幕上显示符号的含义3. 基本运算操作步骤七、作业设计(1) 123 + 456(2) 789 321(3) 56 × 7(4) 144 ÷ 122. 答案:(1) 579(2) 468(3) 392(4) 12八、课后反思及拓展延伸1. 反思:关注学生对电子计算器操作的熟练程度,针对学生遇到的问题进行针对性指导。
2. 拓展延伸:鼓励学生运用电子计算器解决生活中的实际问题,如购物、计算路程等,提高学生运用计算器解决实际问题的能力。
《电子计算器》大班教案

《电子计算器》大班教案一、教学内容本节课选自大班数学教材第四章《计算工具的使用》,详细内容为第1节《电子计算器的认识及使用》。
通过本节课的学习,让学生掌握电子计算器的基本操作方法,理解计算器在日常生活和学习中的应用。
二、教学目标1. 让学生了解电子计算器的基本结构,掌握其使用方法。
2. 培养学生运用电子计算器进行简单的数学计算能力。
3. 培养学生合作学习、动手操作和解决问题的能力。
三、教学难点与重点教学难点:电子计算器的具体操作方法。
教学重点:电子计算器的结构及其在生活中的应用。
四、教具与学具准备教具:电子计算器、PPT课件、计算器操作指南。
学具:每组一台电子计算器。
五、教学过程1. 实践情景引入(5分钟)通过展示超市购物结账的场景,让学生认识到电子计算器在生活中的重要作用。
2. 知识讲解(15分钟)(1)介绍电子计算器的结构,让学生认识各个按键的功能。
(2)讲解电子计算器的使用方法,并进行现场演示。
3. 例题讲解(15分钟)通过讲解具体例题,让学生学会运用电子计算器进行加减乘除运算。
4. 随堂练习(10分钟)发放练习题,让学生分组使用电子计算器进行计算,巩固所学知识。
5. 小组讨论与分享(10分钟)让学生分享使用电子计算器的经验,讨论遇到的问题及解决方法。
六、板书设计1. 电子计算器的结构2. 电子计算器的使用方法3. 加减乘除运算示例七、作业设计1. 作业题目:(2)结合生活实际,举例说明电子计算器在生活中的应用。
2. 答案:(1)579、468、392、42。
(2)答案不唯一,合理即可。
八、课后反思及拓展延伸1. 课后反思:本节课通过实践情景引入,让学生了解了电子计算器在生活中的应用,激发了学生的学习兴趣。
通过分组讨论、分享经验,提高了学生的合作能力和解决问题的能力。
2. 拓展延伸:(1)让学生了解电子计算器的发展历程,感受科技的发展。
(2)引导学生探索电子计算器的其他功能,如科学计算、进制转换等。
大班科学教案《电子计算器》

大班科学教案《电子计算器》一、教学目标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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间: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 方案论证使用单片机为ATMEL公司生产AT89C51,AT89C51提供以下标准功能:4K字节FLASH 闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个向量两级中断结构,一个全双工串行通讯口,内置一个精密比较器,片内振荡器及时钟电路,同时AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的工作模式,空闲方式停止CPU 的工作,但允许RAM,定时计数器,串行通信及中断系统继续工作。
显示用LCD液晶显示屏,减少线路连接。
用C言编写程序,易进行调试修改。
采用4*4矩阵键盘作为输入。
3 系统硬件设计3.1总体框图设计电路图如附录13.2单片机选型AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能、CMOS、8位单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
AT89C51的管脚图如图2.2所示。
图3-13.3 单片机附属电路设计一、晶体振荡电路1.晶体振荡器的作用石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。
2.本设计所用的晶体振荡电路如图2.3所示:图3-2 晶振电路此晶振电路所选用的石英晶振频率为12MHZ。
一、晶体振荡电路单片机复位的条件是:必须使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_com(char com) // 写指令函数{P0=com; //com指令付给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器件(本设计采用ATMEL 公司下的AT89C51)(2)用uVision 的文本编辑器编写源文件,可以是汇编文件(.ASM),也可以使C语言文件(扩展名.C),并将该文件添加到项目中去。
一个项目文件可以包含多个文件,除了源程序文件外,还可以是库文件、头文件或文本说明文件。
(3)通过uVision 2 的相关选择项,配置编译环境、连接定位器以及Debug调试器的功能。
(4)对项目中的源文件进行编译连接,生成绝对目标代码和可选的HEX文件,如果出现编译连接错误则返回到第2步,修改源文件中的错误后重构整个项目。
图5-1 Keil调试2 用Proteus 对于本设计的仿真操作步骤如下:(1)进入proteus ISIS 集成环境,在工作前,在systerm菜单下设置界面的颜色、图形界面大小等项目,也可采用了系统默认值。
(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,temp,num,num_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_com(char com) // 写指令函数{P0=com; //com指令付给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() //初始化{num=-1;lcden=1; //使能信号为高电平write_com(0x38); //8位,2行write_com(0x0c); //显示开,光标关,不闪烁*/write_com(0x06); //增量方式不移位显竟獗暌贫柚? write_com(0x80); //检测忙信号write_com(0x01); //显示开,光标关,不闪烁num_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){temp=P3&0xf0;switch(temp){case 0xe0:num=0;break;case 0xd0:num=1;break;case 0xb0:num=2;break;case 0x70:num=3;break;}}while(P3!=0xfe);if(num==0||num==1||num==2)//如果按下的是'7','8'或'9 {if(j!=0){write_com(0x01);j=0;}if(flag==0)//没有按过符号键{do{a=a*10+table[num];}while(a>10000);}else//如果按过符号键{do{b=b*10+table[num];}while(b>10000);}}else //如果按下的是'/'{if(a<100){flag=1;fuhao=4;};//4表示除号已按}i=table1[num];write_date(0x30+i);}P3=0xfd;if(P3!=0xfd){delay(5);if(P3!=0xfd){temp=P3&0xf0;switch(temp){case 0xe0:num=4;break;case 0xd0:num=5;break;case 0xb0:num=6;break;case 0x70:num=7;break;}}while(P3!=0xfd);if(num==4||num==5||num==6&&num!=7)//如果按下的是'4','5'或'6' {if(j!=0){write_com(0x01);j=0;}if(flag==0)//没有按过符号键{do{a=a*10+table[num];}while(a>10000);}else//如果按过符号键{do{b=b*10+table[num];}while(B>10000);}}else//如果按下的是'*'{if(a<100){flag=1;fuhao=3;}//3表示乘号已按}i=table1[num];write_date(0x30+i);}P3=0xfb;if(P3!=0xfb){delay(5);if(P3!=0xfb){temp=P3&0xf0;switch(temp){case 0xe0:num=8;break;case 0xd0:num=9;break;case 0xb0:num=10;break;case 0x70:num=11;break;}}while(P3!=0xfb);if(num==8||num==9||num==10)//如果按下的是'1','2'或'3' {if(j!=0){write_com(0x01);j=0;}if(flag==0)//没有按过符号键{do{a=a*10+table[num];}while(a>10000);}else//如果按过符号键{do{b=b*10+table[num];}while(b>10000);}}else if(num==11)//如果按下的是'-'{flag=1;fuhao=2;//2表示减号已按}i=table1[num];write_date(0x30+i);}P3=0xf7;if(P3!=0xf7){delay(5);if(P3!=0xf7){temp=P3&0xf0;switch(temp){case 0xe0:num=12;break;case 0xd0:num=13;break;case 0xb0:num=14;break;case 0x70:num=15;break;}}while(P3!=0xf7);switch(num){case 12:{write_com(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_com(0x80+0x4f);//按下等于键,光标前进至第二行最后一个显示处 write_com(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_com(0x80+0x4f);//光标前进至第二行最后一个显示处write_com(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_com(0x80+0x4f);write_com(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_com(0x80+0x4f);write_com(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[num]);flag=1;fuhao=1;} break;}}}main(){init();while(1){keyscan();}}。