简易计算器的设计与实现

合集下载

简易计算器设计的课程设计

简易计算器设计的课程设计

简易计算器设计的课程设计一、课程目标知识目标:1. 学生能够理解简易计算器的基本原理,掌握其设计流程。

2. 学生能够运用所学编程知识,实现简易计算器的功能。

3. 学生能够了解并掌握计算器界面设计的基本原则。

技能目标:1. 学生能够运用所学的编程技能,独立完成简易计算器的设计与开发。

2. 学生能够通过编写代码,实现计算器的加、减、乘、除等基本运算功能。

3. 学生能够运用调试工具,对计算器程序进行测试和优化。

情感态度价值观目标:1. 学生在课程学习中,培养对编程的兴趣和热情,增强信息素养。

2. 学生通过团队协作,培养沟通能力和团队精神,学会共同解决问题。

3. 学生在设计与开发简易计算器的过程中,体验创新实践的过程,培养创新思维和动手能力。

课程性质:本课程为信息技术课程,旨在帮助学生将所学的编程知识运用到实际项目中,提高学生的编程实践能力和创新能力。

学生特点:六年级学生具备一定的编程基础,对新鲜事物充满好奇心,喜欢动手实践。

教学要求:结合学生特点和课程性质,注重理论与实践相结合,强调动手实践,培养创新思维。

在教学过程中,关注学生的个体差异,鼓励学生相互交流、合作,共同完成学习任务。

通过本课程的学习,使学生能够将所学知识运用到实际项目中,提高解决问题的能力。

二、教学内容1. 计算器原理:介绍计算器的基本工作原理,包括算术运算逻辑、数据存储与处理等。

教材章节:第三章 计算机硬件基础2. 编程语言基础:回顾所学的编程语言(如Python),重点掌握变量定义、数据类型、运算符、条件语句和循环语句等。

教材章节:第二章 编程语言基础3. 界面设计:讲解计算器界面设计的原则和技巧,如布局、颜色、字体等。

教材章节:第四章 用户界面设计4. 编程实现计算器功能:引导学生运用所学知识,编写程序实现计算器的加、减、乘、除等基本运算功能。

教材章节:第五章 算法与程序设计5. 程序调试与优化:教授学生如何使用调试工具,对计算器程序进行测试、调试和优化。

简单计算器的制作(实验版)

简单计算器的制作(实验版)
w属性修改为 属性修改为true,才能响应键盘按键 注意:将form1窗体的 窗体的 属性修改为 才能响应键盘按键 的按下消息. 的按下消息.
设计与实现
运算. (13)单个操作数的运算的处理,例如"1/x"运算.在按钮"1/x"的单击 )单个操作数的运算的处理,例如" 运算 在按钮" 的单击 事 件过程OnButton3Click中编写实现代码: 中编写实现代码: 件过程 中编写实现代码
注意: 注意:加,减,乘,除这些按钮都要做相应的处理!! 除这些按钮都要做相应的处理!!
设计与实现
(8)退格键(BackSpace)功能的实现.在按钮"BackSpace"的单击 )退格键( )功能的实现.在按钮" 的单击 事 件过程OnBackSpaceBtnClick中编写实现代码: 中编写实现代码: 件过程 中编写实现代码
设计与实现
当用户按下运算操作符按钮,在按钮" 单击事件过程中编写实现代码 单击事件过程中编写实现代码: 当用户按下运算操作符按钮,在按钮"+"单击事件过程中编写实现代码:
设计与实现
(4)定义一个可以根据不同的操作符进行不同运算的过程: 定义一个可以根据不同的操作符进行不同运算的过程: 定义一个可以根据不同的操作符进行不同运算的过程
设计与分析
混合运算的情况: 混合运算的情况 (1)在没有按下运算操作符按钮之前,通过按钮输入的数 字均作为第一个操作数,保存在opnum1变量中; (2)选择运算的种类,按下运算操作符按钮,首先对上一 次的运算进行求解,并把结果显示出来,同时把该计 算结果作为第一个操作数,存在到opnum1变量中,把 按下的运算操作符也保存在ca_operator变量中; (3)按下运算操作符按钮后(设置一个变量operated来记 录),通过按钮输入的数字均作为第二个操作数保存 在opnum2变量中; (4)按下"="按钮后,根据选择的运算操作符对两个操作数 进行运算,并把结果显示在edit编辑框中.

简易计算器设计范文

简易计算器设计范文

简易计算器设计范文首先,我们需要决定计算器的基本功能。

一个简易计算器通常应该具备加法、减法、乘法和除法的功能。

此外,我们还可以添加开方、求平方以及取模等功能。

在设计计算器之前,我们需要确定用户界面。

对于一个简易计算器来说,我们可以使用命令行界面或者图形用户界面。

在本文中,我们将使用命令行界面。

接下来我们需要设计计算器的算法。

为了实现加、减、乘、除这些基本运算,我们可以编写四个函数来完成。

比如,加法函数可以接收两个数并返回它们的和,减法函数可以接收两个数并返回它们的差,乘法函数可以接收两个数并返回它们的乘积,除法函数可以接收两个数并返回它们的商。

同时,我们还需要添加一些辅助函数来处理开方、求平方以及取模等功能。

比如,开方函数可以接收一个数并返回它的平方根,求平方函数可以接收一个数并返回它的平方,取模函数可以接收两个数并返回它们的余数。

在设计计算器时,我们还要考虑到用户输入的错误处理。

如果用户输入无效的操作或者除数为零,我们需要给出错误的提示信息。

接下来,我们来设计主要的程序流程。

首先,我们需要显示一个欢迎信息,告诉用户如何使用计算器。

然后,在一个循环中,我们会要求用户输入要执行的操作,然后读取用户输入的操作和操作数。

根据用户的选择,我们会调用相应的函数来执行计算,并输出结果。

接着,我们会继续询问用户是否要继续进行计算。

如果用户选择退出,我们会结束循环并显示一个退出信息。

最后,我们需要编写测试用例来确保计算器的功能正常。

我们可以输入一些固定的操作和操作数,然后验证计算器返回的结果是否正确。

如果测试用例中出现错误,我们需要进行修复。

在编写代码之前,我们还需要选择一个编程语言。

对于一个简易计算器来说,Python是一个非常适合的选择。

Python具有简单易读的语法,能够轻松地实现我们的设计。

下面是本文的设计示例:```python#导入所需的库import math#加法函数def add(x, y):return x + y#减法函数def subtract(x, y):return x - y#乘法函数def multiply(x, y):return x * y#除法函数def divide(x, y):if y == 0:raise ValueError("除数不能为零") return x / y#开方函数def square_root(x):if x < 0:raise ValueError("不能对负数开方") return math.sqrt(x)#求平方函数def square(x):return x ** 2#取模函数def modulo(x, y):if y == 0:raise ValueError("除数不能为零") return x % y#欢迎信息print("欢迎使用简易计算器!")print("请按以下方式输入操作:")print("加法:'a 数1 数2'")print("减法:'s 数1 数2'")print("乘法:'m 数1 数2'")print("除法:'d 数1 数2'")print("开方:'r 数'")print("求平方:'q 数'")print("取模:'o 数1 数2'")#主程序循环while True:#用户输入operation = input("输入操作:")data = operation.splitif data[0] == "a":result = add(float(data[1]), float(data[2])) print("结果为:", result)elif data[0] == "s":result = subtract(float(data[1]), float(data[2])) print("结果为:", result)elif data[0] == "m":result = multiply(float(data[1]), float(data[2])) print("结果为:", result)elif data[0] == "d":try:result = divide(float(data[1]), float(data[2])) print("结果为:", result)except ValueError as e:print("错误:", str(e))elif data[0] == "r":try:result = square_root(float(data[1]))print("结果为:", result)except ValueError as e:print("错误:", str(e))elif data[0] == "q":result = square(float(data[1]))print("结果为:", result)elif data[0] == "o":try:result = modulo(float(data[1]), float(data[2]))print("结果为:", result)except ValueError as e:print("错误:", str(e))else:print("无效的操作")#判断是否继续计算choice = input("是否继续计算?(y/n)")if choice == "n":breakprint("谢谢使用,再见!")```通过以上设计,我们可以在命令行中使用这个简易计算器来执行加、减、乘、除、开方、求平方和取模等操作。

毕业设计简易计算器

毕业设计简易计算器

毕业设计题目简易计算器系别专业班级姓名学号指导教师日期简易计算器的设计设计要求:1 设计一个具有加、减、乘、除的功能的计算器,只能进行小于255的数的加减乘除运算,并且可以连续运算。

当键入值大于255时,将自动清零,可以重新输入;2 设计完成该功能的硬件电路;3 设计完成上述功能的相应软件;4 在实验箱上调试出应有的效果。

设计进度要求:第一周:选定设计题目,查找、搜集相关资料。

第二周:了解各元器件、模块的功能及使用方法。

第三周:硬件电路的设计。

第四周:相应软件设计(程序设计)。

第五周:利用实验箱调试并记录相关的数据和错误。

第六周:利用实验箱调试并记录相关的数据和错误。

第七周:写毕业论文。

第八周:毕业答辩。

指导教师(签名):摘要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研等各个领域,已经成为一种比较成熟的技术,本文将介绍一种用单片机设计的计算器。

这个计算器除了会加减乘除的运算功能以外,还具有连续运算的功能。

当键入值或运算结果大于255时,它会自动清零,可以重新输入新值。

正文中首先简单描述了硬件系统的工作原理,且附以硬件系统的设计框图,论述了本次毕业设计所应用的各种硬件接口技术和各个接口模块的功能及工作过程, 并具体描述了外接电路接口的软、硬件调试。

其次阐述了程序的流程和实现过程。

本设计就是以单片机的基本语言汇编语言来进行软件设计,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。

使硬件在软件的控制下协调运作。

本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。

关键词:计算器,单片机,AT89C51,汇编语言,模块化目录目录 (I)前言 (1)1 单片机的发展及应用 (2)1.1 单片机的发展 (2)1.2 单片机的应用 (2)2 硬件系统设计 (4)2.1 总体框图设计 (4)2.2 单片机选型 (4)2.2.1 AT89C51的特点 (4)2.2.2 单片机附属电路 (6)2.3 四乘四键盘控制电路 (7)2.3.1 对矩阵式键盘的认识 (7)2.3.2 矩阵式键盘的按键识别方法 (8)2.4 LED 静态显示电路 (10)2.4.1 数码管简介 (10)2.4.2 显示的种类 (11)3 软件设计(程序设计) (14)3.1设计思路 (14)3.2 总体流程图 (14)3.3 显示子程序的框图和按键子程序框图 (15)4 调试过程 (18)4.1 在伟福中的调试 (18)4.2 在Keil中的调试并连接实验箱 (19)5 结论 (23)致谢 (24)参考文献 (25)附录A:硬件原理总图 (26)前言随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能将更强。

tkinter简易计算器的设计与实现实验报告心得体会

tkinter简易计算器的设计与实现实验报告心得体会

tkinter简易计算器的设计与实现实验报告心得体会一.设计任务及要求1.1实验任务:根据计算器的原理设计一个具有加减乘除功能的简易计算器。

如:5+3*4/8=4。

1.2实验基本要求:(1)实现最大输入两位十进制数字的四则运算(加减乘除)。

(2)能够实现多次连算(无优先级,从左到右计算结果)。

如:12+34*56-78/90+9=36(3)最大长度以数码管最大个数为限,溢出报警。

二.实验设计方案(1)用QuartusII的原理图输入来完成系统的顶层设计。

(2)用VHDL编写以及直接拖模块来各功能模块。

(3)通过2个脉冲分别实现个位数和十位数的输入。

(4)通过选择每次的输出数值,将输出值反馈到运算输入端(4)通过除法运算实现十六进制到十进制的转换输出。

三系统硬件设计FPGA:EP2C5T144C8目标板及相应外围硬件电路。

(从略)四系统软件设计1.数据输入模块原理:用VHDL创建模块,通过两个脉冲分别对两个数码管进行输入控制,再通过相应运算模块将两个独立数据转化成两位十进制数字。

2.运算模块原理:用VHDL创建模块,四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号来时,将所得结果反馈给运算模块输入端。

具体实现代码见附录二。

3.输出模块原理:用VHDL创建模块,通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据,并且通过除法模块将十六进制转化为十进制。

当输出结果溢出是LED0亮,同时数码管显示都为零。

部分实现见附录二。

五实验调试输入数据12,再按加法键,输入第二个数字25,按等号键,数码管显示37;按灭加法、等号键,输入第二个数据2,依次按等号键,减法键,数码管显示35;同上,按灭减法键、等号键,输入第三个数据7,依次按等号键,除法键,数码管显示5;按灭除法键、等号键,输入第四个数据99,依次按等号键,乘法键,数码管显示495,按灭乘法键、等号键,当前显示为99,依次按等号键、乘法键,数码管显示49005,同上进行若干次之后,结果溢出,LED0亮,同时数码管显示都为零。

简易计算器的设计与实现

简易计算器的设计与实现

简易计算器的设计与实现——VB程序设计初探平山县回舍中学郜兵山设计环境:Microsoft Visual Basic 6.0 中文版。

软件运行环境:Windows Xp 、Microsoft Visual Basic 6.0设计任务:设计一个简易计算器,完成简单的数学运算。

规划用户界面在用户界面上需要一个文本框,让用户输入算式、显示运算结果;为让用户与程序进行交互动作,设计三个命令按钮:计算、清空、退出;为方便用户利用鼠标输入算式,在界面上还添加二十四个命令按钮,分别用于输入数字0——9、运算符号和括号及常用函数;为增加程序的可读性,在界面上添加二个标签:简易计算器、算式及运算结果。

程序运行分析:用户在文本框中输入算式(用鼠标或键盘输入都可以),单击“计算”按钮,文本框中显示算式及运算结果;若需再次运算时,单击“清零”按钮,文本框清空;运算结束后,单击“退出”按钮,退出程序。

功能实现:启动VB6.0程序执行“开始”→“程序”→“Microsoft Visual Basic 6.0中文版”→“ Microsoft Visual Basic 6.0 中文版”命令,打开“新建工程”对话框,如下图所示。

在此对话框中,选择默认的“标准EXE”,单击“打开”按钮,系统新建一个工程并打开窗体设计器,如下图所示。

创建用户界面在窗体中添加控件对象窗体中添加ScriptControl控件对象在工具箱中添加ScriptControl控件工具箱中没有的控件不能直接添加到窗体,为把这样的控件对象添加至窗体,需要先把它添加至工具箱。

ScriptControl控件就属于这种情况。

将这样的控件添加至工具箱,具体方法如下:执行“工程”→“部件(O)…命令,打开“部件”对话框,如下图所示。

在此对话框的控件列表中,选择“Microsoft Script Control 1.0”选项后,单击“应用”按钮,工具箱中就出现了Script Control控件。

简易计算器实验报告

简易计算器实验报告

简易计算器实验报告一、实验目的本次实验的目的是设计并实现一个简易计算器,能够进行基本的四则运算(加、减、乘、除),以及处理括号的优先级运算,提高对程序设计和逻辑思维的理解与应用能力。

二、实验原理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、结果分析对于简单的四则运算表达式,计算器能够正确计算出结果。

《c 面向对象程序设计简单计算器的设计》

《c  面向对象程序设计简单计算器的设计》

面向对象程序设计----简单计算器的设计一、问题描述简单计算器的基本功能如下:1.四则运算,例如加减乘除等;2.除了整数的运算也可实现小数的各类运算;3.判断非法操作,例如判定1/0为非法操作;4.其他特性;这个简易计算器只实现以上所述功能,即实现简单计算。

二、设计思路计算器起始运行在归零状态,此时只接受数字输入,当按下一个数字按钮时,计算器只显示用户输入第一个操作数,用户在该状态下可以继续输入数字。

1.当第一个数字输入完成后,可以接受第二个操作数。

2.在数字输入结束进行运算后,按下=按钮可以根据前面按下的操作符计算结果显示,表示计算完成。

3.在上述计算过程中都可以接受双击等号回到清零状态。

三、功能函数设计:1.数字按钮这个是通过最基本的OnButton()将0~9十个数字按钮的单击消息处理函数用类向导全部关联到此,适文本框应该只是显示当前单击的数字;2.小数点按钮函数OnDecimal这个函数主要是实现小数点在计算器的相关功能3.列表在算法的函数OnSelchangeOperatorList()这一类按钮包括“+”“-”“*”“/”,它们的单击消息在同一个处理函数中进行处理,以同样的方法把这四个按钮的单击操作关联到此函数中,使四则运算法则在列表中通过选择去实现。

4.“=”符号函数OnEnquall()实现计算器中等号的功能,双击时也可使编辑框的数字归零。

四、编码实现:int calculator_type_i;double count=10,value=0;double Input_data_int=0,Input_data_dec=0;double Inputdata1=0,Inputdata2=0;char datatostr_buffer[10];bool decimal=FALSE;以上代码是添加的全局变量,为正确获取键盘输入供所有按钮函数使用。

// TODO: Add extra initialization herem_OperatorBox.AddString("-");m_OperatorBox.AddString("*");m_OperatorBox.AddString("/");m_OperatorBox.AddString("+");以上代码是初始化列表框,并使其在程序运行时具有“加”“减”“乘”“除”可选择功能。

简易计算器的设计及实现

简易计算器的设计及实现
『 j l 言
1 C #语 言和 开 发 _ I = = 具 1 . 1 c #简介
c #是 一 种 嘶 向对 象的 程序 没 计语 言 .是 专 门用 于 , N E T的 编程 用 c #编 写 的 代 码 总 是 在 . N E T F r a m e w o r k中运 行 ( . N E T F r a m e w o r k简 称. N E T , 是 微 软为 歼 发应 用 程序 创 建 的平 台 ) 。 使用 c # 『 】 r 以 编 写 传 统 的 Wi n d o w s 桌 面应 用 程 序 、 Wi n d o w s 服务程序 、 We b 应Ⅲ程序 、 We b 服 务 程序 等

I . 2 开 发工 具 V i s u a l S t u d i o V i s u a l S t u d i o 是一套完整的开发l 丁具 集 ,可 以用 来 创 建 Wi n — d o w s 平 台 下 的 Wi n d o w s 应f H 程 序 和 网络 程 序 , 也 可 以用 来 创建 网 络 服务 、智 能 没 备应用 程序 和 O f i c e 捅 件 等 。V i s u a l S t u d i ( , 有 多 种 版 本, 本次 设计 使 用 的 版本 是 V i s u a l S t u d i o 2 0 1 3 。 2 简易 汁算 器 的 基本 功 能 精确 、 便捷 、 高 效 是计 算 器 的 主要 特点 , 考 虑到 生 活 中人 们 常用 的数 据 格式 和运算 需 求 , 简 易计算 器需要 具 备 以下 几个 功 能 : ( 1 ) 简洁 直 观 的可操 作 界 面 ; ( 2 ) 基本 的【 J q 则运 算 和清 零功 能 ;
具 体 的程 序 开发 与 实现

课程设计 简易计算器设计与实现

课程设计 简易计算器设计与实现

课程设计简易计算器设计与实现长江职业学院工学院毕业实践报告课题名称:简易计算器设计与实现专业班级:计算机控制技术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和功能键与清零键的代号。

简易计算器设计与实现

简易计算器设计与实现

简易计算器设计与实现一、引言计算器是一种广泛应用的工具,可以进行基本的算数运算和一些科学计算,能够极大地方便人们的日常生活和工作。

本文将介绍一个简易的计算器的设计和实现方案。

二、设计思路1.功能选择:通过提供菜单供用户选择,以实现计算器常见功能如加法、减法、乘法、除法等。

2.输入输出处理:用户通过键盘输入待计算的数字和操作符,计算器将结果输出到屏幕上。

3.算术运算:根据用户选择的功能,进行相应的算术运算,如加法、减法、乘法、除法等。

4.错误处理:对于非法的输入,如除数为0,需要给出错误提示。

三、详细设计1.界面设计:计算器通过命令行界面展示,用户通过菜单选择功能。

界面可以提供以下功能选择菜单:1)加法2)减法3)乘法4)除法5)退出2.输入输出处理:在命令行界面上提示用户输入数字和操作符,并读取用户输入的数据。

用户输入格式为两个数字和一个操作符,操作符为"+","-","*"或"/"。

3.算术运算:a)加法运算:将两个数字相加,得到结果。

b)减法运算:将第一个数字减去第二个数字,得到结果。

c)乘法运算:将两个数字相乘,得到结果。

d)除法运算:将第一个数字除以第二个数字,得到结果。

在执行除法运算前,需要检查除数是否为0,如果为0,则给出错误提示。

4.错误处理:在用户选择除法运算时,需要检查除数是否为0。

如果为0,则输出错误提示信息,提示用户输入合法操作数。

五、实现以下为Python语言实现的简易计算器代码示例:```pythondef add(a, b):return a + bdef subtract(a, b):return a - bdef multiply(a, b):return a * bdef divide(a, b):if b == 0:raise ValueError("除数不能为0")return a / bdef calculator(:while True:print("请选择功能:")print("1) 加法")print("2) 减法")print("3) 乘法")print("4) 除法")print("5) 退出")choice = int(input()if choice == 1:a = float(input("请输入第一个数字:"))b = float(input("请输入第二个数字:")) result = add(a, b)print("计算结果:%f" % result)elif choice == 2:a = float(input("请输入第一个数字:"))b = float(input("请输入第二个数字:")) result = subtract(a, b)print("计算结果:%f" % result)elif choice == 3:a = float(input("请输入第一个数字:"))b = float(input("请输入第二个数字:")) result = multiply(a, b)print("计算结果:%f" % result)elif choice == 4:a = float(input("请输入第一个数字:"))b = float(input("请输入第二个数字:")) try:result = divide(a, b)print("计算结果:%f" % result)except ValueError as e:print("错误:%s" % str(e))elif choice == 5:breakelse:print("无效的选择,请重新选择功能。

简易计算器的设计及实现

简易计算器的设计及实现

简易计算器的设计及实现随着社会经济的发展,计算器在日常生活中扮演着越来越重要的角色,成为人们学习和工作不可或缺的工具,计算器的设计无论在何时都有着很大的实际意义。

文章在分析简易计算器的主要功能和设计思路的基础上,使用C#语言对计算器进行了具体的程序开发与实现。

标签:C#;计算器;程序设计引言计算器作为必备的办公工具,渗透在人们日常生活的每个角落,特别是随着社会经济的发展,人们需要处理的数据越来越多、越来越繁杂,计算器带来的便捷也越来越明显。

虽然如今网络和市面上的计算器已非常之多,但功能过于简单的无法满足个人需求,功能过多的价格较贵且很多功能根本用不到,所以设计一款简单却实用的计算器具有很大的实际意义。

而C#是一种功能非常强大的编程语言,其易于掌握、支持跨平台、面向对象的优点使得它非常适合用来开发一些常用的界面工具,故本文介绍了简易计算器的主要功能和设计思路,并在此基础上使用C#语言进行了具体的程序开发与实现。

1 C#语言和开发工具1.1 C#简介C#是一种面向对象的程序设计语言,是专门用于.NET的编程语言,用C#编写的代码总是在.NET Framework中运行(.NET Framework简称.NET,是微软为开发应用程序创建的平台)。

使用C#可以编写传统的Windows桌面应用程序、Windows服务程序、Web应用程序、Web服务程序等。

1.2 开发工具Visual StudioVisual Studio是一套完整的开发工具集,可以用来创建Windows平台下的Windows应用程序和网络程序,也可以用来创建网络服务、智能设备应用程序和Office插件等。

Visual Studio有多种版本,本次设计使用的版本是Visual Studio 2013。

2 简易计算器的基本功能精确、便捷、高效是计算器的主要特点,考虑到生活中人们常用的数据格式和运算需求,简易计算器需要具备以下几个功能:(1)简洁直观的可操作界面;(2)基本的四则运算和清零功能;(3)支持正负数运算和小数操作;(4)支持乘方与开方运算。

简易计算器的设计

简易计算器的设计

简易计算器的设计一、引言计算器是一种常见的电子设备,用于进行数学运算。

然而,现在的计算器功能复杂,有时不易使用。

因此,为了满足用户的需求,我设计了一款简易计算器,以提供简单、直观和用户友好的界面。

二、设计目标1.提供基本数学运算功能,包括加、减、乘、除。

2.确保用户友好的界面设计,使用户易于操作。

3.提供结果的显示,并能够滚动以适应较长的计算结果。

4.支持清零功能,以便用户开始新的计算。

三、设计方案1.界面设计(1)计算器外观:采用手持式设计,与传统计算器外观类似,包括一个屏幕和一组按键。

(2)屏幕设计:使用液晶显示屏,具有高分辨率和抗眩光功能。

屏幕的大小根据实际需求来确定。

2.功能设计(1)基本运算功能:设计四个基本运算按键(加、减、乘、除)和一个等于键用于运算结果的计算。

(2)数字输入:提供0-9数字按键,以(3)小数点输入:提供小数点按键,以便用户输入小数。

(4)清零功能:提供一个清零键,以便用户能够轻松开始新的计算。

(5)结果显示:设计一个屏幕用于显示计算结果,并且能够滚动显示较长的结果。

3.系统设计(1)按钮交互:当用户按下数字、运算符或者清零键时,系统会根据不同按键的输入执行相应的操作。

(2)数学运算:系统在接收到运算符时,会将当前数字和运算符保存起来,当接收到等于键时,执行相应的数学运算并将结果显示在屏幕上。

(3)界面更新:系统根据用户输入时时更新屏幕上的数字和运算符。

四、流程图1.设计输入部分的流程图:(系统等待用户输入)↓(用户输入数字和运算符)↓(显示用户输入的结果)2.设计运算部分的流程图:(系统等待用户输入)↓(用户输入数字和运算符)↓(按下等于键)↓(执行数学运算)↓(显示计算结果)3.设计清零部分的流程图:(系统等待用户输入)↓(用户按下清零键)↓(清除屏幕上的显示内容)五、功能展示```_________________________________________ 2024计算器________________7,8________,________4,5________,________1,2________,________0,.________,________+,-________,________*,/________,________=,C____________,________,________,__________。

简易计算器设计与实现

简易计算器设计与实现
完成模块的初始化后用并行控制模块扫描自定义的距阵键盘模块根据扫描的结果通过并行控制接口将数据送到微机控制台微机控制台将接收到的数据送到液机控制台ቤተ መጻሕፍቲ ባይዱ机控制台将接收到的数据送到液晶显示模块进行实时显示
微机原理及应用课程设计
简易计算器设计与实现
2007年12月
一、课程设计题目: 简易计算器设计与实现 二、课程设计目的 1. 了解以微机为核心的输入输出设计。 2. 了解计算器工作原理 3. 提高应用系统的设计与调试能力
本实验中使用4×4键盘作为输入,因此就要对键盘中的 16个按键做定义,下面给出参考的键定义。 1 5 9 + 2 6 0 - 3 7 = × 4 8
CE
÷
• 根据上面的按键定义,当按下“1”键时, 在LCD上就应该显示“1”,其他的数字按 键相同。当按“=”时,应该显示本次 运算的结果,例如已经输入了12+23, 按“=”时,就应该显示结果35。如果 操作数非法,如输入5÷0,按“=”时, 则应显示“ERROR!”。 • 在任何情况下按下“C”键,都将所有输 入的历史数据清除,重新开始计算。
• 本系统的硬件设计电路参考实验三,四,五的 设计。利用微机控制台首先完成并行控制接口 和液晶显示模块的初始化设置,液晶显示模块 可以输出欢迎界面。完成模块的初始化后,用 并行控制模块扫描自定义的距阵键盘模块,根 据扫描的结果通过并行控制接口将数据送到微 机控制台,微机控制台将接收到的数据送到液 晶显示模块进行实时显示。在数据传输显示的 过程,应通过程序控制实时处理信息,显示包 括输入数据,差错控制信息,运算结果的显示。 实时处理自定义的控制键功能,并完成控制功 能。
• 第一个操作数字输入完毕以后,应该输 入运算符,如果连续输入了多个运算符, 则最后一个操作符为准。按照例子,应 该显示“12+”。运算符输入完成以后, 输入第二个操作数字,输入完毕以后, 按例子应该显示“12+23”。按“=”键, ” 应该显示正确结果,如果有操作数非法, 如5÷0,则显示“ERROR!”。按照例子应 显示“12+23=35”。 • 每次运算完毕以后,按“C”键清除历史 数据。准备下次运算。

简单计算器的设计与实现

简单计算器的设计与实现

C/C++程序设计课程设计设计说明书简单计算器的设计与实现学生姓名学号班级成绩指导老师计算机科学与技术系2010年11月22日C/C++程序设计课程设计评阅书课程设计任务书2010—2011学年第一学期专业:计算机科学与技术学号:姓名:课程设计名称: C/C++程序设计课程设计设计题目:简单计算器的设计与实现完成期限:自2010 年 11月 15 日至 2010 年 11 月 26 日共2 周设计内容及要求:要求用C/C++语言设计一个简易的计算器程序,对输入的数据进行加、减、乘、除、开平方等操作。

设计要求及功能如下:1.阐述设计思想,画出流程图;2.实现功能:(1)对输入的数据进行加法运算;(2)对输入的数据进行减法运算;(3)对输入的数据进行乘法运算;(4)对输入的数据进行除法运算;(5)对输入的数据进行开平方根运算。

最终设计成果形式为:1.编写好的程序;2.撰写课程设计说明书一份,打印并装订成册。

指导教师(签字):教研室主任(签字):批准日期:年月日摘要设计了一个简单的计算器程序,该计算器具有简单的四则混合运算以及复杂的数学表达式的功能。

该计算器采用VC++作为软件开发环境,采用算数表达式处理算法来实现加、减。

乘、除四则混合运算。

操作简单,界面清晰,易于用户使用,容易被他们所接受的。

关键词:计算器;VC++;数学表达式目录1课题描述 (1)2问题分析和任务制定 (2)3详细设计 (3)3.1头文件设计 (3)3.2简单计算器的设计与实现函数设计 (3)4 程序调试与测试 (8)4.1主界面测试 (8)4.2基本功能的测试 (8)5结果分析 (12)总结 (13)参考文献 (14)1课题描述该课程设计需要用C/C++设计一个简单的计算器程序,对输入的数据进行简单的加、减、乘、除、开平方等操作。

设计功能如下:实现功能:(1)对输入的数据进行加法运算;(2)对输入的数据进行减法运算;(3)对输入的数据进行乘法运算;(4)对输入的数据进行除法运算;(5)对输入的数据进行开平方运算。

简单的计算器模拟程序的设计和实现

简单的计算器模拟程序的设计和实现

简单的计算器模拟程序的设计和实现1.问题描述对任意给定的正确四则运算表达式,程序计算其结果值并输出。

程序无需查错功能,假定所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为 +、-、*、/,表达式以字符 "=" 结束。

程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。

2.设计说明2.1简要的分析根据要求,要先输入包含有+,-,*,/的运算符的表达式,然后经过计算得到正确的答案。

从键盘中输入的是ASCII码,因此要将其转换为十进制的数据然后才能进行计算。

如果输入混合表达式,要将中缀式先变化成后缀式,然后再进行计算。

2.2概要分析2.2.1 定义的数据段用于定义一些中间变量,并将显示在试验界面上,以及提示信息。

data segmentstri db 50 dup(0)exp db 30 dup(0)track db 30 dup(0)instr db 100 dup(0)msg0 db 'please input your formular:',0dh,0ah,'$'msg1 db 0dh,0ah,'wrong input','$'msg2 db 0dh,0ah,') and ( does not match','$'msg3 db 0dh,0ah,'div zero error','$'msg4 db 0dh,0ah,'sorry,minus data appears','$'msg5 db 0dh,0ah,'any key to continue,esc to exit','$'data ends2.2.2 定义的堆栈段声明用于将中缀表达式转换为后缀表达式,以及进行后缀表达式求值过程用到的堆栈段。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

沈阳航空航天大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现院(系):专业:班级:学号:姓名:指导教师:完成日期:沈阳航空航天大学课程设计报告目录第1章总体设计方案 (1)1.1设计内容 (1)1.2设计原理 (1)1.3设计思路 (2)1.4实验环境 (2)第2章详细设计方案 (3)2.1硬件电路设计 (3)2.2主程序设计 (7)2.2功能模块的设计与实现 (8)第3章结果测试及分析 (11)3.1结果测试 (11)3.2结果分析 (11)参考文献 (12)附录1 元件清单 (13)附录2 总电路图 (14)附录3 程序代码 (15)第1章总体设计方案1.1 设计内容本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。

设计过程在硬件与软件方面进行同步设计。

硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。

显示采用6位8段共阳极数码管动态显示。

软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。

编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。

1.2 设计原理在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。

作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。

1)提出方案以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。

2) 总体方案实现(1)要解决键值得读入。

先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码查表可的键值。

并且将键值送入缓冲区。

(2)计算。

从缓冲区中取出数据按照括号配匹算法解决符号优先级问题,如果有键值为“F”则清空缓冲区跳至开始处,否则调用汇编指令进行计算,结果送入缓冲区。

(3)显示。

从缓冲区中取出数据查找段码表,将段码送入段码管。

1.3 设计思路采用汇编语言程序设计的方法结合硬件电路设计方法,利用Lab6000实验箱上已有芯片来实现计算器的各项功能。

1.4 实验环境硬件环境:Lab6000实验箱,PC机。

软件环境:WA VE应用软件。

第2章详细设计方案2.1 硬件电路设计1)单片机8751P0口作为存储器地址线的低8位,p2口作为地址线的高8位,采用定时器0作为键盘抖动时的10ms延时,采用外部设备与存储器统一编制方式。

如图2.1所示。

图2.1 单片机8751图2)8段共阳极数码管图为八段共阳极数码管的引脚图,从左到右数码管的段码分别为a,b,c,d,e,f,g 和小数点dp,高电平时点亮,这八位分别74LS374的Q0~Q7接,作为数码管的段码锁存器,其CPU访问地址位09004。

下边为位选端和阳极端,6个位选端分别与另一片74LS374的Q0~Q5,与此同时为了体现总线的复用性和硬件电路的简单性这6位位选线作为键盘的列线,CPU访问地址为09002H。

如图2.2所示。

图2.2 共阳极8段数码管图3)键盘键盘可分为两类:编码键盘和非编码键盘。

编码键盘是较多按键(20个以上)和专用驱动芯片的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。

通用计算机使用的标准键盘就是编码键盘。

当系统功能比较复杂,按键数量很多时,采用编码键盘可以简化软件设计。

但大多数智能仪器和电子产品的按键数目都不太多(20个以内),为了降低成本和简化电路通常采用非编码键盘。

非编码键盘的接口电路有设计者根据需要自行决定,按键信息通过接口软件来获取。

本课题需要的是16个按键,故选择用非编码键盘。

键盘的行线与一片74LS245相连接作为键盘的扫描码,其CPU访问地址09001H。

如图2.3所示。

图2.3 简易计算器数据输入键盘图4)74LS37474LS374是地址锁存器,一片用来锁存键盘,数码管的地址,另一片用来锁存数码管的段码。

如图2.4所示。

图2.4 74LS374图5)74LS24574LS245用来读取键盘的行码A0-A3分别与键盘的行线相连接;B0-B7分别与数据总线相连接。

如图2.5所示。

图2.5 74LS245图6)UNL2003AUNL2003A相当于7个非门IN输入OUT输出,其中IN端接键盘的列线,OUT 端接数码管。

如图2.6所示。

图2.6 ULN2003A图2.2 主程序设计主程序模块是边检测边显示的模块,一旦有按键按下(无论是按键抖动还是真的有按键按下)就转入键值读取模块,如果没有按键按下或是已经从键值读取模块返回,就继续从一个以30H为首地址的缓冲区中取出数据并转换成数码管的段码显示出来。

主模块是一个死循环函数没有结束直至人为终止。

主程序流程图如图2.7所示。

开始检测从缓冲区中读数据否查表取段码显示有键按下是结束图2.7 主程序流程图2.2 功能模块的设计与实现1)键值读取模块。

键只读取模块是,当主模块中有按键时,才被调用的。

其功能是首先延时10ms 已消除键盘抖动,继续读写,若读得的数据与主模块中的键值一样则真的有按键按下,若是“F”键则清空缓冲区若是“E”键则调用计算模块,否则将键值写入缓冲区返回主函数。

流程图如2.8所示。

延时10ms读取键值有键按下是结束开始F 键E 键延时10ms按键放开否清空缓冲区是调用计算函数是缓冲区加一将键值存入否否2)计算模块计算模块是从缓冲区中取得数据并且压栈,如遇到“*”或是“/”就出栈同时进行乘除运算;至到遇到等号为止,再从栈中取得数据进行加减运算。

并将计算的结果送入缓冲区中。

具体流程图如图2.9所示。

开始结束从缓冲区中取数计算取完结果写入缓冲区是否图2.8 键值读取模块图图2.9 计算模块图程下载与硬件测试第3章结果测试及分析3.1 结果测试计算器实现了0 –F内的加减乘除法运算,并将表达式以及结果显示在六位八段数码管上,其中A键为加号,B键为减号,C键为乘号D键为除号,F键为清零,还可以实现表达式的运算,例如1+2*3/4-5=-2.75的表达式。

3.2 结果分析键值的读取是本次课程设计最关键的一部分,因为只有从键盘取得数据才能进行计算和显示,否则该题目无法继续进行下去,按键的读取逻辑方面并不是很难,但是边读取边显示就显得不那么简单了,所以存在一个延时问题。

延时得当则读取和显示可完美结合。

计算也是一个很关键部分,本来想做一个任意位数的任意数学表达式的计算器可是由于时间限制,只能完成了计算任意数学表达式计算器。

显示模块比较简单实现起来也比较容易。

签。

参考文献参考文献[1]王爱英.计算机组成与设计[M]. 北京:教育出版社,2003[2]杨素行.微型计算机系统原理及应用[M]. 北京:清华大学出版社,1996[3]张雪兰.汇编语言程序设计[M]. 北京:清华大学出版社,2006[4]龚尚福.微机原理与接口技术[M]. 西安:西安电子科技大学出版社,2003[5]王中民.微型计算机原理[M]. 西安:西安电子科技大学出版社,2003[6]沈美明,温冬婵.IBM-PC汇编语言程序设计[M]. 北京:清华大学出版社,2001附录1元件清单名称数量(个)型号备注电阻 68段数码管 6 DPY开关24 BUTTON单片机 1 8751与非门 3电源 3电容 3 30pf(2个),10uf(1个) 晶振 1 CRYSTAL芯片 5 74LS系列ULN2003A74LS138,74LS245,74LS373(2)74LS374附 录2 总电路图123456A BCD654321D C BA TitleN umber R evisio nSize BD ate:15-Ju l-2014Sh eet of File:E:\单片机\单片机课设\硬件电路图\计算器.D db D raw n B y:7410852C LEA R 963=+--*/D 03Q 02D 14Q 15D 27Q 26D 38Q 39D 413Q 412D 514Q 515D 617Q 616D 718Q 719O E 1C LK 11U 674LS37412345678a b c d e f g h a b c de f gh910L612345678a b c d e f g h ab c de f g h910L512345678a b c d e f g h ab c de f g h910L412345678a b c d e f g h ab c de f g h910L312345678a b c d e f g h a b c d e f g h 910L212345678a b c d e f g habcd e f gh910L1IN 11IN 22IN 33IN 44IN 55IN 66IN 77C OMMO N8C LA MP9O UT 710O UT 611O UT 512O UT 413O UT 314O UT 215O UT 116U 5U LN 2003A (16)MO NN EX TLA STTR A CEST EP H ER E EX EC R 1R 210K R 310K R 410KV CCA 02A 13A 24A 35A 46A 57A 68A 79B 018B 117B 216B 315B 414B 513B 612B 711E 19D IR1U 474LS245O E1C LK 111D 32D 43D 74D 85D 136D 147D 178D 181Q 22Q 53Q 64Q 95Q 126Q 157Q 168Q19U 374LS374(20)EA /VP31X 119X 218R ESE T9R D 17W R 16INT 012INT 113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PS EN29A LE/P 30TX D 11R XD 10U 18051A 1B 2C3E14E25E36Y 015Y 114Y 213Y 312Y 411Y 510Y 69Y 77U 774LS138123U 8A 74LS00123U 9A74LS00123U 10A74LS00123U 11A 74LS02123U 12A 74LS02D 03Q 02D 14Q 15D 27Q 26D 38Q 39D 413Q 412D 514Q 515D 617Q 616D 718Q 719O E 1LE11U 274LS373V CCU 13C RY ST ALR ESE TA NC 322uf C 130pf C 230pfR 610K V CCR 510KV CC B 0B 1B 2B 3B 4B 5B 6B 7B 0B 1B 2B 3B 4B 5B 6B 7B 0B 1B 2B 3B 4B 5B 6B 7B 0B 1B 2B 3B 4B 5B 6B 7B 0B 1B 2B 3B 4B 5B 6B 7B 0B 1B 2B 3B 4B 5B 6B 7B 0B 1B 2B 3B 4B 5B 6B 7B 0B 1B 2B 3B 4B 5B 6B 7B 0B 1B 2B 3B 4B 5B 6B 7B 0B 1B 2B 3B 4B 5B 6B 7A 2A 1A 0A 0A 1A 2W R R D 10K附录3 程序代码ORG 0000HLJMP MAINORG 000BHLJMP INTORG 00FFHMAIN:MOV R7,#30HMOV R6,#00HCALL RESETJMP MAINRESET:MOV A,R7MOV R0,AMOV R1,#01HMOV A,#06HSUBB A,R6JB PSW.7,MAXMOV A,R6XRL A,#00HJZ CCMOV A,R6MOV R3,AJMP LOOP5MAX:MOV R3,#06HLOOP5:MOV A,@R0MOV R5,ACALL CHACKTABLECALL DISPLAYMOV A,R1RL AMOV R1,ADEC R0DJNZ R3,LOOP5 CC:MOV DPTR,#09004HMOV A,#00HMOVX @DPTR,AMOV R1,#00HCALL READXRL A,#0FHJZ RESETCALL CHACKJMP RESETRETCHACK:CALL DELAYMOVX A,@DPTRMOV R2,Axrl A,R0JZ HA VEAJMP CHACKHA VE:MOV R1,#0FBH LOOP:CALL READxrl A,R2JZ EQUALMOV A,R1RL AMOV R1,AAJMP LOOPEQUAL:CALL DELAYCALL DELAY LOOP2:MOVX A,@DPTRXRL A,#0FHJZ LOOP3JMP LOOP2LOOP3:CALL CHACKTABCALL CHACKTABLECALL RESOLVERETCHACKTAB:MOV DPTR,#TABMOV A,#00HMOV R5,#00HLOOP4:RL AMOV R4,AMOVC A,@A+DPTRXRL A,R1JNZ NEXTMOV A,R4INC AMOVC A,@A+DPTRXRL A,R0JNZ NEXTAJMP ENDDNEXT:INC R5MOV A,R5SJMP LOOP4ENDD:RETCHACKTABLE:MOV DPTR,#TABLEMOV A,R5MOVC A,@A+DPTRMOV R4,ARETDISPLAY:MOV DPTR,#09002HMOV A,R1MOVX @DPTR,AMOV DPTR,#09004HMOV A,R4MOVX @DPTR,AMOV R2,#0FFHDJNZ R2,$RETREAD:MOV DPTR,#09002HMOV A,R1MOVX @DPTR,AMOV DPTR,#09001HMOVX A,@DPTRMOV R0,ARETRESOLVE:INC R7MOV A,R7MOV R0,AMOV A,R5INC R6MOV @R0,AMOV A,R5XRL A,#0FHJZ CLEARMOV A,R5XRL A,#0EHJZ MJMP MMM:LCALL JISUANG MM:RETCLEAR:LJMP MAINDELAY:MOV TH0,#3CHMOV TL0,#0B0HMOV TMOD,#01HSETB EASETB ET0SETB TR0JB TR0,$JMP RRRINT:CLR TR0RETIRRR:RETTAB:DW 0DF0EH,0DF0DH,0EF0DH,0F70DH,0DF0BH,0EF0BH,0F70BH DW 0DF07H,0EF07H,0F707H,0FB07H,0FB0BH,0FB0DH,0FB0EH DW 0F70EH,0EF0EHTABLE:DB 3FH,06H, 5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H, 7CH,39H,5EH,79H,71HJISUANG:MOV R0,#31HMOV R1,#50HCHENGCHU:MOV A,@R0XRL A,#0CHJZ CHENGMOV A,@R0XRL A,#0DHJZ CHENGMOV A,@R0XRL A,#0EHJZ OVERMOV A,@R0MOV @R1,AINC R0INC R1JMP CHENGCHUCHENG:MOV A,@R0MOV R3,ADEC R1MOV A,@R1MOV R2,AINC R0MOV A,@R0INC R0MOV R4,ACALL MATHMOV A,R5MOV @R1,AINC R1MOV A,R5MOV @R1,AJMP CHENGCHU CHU:MATH:MOV A,R3XRL A,#0AHJZ ADDDMOV A,R3XRL A,#0BHJZ SUBBBMOV A,R3XRL A,#0CHJZ MULLJMP OVER ADDD:MOV A,R2ADD A,R4MOV R5,AJMP RETT SUBBB:MOV A,R2SUBB A,R4MOV R5,AJMP RETT MULL:MOV A,R2MOV B,R4MUL ABMOV R5,ARETT:RETOVER:INC R0MOV A,#0EHMOV @R1,AMOV R1,#50H LOOP8:MOV A,@R1XRL A,#0EHJZ ENDD1INC R1MOV A,@R1XRL A,#0EHJZ ENDD1DEC R1MOV A,@R1MOV R2,AINC R1MOV A,@R1MOV R3,AINC R1MOV A,@R1MOV R4,ACALL MATHMOV A,R5MOV @R1,AJMP LOOP8 ENDD1:DEC R1MOV A,@R1MOV @R0,AINC R7INC R6RETEND沈阳航空航天大学课程设计报告课程设计总结:通过这次课程设计,我进一步加深了对单片机的了解。

相关文档
最新文档