模拟计算器数字输入及显示课程设计
简易计算器的课程设计

简易计算器的课程设计一、课程目标知识目标:1. 学生能理解简易计算器的内部工作原理,掌握其基本功能操作。
2. 学生能运用计算器进行基本的算术运算,包括加、减、乘、除以及百分比计算。
3. 学生理解并掌握计算器上各个按键的功能及其在数学运算中的应用。
技能目标:1. 学生能够使用计算器辅助解决实际问题,如购物找零、面积计算等。
2. 学生通过计算器的使用,提高数据输入、结果读取和运算过程纠错的能力。
3. 学生能够结合数学知识,利用计算器进行数据的简单统计分析。
情感态度价值观目标:1. 培养学生对待科学技术的积极态度,认识到计算器在日常生活和学习中的便捷性。
2. 增强学生的团队协作意识,通过小组活动,学会分享和交流使用计算器的经验。
3. 培养学生遵守计算器使用的规则,养成良好的计算器使用习惯,珍惜公共资源。
本课程设计针对的学生群体为小学高年级学生,他们已经具备了一定的数学基础和操作简单电子设备的能力。
课程性质为实用技能型,旨在通过简易计算器的教学,将理论知识与实践操作相结合,提高学生解决实际问题的能力。
在教学要求上,注重培养学生的动手操作能力和创新思维,同时强调情感态度的培养,使学生在学习技能的同时,也能形成正确的价值观。
通过具体学习成果的分解,教师可进行有针对性的教学设计和学习效果评估。
二、教学内容本章节教学内容依据课程目标,结合教材内容,科学系统地组织以下部分:1. 简易计算器基础知识:介绍计算器的发展历程、种类及简易计算器的结构组成,对应教材第二章第一节。
2. 计算器按键功能:详细讲解各按键的功能及其在数学运算中的应用,对应教材第二章第二节。
3. 基本运算操作:教授如何使用计算器进行加、减、乘、除以及百分比计算,对应教材第二章第三节。
4. 计算器在实际应用中的使用:结合实际案例,如购物找零、面积计算等,展示计算器的实用性,对应教材第二章第四节。
5. 数据的简单统计分析:利用计算器进行数据输入、处理和简单统计分析,对应教材第二章第五节。
模拟计算器课程设计报告

合肥学院计算机科学与技术系课程设计报告2009~2010学年第二学期课程JAVA语言课程设计课程设计名称模拟计算器专业班级07网络工程(1)姓名舒业超指导教师许强张贯虹2010年9月一、需求分析程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入‘=’ 符号后,窗口显示出结果。
故需先定义一个类,继承Frame类,来实现一个窗口的显示,还需添加两个文本框,一个用于输入运算表达式,另一个显示运算结果,并以等‘=’号为表达式结束符,并触发运算的开始,所以还需设置一个键盘监听器,监听‘=’号的输入。
该计算器还要两个C(清除)、A(全清除)按钮,并予以监听,触发后进行相应操作。
如果用户输入的表达式不合法,需判别出来并给出相应的错误提示。
二. 设计1.设计思想:该程序有较好的用户操作界面,组件布局采用手动布局,并对相应组件设置监听器,触发后执行相应操作。
该程序主要的算法功能是如何利用栈实现运算符优先级的比较。
先是定义申请两个堆栈,一个作为运算数栈,另一个作为运算符栈,这两个堆栈是扫描表达式时的存储容器,在扫描过程中,扫描的单位是一个字符,扫描到的运算数入数栈,运算符入运算符栈,待比较优先级后,运算数出栈进行运算。
对于表达式的非法性判断,通过捕获异常来处理,捕获到异常后,弹出一个错误提示对话框,提示表达式的非法,并要求用户全清除后重新输入正确并完整的表达式。
2.功能设计定义一个myframe类来继承Frame类,实现窗口的显示,并在其中进行手动布局,即添加一个表达式输入文本框、一个结果显示文本框、C(清除)以及A(全清除)按钮。
在表达式文本框中输入完整表达式之后按下‘=’号后,通过键盘监听器的监听,开始进行运算。
运算过程如下:先在窗口类中将表达式提取出来,此时表达式为串字符串,需通过一个方法将其进行切割,切割成字符数组形式,然后将字符数组传递给一个Calculator类中的Calculator1方法(即运算引擎)进行表达式的计算,在这个方法执行结束时可返回运算的结果,接着将结果显示在结果文本框中即可。
proteus仿真计算器课程设计

proteus仿真计算器课程设计一、课程目标知识目标:1. 学生能理解Proteus仿真软件的基本原理和操作流程;2. 学生能掌握利用Proteus进行简单计算器电路设计与仿真;3. 学生能了解并描述计算器电路中的基本电子元件及其功能;4. 学生掌握基本的数字电路知识,如逻辑门、触发器等。
技能目标:1. 学生能独立使用Proteus软件进行电路设计;2. 学生能通过Proteus软件进行电路仿真,并对结果进行分析;3. 学生能运用已学知识解决实际计算器电路设计中遇到的问题;4. 学生能通过团队协作,共同完成一个具有基本功能的计算器电路设计。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发创新意识和实践欲望;2. 学生在团队合作中学会沟通、协作,培养团队精神和责任感;3. 学生通过动手实践,体验成功的喜悦,增强自信心;4. 学生树立正确的价值观,认识到科技发展对国家和社会的重要性。
本课程针对高年级学生,结合电子技术课程内容,以Proteus仿真软件为载体,使学生掌握基本电子元件和数字电路知识。
课程注重实践操作和团队协作,旨在提高学生的实际动手能力和创新能力,为后续深入学习电子技术打下坚实基础。
通过本课程的学习,学生将能够独立完成一个简单计算器电路的设计与仿真,并在过程中培养良好的情感态度和价值观。
二、教学内容1. 计算器电路设计基础理论:- 简介计算器电路的组成和原理;- 学习基本电子元件:电阻、电容、二极管、三极管等;- 了解并掌握数字电路基础知识:逻辑门、触发器、计数器等。
2. Proteus仿真软件操作:- 学习Proteus软件的基本界面和功能;- 掌握Proteus软件的电路设计、仿真和调试方法;- 学习如何利用Proteus软件绘制电路图、设置元件参数等。
3. 计算器电路设计与仿真:- 根据计算器功能需求,设计电路原理图;- 利用Proteus软件进行电路仿真,观察并分析仿真结果;- 针对仿真过程中出现的问题,进行调试和优化。
模拟计算器数字输入及显示课程设计

摘要本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个4*4的键盘,一个排阻(10K)做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。
显示部分:采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0.7相连,P0口做为单片机的字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口作为数码管的位控制端。
按键部分:采用4*4键盘。
采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1.0—P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。
执行过程:开机即显示0,等待键入数值,当键入数字,将通过数码管显示出来,在键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当在键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。
注:结果不能超出65535。
(具体操作见后面仿真图)目录1 概述1.1MCS-51单片机在自动化仪表中的作用 (3)1.2掌握单片机仿真软件Proteus的使用方法 (3)1.3设计方法 (3)1.4基本功能 (4)2 系统总体方案及硬件设计2.1计算器总体思想 (5)2.2硬件的选择与连接 (6)3 软件设计3.1显示程序设计 (7)3.2键盘识别程序设计 (8)3.3运算程序设计 (10)3.4风鸣器程序设计 (10)4 Proteus软件仿真 (12)5课程设计体会 (16)参考文献 (18)附1:源程序代码 (19)附2:计算器模拟系统电路图 (31)1 概述1.1MCS-51单片机在自动化仪表中的作用单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。
简易的计算器课程设计

简易的计算器课程设计一、课程目标知识目标:1. 学生能理解计算器的基本功能,掌握开关机、数字输入、基本运算符号的使用。
2. 学生能掌握计算器上各按键的功能,如清除、撤销等操作。
3. 学生了解计算器的类型,如简单计算器、科学计算器等。
技能目标:1. 学生能熟练操作计算器,完成基本的数学运算,如加减乘除、百分比等。
2. 学生能运用计算器解决实际生活中的数学问题,如购物找零、计算面积等。
3. 学生能通过计算器进行简单的数据统计和分析。
情感态度价值观目标:1. 学生培养对数学的兴趣和好奇心,认识到计算器在生活中的重要性。
2. 学生养成良好的计算习惯,尊重数学知识,注重实际应用。
3. 学生在小组合作中,学会分享和倾听,培养团队协作精神。
本课程针对小学四年级学生设计,结合学生的认知特点,注重培养实际操作能力和解决问题的能力。
课程以计算器为工具,引导学生运用数学知识解决实际问题,提高学生对数学学科的兴趣和自信心。
通过分解课程目标,教师可以更好地进行教学设计和评估,确保学生达到预期学习成果。
二、教学内容本章节教学内容主要包括以下三个方面:1. 计算器的基本操作与功能- 认识计算器的各部分名称和功能- 学习开关机、数字输入、基本运算符号的使用- 掌握清除、撤销等操作教学内容关联课本第四章第一节数学工具的使用。
2. 基本数学运算- 加减乘除四则运算- 百分数、乘方运算- 混合运算顺序与计算教学内容关联课本第四章第二节数学运算的应用。
3. 计算器在实际生活中的应用- 解决购物找零问题- 计算简单图形的面积和周长- 数据的统计与处理教学内容关联课本第四章第三节数学与生活。
教学大纲安排如下:第一课时:认识计算器及其基本操作第二课时:基本数学运算与计算器操作第三课时:计算器在实际生活中的应用教学进度根据学生的掌握情况灵活调整,确保学生充分理解和掌握教学内容。
三、教学方法针对本章节内容,采用以下教学方法:1. 讲授法:教师通过生动的语言和形象的表达,向学生介绍计算器的基本操作与功能,以及基本数学运算的规则。
c设计计算器课程设计

c 设计计算器课程设计一、课程目标知识目标:1. 学生能理解计算器的基本原理和功能,掌握计算器的基本操作方法。
2. 学生能够运用计算器解决基本的数学运算问题,如加减乘除、百分比计算等。
3. 学生能够理解并运用计算器上的科学计算功能,如平方根、指数运算等。
技能目标:1. 学生能够熟练操作计算器,快速进行数值输入、计算和结果读取。
2. 学生能够运用计算器进行实际问题的计算,如购物找零、时间计算等。
3. 学生能够通过计算器解决一些简单的数学问题,培养解决问题的能力和逻辑思维能力。
情感态度价值观目标:1. 学生培养对计算器的正确使用态度,明白计算器是辅助工具,提高计算效率的同时,不应过度依赖。
2. 学生在合作交流中使用计算器,培养团队合作意识和分享精神。
3. 学生通过计算器的运用,增强对数学学科的兴趣,认识到数学与生活的紧密联系。
课程性质:本课程属于实践操作类课程,注重培养学生的动手操作能力和实际问题解决能力。
学生特点:学生处于小学高年级阶段,对计算器有一定了解,好奇心强,喜欢动手操作。
教学要求:教师应引导学生通过实践操作,掌握计算器的使用方法,将计算器与实际生活问题相结合,提高学生的数学应用能力。
同时,注重培养学生的团队合作意识和正确使用计算器的态度。
在教学过程中,关注学生的学习成果,及时进行教学评估和调整。
二、教学内容1. 计算器的基本结构:介绍计算器的各个部分及其功能,如显示屏、键盘、电源等。
教材章节:《计算器与计算法则》第一章内容列举:计算器按键的功能及操作方法。
2. 计算器的基本操作:教授加减乘除、百分比、平方根、指数等基本运算。
教材章节:《计算器与计算法则》第二章内容列举:各类运算的操作步骤及注意事项。
3. 计算器在生活中的应用:通过实例教授计算器解决实际问题,如购物找零、时间计算等。
教材章节:《计算器与计算法则》第三章内容列举:实际案例及解决方法。
4. 科学计算器的使用:针对高年级学生,介绍科学计算器的拓展功能,如三角函数、对数等。
微机课设(模拟计算器运算)

一、设计题目及要求:模拟计算器运算(加,减,乘)设计要求:1.通过小键盘做加、减、乘、括号运算。
数码管显示输入数据和计算结果数据。
2.按键规定:(1)数字用小键盘0~9输入。
(2)功能按键设定:“A”——“+”“D”——“-”“B”——“*”“F”——“括号”“E”——“=”“C”——输入过程中撤消当前运算,此时屏幕显示“0”。
3.其它要求:(1)输入计算数据时,数码管应跟随显示。
若超出显示范围则不响应超出部分。
(2)按“+”、“-”、“*”或“括号”对应按键时,数码管当前显示内容不变。
(3)按“=”时,显示器显示最终计算结果。
若结果超出显示范围时,则显示“F”。
(4)按“C”时,屏幕显示“0”。
(5)需要考虑运算的优先级问题。
(6)只考虑正整数运算,不考虑负数和实数运算。
二、设计思想:调用键盘扫描子程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,并将输入的数字通过调用显示子程序显示到LED显示器上。
利用汇编的程序核对输入键的数值,并把输入的表达式存储为中缀表达式,之后转化为后缀表达式,通过调用加,减,乘,括号,子程序实现后缀表达式的加、减、乘运算。
运算完成后将运算的结果储存并显示到LED显示器上。
简要流程中五大步骤的具体描述步骤(一):从小键盘输入合法中缀算术表达式,并将其存储到S1中此处用系统功能1号调用,每次从键盘输入一个字符,就将其存入到数组S1中,然后在判断此字符是否为等号,如果不是,则循环,继续输入字符,否则,程序往下执行。
步骤(二):调用子程序CHANGE将中缀式转化为后缀式此处最核心的就是中缀表达式转化为后缀表达式的算法。
具体思路为:用一个栈来存储与运算符号.先将字符’@’压入栈中,并假设其优先级为0.然后遍历S1中的字符,遇到数字直接存入S2中并且输完数字后向S2中输入一空格以备计算结果时用。
遇到运算符则先判断其与栈顶运算符的优先级谁大。
如果S1中运算符号优先级大,则此运算符号直接入栈;否则栈顶符号先出栈到S2,待栈顶符号优先级小于S1中符号时,S1中元素入栈。
课程设计 简易计算器设计与实现

课程设计简易计算器设计与实现长江职业学院工学院毕业实践报告课题名称:简易计算器设计与实现专业班级:计算机控制技术081班学生姓名:黄杨学号: 20082940班级序号 6实践性质:校内毕业实践实践成绩:指导老师:杜力2011年2月25日目录一、绪论1.1 计算器的历史 (5)1.2 电子计算器的特殊键 (6)1.3单片机概述 (6)1.4设计要求 (6)1.5我做简易模拟计算器的过程说明 (7)1.6系统的基本功能 (7)二、课题设计的分析与思路的确定 (7)三、芯片简介 (8)3.1MSC-51芯片简介 (8)3.2 MCS-51的引脚说明 (10)四、计算器程序设计 (12)4.1存储单元分配 (12)4.2主程序设计 (12)4.3 数码管显示数据转换子程序CONV (13)4.4 数码管动态显示子程序 (13)五、连接知识 (13)5.1键盘的连接 (13)5.2、显示器的连接 (14)六、仿真过程 (15)八、参考文献 (18)一、绪论本课题拟定以MCS-51系列单片机为控制中心,采用模块化的设计方案,运用液晶显示器或LED显示数据/键盘输入数据,以实现能够完成加、减、乘、除、数据存储等运算的简易计算器。
系统的功能是:(1)模拟的计算器能显示10位数字,开机运行时,只显示最低位为“0”,其余不显示;(2)4×4键盘分别表示:0到9,+,-,×,/,=,CL;(3)第一次按下,显示“D1”,第二次按下,显示“D1D2”,第三次按下,显示“D1D2D3”…8个全显示完毕,再次按下按键时,给出“嘀”的提示音;(4)可以对计算结果小于256的两个无符号数进行加、减、乘、除运算。
单片机程序用汇编语言编写,经过Wave软件调试,生成HEX文件,再用Proteus软件进行计算机仿真。
程序中键盘部分使用行列式扫描原理,若无键按下则调用动态显示程序,并继续检测键盘;若有键按下则得其键值,并通过查表转换为数字0—9和功能键与清零键的代号。
课程设计说明书-计算器

C#程序设计及课程设计课程设计说明书设计题目:计算器目录1 引言 (2)1.1课程设计的目的 (2)1.2本选题的内容要求 (2)1.3 软件开发运行环境 (2)2 总体设计 (3)2.1设计思路 (3)2.2软件总体结构图 (3)2.3主要功能模块的设计 (3)3 详细设计与实现 (4)3.1 主界面模块 (4)3.1.1主界面功能设计 (4)3.1.2主界面设计 (4)3.1.3主界面主要代码 (4)3.2 计算过程演示 (10)3.2.1乘法运算过程演示 (10)3.2.2求根以及连续操作的演示 (11)4 小结和展望 (13)参考文献 (13)1引言1.1课程设计的目的本课程设计将实现一个简单计算器。
其类似于Windows附件中自带的计算器。
但这个计算器实现了更复杂的功能,具有简洁大方的图文外观。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
在课程设计中,系统开发平台为Windows 2000XP.程序设计设计语言采用Visual C#。
1.2本选题的内容要求1)可以显示计算数字2)可以进行加减乘除四则运算3)可以实现进制转换,求根4)可以进行清零运算5)可以进行连续计算1.3 软件开发运行环境本软件开发平台:Visual Studio本软件运行环境:Windows 7或以上版本2总体设计2.1设计思路先新建窗体应用程序创建数字与运算符的按钮,再完善相关的代码部分。
点击按钮中的数字键和运算符键就能进行简单的加、减、乘、除四则运算;还能通过用户自己在文本框中输入数字,进行简单运算。
计算流程:首先点击数字按钮时,将按钮数值添加到文本框当中,并将该数值保存到一个字符串中,再次点击数字按钮时,将之前保存的字符串与新的数值拼接起来,再添加到文本框当中,直到点击运算符按钮时,将文本框当中的字符串保存在一个字符串变量中,然后重置文本框内容,随后输入第二个计算数据时,用同样的办法保存数据,最后通过控制运算符先将字符串数据转化成单精度类型,然后计算出结果并显示到文本框当中。
23。模拟计算器数字输入及显示精品文档9页

23.模拟计算器数字输入及显示1.实验任务(1.开机时,显示“0”(2.第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音。
2.电路原理图图4.23.13.系统板上硬件连线(1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;(2.把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;(3.把“单片机系统”区域中的P0.0-P0.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;(4.把“单片机系统:区域中的P2.0-P2.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;4.相关程序设计内容(1.行列式键盘输入及按键功能设定;(2.动态数码显示;(3.数码显示方式处理;5.汇编源程序(略)6.C语言源程序#include <AT89X51.H>unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char dispbuf[8]={0,16,16,16,16,16,16,16};unsigned char dispbitcount;unsigned char temp;unsigned char i,j;unsigned char key;unsigned char keypos;bit alarmflag;void change(unsigned char *p,unsigned char count)while(count>0)*(p+count)=*(p+count-1);count--;void main(void)TMOD=0x01;TH0=(65536-4000) / 256;TL0=(65536-4000) % 256;TR0=1;ET0=1;EA=1;while(1)P3=0xff;P3_4=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp & 0x0f;if (temp!=0x0f)temp=P3;temp=temp & 0x0f; switch(temp)case 0x0e:key=7;break;case 0x0d:key=8;break;case 0x0b:key=9;break;case 0x07:key=10;break;if ((key>=0) && (key<10))keypos++;if(keypos<8)change(dispbuf,keypos); dispbuf[0]=key;elsekeypos=8;alarmflag=1;temp=P3;P1_0=~P1_0;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp=temp & 0x0f; alarmflag=0;P3=0xff;P3_5=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp & 0x0f;if (temp!=0x0f)temp=P3;temp=temp & 0x0f;switch(temp)case 0x0e:key=4;break;case 0x0d:key=5;break;case 0x0b:key=6;break;case 0x07:key=11;break;if ((key>=0) && (key<10))keypos++;if(keypos<8)change(dispbuf,keypos);dispbuf[0]=key;elsekeypos=8;alarmflag=1;temp=P3;P1_0=~P1_0;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp=temp & 0x0f; alarmflag=0;P3=0xff;P3_6=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp & 0x0f;if (temp!=0x0f)temp=P3;temp=temp & 0x0f; switch(temp)case 0x0e:key=1;break;case 0x0d:key=2;break;case 0x0b:key=3;break;case 0x07:key=12;break;if ((key>=0) && (key<10))keypos++;if(keypos<8)change(dispbuf,keypos); dispbuf[0]=key;elsekeypos=8;alarmflag=1;temp=P3;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp=temp & 0x0f; alarmflag=0;P3=0xff;P3_7=0;temp=P3;temp=temp & 0x0f;if (temp!=0x0f)for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp & 0x0f;if (temp!=0x0f)temp=P3;temp=temp & 0x0f;switch(temp)case 0x0e:key=0;break;case 0x0d:key=13;break;case 0x0b:key=14;case 0x07:key=15;break;if ((key>=0) && (key<10))keypos++;if(keypos<8)change(dispbuf,keypos);dispbuf[0]=key;elsekeypos=8;alarmflag=1;temp=P3;P1_0=~P1_0;temp=temp & 0x0f;while(temp!=0x0f)temp=P3;temp=temp & 0x0f; alarmflag=0;void t0(void) interrupt 1 using 0TH0=(65536-4000) / 256;TL0=(65536-4000) % 256;P0=dispcode[dispbuf[dispbitcount]];P2=dispbitcode[dispbitcount];dispbitcount++;if (dispbitcount==8)dispbitcount=0;if (alarmflag==1) P1_1=~P1_1;。
计算器课程设计报告

2012-2013学年第二学期《高级语言程序设计》课程设计报告题目:计算器设计专业:数字媒体技术班级: 1姓名:徐少明学号:1208030149指导教师:陈广宏成绩:计算机与信息工程系年月日设计题目1设计内容及要求1.1 设计内容:用高级语言编写一个简单地计算器,并对其进行简单的程序功能介绍,设计思路,数据结构设计及用法说明,各模块的功能及程序说明。
编写出简单计算器的程序代码,展示设计成果,最后对设计成果进行总结和分析。
1.2 设计要求:通过用高级语言编写一个简单地计算器,要求改简单计算器拥有以下功能:1. 算术运算功能。
能够实现+、-、*、/、mod、int运算。
2. 函数运算功能。
能够实现exp、ln、sin、x^y、log、cos、x^3、n!、tan、x^2、1/x等运算。
3. 进制之间的转换功能。
能够实现十六、十、二、八进制数据之间的转换。
4.通过键盘控制字符和数字的输入。
2概要设计2.1程序功能介绍利用Turbo C 所具有的函数模仿画出计算器的界面,实现计算器的基本功能,进行浮点数加、减、乘、除、乘方和求模运算。
2.2程序整体设计说明计算器的输入输出和显示结果的显示屏,绘制计算器的按键,绘制边框。
利用Turbo C绘制程序中的计算器的图形. 程序中对使用的图形系统进行初始化定义函数,然后输出函数进行字符的输入输出,来进行简单的+、-。
*、/运算。
2.3设计思路C语言编辑的程序可以直接输入数学表达式,是由于它具有优良的兼容性,有很好的数据处理能力,稳定性也很强。
不需要转换就可以直接输出数学运算的结果。
输入字符后,输出结果可以显示一个字符串表达式(传入参数,输出值), 所以该程序具有较强的计算能力2.4数据结构设计及用法说明在主函数里先对接口、屏幕、系统等函数定义(#include <math.h> #include <conio.h>),屏幕函数包括文本窗口大小设定(<void drawboder(void)>)、窗口颜色的设置、窗口文本的清除和输入输出等函数。
11-模拟计算器数字输入及显示

齐齐哈尔大学开放实验室项目
项目序号:
项目名称:模拟计算器数字输入及显示
项目学时:24
实验室:308
指导教师:王承智
项目简介
实验任务:开机时,显示“0”,第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音。
系统板上硬件连线:把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4R1-R4端口上;把“单片机系统”区域中的P0.0-P0.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;把“单片机系统:区域中的P2.0-P2.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;。
数字显示与键盘输入设计课程设计

学号:0121010340704课程设计题目数字显示与键盘输入例程设计学院计算机科学与技术学院专业计算机科学与技术班级姓名指导教师2013 年7 月 1 日目录课程设计说明书 (2)数字显示与键盘输入设计 (3)1.系统描述: (3)1.1实验目的 (3)1.2实验设备: (3)1.3设计要求: (3)2.设计过程: (3)32.2操作命令: (5)2.3操作过程: (8)2.3.1硬件连接: (8)2.3.2软件设计: (9)2.3.3设计成功标志:.................................................................................102.4程序设计:..............................................................................................102.5程序代码 ................................................................................................103.调试过程 .........................................................................................................153.1程序编译调试........................................................................................153.2在线编程写入程序................................................................................16164.课程设计总结:...............................................................................................17本科生课程设计成绩评定表 (18)课程设计任务书学生姓名:杨星专业班级:计算机1007班指导教师:唐祖锴工作单位:计算机科学与技术学院题目: 数字显示与键盘输入设计初始条件:1.课程设计使用ZG211硬件综合实验平台(8051单片机),配有课程设计接口芯片和辅助芯片以及器件;2.ZG211有程序设计集成开发环境,程序设计语言为C语言;3.ZG211硬件综合实验平台使用说明书;要求完成的主要任务:(包括课程设计工作量及其技术要求,撰写说明书具体要求)1.学习使用ZG211硬件综合实验平台,程序设计集成开发环境;2.根据课程设计题目,进行需求分析,搞清楚课程设计需要设计需求和需要解决的设计内容。
学生计算器课程设计

学生计算器课程设计一、课程目标知识目标:1. 学生能掌握计算器的基本操作,包括开关机、数字输入、基本运算符号的使用。
2. 学生能理解并运用计算器进行整数、小数、分数的四则运算。
3. 学生能运用计算器解决课本中相关的数学问题,如速度、时间、距离等。
技能目标:1. 学生能通过操作计算器,提高计算速度和准确性。
2. 学生能运用计算器解决实际生活中的数学问题,培养解决问题的能力。
3. 学生能运用计算器进行数学探究活动,如统计、概率等。
情感态度价值观目标:1. 学生能对计算器产生兴趣,认识到计算器在日常生活和学习中的重要性。
2. 学生在操作计算器的过程中,培养耐心、细致、合作的良好品质。
3. 学生通过计算器的使用,体会科技的发展对人类生活的影响,增强对科技的兴趣和探索精神。
课程性质:本课程为实用技能类课程,结合数学学科知识,以培养学生的计算能力和解决实际问题的能力为主要目标。
学生特点:考虑到学生所在年级的特点,他们在数学知识方面已有一定基础,对新事物充满好奇,具备一定的动手操作能力。
教学要求:教师需关注学生的个体差异,因材施教,注重引导学生主动探索,培养学生的实际操作能力和合作精神。
在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容本章节教学内容紧密结合课程目标,按照以下大纲进行组织和安排:1. 计算器的基本功能与操作- 认识计算器外观及按键功能- 学习开关机、清屏、数字输入、基本运算符号的使用2. 计算器在四则运算中的应用- 整数的加、减、乘、除运算- 小数的加、减、乘、除运算- 分数的加、减、乘、除运算3. 计算器在实际问题中的应用- 解决速度、时间、距离问题- 解决面积、体积问题- 解决简单的统计与概率问题4. 计算器的拓展应用- 探索计算器在数学探究活动中的应用- 了解计算器在其他学科领域的应用教学内容安排和进度:第一课时:计算器的基本功能与操作第二课时:计算器在四则运算中的应用(整数运算)第三课时:计算器在四则运算中的应用(小数运算)第四课时:计算器在四则运算中的应用(分数运算)第五课时:计算器在实际问题中的应用第六课时:计算器的拓展应用教材章节关联:本教学内容与课本中相关章节紧密关联,如计算器的使用、四则运算、实际问题解决等,确保教学内容与课本知识相辅相成,提高学生的实际操作能力。
计算器课程设计

计算器课程设计一、课程目标知识目标:1. 学生能理解计算器的基本功能与操作,掌握其在数学运算中的应用。
2. 学生能运用计算器解决简单的数学问题,如加减乘除、括号运用等。
3. 学生了解计算器在科技发展中的地位和作用,认识到计算器与日常生活、学习的紧密联系。
技能目标:1. 学生能熟练操作计算器,进行快速准确的数值计算。
2. 学生能通过计算器解决实际问题,提高问题解决能力。
3. 学生能运用计算器进行探索性学习,发现数学规律,培养探究精神。
情感态度价值观目标:1. 学生培养对计算器操作的耐心和细致,养成良好的学习习惯。
2. 学生通过计算器学习,增强对数学学科的兴趣,激发学习积极性。
3. 学生认识到科技发展对人类生活的影响,培养创新意识和社会责任感。
本课程针对小学四年级学生设计,结合学生年龄特点和认知水平,注重培养学生在计算器操作、问题解决等方面的技能。
同时,关注学生情感态度价值观的培养,使学生在掌握知识技能的同时,形成积极的学习态度和价值观。
课程目标具体、可衡量,为后续教学设计和评估提供依据。
二、教学内容本章节教学内容以人教版小学数学四年级下册教材中“计算器的使用”为基础,结合课程目标,进行以下安排:1. 计算器的基本功能与操作:介绍计算器的各个按键功能,如数字键、运算键、清除键等,以及如何正确进行开机、关机、清屏等基本操作。
2. 简单数值计算:教授学生使用计算器进行加减乘除、括号运算等,掌握连续计算、顺序计算等方法。
3. 计算器在生活中的应用:通过实例分析,让学生了解计算器在日常生活中的应用,如购物、计费等。
4. 探索计算器中的数学规律:引导学生运用计算器进行探索性学习,发现数学中的规律,如平方、立方等。
教学内容安排如下:第一课时:计算器的基本功能与操作第二课时:简单数值计算第三课时:计算器在生活中的应用第四课时:探索计算器中的数学规律教学进度根据学生掌握情况灵活调整,确保学生充分理解并掌握教学内容。
计算器在线教学教案设计2

计算器在线教学教案设计2。
一、教学目标学生能够熟练地使用计算器进行加减乘除运算。
学生能够掌握计算器科学功能、百分数运算、根号计算等较为复杂的计算方法。
学生能够灵活运用计算器解决实际问题。
二、教学内容1、初步认识计算器:教师向学生讲解计算器的基本功能,并且让学生通过实际操作,熟悉计算器的各个按键。
教师需要重点讲解计算器数字键、加减乘除键、等于键等功能键,让学生明确各个键的作用。
2、加减乘除的简单运算:通过幻灯片、视频等教学资源,向学生展示加减乘除的一些基本运算方法,并通过实例演示的方式,让学生理解如何用计算器正确地进行加减乘除运算,并进行课堂练习。
3、计算器科学功能的掌握:介绍计算器的科学功能,如正反余弦、三角函数、对数运算、次幂计算等,让学生了解这些高级功能在现实生活中的应用,并通过实际操作,让学生掌握这些功能的使用方法。
4、百分数运算:让学生学会如何用计算器进行百分数运算,并通过实例演示,让学生了解到百分数在日常购物、理财等方面的重要性。
5、根号计算:让学生了解如何使用计算器进行根号计算,并通过实例演示让学生学会如何使用计算器解决类似根号下二次方根的计算问题。
三、教学方法计算器在线教学可以采取多种教学方法,包括:1、讲解配合实例演示:教师可以利用课堂讲解,结合实际案例,让学生理解计算器的使用方法,并在讲解的过程中引导学生认真观察、模仿实际操作。
2、视频教学:利用现有的视频教学资源,让学生通过观看视频了解计算器运算的基本方法与技巧。
3、在线练习:辅以在线练习环节,创造有趣易懂的教育场景,让学生在实际操作中掌握计算器的相关技能,并通过练习巩固并提高运算水平和技术能力。
四、教学评估为了有效地评估学生的学习情况,可以采用以下教学评估方式:1、课堂习题测试:通过课堂习题测试的方式,来确保学生对计算器使用方法的掌握程度,并及时发现学生在计算器使用上的弱点。
2、线上测试:通过在网上或在线试题库中设置针对计算器使用技能的测试题,为教师评估学生的实际掌握情况提供数据。
模拟计算器程序课程设计

模拟计算器程序-课程设计模拟计算器学生姓名:**** 指导老师:****摘要本课程设计的课题是设计一个模拟计算器的程序,能够进行表达式的计算,并且表达式中可以包含Abs()和Sqrt()运算。
在课程设计中,系统开发平台为Windows ,程序设计设计语言采用C++,程序运行平台为Windows 或*nix。
本程序的关键就是表达式的分离和处理,在程序设计中,采用了将输入的中缀表达式转化为后缀表达式的方法,具有可靠的运行效率。
本程序做到了对输入的表达式(表达式可以包含浮点数并且Abs()和Sqrt()中可以嵌套子表达式)进行判定表达式是否合法并且求出表达式的值的功能。
经过一系列的调试运行,程序实现了设计目标,可以正确的处理用户输入的表达式,对海量级数据都能够通过计算机运算快速解决。
关键词C++程序设计;数据结构;表达式运算;栈;中缀表达式;后缀表达式;字符串处理;表达式合法判定;目录1 引言 (4)1.1课程设计目的 (4)1.2课程设计内容 (5)2 设计思路与方案 (5)3 详细实现 (6)3.1 表达式的合法判定 (6)3.2 中缀表达式转化为后缀表达式 (7)3.3 处理后缀表达式 (10)3.4 表达式嵌套处理 (12)4 运行环境与结果 (13)4.1 运行环境 (13)4.2 运行结果 (13)5 结束语 (16)参考文献 (17)附录1:模拟计算器源程序清单 (18)1 引言本课程设计主要解决的是传统计算器中,不能对表达式进行运算的问题,通过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定用户输入的表达式是否合法。
该模拟计算器的核心部分就在用户输入的中缀表达式的转化,程序中用到了“栈”的后进先出的基本性质。
利用两个“栈”,一个“数据栈”,一个“运算符栈”来把中缀表达式转换成后缀表达式。
最后利用后缀表达式来求解表达式的值。
该算法的复杂度为O(n),能够高效、快速地求解表达式的值,提高用户的效率。
模拟计算器十六进制整数加减输入及显示课程设计

模拟计算器十六进制整数加减输入及显示课程设计百度文库搜索“模拟计算器数字输入及显示课程设计”并将程序清单中的程序改成以下程序:ORG 0000HLJMP STARTORG 0030HSTART: MOV 30H,#00HMOV 38H,#00HMOV 39H,#00HMOV 3AH,#00HMOV 3BH,#00HMOV 3CH,#00HMOV 3DH,#00HMOV 3EH,#00HMOV 3FH,#00HMOV 40H,#00HMOV 41H,#00HMOV 42H,#00HMOV 43H,#00HMOV 44H,#00HMOV 50H,#0F0HMOV 51H,#0E8HMOV 52H,#0D8HMOV 53H,#0B8HMOV 54H,#78HLOOP3: ACALL DISPLAYMOV R0,#50HMOV R7,#05HLOOP1: MOV A,@R0MOV P3,AMOV A,#0FFHMOV P1,AMOV A,P1ANL A,#0FHMOV R5,ACJNE A,#0FH,LOOP2INC R0DJNZ R7,LOOP1JMP LOOP3LOOP2: MOV R4,#0A0HTFF: ACALL DELAY1mSDJNZ R4,TFFSS: MOV A,#0FFHMOV P1,AMOV A,P1ANL A,#0FHCJNE A,#0FH,SSMOV A,42HCJNE A,#01H,NEXT1MOV 40H,#00HMOV 42H,#00HNEXT1: CJNE @R0,#0F0H,ROW2KEY MOV A,R5CJNE A,#0EH,KEY2MOV A,40HCJNE A,#08H,TW1ACALL WARNNINGJMP LOOP3TW1: INC 40HMOV A,#00HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY2: CJNE A,#0DH,KEY3MOV A,40HCJNE A,#08H,TW2ACALL WARNNINGJMP LOOP3TW2: INC 40HMOV A,#01HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY3: CJNE A,#0BH,KEY4MOV A,40HCJNE A,#08H,TW3ACALL WARNNINGJMP LOOP3TW3: MOV A,#02HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY4: MOV A,40HCJNE A,#08H,TW4ACALL WARNNINGJMP LOOP3TW4: MOV A,#03HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3ROW2KEY:CJNE @R0,#0E8H,ROW3KEYMOV A,R5CJNE A,#0EH,KEY5MOV A,40HCJNE A,#08H,TW5ACALL WARNNINGJMP LOOP3TW5: INC 40HMOV A,#04HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY5: CJNE A,#0DH,KEY6MOV A,40HCJNE A,#08H,TW6ACALL WARNNINGJMP LOOP3TW6: MOV A,#05HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY6: CJNE A,#0BH,KEY7MOV A,40HCJNE A,#08H,TW7ACALL WARNNINGJMP LOOP3TW7: MOV A,#06HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY7: MOV A,40HCJNE A,#08H,TW8ACALL WARNNINGJMP LOOP3TW8: MOV A,#07HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3ROW3KEY:CJNE @R0,#0D8H,ROW4KEY MOV A,R5CJNE A,#0EH,KEY8MOV A,40HCJNE A,#08H,TW9ACALL WARNNINGJMP LOOP3TW9: MOV A,#08HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY8: CJNE A,#0DH,KEY9MOV A,40HCJNE A,#08H,TW10ACALL WARNNINGJMP LOOP3TW10: MOV A,#09HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY9: CJNE A,#0BH,KEY10MOV A,40HCJNE A,#08H,TW11ACALL WARNNINGJMP LOOP3TW11: MOV A,#0AHINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY10: MOV A,40HCJNE A,#08H,TW12ACALL WARNNINGJMP LOOP3TW12: MOV A,#0BHINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3ROW4KEY:CJNE @R0,#0B8H,ROW5KEYMOV A,R5CJNE A,#0EH,KEY11MOV A,40HCJNE A,#08H,TW13ACALL WARNNINGJMP LOOP3TW13: MOV A,#0CHINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY11: CJNE A,#0DH,KEY12MOV A,40HCJNE A,#08H,TW14ACALL WARNNINGJMP LOOP3INC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY12: CJNE A,#0BH,KEY13MOV A,40HCJNE A,#08H,TW15ACALL WARNNINGJMP LOOP3TW15: MOV A,#0EHINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY13: MOV A,40HCJNE A,#08H,TW16ACALL WARNNINGJMP LOOP3TW16: MOV A,#0FHINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3ROW5KEY:MOV A,R5CJNE A,#0EH,KEY14JMP STARTKEY14: CJNE A,#0DH,KEY15ACALL JUDEGACALL CHANGEMOV 41H,#01HMOV 42H,#01HJMP LOOP3KEY15: CJNE A,#0BH,KEY16ACALL JUDEGACALL CHANGEMOV 41H,#02HMOV 42H,#01HJMP LOOP3KEY16: ACALL JUDEGACALL CHANGEMOV 42H,#01HMOV 3CH,#00HMOV 3DH,#00H JMP LOOP3 MOVE: MOV R1,#30HMOV R6,40HDDD: XCH A,@R1NOPNOPNOPNOPINC R1DJNZ R6,DDDRET MAKEADD:MOV A,R0MOV R2,AMOV A,R3MOV R7,ACLR CLOP: MOV A,@R0ADDC A,@R1MOV @R0,AINC R0INC R1DJNZ R7,LOPJNC NEXTINC R3MOV @R0,#01H NEXT: MOV A,R2MOV R0,ARET MAKESUB:CLR 07HMOV A,R0MOV R2,AMOV A,R3MOV R7,ACLR CLOP1: MOV A,@R0SUBB A,@R1MOV @R0,AINC R0INC R1DJNZ R7,LOP1JNC LOP2SETB 07HLOP2: MOV A,R2MOV R0,ARET MAKEMUL:MOV A,R3MOV B,R7MUL ABXCH A,R7MOV R5,BMOV B,R2MUL ABADD A,R5MOV R4,ACLR AADDC A,BMOV R5,AMOV A,R6MOV B,R3MUL ABADD A,R4XCH A,R6XCH A,BADDC A,R5MOV R5,AMOV F0,CMOV A,R2MUL ABADD A,R5MOV R5,ACLR AMOV ACC.0,CMOV C,F0ADDC A,BMOV R4,ARET MAKEDIV:MOV A,R5CLR CSUBB A,R3MOV A,R4SUBB A,R2JNC DIV11MOV B,#16DIV22: CLR CMOV A,R7RLC AMOV R7,AMOV A,R6RLC AMOV R6,AMOV A,R5RLC AMOV R5,AXCH A,R4RLC AXCH A,R4MOV F0,CCLR CSUBB A,R3MOV R1,AMOV A,R4SUBB A,R2JB F0,DIV33JC DIV44DIV33: MOV R4,AMOV A,R1MOV R5,AINC R7DIV44: DJNZ B,DIV22CLR F0RETDIV11: SETB F0RETCHANGE11:MOV R0,#40HCJNE @R0,#01H,TA1MOV 38H,43HJMP TA2TA1: MOV R3,38HMOV R2,39HMOV R6,#00HMOV R7,#10HACALL MAKEMULMOV 39H,R6MOV 38H,R7MOV 3AH,R5MOV 3BH,R4MOV R0,#38HMOV R1,#43HMOV R3,#02HACALL MAKEADD TA2: RETCHANGE: MOV 40H,#00HMOV R0,#30HMOV R7,3CHMOV R6,3DHTD1: MOV R5,#00HMOV R4,#00HMOV R2,#00HMOV R3,#10HINC 40HACALL MAKEDIVMOV A,R5MOV @R0,AINC R0MOV A,R6CJNE A,#00H,TD1MOV A,R7CJNE A,#00H,TD1RETJUDEG: MOV A,3AHJZ JUD1ACALL ERRORLJMP LOOP3 JUD1: MOV R1,#38HMOV A,41HCJNE A,#00H,TBMOV 3CH,@R1INC R1MOV 3DH,@R1JMP TBBTB: CJNE A,#01H,TB1MOV R0,#3CHMOV R3,#02HACALL MAKEADDMOV A,R3CJNE A,#03H,JUD2ACALL ERRORLJMP LOOP3 JUD2: JMP TBBTB1: CJNE A,#02H,TB2MOV R0,#3CHACALL MAKESUBJNB 07H,JUD4ACALL ERRORLJMP LOOP3JUD4: JMP TBBTB2: CJNE A,#03H,TB3MOV R3,3CHMOV R2,3DHMOV R6,39HMOV R7,38HACALL MAKEMULMOV 3DH,R6MOV 3CH,R7MOV 3EH,R5MOV 3FH,R4MOV A,R5JZ JUD3ACALL ERRORLJMP LOOP3JUD3: JMP TBBTB3: MOV R7,3CHMOV R6,3DHMOV R5,#00HMOV R4,#00HMOV R2,39HMOV R3,38HACALL MAKEDIVMOV 3CH,R7MOV 3DH,R6JNB F0,TBBACALL ERRORLJMP LOOP3TBB: MOV 38H,#00HMOV 39H,#00HMOV 3AH,#00HMOV 3BH,#00HRET WARNNING:CLR P3.0SETB P3.0MOV R4,#0FFHTFg: ACALL DELAY1mSDJNZ R4,TFgRETMOV A,#10HMOV R5,#08HMOV 40H,#08HET: MOV @R0,AINC R0INC ADJNZ R5,ETRETDISPLAY: MOV DPTR,#TABLE1MOV R0,#30HMOV R1,#80HMOV R5,40HNEXTF: MOV P2,R1MOV A,@R0MOVC A,@A+DPTRMOV P0,AACALL DELAY1mSMOV A,P2RR AMOV R1,AINC R0MOV A,R5JZ AADJNZ R5,NEXTFAA: RETDELAY1mS:MOV R7,#02HDL: MOV R6,#0FFHDL6: DJNZ R6,DL6DJNZ R7,DLRETTABLE1: DB 0C0H, 0F9H, 0A4H, 0B0H, 99HDB 92H, 82H, 0F8H, 80H, 90HDB 88H,83H,0C6H,0A1H,86H,8EHDB 0CEH,0C0H,0CEH,0CEH,86H,0FFH,0FFH,0FFH END。
课程设计—模拟计算器设计..

嵌入式课程设计课题:基于uCOS/uCGUI的模拟计算器实现报告:张昌世自动化091 109031027小组成员:刘锋自动化091 109031023陈奇英自动化091 109031001彭桂贤自动化091 109031002指导老师:陈才摘要:计算器这一小小的程序机器实际上是从计算机中割裂出来的衍生品,但因其方便快捷的操作模式,已经被广泛应用于工程、学习、商业等日常生活中,极大的方便了人们对于数字的整合运算。
现今的计算器已经不仅仅停留在传统的硬件上,而是越来越软件化,它可以在手机里,在电脑上,在许许多的的电子产品上。
所以有必要在自己平时学习的开发板上做个带界面显示的计算器来证明下自己的能力。
引言:简单的计算器包括0~9的数字输入键,小数点输入键,+、-*、/、=运算键等,还可以加入其他运算:如三角运算(sin,cos,tan,cot等),一些当木运算(平方,开方,阶乘等)。
由于条件和能力有限,所以就做个能实现四则运算的简易计算器。
计算器的程序设计实际上富有一定的难度,虽然乍一想很简单,只要实现下加减乘除运算,然后显示出来就可以了,但实际上运算结果跟图像界面的数据交换,还有浮点数的处理等都很折腾人。
通过本次设计,体会到了学习的不易,还有自己能力上的不足!一、课题描述:在STM32开发板上实现简易的计算器。
计算器界面显示在TFT彩屏上,采用触摸屏上模拟按钮来实现数据及运算符的输入。
最后把运算的结果显示在彩屏。
最基本要求:有加减乘除运算,有带小数点的运算。
二、课题分析a)、硬件要求:处理器选择:STM32F103ZE,这款处理器具有512K的flash,64K的RAM,足够大的空间,可以让程序员的可以有更大的发挥空间,而不用为节省空间而上脑筋。
TFT彩屏:带触摸的TFT彩屏,3.2寸,分辨为240*320的真彩彩屏。
JLink仿真器:使用JLink v8仿真器,仿真器能够下载程序、在线仿真,便于程序编写与错误检查。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个4*4的键盘,一个排阻(10K)做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。
显示部分:采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0.7相连,P0口做为单片机的字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口作为数码管的位控制端。
按键部分:采用4*4键盘。
采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1.0—P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。
执行过程:开机即显示0,等待键入数值,当键入数字,将通过数码管显示出来,在键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当在键入数值后将显示键入的数值,按等号就会在数码管上输出运算结果。
注:结果不能超出65535。
(具体操作见后面仿真图)目录1 概述1.1MCS-51单片机在自动化仪表中的作用 (3)1.2掌握单片机仿真软件Proteus的使用方法 (3)1.3设计方法 (3)1.4基本功能 (4)2 系统总体方案及硬件设计2.1计算器总体思想 (5)2.2硬件的选择与连接 (6)3 软件设计3.1显示程序设计 (7)3.2键盘识别程序设计 (8)3.3运算程序设计 (10)3.4风鸣器程序设计 (10)4 Proteus软件仿真 (12)5课程设计体会 (16)参考文献 (18)附1:源程序代码 (19)附2:计算器模拟系统电路图 (31)1 概述1.1MCS-51单片机在自动化仪表中的作用单片机体积小,功耗小,价格低,用途灵活,无处不在,属专用计算机。
是一种特殊器件,需经过专门学习方能掌握应用,应用中要设计专用的硬件和软件。
近年来,单片机以其体积小、价格廉、面向控制等独特优点,在各种工业控制、仪器仪表、设备、产品的自动化、智能化方面获得了广泛的应用。
与此同时,单片机应用系统的可靠性成为人们越来越关注的重要课题。
影响可靠性的因素是多方面的,如构成系统的元器件本身的可靠性、系统本身各部分之间的相互耦合因素等。
其中系统的抗干扰性能是系统可靠性的重要指标。
1.2 掌握单片机仿真软件Proteus的使用方法Proteus 软件具有强大的多窗口、多文件的编辑器、微控制器的集成开发环境、一系列的集成开发工具、图形界面调试器、混合模式的模拟及数字电路仿真器、代码质量检查器等。
硬件和应用软件能进行并发仿真。
最主要的一点是它能以单片机为核心仿真出包括模拟元器件在内的一些动态外设(按键,LED ,液晶显示器等) ,具有图形显示和波形显示的功能。
因此,Proteus 不仅仅是一个微处理器的仿真软件,它所支持的大量常用芯片模型为单片机和其他芯片协同仿真复杂的完整系统提供了极大的方便。
Proteus 在完整的系统仿真方面是其他单片机仿真软件所不能独立完成的。
这时,Proteus 为我们提供的不仅仅是一个单片机的仿真环境,称其为一个虚拟的单片机实验室是完全合适的,只要我们能充分的利用Proteus提供的实验器件就可以完成一个具有相当集成性的单片机系统。
1.3设计方法本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成,一个AT89C51单片机芯片,一个八位共阳极的数码管,一个四乘四的键盘,一个排阻做P0口的上拉电阻(接线图在附录2),它可以实现结果低于65535的加、减、乘、除运算。
采用动态显示,由八位共阳极数码管通过P0口,P2口与单片机相连,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0.7相连,P0口做为字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7相连,P2口做为数码管的位控制端,动态显示是每次数码管只显示一位,由于人的视觉停留是0.05到0.2秒之间,当数码管依次点亮各个位时,使循环的频率高于人的视觉停留时间,人们就会认为数码管是同时点亮的,就可以达到动态显示的效果。
采用4*4键盘。
采用软件识别键值并执行相应的操作,键盘的第0行到第3行依次与单片机的P3.4—P3.7管脚相连,键盘的第0列到第3列依次与单片机的P1.0—P1.3管脚相连,程序运行时依次扫描各行,查询是否有键按下,如果有则进入键盘识别处理程序,实现相应的运算,然后通过数码管输出结果,如果没有按键就调用显示程序显示一个0,等待按键按下,在进入按键扫描程序。
这样循环执行。
1.4基本功能1.计算器可显示8位数字,开机运行时,只有数码管最低位显示为“0”,其余位全部不显示;2.第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三次按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音,并且返回初始显示状态。
2 系统总体方案及硬件设计2.1计算器总体思想很高兴做这个课程设计,因为学了半学期的单片机终于可以练练手了,我特别喜欢单片机,特喜欢编程,一直很向往编程,这是我编的第一个程序,我想这将是我编程生涯的开始,在编这个程序时,遇到了很多麻烦,我没有气馁过,因为我对自己有信心,终于如愿完成了课程设计。
总结自己的编程思想是这样的,首先得设计一个显示程序,这个显示程序应是动态显示,思路有两个:(1)让P2口做位扫描,P0口做段码输出,在调用显示程序时,P2口循环选通数码管每一位的,P0口也依次循环输出相对应位的代码。
如何控制数字显示呢?可先将0-9、熄灭,11个段码放入列表中,在设置八个显示缓冲区,数码管要显示的数字就存放在这八个单元中,通过控制八个缓冲区的内容来控制输出的数字。
如:要显示的是1234则将缓冲区从低位开始依次放入04H、03H、02 H、01H剩余四位放入11H(代表数码管熄灭的代码),要注意的是,当调用显示程序时,通过程序根据八个数码管缓冲区的数字调用相对应的代码就可以循环输出,但是我们看到的是同时显示1234,因为视觉停留的原故。
当它的循环频率大于人的视觉停留时间,人们就认为它是同时显示的。
虽然八个数码管都输出了,但是高四位送的代码是熄灭,即不显示,当不输入数字时使八个缓冲区初始化为,第一位放00H,其余放11H,就可以只显示0,等待输入数据,这样就控制了显示位数实现了动态显示。
(2)让P2口做位扫描,P0口做段码输出,设置一个单元用来记录输入数字的位数,这样可以不用循环扫描每一位,而是根据输出位数判断扫描哪些位。
如上面的例子,当显示1234时,不用在向高四位送入11H,也不需要熄灭的代码了。
调用显示程序时先选通第一位(最低位),送出代码1,然后判断是否显示完毕,(通过记录数字个数单元的内容减一是否得0来判断),如没显示完则显示下一位,如显示完则跳出。
在本设计中选用后者。
其次是设计键盘扫描程序,这里采用4*4矩阵键盘,通过软件识别,行和列可接在同个端口上,也可接在不同端口上,本设计行接在P3口的高四位,列接在P1口的低四位,通过循环扫描行,读取列的数据判断是否有键按下,如果有则调用按键识别程序识别是哪个键,执行相应的操作,按键识别是根据按键时得到的列代码与行代码组合,来判断是哪个键的。
按键识别后,如果是数字键则直接放入数码管显示缓冲区,如果再次有数字键按下,则应将缓存区的数字向高位移一位,将刚输入的数放入最低位,并且记录按键次数,每输入一个键值都调用显示程序显示出来,如果是运算符,则执行相应的运算,然后在调用显示程序显示结果。
最后是运算程序的加入,运算程序很简单,只要把+、-、*、/分别做成模块,用到时即可调用,本设计的难点是键盘识别和数值显示,因为这里边涉及到键盘输入的数值在内部要转换成10进制运算,运算结果要转换成各个位的显示数字输出。
2.2硬件的选择与连接单片机选择AT89C51,数码管选择共阳机八位数码管,键盘4*4矩阵键盘,P0口接上拉电阻,数码管的A,B,C,D,E,F,G,DP分别依次与单片机的P0.0—P0. 7管脚相连,P0口做为单片机的字码控制端,数码管的1,2,3,4,5,6,7,8各引脚分别与单片机的P2.0—P2.7管脚相连,键盘的第0行到第3行依次与单片机的P3.4—P3.7,键盘的第0列到第3列依次与单片机的P1.0—P1.3,AT8 9C51接12MHZ晶振。
P3.0接风鸣器。
3 软件设计3.1显示程序设计显示程序流程图如图1。
我的显示程序是这样设计的,因为考虑到显示程应具有通用性,在不进行输入时显示0,输入时显示输入的数字或运算结果,而且要使8个数码管同时显示不同的数字,选用动态显示应是最佳的。
将30H-37H单元设置成数码管显示缓冲区,分别存放数码管各个位要显示的数据,40H单元作为输入数据的计数单元。
因为运算结果超出范围时应报错,使数码管显示“ERROR”即可,将数码管的0-9的代码和“ERROR”代码存于LABL E1列表中。
当调用显示程序时,显示程序根据40H单元的记录的个数决定数码管显示的位数。
如果输入错误将在数码管上显示“ERROR”。
这样就得到了显示程序的入口:30H-37H,依次存放个位-千万位。
40H,存放输出的数字位数。
出口:数码管,P0输出字段码 P2输出位选码。
图1数码管显示流程图3.2键盘识别程序设计:键盘识别是这样设计的,首先将P3口送0EOH,将P1口先送1在读P1口的数据当P1口低四位全一时说明没有键按下,在扫描下一行,如果P1口不全一,则有键按下,将P3口高四位与P1口低四位组合成一个字节,放入R5寄存器中,按键去抖,判键是否松开,如松开则将得到的键值判别是哪个键,如果是数字键则首先将其对应的数字(按键代码对应如下表)放入缓冲区30H,同时将将键值放入结果缓冲区,并调用显示程序,显示键值,在调用扫描键盘程序,如果在有键值输入则将原来的数值在数码管显示缓冲区向高位依次移一位,将刚键入的数值放入最低位,并将原来的数值乘十加上刚键入的数放人结果缓冲区,然后调用显示程序,如果是运算符,则记录运算符标志,加法用01H表示,减法用02H表示,乘法用03H表示,除法用04H表示,并将结果缓冲区的数转移到中间结果缓冲区,将结果缓冲区清零,等待输入运算数据,当按等号时,根据记录的运算符标志,判断是那种运算,执行运算将结果依次除10取余数放入结果显示缓冲区,调用显示程序。