四则运算计算器数字电路设计
- 格式:doc
- 大小:13.00 KB
- 文档页数:1
计算器实验报告计算器实验报告引言:计算器是一种广泛应用于日常生活和工作中的电子设备。
它的出现极大地方便了人们的计算工作,提高了计算的准确性和效率。
本实验旨在深入了解计算器的原理和工作方式,并通过实际操作,探索计算器的功能和使用方法。
一、计算器的原理和结构计算器是一种基于数字电路和逻辑电路的电子设备。
它主要由处理器、显示屏、键盘和电源等组成。
处理器是计算器的核心部件,负责执行各种计算操作。
显示屏用于显示计算结果和输入的数据。
键盘则用于输入数字和操作符。
电源为计算器提供电能。
二、计算器的基本功能1. 四则运算:计算器可以进行加、减、乘、除等基本的四则运算。
用户只需按下相应的数字和操作符键,计算器即可自动完成计算,并在显示屏上显示结果。
2. 百分数计算:计算器还可以进行百分数的计算。
用户只需输入百分数和相应的操作符,计算器将自动将百分数转换为小数,并进行计算。
3. 平方根和乘方计算:计算器还具备开平方根和乘方的功能。
用户只需按下相应的键,输入要计算的数字,计算器将自动进行计算,并在显示屏上显示结果。
4. 括号和优先级计算:计算器支持括号和优先级计算。
用户可以使用括号来改变计算的顺序,并通过设置优先级来控制计算的顺序。
三、计算器的使用方法1. 数字输入:用户可以通过按下相应的数字键来输入数字。
计算器一般有0到9的数字键,用户可以按下多次来输入多位数。
2. 操作符输入:计算器一般有加、减、乘、除等操作符键。
用户可以按下相应的操作符键来输入操作符。
3. 清除和删除:计算器一般有清除和删除键。
用户可以使用清除键来清除计算器的显示屏和内存中的数据。
删除键则用于删除输入的数字和操作符。
4. 计算结果:用户可以按下等号键来计算结果。
计算器将根据输入的数字和操作符进行计算,并在显示屏上显示结果。
四、实验过程和结果在实验中,我们使用了一款普通的计算器进行操作。
首先,我们按下数字键输入了一组数字,然后按下操作符键进行四则运算。
基于单片机实现的四则运算计算器姓名学号:班级:专业名称:测控技术与仪器指导教师:东北大学2016年1月课程设计(论文)任务书目录课程设计(论文)任务书................................................................................................ i i 摘要 (1)第1章绪论 (2)1.1计算器简介 (2)1.2设计主要内容 (2)第2章系统硬件设计 (4)2.1硬件组成 (4)2.2输入模块 (4)2.3输出模块 (5)2.4运算模块 (5)第3章系统软件设计 (7)3.1 主程序 (7)3.1.1主程序框图及初始化 (7)3.1.2LCD程序框图及初始化 (8)3.1.3键盘程序框图及初始化 (9)3.1.4运算程序框图 (10)第4章调试测试与实验分析 (11)4.1 计算器调试 (11)参考文献 (12)心得体会 (13)附录硬件原理图及PCB图 (14)附录程序清单 (15)附录实物照片 (28)摘要单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。
本设计是基于89C52RC单片机来进行的四则运算计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除的基本四则运算,并在LCD1602液晶显示屏上显示相应的结果。
本电路采用89C52RC单片机为主要控制电路,利用4*4矩阵键盘作为计算器以及运算符的输入。
显示采用字符LCD静态显示。
软件用C语言编程,并用开发板进行演示。
关键词:计算器,89C52RC单片机,LCD,矩阵键盘第1章绪论1.1计算器简介计算器是现代人们发明的可以进行数字运算的电子机器。
现代的电子计算器能进行数学运算的手持电子机器,除显示计算结果外,还常有溢出指示、错误指示等,拥有集成电路芯片,但结构比电脑简单得多,可以说是第一代的电子计算机(电脑),且功能也较弱,但较为方便与廉价,可广泛运用于商业交易和学习计算中,是必备的学习和办公用品之一[1]。
《电子设计自动化》课程设计题目: 2位十进制四则运算器电路摘要本次设计的目的是通过QuartusII软件实现输入两个2位十进制数(0~99),输出它们的四则运算(加减乘除)结果(发光二极管显示运算模式;调用LPM_MULT、LPM_CONSTANT及LPM_DIVIDE模块)。
实现的方法是利用四则运算的规律进行初步设计,然后进行调整和修改。
最终结果要求:随机的输入两个数,经过加法、减法、乘法和除法的运算,可以得到正确的运算结果。
主要分为4大部分:一、2位十进制数模块;二、加减乘除四则运算四个小模块;三、加减乘除四则运算的选择模块;四、处理输出结果的模块。
目录1 系统设计 (4)2 单元电路设计 (5)3 软件设计 (5)4 系统测试 (14)5 结论 (14)6 参考文献 (14)1、系统设计一、设计要求:输入两个2位十进制数(0~99),输出它们的四则运算(加减乘除)结果;发光二极管显示运算模式;可调用LPM_MULT及LPM_DIVIDE模块。
二、系统设计方案:(1)系统设计思路要完成2位十进制四则运算器电路,首先,需要生成2个两位的十进制数,其次,需要加减乘除四个运算,然后,四种运算的选择,最后,对输出结果的处理。
2个2位十进制模块:法一,用两个100进制计数器构成;法二,用4个10进制计数器构成。
因为add1模块(后面详细介绍)只有两个输入口,所以选择法一比较方便。
加减乘除四则运算:①加法:写一个加法程序,制成模块,再分别取出它的各位、十位、百位。
②减法:写一个减法程序,用调用LPM的方法制成一个模块,在分别取出它的各位、十位和符号位。
③乘法:直接调用内部LPM,制成乘法模块。
④除法:直接调用内部LPM,制成除法模块。
加减乘除运算的选择:写一个4路选择器,分别选择加减乘除。
对输出结果的处理:写一个程序,对应不同选择下的不同输出,注意位数(加法:输出在0~198之间,需3个LED灯来显示;减法:输出在0~99之间,需3个LED灯(其中一个符号位);乘法:输出在0~9801之间,需4个LED灯;除法:输出在0~99之间,需2个LED灯。
四则运算计算器设计说明书一、设计目标本次计算器的程序设计,通过使用JAVA中的AWT包和Swing包的类库设计图形界面的计算器。
此计算器能够完成加减乘除的四则混合运算。
利用面向对象程序设计的思想,将各个组件的事件响应分别用不同的方式表达出来,并且使用了图形界面中的事件委托机制来处理事件响应。
二、设计流程1.分析该计算器需要完成的功能。
用户能够完成添加负号的四则混合运算,开方,取倒数,并且计算器能够自动识别运算符的优先级,根据用户输入的运算表达式,自动计算出相应的结果。
同时还完成了计算器中C按钮清屏功能和Backspace退格键。
2. 考虑异常处理。
(1)当输入的表达式中出现除零的操作,显示框将显示“Infinity(无穷大)”。
(2)当输入的表达式错误时,将弹出提示框显示“表达式错误请重新输入”(3)当计算器的显示文本框里为没有输入内容时直接点击等号按钮3. 编码实现计算器的功能。
(1)新建相关的文件。
(2)引入JAVA中相关的包。
(3)定义相关的变量,创建相关组件,并对组件的属性进行设置。
(4)对所创建的组件进行布局,完成界面的实现。
(5)为各个组件添加事件监听器。
(6)重写事件接口ActionListener的方法public voidactionPerformed(ActionEvent e)。
(7)为各个组件编写事件代码,完成每个按钮的不同功能。
三、程序截图四、程序代码import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;public class Calc extends JFrame implements ActionListener { JPanel topPanel = null;JPanel midPanel = null;JPanel bottomPanel = null;JTextField tResult = null;JButton backspaceButton = null;JButton ceButton = null;JButton cButton = null;JButton button1 = null;JButton button2 = null;JButton button3 = null;JButton button4 = null;JButton button5 = null;JButton button6 = null;JButton button7 = null;JButton button8 = null;JButton button9 = null;JButton button0 = null;JButton buttonDiv = null;JButton buttonPlus = null;JButton buttonMinus = null;JButton buttonMul = null;JButton buttonSqrt = null;JButton buttonMod = null;JButton buttonPM = null;JButton buttonX = null;JButton buttonPoint = null;JButton buttonEquals = null;StringBuffer str = new StringBuffer();boolean isDouble = false;// 是否为实数int opFlag = -1;static double t1 = 0, t2 = 0, t3 = 0, result = 0;static int opflag1 = -1, opflag2 = -1, flag = 0, resflag = 1;int preOp, currentOp = 0;// 标准位double op1 = 0, op2 = 0;// 操作数double n3;// 取得屏幕对象Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); // 取得屏幕的宽度int width = screenSize.width;// 取得屏幕的高度int heigth = screenSize.height;public Calc() {tResult = new JTextField("0.");tResult.setColumns(26);tResult.setHorizontalAlignment(JTextField.RIGHT);topPanel = new JPanel();topPanel.add(tResult);backspaceButton = new JButton("Backspace");backspaceButton.addActionListener(this);ceButton = new JButton("CE");ceButton.addActionListener(this);cButton = new JButton("C");cButton.addActionListener(this);midPanel = new JPanel();midPanel.add(backspaceButton);midPanel.add(ceButton);midPanel.add(cButton);bottomPanel = new JPanel(new GridLayout(4, 5, 3, 3));button7 = new JButton("7");button7.addActionListener(this);bottomPanel.add(button7);button8 = new JButton("8");button8.addActionListener(this);bottomPanel.add(button8);button9 = new JButton("9"); button9.addActionListener(this); bottomPanel.add(button9);buttonDiv = new JButton("/"); buttonDiv.addActionListener(this); bottomPanel.add(buttonDiv);buttonSqrt = new JButton("sqrt"); buttonSqrt.addActionListener(this); bottomPanel.add(buttonSqrt);button4 = new JButton("4"); button4.addActionListener(this); bottomPanel.add(button4);button5 = new JButton("5"); button5.addActionListener(this); bottomPanel.add(button5);button6 = new JButton("6"); button6.addActionListener(this); bottomPanel.add(button6);buttonMul = new JButton("*"); buttonMul.addActionListener(this); bottomPanel.add(buttonMul);buttonMod = new JButton("%"); buttonMod.addActionListener(this); bottomPanel.add(buttonMod);button1 = new JButton("1"); button1.addActionListener(this); bottomPanel.add(button1);button2 = new JButton("2"); button2.addActionListener(this); bottomPanel.add(button2);button3 = new JButton("3"); button3.addActionListener(this); bottomPanel.add(button3);buttonMinus = new JButton("-");buttonMinus.addActionListener(this);bottomPanel.add(buttonMinus);buttonX = new JButton("1/x");buttonX.addActionListener(this);bottomPanel.add(buttonX);button0 = new JButton("0");button0.addActionListener(this);bottomPanel.add(button0);buttonPM = new JButton("+/-");buttonPM.addActionListener(this);bottomPanel.add(buttonPM);buttonPoint = new JButton(".");buttonPoint.addActionListener(this);bottomPanel.add(buttonPoint);buttonPlus = new JButton("+");buttonPlus.addActionListener(this);bottomPanel.add(buttonPlus);buttonEquals = new JButton("=");buttonEquals.addActionListener(this);bottomPanel.add(buttonEquals);this.setLayout(new BorderLayout());this.add(topPanel, "North");this.add(midPanel, "Center");this.add(bottomPanel, "South");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(310, 225);this.setResizable(false);// 设置窗体出现在屏幕的中央this.setLocation((width - this.getWidth()) / 2,(heigth - this.getHeight()) / 2);this.setVisible(true);}/*** @param args*/public static void main(String[] args) {new Calc();}@Overridepublic void actionPerformed(ActionEvent e) {String s = e.getActionCommand().trim();if (s.equals("CE")) {// 如果是CE则清除文本框tResult.setText("0.");} else if (s.equals("Backspace")) {if (!tResult.getText().trim().equals("0.")) {// 如果文本框中有内容if (str.length() != 1 && str.length() != 0) {tResult.setText(str.delete(str.length() - 1, str.length()).toString());} else {tResult.setText("0.");str.setLength(0);}}op2 = Double.parseDouble(tResult.getText().trim());} else if (s.equals("C")) {// 如果是C删除当前计算tResult.setText("0.");op1 = op2 = 0;str.replace(0, str.length(), " ");preOp = currentOp = 0;} else if (s.equals("1/x")) {// 如果按键为1/x则将文本框中的数据为它的倒数String temp = tResult.getText().trim();double dtemp = Double.parseDouble(temp);tResult.setText("" + 1 / dtemp);} else if (s.equals("sqrt")) {// 如果按键为sqrt则将文本框中的内容求平方根String temp = tResult.getText().trim();double dtemp = Double.parseDouble(temp);tResult.setText("" + Math.sqrt(dtemp));} else if (s.equals("+")) {str.setLength(0);if (currentOp == 0) {preOp = currentOp = 1;op2 = 0;tResult.setText("" + op1);} else {currentOp = preOp;preOp = 1;switch (currentOp) {case 1:op1 += op2;tResult.setText("" + op1);break;case 2:op1 -= op2;tResult.setText("" + op1);break;case 3:op1 *= op2;tResult.setText("" + op1);break;case 4:op1 /= op2;tResult.setText("" + op1);break;}}} else if (s.equals("-")) {str.setLength(0);if (currentOp == 0) {preOp = currentOp = 2;// op1=op2;op2=0;tResult.setText("" + op1);} else {currentOp = preOp;preOp = 2;switch (currentOp) {case 1:op1 = op1 + op2;tResult.setText("" + op1);break;case 2:op1 = op1 - op2;tResult.setText("" + op1);break;case 3:op1 = op1 * op2;tResult.setText("" + op1);break;case 4:op1 = op1 / op2;tResult.setText("" + op1);break;}}} else if (s.equals("*"))// *{str.setLength(0);if (currentOp == 0) {preOp = currentOp = 3;// op1=op2;op2=1;tResult.setText("" + op1);// op1=op2;} else {currentOp = preOp;preOp = 3;switch (currentOp) {case 1:op1 = op1 + op2;tResult.setText("" + op1);break;case 2:op1 = op1 - op2;tResult.setText("" + op1);break;case 3:op1 = op1 * op2;tResult.setText("" + op1);break;case 4:op1 = op1 / op2;tResult.setText("" + op1);break;}}} else if (s.equals("/"))// /{str.setLength(0);if (currentOp == 0) {preOp = currentOp = 4;// op2=1;tResult.setText("" + op1);// op1=op2;} else {currentOp = preOp;preOp = 4;switch (currentOp) {case 1:op1 = op1 + op2;tResult.setText("" + op1);break;case 2:op1 = op1 - op2;tResult.setText("" + op1);break;case 3:op1 = op1 * op2;tResult.setText("" + op1);break;case 4:op1 = op1 / op2;tResult.setText("" + op1);break;}}} else if (s.equals("="))// ={if (currentOp == 0) {str.setLength(0);tResult.setText("" + op2);} else {str.setLength(0);currentOp = preOp;switch (currentOp) {case 1:op1 = op1 + op2;tResult.setText("" + op1);break;case 2:op1 = op1 - op2;tResult.setText("" + op1);break;case 3:op1 = op1 * op2;tResult.setText("" + op1);break;case 4:op1 = op1 / op2;tResult.setText("" + op1);break;}currentOp = 0;op2 = 0;}} else if (s.equals(".")) {isDouble = true;if (tResult.getText().trim().indexOf('.') != -1);else {if (tResult.getText().trim().equals("0")) {str.setLength(0);tResult.setText((str.append("0" + s)).toString());}// else// if(tResult.getText().trim().equals("")){}//如果初时显示为空则不做任何操作else {tResult.setText((str.append(s)).toString());}}} else if (s.equals("0"))// 如果选择的是"0"这个数字键{if (tResult.getText().trim().equals("0.")) {} else {tResult.setText(str.append(s).toString());op2 = Double.parseDouble(tResult.getText().trim());}} else if (s.equals("%"))// 如果选择的是"0"这个数字键{} else {tResult.setText(str.append(s).toString());op2 = Double.parseDouble(tResult.getText().trim());if (currentOp == 0)op1 = op2;}}}。
摘要当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。
计算器作为一种快速通用的计算工具方便了用户的使用。
计算器可谓是我们最亲密的电子伙伴之一。
本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。
单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。
在工业生产中。
单片微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
本系统采用AT89C52设计计算器控制器,实现了能根据实际输入值显示,简单运算的功能。
关键词:电子;微控制器;AT89C52单片机;四则运算器;正文一、设计目的和要求课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。
进行课程设计可以让学生把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发了学生再深一步学习的热情,因此课程设计是必不少的,是非常必要的。
本次课程设计是设计一个简易的四则运算计算器,四则运算器设计要求:用AT89C51单片机设计一个简易的一位四则运算器,扩展4×4个键,分别表示为0~9、+、-、×、÷、RESULT、CLEAR,并连接两个数码管。
具体要求如下:(1)按CLEAR,数码管显示“0”,表示系统清零;(2)分别按数字键、运算符键、数字键、RESULT键后,在数码管上显示其运算结果。
二、系统总体设计方案本次设计的简易的四则运算器,其只限于两位数的数值运算,并在数码管上实现了显示,可以显示两次输入的数值,输入计算符则数码管清除,无法显示小数,无法显示负数值。
图1.单片机功能示意图三、单片机的概述:系统采用AT89C51单片机,该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
《汇编语言》课程设计说明书设计题目四则运算计算器的设计专业班级学号姓名指导教师起止日期成绩课程设计任务书一、设计题目:四则运算计算器的设计二、设计的主要内容:设计一个能实现加减乘除取余计算的程序。
将键盘输入的表达式预放入一缓冲区中,然后从该缓冲区的第一个字符开始读取判断,当读到一个有效的表达式时对表达式进行相应的运算后,输出用十六进制数表示的运算结果。
目标:要求该程序接受从键盘输入的十六进制数,执行相应的计算后,计算结果以十六进制数输出。
指导教师:教研室主任:1选题背景及意义运用汇编语言,实现简单计算器的一般功能.通过该程序设计,让我们熟悉并掌握DOS系统功能调方法用及BIOS系统功能调用方法,同时在程序设计过程中熟悉并掌握各种指令的应用,知道编程的具体流程,以及掌握DEBUG的一系列的功能执行命令,及用它进行调试,运行功能。
2主要设计内容及预期目标设计一个能实现加减乘除取余计算的程序。
将键盘输入的表达式预放入一缓冲区中,然后从该缓冲区的第一个字符开始读取判断,当读到一个有效的表达式时对表达式进行相应的运算后,输出用十六进制数表示的运算结果。
目标:要求该程序接受从键盘输入的十六进制数,执行相应的计算后,计算结果以十六进制数输出。
3 概要设计本题目实现的模块图如图3-1所示图3-1 概要模块(1)界面设置主要实现确定界面样式的功能,以菜单形式显示。
(2)选择算法设置用于选择加、减、乘、除法来进行运算。
(3)十进制转换设置应用十进制的转换算法来处理加、减、乘、除法四则运算。
4 详细设计4.1 界面设置通过定义数据段,利用09H显示出功能列表。
通过定义数据段,以字符串的形式输入每个提示信息,利用09H键盘输入并回显命令显示每一个功能提示,是计算器的功能列表有序清晰的显示在屏幕上。
4.2 选择算法设置首先选择要进行的四则运算,若选择1,则进行加法;若选择2,则进行减法;若选择3,则进行乘法;若选择4,则进行除法。
微机原理实验报告汇编语言课程设计报告( 2012 -- 2013 年度第1 学期)实验名称:实现加减乘除四则运算的计算器专业生物医学工程学生姓名周炳威班级B100904学号B10090406指导教师乐洋实现加减乘除四则运算的计算器1 实验目的深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。
通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用2 实验内容课题名称:实现加减乘除四则运算的计算器主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。
计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。
3 实现方法本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。
由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。
此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。
第一步,用INT 21H的1号功能调用来进行输入。
利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。
我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了。
在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错。
第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是‘+’号、‘-’号、‘*’号、‘/’号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。
学院:班级:姓名:学号:课程设计题目:四则运算计算器课程名称:汇编语言与微机原理评阅成绩:评阅意见:成绩评定教师签名:日期:年月目录概述 (1)一、设计要求 (1)二、设计思想 (1)三、程序工作原理 (2)四、程序流程图及说明 (3)五、程序源代码 (7)六、程序运行示例 (18)七、设计过程中遇到的问题及解决方法 (18)八、设计心得 (19)九、参考文献 (19)四则运算计算器概述此计算器,可以实现从键盘输入一个十进制的四则运算表达式,如:-3+4*(5-6)-8/2,编程计算表达式的值,输出十进制结果。
表达式和结果可以是三位或四位十进制,也可以是带负数的十进制数,并且+-*/()位置任意摆放(只要符合数学上的运算逻辑)。
一、设计要求用汇编语言设计一个程序,用来实现计算器的四则运算功能。
需要实现在屏幕要显示输入的表达式,以及运算结果。
例如:-3+4*(5-6)-8/2计算表达式的结果,并将该表达式及结果显示出来;设计要求如下:(1)由键盘作为输入部分。
(2)能进行四则混合运算,并且能计算带括号和负数的数学表达式。
(3)按ESC 键则退出计算器菜单界面并返回dos 系统,否则继续输入表达式,求得对应的结果。
二、设计思想根据题目的要求,可以把整个源程序大致划分六大步骤。
(1)首先键盘输入合法中缀算术表达式,并将其存储到S1中。
(2)然后调用子程序CHANGE将中缀式转化为后缀式。
(3)调用子程序CALCULATE对后缀表达式进行有符号数的运算,并将最终结果存放在栈中。
(4)POP AX,AX->STORAGE,即用STORAGE 存放最终运算结果。
(5)调用子程序OUTPUT将运算结果输出。
(6)通过用键盘输入ESC退出DOS程序。
三、程序工作原理步骤一的原理:此处用系统功能1号调用,每次从键盘输入一个字符,就将其存入到数组S1中,然后在判断此字符是否为回车,如果不是,则循环,继续输入字符,否则,程序往下执行。
十进制四则运算计算器的设计与实现1.问题描述(1)题目描述:在以二叉树表示算术表达式的基础上,设计一个十进制的四则运算计算器。
(2)基本要求:实现整数或浮点数的四则运算。
(3)测试数据:12 - ( - 4 ) * ( ( 20 + 3 / 5 ) * 8 / 5 ) * ( - 4 ) #=-515.36- ( 22.7 - 4208.3 ) / ( ( 2.4 + 1.6 ) * 12 ) + 4.4 - 2.9 #=88.710 - ( - 3 ) * ( ( 21 + 3 / 5 ) * 8 / 3 ) * ( - 2 ) #=-335.62.需求分析(1)程序实现的功能是从键盘输入有效的表达式,求出其值并输出(2)程序运行后,会提示用户输入表达式,并判断是否有效,并返回值3.概要设计为了实现程序功能,用二叉树存储表达式,然后从二叉树按后序遍历的方式取出数据,进行运算,运算时用堆栈存储数据。
(1)二叉链表的定义ADT BinaryTree{//数据对象D:D是具有相同特性的数据元素的集合。
//数据关系R:// 若D=Φ,则R=Φ,称BinaryTree为空二叉树;// 若D≠Φ,则R={H},H是如下二元关系;// (1)在D中存在惟一的称为根的数据元素root,它在关系H下无前驱;// (2)若D-{root}≠Φ,则存在D-{root}={D1,Dr},且D1∩Dr =Φ;// (3)若D1≠Φ,则D1中存在惟一的元素x1,<root,x1>∈H,且存在D1上的关系H1 ?H;若Dr≠Φ,则Dr中存在惟一的元素xr,<root,xr>∈H,且存在上的关系Hr ?H;H={<root,x1>,<root,xr>,H1,Hr};// (4)(D1,{H1})是一棵符合本定义的二叉树,称为根的左子树;(Dr,{Hr})是一棵符合本定义的二叉树,称为根的右子树。
单片机应用课程设计报告设计题目8位四则运算计算器姓名胡成、柏壮壮、王庆安、杜威、孙润学号Z11414107、Z11414039Z11414075、Z11414101、Z11414105年级2014级专业自动化指导教师张道信、张德祥考核成绩电气工程与自动化学院2017 年6 月28 日8位四则运算计数器摘要随着时代的发展,单片机在生活中应用越来越广泛。
而生活中,用到计算的场合十分之多,有时候计算较复杂时,人工计算远远不及计算器的快速性、准确性。
因此计算器的出现大大便捷了人类生活。
本文介绍用STC89C52RC单片机来设计简单四则运算计算器。
关键词:STC89C52RC、硬件电路、软件程序8 Bit Arithmetics CalculatingAbstractWith the development of the era, MCU becomes more and more general in life. And calculation applies to many occasions in life, sometimes calculate by self can not be comparable to calculating in complex occasions, especially in the aspect of rapidity and accuracy. So, the appearance of calculating has convenient people’s lives. This writings introduces how to design simple arithmetics calculating with STC89C52RC MCU.Keywords: MCU、Hardware circuit、Software program目录摘要 (2)第1章单片机的基本概述 (4)1.1 基本概述 (4)第2章单片机应用课程设计的目的和意义 (5)2.1 设计的目的和意义 (5)第3章系统的硬件电路设计 (6)3.1 系统的整体设计框架 (6)3.2 系统的硬件设计模块 (6)3.2.1晶振电路 (6)3.2.2复位电路 (7)3.2.3矩阵键盘电路 (7)3.2.4蜂鸣器电路 (8)3.2.5 LCD显示电路 (8)第4章系统的软件设计 (9)4.1 矩阵键盘扫描程序 (9)4.2 LCD程序 (11)第5章功能分析 (14)5.1 功能分析 (14)第6章个人心得体会 (15)6.1 胡成的心得体会 (15)6.2 柏壮壮的心得体会 (15)6.3 王庆安的心得体会 (15)6.4 杜威的心得体会 (15)6.5 孙润的心得体会 (15)参考文献 (16)附录一硬件电路图 (17)附录二系统硬件电路照片 (18)第1章单片机的基本概述1.1 基本概述单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统。
摘要当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。
计算器作为一种快速通用的计算工具方便了用户的使用。
计算器可谓是我们最亲密的电子伙伴之一。
本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究.单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。
在工业生产中。
单片微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片微型计算机简称单片机,特别适用于控制领域,故又称为微控制器.本系统采用AT89C52设计计算器控制器,实现了能根据实际输入值显示,简单运算的功能。
关键词:电子;微控制器;AT89C52单片机;四则运算器;正文一、设计目的和要求课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。
进行课程设计可以让学生把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发了学生再深一步学习的热情,因此课程设计是必不少的,是非常必要的。
本次课程设计是设计一个简易的四则运算计算器,四则运算器设计要求:用AT89C51单片机设计一个简易的一位四则运算器,扩展4×4个键,分别表示为0~9、+、—、×、÷、RESULT、CLEAR,并连接两个数码管。
具体要求如下:(1)按CLEAR,数码管显示“0”,表示系统清零;(2)分别按数字键、运算符键、数字键、RESULT键后,在数码管上显示其运算结果。
二、系统总体设计方案本次设计的简易的四则运算器,其只限于两位数的数值运算,并在数码管上实现了显示,可以显示两次输入的数值,输入计算符则数码管清除,无法显示小数,无法显示负数值。
图1.单片机功能示意图三、单片机的概述:系统采用AT89C51单片机,该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS—51指令集和输出管脚相兼容。
四则运算计算器程序设计(java-gui) 四则运算计算器程序是一种常见的计算机程序,用于执行基本的数学运算,包括加法、减法、乘法和除法。
本文将介绍如何设计一个使用Java GUI实现的四则运算计算器程序。
首先,我们需要创建一个Java GUI窗体,用于显示计算器的界面。
可以使用Java Swing或JavaFX来创建窗体,本文以Java Swing为例。
可以使用JFrame类来创建一个窗体,并添加各种组件,如按钮、标签和文本框等。
在窗体中,我们需要添加一个文本框用于输入表达式和显示结果。
可以使用JTextField类来创建一个文本框,并设置合适的大小和位置。
另外,我们还需要添加一些按钮来表示数字和运算符,可以使用JButton类来创建按钮,并将其添加到窗体中。
接下来,我们需要为按钮添加事件监听器,以便在用户点击按钮时执行相应的操作。
例如,当用户点击数字按钮时,我们需要将相应的数字添加到文本框中;当用户点击运算符按钮时,我们需要将相应的运算符添加到文本框中;当用户点击等号按钮时,我们需要解析文本框中的表达式,并执行相应的运算。
为了实现四则运算,我们可以使用Java的数学库来执行相应的运算。
例如,可以使用Integer.parseInt方法将文本框中的字符串转换为整数,使用加法运算符执行加法运算,使用乘法运算符执行乘法运算等。
在解析和执行表达式时,我们需要考虑一些错误情况,例如除数为零或表达式不合法等。
可以使用try-catch语句来捕获这些异常,并显示相应的错误信息。
最后,我们需要将计算结果显示在文本框中,并提供清除按钮,以便用户可以清除文本框中的内容。
可以使用setText方法将计算结果显示在文本框中,使用setText("")方法来清除文本框中的内容。
综上所述,一个基本的四则运算计算器程序的设计包括创建窗体、添加组件、添加事件监听器、解析和执行表达式、处理异常和显示结果等步骤。
四则运算运算计算器数字电路设计由于加减乘除计算器的各电路较复杂,就不将其组合在一起了,以下是各个加法,减法,乘法,除法计算器的单独电路图,其中输入均采用二进制四位输入。
一.加法计算器这个较为简单,可以直接利用中规模四位全加器74LS283,即可制成加法计算器。
电路图:A4 A3 A2 A1 为二进制被加数;B4 B3 B2 B1 为二进制加数;SUM4 SUM3 SUM2 SUM1 为二进制得数。
加上输入输出后如图所示:仿真图形为:前四个图像为被加数,中间四位为加数,后四位为得数。
由此可看出,已成功制成加法计算器。
二.减法计算器电路图:利用数据选择器和四输入与非门,可以实现减法计算器的功能,其中,C1 C2 C3 C4为四位二进制被减数输入端;B1 B2 B3 B4 为四位二进制减数输入端;输出端 27 26 25 24 为得数。
加上输入输出后如图所示:仿真图形如下:前四位为被减数,中间四位为减数,最下面四位为得数,由仿真图形可看出,已成功制成减法计算器。
三.乘法计算器利用中规模四位全加器74LS283和而输入与门可以实现乘法计算器功能。
其中,输入端4 3 2 1 为二进制四位被乘数,输入端5 6 7 8 为二进制四位乘数,输出端54 50 51 52 53 49 48 46 47为得数。
电路图如下:加上输入输出后:仿真图形为:1被乘数和乘数:2得数:由仿真图形可以看出,已成功制成了乘法计算器。
四.除法计算器这个实在是太难了,想了好久也没想到怎么设计,作业催的紧,就只好先不做了,请老师见谅,哈!以上就是四则计算器的数字电路设计与仿真。
《电子设计自动化》课程设计题目:2位十进制四则运算器电路院(系)专业届别班级学号姓名任课老师摘要本次设计的目的是通过QuartusII软件实现输入两个2位十进制数(0~99),输出它们的四则运算(加减乘除)结果(发光二极管显示运算模式;调用LPM_MULT、LPM_CONSTANT及LPM_DIVIDE模块)。
实现的方法是利用四则运算的规律进行初步设计,然后进行调整和修改。
最终结果要求:随机的输入两个数,经过加法、减法、乘法和除法的运算,可以得到正确的运算结果。
主要分为4大部分:一、2位十进制数模块;二、加减乘除四则运算四个小模块;三、加减乘除四则运算的选择模块;四、处理输出结果的模块。
目录1 系统设计 (4)2 单元电路设计 (5)3 软件设计 (5)4 系统测试 (14)5 结论 (14)6 参考文献 (14)1、系统设计一、设计要求:输入两个2位十进制数(0~99),输出它们的四则运算(加减乘除)结果;发光二极管显示运算模式;可调用LPM_MULT及LPM_DIVIDE模块。
二、系统设计方案:(1)系统设计思路要完成2位十进制四则运算器电路,首先,需要生成2个两位的十进制数,其次,需要加减乘除四个运算,然后,四种运算的选择,最后,对输出结果的处理。
2个2位十进制模块:法一,用两个100进制计数器构成;法二,用4个10进制计数器构成。
因为add1模块(后面详细介绍)只有两个输入口,所以选择法一比较方便。
加减乘除四则运算:①加法:写一个加法程序,制成模块,再分别取出它的各位、十位、百位。
②减法:写一个减法程序,用调用LPM的方法制成一个模块,在分别取出它的各位、十位和符号位。
③乘法:直接调用内部LPM,制成乘法模块。
④除法:直接调用内部LPM,制成除法模块。
加减乘除运算的选择:写一个4路选择器,分别选择加减乘除。
对输出结果的处理:写一个程序,对应不同选择下的不同输出,注意位数(加法:输出在0~198之间,需3个LED灯来显示;减法:输出在0~99之间,需3个LED灯(其中一个符号位);乘法:输出在0~9801之间,需4个LED灯;除法:输出在0~99之间,需2个LED灯。
精心整理
四则运算运算计算器数字电路设计
由于加减乘除计算器的各电路较复杂,就不将其组合在一起了,以下是各个加法,减法,乘法,除法计算器的单独电路图,其中输入均采用二进制四位输入。
一.加法计算器
这个较为简单,可以直接利用中规模四位全加器74LS283,即可制成加法计算器。
电路图:
A4A3A2A1为二进制被加数;B4B3B2B1为二进制加数;SUM4SUM3SUM2SUM1为二进制得数。
加上输入输出后如图所示:
仿真图形为:
前四个图像为被加数,中间四位为加数,后四位为得数。
由此可看出,已成功制成加法计算器。
二.减法计算器
电路图:
利用数据选择器和四输入与非门,可以实现减法计算器的功能,其中,C1C2C3C4为四位二进制被减数输入端;B1B2B3B4为四位二进制减数输入端;输出端27262524为得数。
加上输入输出后如图所示:
仿真图形如下:
前四位为被减数,中间四位为减数,最下面四位为得数,由仿真图形可看出,已成功制成减法计算器。
三.乘法计算器
利用中规模四位全加器74LS283和而输入与门可以实现乘法计算器功能。
其中,输入端4321为二进制四位被乘数,输入端5678为二进制四位乘数,
输出端545051525349484647为得数。
电路图如下:
加上输入输出后:
仿真图形为:
1被乘数和乘数:
2得数:
由仿真图形可以看出,已成功制成了乘法计算器。
四.除法计算器
这个实在是太难了,想了好久也没想到怎么设计,作业催的紧,就只好先不做了,请老师见谅,哈!
以上就是四则计算器的数字电路设计与仿真。