数电实验二:简易计算器(实验报告)
简单计算器实验报告
简单计算器实验报告简单计算器实验报告引言:在现代社会,计算器已经成为人们生活中不可或缺的工具之一。
无论是在学校、办公室还是家庭,计算器都扮演着重要的角色。
本实验旨在设计和构建一个简单的计算器,并通过实验验证其功能和准确性。
实验步骤:1. 设计计算器的外观和功能:我们首先对计算器进行了外观设计,选择了简洁、易于使用的界面。
然后确定了计算器的基本功能,包括加法、减法、乘法和除法。
2. 选择合适的硬件和软件:为了构建计算器,我们选择了合适的硬件和软件。
硬件方面,我们选用了一块Arduino开发板、液晶显示屏和按键。
软件方面,我们使用了Arduino编程语言。
3. 连接硬件和编写代码:我们将液晶显示屏和按键与Arduino开发板连接起来,并编写了相应的代码。
代码中包括了计算器的逻辑运算和界面显示。
4. 测试计算器的功能和准确性:在完成硬件连接和代码编写后,我们对计算器进行了测试。
我们输入了一系列的算术表达式,包括简单的加减乘除运算,以及复杂的多步运算。
通过与手动计算的结果进行对比,我们验证了计算器的功能和准确性。
实验结果:经过多次测试,我们的计算器表现出了良好的功能和准确性。
无论是简单的加法还是复杂的多步运算,计算器都能够正确地给出结果。
液晶显示屏清晰地显示了算术表达式和计算结果,而按键的响应速度也非常迅速。
讨论:虽然我们的计算器在功能和准确性方面表现出色,但仍有一些改进的空间。
首先,我们可以增加更多的功能,如开方、求余等。
其次,我们可以改进界面设计,使其更加美观和易于使用。
此外,我们还可以考虑加入更强大的处理器和更大的内存,以提高计算器的性能。
结论:通过本次实验,我们成功设计和构建了一个简单的计算器,并验证了其功能和准确性。
计算器在各种算术运算中表现出色,并且具有清晰的界面和快速的响应速度。
然而,我们也意识到计算器仍有改进的空间,包括增加更多功能和改进界面设计。
总的来说,本次实验为我们深入了解计算器的原理和构造提供了宝贵的经验。
简易计算器实验报告
简易计算器实验报告简易计算器实验报告引言:计算器是我们日常生活中常用的工具之一。
它可以帮助我们进行简单的数学运算,提高计算的效率。
在本次实验中,我们将设计并制作一台简易计算器,通过实践来掌握计算器的原理和工作原理。
实验目的:1. 了解计算器的基本原理和工作原理;2. 掌握计算器的设计和制作方法;3. 提高动手能力和创造力。
实验材料:1. 电路板;2. 按键;3. LED显示屏;4. 电容;5. 电阻;6. 电源。
实验步骤:1. 连接电路板和电源,确保电路板能够正常工作;2. 将按键连接到电路板上,用于输入数字和运算符;3. 连接LED显示屏,用于显示计算结果;4. 添加电容和电阻,用于控制电路的稳定性和电流;5. 调试电路,确保计算器能够正确运行。
实验结果:经过一番调试,我们成功制作出了一台简易计算器。
它可以进行基本的加减乘除运算,并且在LED显示屏上显示结果。
通过按键输入数字和运算符,我们可以进行各种运算,从而得到我们想要的结果。
这台计算器虽然简单,但是它的实用性和便携性都非常高。
实验分析:在本次实验中,我们主要学习了计算器的基本原理和工作原理。
计算器是通过按键输入数字和运算符,然后经过电路的计算和控制,最终在显示屏上显示结果。
在电路中,电容和电阻的作用是为了保证电路的稳定性和电流的控制。
通过这个实验,我们更加深入地了解了计算器的内部结构和工作原理。
实验总结:通过本次实验,我们成功制作了一台简易计算器,并且对计算器的原理和工作原理有了更深入的了解。
实验过程中,我们不仅提高了动手能力和创造力,还培养了解决问题的能力。
计算器作为一种常见的工具,它的设计和制作过程并不复杂,但是它的实用性和便携性却非常高,为我们的生活带来了很大的便利。
未来展望:通过这次实验,我们对计算器的原理和工作原理有了初步的了解。
在未来,我们可以进一步深入研究计算器的更高级功能和更复杂的电路设计。
同时,我们也可以将这种简易计算器的设计思想应用到其他领域,如电子设备、机器人等,从而提高我们的创造力和创新能力。
数电实验二:简易计算器(设计报告)
数电实验2设计报告实验名称:简易计算器 实验目的:1.熟练掌握综合逻辑电路的设计方法及调试方法2.掌握Verilog HDL 数字系统设计方法3.熟悉PLD 实验箱的结构和使用及QuartusII 软件的基本操作4.掌握采用Quartus II 软件和实验箱设计实现逻辑电路的基本过程设计任务及要求:利用LPM 例化元件和适当的中小规模时序、组合逻辑电路设计一个4位简易计算器,实现2个4位二进制数的加、减、乘、除运算,完成主要模块的波形仿真,并将设计下载到实验箱进行功能测试。
要求:1、 用8个开关分别作为2个4位输入数据2、 运算结果用数码管显示电路设计过程:1、 设定加、减、乘、除四个LPM 例化元件加法器:2个四位二进制输入(加数、被加数),1个4位二进制输出(和)减法器:2个四位二进制输入(减数、被减数),1个4位二进制输出(差)乘法器:2个四位二进制输入(乘数、被乘数),1个8位二进制输出(积)除法器:24位二进制输出(分别代表商和余数)2、加入组合逻辑电路和4选一数据选择器,控制进行运算的种类(1)组合逻辑电路输入:功能:为了利用矩阵键盘对计算器对输入数字的加减乘除进行控制,我们画了这个组合逻辑电路,将矩阵键盘的行管脚和列管脚分别为输入后,当(1,1)位置的按键按下,则输出端输出2位2进制数11(控制减法操作),当(2,2)位置的按键按下,则输出端输出2位2进制数10(控制加法操作),当(3,3)位置的按键按下,则输出端输出2位2进制数01(控制乘法操作),当所有按键都没有按下时,输出默认为00,即控制除法操作。
(2)4选一数据选择器功能X1,y1为想要计算的两个4位2进制数,当S0,S1为11的时候,将X1,y1送入减法器输入端,当S0,S1为10的时候,将X1,y1送入加法器输入端,当S0,S1为01的时候,将X1,y1送入乘法器输入端,当S0,S1为00的时候,将X1,y1送入除法器输入端。
电子综合实践之计算器报告
电子综合实践实验报告简易计算器的设计专业:电子信息工程设计人:XXX学号:0708060022指导老师:XXX一、设计目的随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨后春笋般的变化。
电子产品的更新速度快就不足惊奇了。
计算器在人们的日常中是比较的常见的电子产品之一。
可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的四位数计算器,同时让学习者熟悉AT系列单片机的使用,学习如何掌握好进而设计好单片机的最小系统该设计系统是以AT89S51为单片机,P0口作为输入端,外接4X4的键盘,通过键盘扫描来对输入数的控制,在P1口,P2口接了驱动电路。
用来保证LED的工作正常。
计算器将完成的功能有加,减,乘,除,报错等功能。
二、设计要求1.以电子技术基础的基本理论为指导,将设计实验分为基础型和系统型两个层次,基础型指基本单元电路设计与调试,系统型指若干个模拟、数字基本单元电路组成并完成特定功能的电子电路的设计、调试;2.学习电子系统电路的焊接调试技术;3.拓展电子电路的应用领域,能设计、制作出满足一定性能指标或特定功能的电子电路设计任务。
三﹑主要功能:主要完成0~9999整数的一次加/减/乘/除运算,使用8快LED显示器显示数据,具体如下:加法运算能运行0~9999之间任何两数值之间运算,较普通,减法运算结果可以实现计算结果的负数显示,除法运算结果为0~9999并保留四位小数,乘法运算时即使超出四位也要能计算出来,即最多能显示8位计算结果能对错误进行提示,比如被除数是0则显示“error”,设有清零键,其它的未用到的数码管显示空白四﹑按键排布:因为使用的是4*4键盘,所以要删除部分不太重要的键,如小数点不使用,具体按键安排如下:0/1/2/34/5/6/78/9/+/-×/÷/=/复位五、电路的整体设计:1、电路的总体原理框图:2、工作原理及焊接原理框图如图所示。
数电实验简易计算器
北京邮电大学数电综合实验报告题目:简易计算器学院:信息与通信工程学院班级:学号:班内序号:姓名:数字电路综合实验报告简易计算器一、实验课题及任务要求设计并实现一个简易计算器。
基本要求:1.利用4X4 小键盘作为输入,包括:数字键0-9,清除键,等号键及‘+’‘-’‘*’运算符号键;2.实现输入为99 以内自然数的加、减、乘运算;3.能够实现多次连续计算(无优先级,从左到右计算结果),如:12+34×2-78=14;4.最大结果为99999(五位),溢出报警;5.用数码管显示输入的数字和结果,最左侧数码管用来表示数字的正负,其他五位数码管表示结果;结果的绝对值大于99999时,数码管显示‘Error’。
提高要求:1.实现输入为9999 以内自然数的加、减法;2.除法运算,不能除尽时小数保留1 位有效数字;3.能够区分运算优先级(先乘除,后加减),如:12+34×2-78=2 ;4.自拟其他功能。
二、系统设计2.1系统总体框图2.2逻辑流程图2.3MDS图2.4分块说明程序主要分为6个模块:分频器模块,键盘扫描模块,防抖模块,控制模块,数码管模块,报警模块。
VHDL文件devider包括分频器模块,keyboard包括键盘扫描模块,datain 包括防抖模块,控制模块,数码管模块,报警模块。
1.分频器模块系统时钟是50MHz,利用分频器得到25赫兹的时钟用于键盘扫描;100赫兹的时钟用于键盘去抖;1000赫兹的时钟用于数码管显示。
2.键盘扫描模块本模块主要完成是4×4键盘扫描,然后获取其键值,并对其进行编码,从而进行按键的识别。
键盘扫描的实现过程如下:对于4×4键盘,连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可。
为了完成这一识别过程,在时钟的上升沿输出列扫描信号其中一列输出低电平,另外三列输出高电平;在时钟的下降沿读入行值,当四行全为1时,表明无键按下;若某一列的行值为0,表示该行有键被按下。
计算器设计实验报告
计算器设计实验报告计算器设计实验报告第一部分:引言计算器是一种广泛应用于日常生活和工作中的电子设备。
它能够进行基本的数学运算,如加减乘除,以及更复杂的科学计算,如对数、三角函数等。
本实验旨在设计一个简单的计算器,以了解计算器的工作原理,并通过实践来提高我们的电子设计和编程能力。
第二部分:设计思路在设计计算器之前,我们首先需要确定所需的功能和要使用的技术。
基于我们的目标是设计一个简单的计算器,我们决定使用数字显示屏、按键和微控制器来实现。
数字显示屏是用于显示计算结果和用户输入的设备,我们选择了七段数码管作为显示器。
按键则用于接收用户输入的数字和操作符。
微控制器是计算器的核心部件,它负责接收按键输入,进行计算,并将结果显示在数码管上。
第三部分:实验步骤1. 硬件设计我们首先设计了数字显示屏的电路。
通过连接七段数码管和相应的电阻,我们能够控制数码管的亮灭,从而显示不同的数字和符号。
接下来,我们设计了按键的电路。
每个按键都与微控制器的引脚相连,当按键被按下时,引脚会接收到一个电平信号,微控制器通过检测引脚状态来确定用户的输入。
2. 软件编程在硬件设计完成后,我们开始编写微控制器的程序。
程序的主要任务是接收按键输入,并根据用户的操作进行相应的计算。
首先,我们设置了一个变量来存储用户的输入,然后通过检测按键状态来更新这个变量。
当用户按下数字键时,程序将数字添加到变量中;当用户按下操作符键时,程序将根据当前的操作符和变量进行相应的计算。
最后,程序将计算结果显示在数码管上。
我们使用了一个函数来将计算结果转换为七段数码管的控制信号,并通过相应的引脚将信号发送到数码管。
第四部分:实验结果经过一段时间的设计和调试,我们成功地完成了计算器的制作。
它能够准确地接收用户的输入,并进行相应的计算。
计算结果也能够正确地显示在数码管上。
我们进行了一系列测试来验证计算器的功能和性能。
测试包括基本的加减乘除运算,以及一些复杂的科学计算,如对数和三角函数。
简易计算器实训报告
简易计算器实训报告
一、实训目的:熟悉基本的Python编程知识和数据类型的使用,掌握基本的计算器功能实现
二、实训步骤:
1.首先导入math模块,因为本次实训中需要使用到math模块中的一些函数,如sqrt()
2.定义四个基本运算函数:add()、sub()、mul()、div(),并使用if语句判断用户需要执行的运算操作
3.如果用户输入的操作符不是四个基本运算符之一,则提示用户输入正确的操作符,直到用户输入正确的符号为止
4.通过while循环实现:如果用户输入的数字不是float类型或者用户输入的操作符不是字符串类型,则一直提示用户输入正确的数字或者操作符
5.通过格式化字符串实现结果的输出,保留两位小数
6.通过input()函数实现用户输入数字和操作符的交互
三、实训感想:
通过本次实训,我对Python编程语言有了更深入的了解和掌握,并且熟练掌握了Python中的数据类型、运算符和基本函
数的使用方法。
另外,本次实训也提高了我对问题解决的能力和编程思路,让我更加深入地理解了编程思维的本质。
最后,我希望自己能够不断地学习和探索,进一步扩展自己的编程知识,提升自己的实践能力和创新能力。
计算器实验报告
bcs ="0";
cs ="0";
sign =null;
来保证下一次的计算可以顺利的进行而不占用资源。
六.操作说明
1.数字键0——9用于数字的键入,可键入个位数,也可连续键入多位数。
2.“.”用于小数点的键入
3.“+”“-”“*”“/”“=”“√””1/x”分别用于加、减、乘、除\相等开方及求倒的运算。
5.求倒:result = ((double)1/double.Parse (bcs)).ToString;
6.开方:result =Math.Sqrt(double.Parse(bcs)).ToString();
五.难点,出现的问题
当计算器设计好以后,对于backspace控件的控制存在一个问题。例如:当输入-0.011时,按backspace控件退格时,会出现-0的情况,而实际运算中却是不允许出现这样的情况的。为此,解决这个问题采用了
if(textBox1.Text =="0"|| textBox1.Text == result || textBox1.Text =="-0"||textBox1.Text =="-0.")
{
textBox1.Text = "0";
}
语句来控制此类问题的出现,当然,红色字体中的-0.在某些计算器中是出现过的,所以可有可无,这样,当backspace控件退回到“.”时,便可以直接放回为0.
教师评语:
指导教师
(签字)
评分
批改日期
2.减法:result = (double.Parse(bcs) -double.Parse(cs)).ToString();
简易计算器实验报告
简易计算器实验报告一、实验目的本次实验的目的是设计并实现一个简易计算器,能够进行基本的四则运算(加、减、乘、除),以及处理括号的优先级运算,提高对程序设计和逻辑思维的理解与应用能力。
二、实验原理1、四则运算的优先级规则在数学运算中,先计算括号内的表达式,然后按照先乘除后加减的顺序进行计算。
乘除法的优先级高于加减法,如果在同一级运算中,按照从左到右的顺序进行。
2、数据结构的选择使用栈(Stack)数据结构来存储操作数和运算符。
栈具有先进后出的特点,非常适合处理表达式中的括号和优先级。
3、算法思路首先,将输入的表达式进行解析,将数字和运算符分别存储到不同的栈中。
然后,根据运算符的优先级进行计算,将计算结果重新压入栈中,直到表达式计算完毕。
三、实验设备及环境1、编程工具:选择了 Python 语言作为主要的编程工具,使用PyCharm 集成开发环境进行代码编写和调试。
2、操作系统:Windows 10 操作系统。
四、实验步骤1、定义数据结构定义两个栈,一个用于存储操作数(operandStack),一个用于存储运算符(operatorStack)。
2、表达式解析遍历输入的表达式字符串,将数字转换为整数并压入操作数栈,将运算符压入运算符栈。
遇到左括号直接压入运算符栈,遇到右括号则进行括号内的运算。
3、运算处理当运算符栈不为空时,取出栈顶的运算符和两个操作数进行计算。
根据运算符的优先级进行相应的运算,将结果压入操作数栈。
4、最终结果当表达式解析完毕后,操作数栈中的唯一元素即为表达式的计算结果。
五、代码实现```pythonclass SimpleCalculator:def __init__(self):selfoperandStack =selfoperatorStack =def calculate(self, expression):for char in expression:if charisdigit():selfoperandStackappend(int(char))elif char in '+/()':if char =='(':selfoperatorStackappend(char)elif char ==')':while selfoperatorStack-1!='(':operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackpop()else:while selfoperatorStack and selfhasHigherPrecedence(selfoperatorStack-1, char):operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)selfoperatorStackappend(char)while selfoperatorStack:operator = selfoperatorStackpop()operand2 = selfoperandStackpop()operand1 = selfoperandStackpop()result = selfperformOperation(operand1, operand2, operator)selfoperandStackappend(result)return selfoperandStackpop()def hasHigherPrecedence(self, op1, op2):if op1 in '/' and op2 in '+':return Trueelif op1 in '+' and op2 in '+':return Falseelif op1 in '/' and op2 in '/':return Falsereturn Falsedef performOperation(self, operand1, operand2, operator):if operator =='+':return operand1 + operand2elif operator =='':return operand1 operand2elif operator =='':return operand1 operand2elif operator =='/':if operand2 == 0:raise ValueError("除数不能为 0")return operand1 / operand2if __name__ =="__main__":calculator = SimpleCalculator()expression ="2 + 3 (4 1) / 2"result = calculatorcalculate(expression)print("计算结果:", result)```六、实验结果与分析1、测试用例及结果输入表达式:"2 + 3 4",计算结果:14输入表达式:"(2 + 3) 4",计算结果:20输入表达式:"5 2 3",计算结果:-1输入表达式:"10 / 2 + 1",计算结果:62、结果分析对于简单的四则运算表达式,计算器能够正确计算出结果。
简单计算器—实训报告
Linux应用与编程实习报告学院名称专业班级学生姓名学号指导教师山东科技大学一、实习题目: B2-简单计算器二、实习时间:19周~ 20周实习地点: J13- 128三、实习任务:实现一个简单计算器,计算器包括加、减、乘、除四种运算。
用户通过鼠标进行数据输入,输入的数据以及计算结果显示在文本框中四、小组分工说明:独立完成五、实习成绩六、指导教师对实习的评语:指导教师(签章):2015年月日目录1. 概述 -------------------------------------------------------- 42. 相关技术 -------------------------------------------------- 42.1 QT中信号和槽 -------------------------------------- 42.2 字符串输出数据组 -------- 错误!未定义书签。
3. 需求分析 -------------------------------------------------- 54. 总体设计与详细设计 ----------------------------------- 54.1 系统模块划分 --------------------------------------- 54.2 主要功能模块 --------------------------------------- 55. 编码实现 -------------------------------------------------- 6 6.测试情况说明------------------------------------------- 147. 实训中遇到的主要问题及解决方法 ---------------- 158. 实训收获与体会 ---------------------------------------- 161. 概述1.1 实训项目简介本次实训项目是应用Linux系统中的QT编译器编写一个界面简洁,操作简单的简易计算器。
数电课程设计简易计算器
数电课程设计简易计算器辽宁工业大学数字电子技术基础课程设计(论文)题目:简易计算器课程设计(论文)任务及评语摘要这次的课程设计的任务是设计一个具备加减乘运算功能的电路,能够通过开关控制进行加减法计算和乘法计算,并利用LED灯显示计算结果。
本次设计通过开关的闭合和开通来代表电平的高地位继而代表0和1来输入所要计算的十进制数字.加减运算电路主要由74LS283的级联电路组成。
通过异或门将原码全部转换为补码,然后采用个位和个位相加,十位和十位的相加的原则,将两个的个位的代码送入到一个加法器中,将进位依次传递.但是加法器只可以做加法运算,不满足我们的设计要求,于是我们将减法也变成加法进行运算,运算都为补码,最后再将结果在转换为原码,通过LED灯显示出来。
乘法运算电路主要由移位寄存器74LS194和加法器74LS283组成。
显示电路主要由7段显示译码器构成,将加减和乘法运算电路计算所得的运算结果每4为输入到一块7448芯片中,按高低位排列就得到了我们所需要的十进制的运算结果了。
关键词:运算;反码;LED显示;移位寄存器目录第1章绪论 (1)1。
1简易计算器概况 (1)1。
2本文设计要求 (1)1.3方案论证 (2)1。
4总体设计方案 (2)第2章简易计算器各单元电路设计 (3)2。
1简易计算加法电路设计 (3)2.2简易计算器减法电路设计 (4)2。
3乘法运算电路设计 (5)2.4译码显示电路设计 (6)第3章简易计算器整体电路设计 (8)3。
1系统原理图 (8)3.2部分电路仿真 (9)3.2.1 加法电路仿真 (9)3。
2。
2 减法电路仿真 (10)第4章设计总结 (11)参考文献 (12)附录 (13)第1章绪论1.1简易计算器概况提起计算器,值得我们骄傲的是最早的计算工具诞生在中国.中国古代最早采用的一种计算工具叫筹策,又叫做算筹,这种算筹多用竹子制成,也有用木头、兽骨充当材料的,约270,枚一束,放在布袋里克随身携带.17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的“纳皮尔算筹”,英国牧师奥却德法发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数、指数函数和对数函数,这些计算工具不仅带动了计算机的发展,也为现代计算器的发展奠定了良好的基础,计算器已经成为现代社会应用广泛的计算工具。
简易计算器实验报告
2.1 设计目标和实现方法
为了满足简易计算器的基本要求,可以进行基本的加、减、乘、除运算以及数据归零操作,我们采用基于51单片机设计计算器,并用七段共阴极LED数码管显示数据,4*4的矩阵键盘实现数据的输入。
2.2 整体方案论述
根据简单计算器的功能和本方案中的设计指标要求,本系统选用了MCS 51单片机为主控机。通过扩展必要的外围接口电路,实现对简单计算器的设计。具体设计考虑如下:
现如今,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店、办公室、学校……因此设计一款简单实用的计算器会有很大的实际意义。
本设计旨在进一步掌握单片机理论知识,理解嵌入式单片机系统的硬软件设计,加强对实际应用系统设计的能力。通过本设计的学习,使我掌握单片机程序设计和微机接口应用的基本方法,并能综合运用本科阶段所学软、硬件知识分析实际问题,提高解决毕业设计实际问题的能力,为单片机应用和开发打下良好的基础。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用此振动器。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
综上所述我们在本方案中选用了上电自动复位电路。
上位自动复位电路图和手动复位电路图如下图
如图3—1两种复位方式
3.2 时钟振荡电路的设计
能够产生振荡电流的电路叫做振荡电路。一般由电阻、电感、电容等元件和电子器件所组成。由电感线圈l和电容器c相连而成的lc电路是最简单的一种振荡电路,其固有频率为f=[sx(]1[]2πlc。 § 一种不用外加激励就能自行产生交流信号输出的电路。它在电子科学技术领域中得到广泛地应用,如通信系统中发射机的载波振荡器、接收机中的本机振荡器、医疗仪器以及测量仪器中的信号源等。
测试计划简易计算器实验报告
测试计划简易计算器实验报告Experiment Report on Calculator Prototype Testing.Purpose:The purpose of this experiment was to evaluate the accuracy and functionality of a prototype calculator.Procedure:The following steps were followed during the experiment:1. The calculator prototype was connected to a computer running a testing software.2. A set of test cases were developed to cover the different functions of the calculator.3. The test cases were executed on the calculator prototype, and the results were recorded.4. The results were analyzed to assess the accuracy and functionality of the calculator.Results:The following results were obtained from the experiment:The calculator prototype was able to perform all ofthe basic arithmetic operations accurately.The calculator prototype was able to handle negative numbers and decimal values correctly.The calculator prototype was able to calculate percentages and square roots correctly.The calculator prototype was able to handle parentheses correctly.The calculator prototype was easy to use and understand.Conclusion:Based on the results of the experiment, it can be concluded that the calculator prototype is accurate and functional. The calculator is able to perform all of the basic arithmetic operations correctly, and it is easy to use and understand.Recommendations:The following recommendations are made for further development of the calculator:Add more advanced functions, such as trigonometry and statistics.Improve the user interface to make it more intuitive and user-friendly.Develop a mobile app version of the calculator.中文回答:实验报告,计算器原型机测试。
北京理工大学 数据结构 实验报告 实验二 简易计算器
实验二简易计算器姓名:任子龙学号:1120140167 班级:05111451一.需求分析1.程序要求可对一实数算术表达式进行简单的数学运算,可以识别带+、-、*、/、%、^(乘方)等等运算符及括号的中缀表达式,从键盘上输入一算术表达式(一般为中缀表达式),计算出表达式的值。
2.按照四则运算规则,求表达式的值。
一般规则如下:1)先括号内,再括号外。
2)先乘方,再乘除,后加减。
b.同级运算从左到右顺序执行。
3.有良好的提示信息,引导用户在键盘上输入规定的运算指令;如表达式有误,也应给出相应的提示信息。
4.建立两个工作栈,分别保存运算符,操作数或运算结果。
二.概要设计1.抽象数据类型的定义为实现上述功能,建立两个工作栈;算符为字符型变量,算数为单精度浮点型变量,则需要定义两种数据类型分别存储。
typedef struct StackChar{char c;struct StackChar*next;}SC;typedef struct StackFloat{float f;}SF;2.本程序包含两个模块(1)主程序模块主函数只包含了输入输出部分。
流程为:首先输入算式,然后调用算符优先算法函数EvaluateExpression(s)进行计算,结果输出;然后循环下去,直到输入OUT指令,退出程序;(2)链栈单元模块——实现栈的链式存储的抽象数据类型。
各函数之间的调用关系:三.详细设计1.结点类型typedef struct StackChar{char c;struct StackChar*next;}SC;float f;struct StackFloat*next;}SF;2.子函数(1)算符优先算法的主干函数float EvaluateExpression(char*e)实现算符优先算法主干的函数。
首先判断是算符还是算数,如果是算符,与算符栈栈顶元素进行优先级比较,如果该算符优先级比原栈顶元素优先级高,则进栈,否则进行运算;如果是算数,则入算数栈。
简单计算器实验
简单计算器试验一、设计分析:1.本程序使用VB语言编成,只使用了一个窗体模块,完成模仿市面简单计算器的功能。
例如加减乘除,开方,求倒数,求百分比,并可连贯运算这些功能。
2.为了能在windows开始程序菜单中运行它,深入一点了解面向对象开发应用程序。
使用vb6.0的部署发布程序做了一个简单的安装包,可以在Windows Xp 下安装并运行。
(SetupFactory V8.1打包工具制作的vb软件安装包专业些。
)3.界面友好易操作。
(可以使用键盘输入数字进行运算,比较方便操作!)二、程序结构流程图:退格键显示窗口清除键重启键开方键求百分键求倒数键符号键数字键小数点键加法键等于键三、各模块功能及程序说明:1.这个程序是依照计算机处理器内ALU处理数据的原理设计,根据输入的数据,来判断怎样操作、怎样送入操作数。
例如:如果是双操作数则会将操作数A 和操作数B的运算结果送入操作数A,标志状态变量重新按情况设置。
2.比较起来虽然简单的多了,但是这种算法很经典。
3.数字键的事件过程主要是靠调用number(num)过程来实现,一个控件数组和“0”键组成。
4.加、减、乘、除运算键的事件过程主要是靠调用Calculation()过程来实现。
5.开方、求百分比等特殊运算键的事件过程主要是靠调用VB工具内相应VBA 函数来实现,例如sqr()函数。
6.关于退格键事件过程主要是用了字符串截取函数,由于当时未使用“&”来代替“+”作为连接运算符、未使用字符串匹配函数instr(),调试程序时增加了多行代码(由此可见工具内自带函数的方便之处)。
虽然很健康,但是感觉过长,时间又有限,当做经验吧,暂不改了。
7.接受键盘输入的运算操作是打开了建立了一个Form_KeyPress(KeyAscii)通用过程,根据KeyAscii的值响应相应事件。
8.在代码中针对每个过程都有简单注释;在代码的开头例如“'''operand ----------------------------操作数'''Calculation -------------------------计算”,这些都是帮助说明变量用途而写。
计算器实验报告
Java课程设计课程名称:简易计算器指导教师:张峰学院:信息学院班级:软件11-2班姓名:钱明学号:201101051720一.实验题目:1. 实验要求参考Windows附件中的计算器,使用Java语言设计并实现一个简单的计算器。
(界面使用AWT或SWING)2. 实现功能本程序实现了基本的加减乘除功能及清空功能,另外还增加了sin、cos、tan等三角函数功能,以及π、sqrt、数的三次方及二次方的符号运算功能。
3. 算法设计a. 因为二进制转换问题,数的精确度存在问题,因此本程序用了大数BigDecimal来解决此问题。
BigDecimal b1 = new BigDecimal(Double.toString(result));b. 除数为零问题:系统本身显示无穷大,本程序给出提示 ("除数不能为0!") 二.系统的UML类图三.系统实现的核心代码//====================================================框架设计=====================================================@SuppressWarnings("serial")class CalculationFrame extends JFrame{public CalculationFrame(){setTitle("计算机 ");CalculationPanel panel=new CalculationPanel();add(panel);// this.setSize(350, 400);this.pack();}}// ==============================================面板设计====================public CalculationPanel();private class ShowPanel extends JPanelprivate class ButtonPanel extends JPanel用GridBagLayout 设计按钮布局GridBagLayout gridbag=new GridBagLayout();setLayout(gridbag);功能键设计button[22]=new JButton("sqrt");button[22].setBackground(Color.orange);gridy=0;gridx=6;gbc=newGridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anc hor,fill,inset,ipadx,ipady);gridbag.setConstraints(button[22], gbc);add(button[22]);button[22].addActionListener(CA);数字键设计button[0]=new JButton("0");gridy=3;gridx=0;//gridwidth=2;gbc=newGridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anc hor,fill,inset,ipadx,ipady);gridbag.setConstraints(button[0], gbc);add(button[0]);button[0].addActionListener(NA);清除键设计button[16]=new JButton("清除");button[16].setBackground(Color.lightGray);gridy=0;gridx=4;gridwidth=1;gridheight=2;gbc=newGridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anc hor,fill,inset,ipadx,ipady);gridbag.setConstraints(button[16], gbc);add(button[16]);setBorder(BorderFactory.createEmptyBorder(0,5,5,5));button[16].addActionListener(newActionListener(){public void actionPerformed(ActionEvent e) {up.setText("");down.setText("0");start=true;equals=false;total=true;result=0; }});}//=========================处理数字键======================================private class numberAction implements ActionListener{public void actionPerformed(ActionEvent e){String input=e.getActionCommand();if(e.getActionCommand()=="."){if(down.getText().indexOf(".")==-1){//down.append("");down.setText(down.getText()+".");}// total=false;}else if(total==true){down.setText(""+input);total=false;}else down.append(""+input);}}//======================================处理运算符============================================private class commendAction implements ActionListener{public void actionPerformed(ActionEvent e) { String input=e.getActionCommand();total=true;if(start==true){if(equals==true){up.setText(up.getText()+down.getText()+input); calculate(Double.parseDouble(down.getText()));equals=false;lastCommend=input;}else{ result=Double.parseDouble(down.getText());if(result==0.0){up.setText(input);}else{up.setText(result+input);}lastCommend=input;}start=false;}else{if(lastCommend=="="){up.setText(down.getText()+input);lastCommend=input;equals=true;start=true;}else{up.setText(up.getText()+down.getText()+input);calculate(Double.parseDouble(down.getText()));lastCommend=input;}}}}// ==============================================计算方法=======================================================private void calculate(double x){ BigDecimal b1 = new BigDecimal(Double.toString(result));BigDecimal b2 = new BigDecimal(Double.toString(x));// String r=new String();if(lastCommend.equals("+"))result+=x;else if(lastCommend.equals("-"))result = b1.subtract(b2).doubleValue();// result=(result-x);}else if(lastCommend.equals("*"))result = b1.multiply(b2).doubleValue();else if(lastCommend.equals("/")){try{result= b1.divide(b2,15,BigDecimal.ROUND_HALF_UP).doubleValue();}catch(ArithmeticException e){JFrame JD;JD=new JFrame();JLabel j;j=new JLabel("除数不能为0!");JD.setBounds(200,200,150,150);// j.setFont(new Font("Serifs", 1, 15));Font font=new Font("Serief", 0, 22);j.setFont(font);j.setForeground(Color.RED);//设置标签前景色JD.add(j);JD.setVisible(true);}}else if(lastCommend.equals("sqrt"))result=Math.sqrt(x);else if(lastCommend.equals("exp"))result=Math.log(x);else if(lastCommend.equals("sin")){ result=Math.sin(x);// result= Math.rint(result*100000000)/100000000.0;}else if(lastCommend.equals("tan"))result=Math.tan(x);else if(lastCommend.equals("cos"))result=Math.cos(x);else if(lastCommend.equals("x^3"))result=x*x*x;else if(lastCommend.equals("x^2"))result=x*x;// else if(lastCommend.equals("BACK"))// r=r.substring(0, r.length()-1);//result=Double.parseDouble(r);down.setText(""+result);}}}五.实验测试减法测试 12-3:除法测试:Sin、cos、tan等功能键测试:。
简易计算器实验报告
目录1.概述 (1)2.系统软件设计 (1)2.1设计目标和实现方法 (1)2.2整体方案论证 (1)3.系统硬件的设计 (2)3.1复位电路的设计 (2)3.2时钟振荡器电路的设计 (3)3.3输入电路的设计 (4)3.4输出电路的设计 (7)4.系统程序的设计与介绍 (9)4.1读键输入程序流程图设计 (9)4.2 LED显示程序流程图设计 (11)4.3主程序流程图设计 (12)5.程序设计体会........................................... . (12)附 1 源程序代码 (14)附 2 计算器电路图 (24)1.概述随着社会的发展, 科学的进步, 人们的生活水平在逐步地提高, 尤其是微电子技术的发展犹如雨后春笋般的变化。
电子产品的更新速度快就不足惊奇了。
计算器在人们的日常中是比较常见的电子产品之一, 如何使计算器技术更加的成熟, 充分利用已有的软件和硬件条件, 设计出更出色的计算器, 使其更好地为各个行业服务, 成了如今电子领域重要的研究课题。
1、现如今, 人们的日常生活中已经离不开计算器了, 社会的各个角落都有它的身影, 比如商店、办公室、学校……因此设计一款简单实用的计算器会有很大的实际意义。
2、本设计旨在进一步掌握单片机理论知识, 理解嵌入式单片机系统的硬软件设计, 加强对实际应用系统设计的能力。
通过本设计的学习, 使我掌握单片机程序设计和微机接口应用的基本方法, 并能综合运用本科阶段所学软、硬件知识分析实际问题, 提高解决毕业设计实际问题的能力, 为单片机应用和开发打下良好的基础。
对字符液晶显示模块的工作原理, 如初始化、清屏、显示、调用及外特性有较清楚的认识, 并会使用LCD(液晶显示模块)实现计算结果的显示;掌握液晶显示模块的驱动和编程, 设计LCD和单片机的接口电路, 以及利用单片机对液晶显示模块的驱动和操作;在充分分析内部逻辑的概念, 进行软件和调试, 学会使用, 并能够以其为平台设计出具有四则运算能力简易计算器的硬件电路和软件程序。
嵌入式实验报告-简易计算器
1实验目的根据计算器的原理设计一个具有加减乘除功能的简易计算器2实验要求(1)数字和结果用数码管显示。
(2)数字、+—*/、=、C用4X4键盘实现。
(3)计算结果正确,有出错提示。
二实验原理框图基本工作原理:本设计利用数码管和4*4 矩阵式键盘实现了简易计算器的功能。
接通电源,数码管显示全0。
计算时,通过键盘输入需要计算的数字,该数字显示在数码管上,当键入等号时,计算结果显示在数码管上。
进行第二次运算时,按 C 键清除键盘结果。
当计算出现错误时,LED 灯亮报警。
当计算结果超出数码管显示出现溢出时,报警电路也会报警。
报警输出为-- 。
四系统软件设计1. 数据输入模块原理:通过4*4 矩阵模块输入数字,在数码管上显示出来。
2. 运算模块原理:四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号时,将所得结果反馈给运算模块输入端。
3. 输出模块原理:通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据。
当输出结果溢出是LED亮四次,同时数码管显示都为-- 。
五实验调试首先按清零键清零。
然后进行调试。
输入数据2,再按乘法键,输入第二个数字6,按等号键,数码管显示12;再按除法键,输入第二个数据3,按等号键,数码管显示4;再按加法键,输入第三个数据7,依次按等号键,数码管显示11;按减法键,输入第四个数据99,依次按等号键,数码管显示-88 。
若输入超出显示管的最大值或者超出数码管的位数,结果溢出,LED亮报警, 同时数码管显示都为--。
如输入999999加上2,结果就溢出,LED灯亮四次报警。
六程序#include "LPC2468.h" /* LPC24xx definitions */#include "type.h"#include "irq.h"#include "target.h"#include "timer.h"#include "fio.h"#include "keyboard.h"#include "SPI.h" extern BYTE seg_buf[50]; // LPC2468 开发板使用此数组的 0~5 显示六个数 码管;LPC2478板使用1~6BYTE seg_copy1[7];BYTE seg_copy2[7];extern BYTE KEY; // LPC2468 开发板使用此数组的 0~5 显示六个数码管; LPC2478板 使用 1~6 enum { Add =1, Dec, Mut, Div, nofuntion}funtion;********* ** Main Function main()********************************************************************* int main (void) {unsigned long Num1 =0;/*第一个输入的数字 */ unsigned long Num2 =0;/*第二个输入的数字 */ unsigned long Num3 =0;/*第二个输入的数字*/计算输入的数字的个数,超过 6 个则报警, 允许输入数字标志 */ 允许输入数字标志 */ 运算功能 */unsigned char Ne_num = 0;/* 负数标志 */DWORD value=0,i=0;TargetResetInit(); enable_timer(1);SPI_Init(8); // Seg_Init(); // LedsInit();for(i=0;i<7;i++){seg_copy1[i]=0;seg_copy2[i]=0; seg_buf[i]=0;}counter = 0;cal_allow = 1;input_allow = 1; funtion_type = nofuntion;while ( 1 ){value = KEY;/* 输入数字 */ if(value>0 && value<11)if(counter < 6&&input_allow==1){if(counter == 0) seg_buf[1] = value-1;else{for(i=0;i<counter;i++){ unsigned char counter = 0; /* 运算结果超过 6 位数也报警 */unsigned char cal_allow = 1; /*unsigned char input_allow = 1;/* unsigned char funtion_type = 0;/* SPI 总线速率为28.8/8 = 3.6 MHz 数码管初始化seg_buf[counter+1-i] = seg_buf[counter-i];}seg_buf[1] = value-1;} counter++;}if(counter == 6){input_allow = 0;LedOn(1);LedOn(2);LedOn(3);LedOn(4);}}/* 如果是“ C”键,则清除显示,清除计算标志*/ if(value == 11){for(i=0;i<7;i++){ seg_copy1[i]=0; seg_copy2[i]=0;seg_buf[i]=0;counter = 0;Num1 = 0;Num2 = 0;Num3 = 0;cal_allow = 1;input_allow = 1;Ne_num = 0;/* 负数标志*/ funtion_type = nofuntion;}/* 如果是“ +”键,则显示结果*/if(value == 13 ){if(cal_allow == 1){for(i=0;i<7;i++){seg_copy1[i] = seg_buf[i];/* 备份第一次输入的数字*/ seg_buf[i]=0; /* 字*/}funtion_type = Add;counter = 0; /* cal_allow=1; /* input_allow = 1; /* }else{ 计数器清零允许第二次计数*/ 再等号按下前不能再按第二次*/ 允许第二次输入数据*/input_allow = 0; /* 禁止按下2 次功能键时候输入数据*/显示清零以准备第二次输入数}/* 如果是“ - ”键,则显示结果*/ if(value == 14&& cal_allow == 1){if(cal_allow == 1){for(i=0;i<7;i++){seg_copy1[i] = seg_buf[i];/*seg_buf[i]=0; /* 字*/}funtion_type = Dec;counter = 0; /*cal_allow =1; /*input_allow = 1; /*}else{input_allow = 0; /*}}备份第一次输入的数字*/显示清零以准备第二次输入数计数器清零允许第二次计数*/ 再等号按下前不能再按第二次*/ 允许第二次输入数据*/禁止按下 2 次功能键时候输入数据*//* 如果是“X”键,则显示结果*/ if(value == 15 && cal_allow == 1) {if(cal_allow == 1){for(i=0;i<7;i++)seg_copy1[i] seg_buf[i]=0; = seg_buf[i];/*/*备份第一次输入的数字 */ 显示清零以准备第二次输入数字*/}funtion_type = Mut;counter = 0; /* 计数器清零允许第二次计数 */cal_allow =1; /* 再等号按下前不能再按第二次 */input_allow = 1 } else {input_allow =; /*允许第二次输入数据 */; /* 禁止按下 2 次功能键时候输入数据 */}} /* 如果是“ / ”键,则显示结果 */if(value == 16 && cal_allow == 1){if(cal_allow == 1){for(i=0;i<7;i++){seg_copy1[i] = seg_buf[i];/*备份第一次输入的数字 */ seg_buf[i]=0; /*显示清零以准备第二次输入数字*/}funtion_type = Div;counter = 0; /*计数器清零允许第二次计数 */ cal_allow =1; /*再等号按下前不能再按第二次 */ }else{input_allow = 0; /* 禁止按下2 次功能键时候输入数据*/}}/* 如果是“ =”键,则清除显示,清除计算标志*/if(value == 12){for(i=0;i<7;i++){seg_copy2[i] = seg_buf[i];/* 拷贝第二次输入的数字*/}/* 把输入的数字串1 合成运算数字*/Num1 = seg_copy1[6]*100000+seg_copy1[5]*10000+ seg_copy1[4]*1000 +seg_copy1[3]*100+ seg_copy1[2]*10 +seg_copy1[1];/* 把输入的数字串2 合成运算数字*/Num2 = seg_copy2[6]*100000+seg_copy2[5]*10000+ seg_copy2[4]*1000 +seg_copy2[3]*100+ seg_copy2[2]*10 +seg_copy2[1];switch(funtion_type){case Add:Num1 = Num1+Num2;/* break;}case Dec:{if(Num1==Num2) Num1 = 0; else if(Num1>Num2) {Num3 = Num1-Num2;/* Num1 = Num3;}else if(Num2 > Num1) {Num3 = Num2-Num1; Ne_num =1;Num1 = Num3;} break;}case Mut:{Num3 = Num1*Num2;/* 计算结果存在 Num1 中*/ Num1 = Num3;break;}case Div:if(Num1>=Num2&&Num2!=0) {Num3 = Num1/Num2;/* 计算结果存在 Num1 中 */ } 计算结果存在Num1中*/ 计算结果存在Num1中*/Num1 = Num3;break;} default:break;}/* 显示结果*/if(Num1>999999||(Ne_num ==1&&Num1>99999)||Num2 ==0) {for(i=0;i<7;i++){seg_copy1[i]=0;seg_copy2[i]=0;seg_buf[i]=10;/* 显示横杠表示计算溢出错误!*/ }for(i=0;i<5;i++){LedOn(1);LedOn(2);LedOn(3);LedOn(4);delayMs(1,200);LedOff(1);LedOff(2);LedOff(3);LedOff(4);delayMs(1,200);}}else{seg_buf[1] = Num1%10;seg_buf[2] = (Num1%100)/10;seg_buf[3] = (Num1%1000)/100;seg_buf[4] = (Num1%10000)/1000;seg_buf[5] = (Num1%100000)/10000;seg_buf[6] = Num1/100000;if(Ne_num ==1){seg_buf[6] = 10;/* 显示负号*/}}} delayMs(1,200);*********End Of File********************************************************************* ********/七实验现象(1)运行成功以后的计算机界面如图一:图一(2)正确输入6+6=12的现象如图二和图三:图三(3)当进行除操作且除数为0时的现象如图四:图四七实验小结在设计计算机的过程中,我们遇到了很多问题,但是都通过查资料和请教同学得到了解决。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数电实验2实验报告
1、设计修改方案
(1)加入编码器连接4选一数据选择器,控制进行运算的种类
(2)修改了输出端数据选择器的程序,使得当计算器没有任何输入时,结果显示保持为0,并且利用芯片自身的灭零管脚,让显示结果中,当十位为零时,十
位的零不显示。
2、实验数据及分析
(1)修改后电路图(附后)
(2)仿真波形
设置输入2个4位二进制数为0110(十进制6)和0010(十进制2),计算方式控制SW[3:0]设为0111,即模拟除法操作,加入时钟信号。
①模拟除法波形:
可以看到十位(商)的数码管显示中,1、2、3、4、7段亮,显示为数字3,而个位(余数)显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6除2商3余0。
满足计算要求。
②模拟乘法波形:(SW[3:0]设为1011,其他输入同上)
可以看到个位的数码管显示中,1、4、5、6段亮,显示为C(化为十进制为12),而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6乘2等于0C,即等于12。
当改变输入4和2是,显示结果为8,。
满足计算要求。
③模拟加法波形:(SW[3:0]设为1101,其他输入同上)
可以看到个位的数码管显示中,1、2、3、4、5、6、7段全亮,显示为数字8,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6加2等于08,即等于8。
满足计算要求。
④模拟减法波形:(SW[3:0]设为1110,其他输入同上)
可以看到个位的数码管显示中,2、3、6、7段亮,显示为数字3,而十位一直显示1、2、3、4、5、6段亮,显示数字0,相当于计算出6减2等于03,即等于3。
满足计算要求。
从上面加减乘除四种功能运算的波形仿真可以看出,本实验设计能够正确完成对输入数字的上述四种运算。
满足题目要求。
(3)硬件测试
修改后的管脚分配如下:
按照以上管脚分配将电路拷入实验箱。
8个拨码开关分为两组用于设置想要输入的两个4位二进制数。
当4个单独的负脉冲按键都没有被按下时,电路默认为除法操作,将左边四个拨码开关拨为“0110”(即X=6),右边4个拨码开关拨为“0010”(即Y=2)时,数码管显示30,说明6除2商3余0,结果正确,该输入X=4,Y=3,则显示11,即4除3商1余1,结果正确。
保持X=4,Y=3当按下最左边的负脉冲按键时,执行减法操作,数码管显示为1,即4-3=1,修改X=8,Y=3后,数码管显示5,即8-3=5,结果正确。
同理,拨动拨码开关使X=4,Y=3,当按下左数第二个的负脉冲按键时,执行加法操作,数码管显示为7,即4+3=7,重复置数测试结果都正确。
当按下左数第三个的负脉冲按键时,执行加乘操作,使X=4,Y=2,数码管显示为8,X=6,Y=2时,数码管显示为C(12),重复测试结果正确。
并且除了除法操作以外,其余计算中当十位为0时,则十位的0自动熄灭。
总之,经过实验箱硬件测试,本次试验设计的简易计算器完全符合选题要求,功能正确~
3、总结与体会
(1)故障分析及解决方案
简易计算器作为第二次选题试验,难度在所有选题中并不算高,而且设计思路很明确。
但是在整个为期4天的设计测试过程中依然遇到很很多很多的问题,在波形模拟正确的前提下,进行硬件测试的过程也出现了了很多故障。
首先就是加减乘除的控制问题,由于8个拨码开关全部用于置数,那么控制计算方式的开关就只能用矩阵键盘。
但是按照组合电路设计好并分配管脚后不管按不按键盘,计算
方式都默认为除法没有任何改变。
后来在老师的指导下使用了边上四个单独的负脉冲按键,并且用程序编了一个编码器。
第一次测试失败的原因是貌似那个试验箱的四个负脉冲按键不好使,当时觉得是程序不对,后来我们组另一个人在他箱子上测试可以控制,这才算解决问题。
另外还有显示的环节,数码管不管怎么样都显示两个8,电路程序模拟波形都没问题,后来问别的同学才发现CLK输入没加分频器,直接50MHZ就进去了,使数码管显示混乱,加了7个10分频的74290后,显示就正常了。
(2)心得体会。