简易计算器

合集下载

简易计算器的课程设计

简易计算器的课程设计

简易计算器的课程设计一、课程目标知识目标:1. 学生能理解简易计算器的内部工作原理,掌握其基本功能操作。

2. 学生能运用计算器进行基本的算术运算,包括加、减、乘、除以及百分比计算。

3. 学生理解并掌握计算器上各个按键的功能及其在数学运算中的应用。

技能目标:1. 学生能够使用计算器辅助解决实际问题,如购物找零、面积计算等。

2. 学生通过计算器的使用,提高数据输入、结果读取和运算过程纠错的能力。

3. 学生能够结合数学知识,利用计算器进行数据的简单统计分析。

情感态度价值观目标:1. 培养学生对待科学技术的积极态度,认识到计算器在日常生活和学习中的便捷性。

2. 增强学生的团队协作意识,通过小组活动,学会分享和交流使用计算器的经验。

3. 培养学生遵守计算器使用的规则,养成良好的计算器使用习惯,珍惜公共资源。

本课程设计针对的学生群体为小学高年级学生,他们已经具备了一定的数学基础和操作简单电子设备的能力。

课程性质为实用技能型,旨在通过简易计算器的教学,将理论知识与实践操作相结合,提高学生解决实际问题的能力。

在教学要求上,注重培养学生的动手操作能力和创新思维,同时强调情感态度的培养,使学生在学习技能的同时,也能形成正确的价值观。

通过具体学习成果的分解,教师可进行有针对性的教学设计和学习效果评估。

二、教学内容本章节教学内容依据课程目标,结合教材内容,科学系统地组织以下部分:1. 简易计算器基础知识:介绍计算器的发展历程、种类及简易计算器的结构组成,对应教材第二章第一节。

2. 计算器按键功能:详细讲解各按键的功能及其在数学运算中的应用,对应教材第二章第二节。

3. 基本运算操作:教授如何使用计算器进行加、减、乘、除以及百分比计算,对应教材第二章第三节。

4. 计算器在实际应用中的使用:结合实际案例,如购物找零、面积计算等,展示计算器的实用性,对应教材第二章第四节。

5. 数据的简单统计分析:利用计算器进行数据输入、处理和简单统计分析,对应教材第二章第五节。

简易计算器(源码)

简易计算器(源码)

简易计算器(源码)以下是一个简易计算器的Python源码,用于执行基本的加、减、乘、除运算:```python#简易计算器def add(x, y):"""相加"""return x + ydef subtract(x, y):"""相减"""return x - ydef multiply(x, y):"""相乘"""return x * ydef divide(x, y):"""相除"""if y != 0:return x / yelse:return "除数不能为零!"print("选择操作:")print("1. 相加")print("2. 相减")print("3. 相乘")print("4. 相除")choice = input("输入你的选择(1/2/3/4): ")num1 = float(input("输入第一个操作数: "))num2 = float(input("输入第二个操作数: "))if choice == '1':print(num1, "+", num2, "=", add(num1, num2))elif choice == '2':print(num1, "-", num2, "=", subtract(num1, num2)) elif choice == '3':print(num1, "*", num2, "=", multiply(num1, num2)) elif choice == '4':print(num1, "/", num2, "=", divide(num1, num2)) else:print("无效的选择")```以上代码中,我们定义了四个函数:`add`、`subtract`、`multiply`和`divide`,分别用于执行相加、相减、相乘和相除的操作。

简易计算器实验报告

简易计算器实验报告

简易计算器实验报告简易计算器实验报告引言:计算器是我们日常生活中常用的工具之一。

它可以帮助我们进行简单的数学运算,提高计算的效率。

在本次实验中,我们将设计并制作一台简易计算器,通过实践来掌握计算器的原理和工作原理。

实验目的:1. 了解计算器的基本原理和工作原理;2. 掌握计算器的设计和制作方法;3. 提高动手能力和创造力。

实验材料:1. 电路板;2. 按键;3. LED显示屏;4. 电容;5. 电阻;6. 电源。

实验步骤:1. 连接电路板和电源,确保电路板能够正常工作;2. 将按键连接到电路板上,用于输入数字和运算符;3. 连接LED显示屏,用于显示计算结果;4. 添加电容和电阻,用于控制电路的稳定性和电流;5. 调试电路,确保计算器能够正确运行。

实验结果:经过一番调试,我们成功制作出了一台简易计算器。

它可以进行基本的加减乘除运算,并且在LED显示屏上显示结果。

通过按键输入数字和运算符,我们可以进行各种运算,从而得到我们想要的结果。

这台计算器虽然简单,但是它的实用性和便携性都非常高。

实验分析:在本次实验中,我们主要学习了计算器的基本原理和工作原理。

计算器是通过按键输入数字和运算符,然后经过电路的计算和控制,最终在显示屏上显示结果。

在电路中,电容和电阻的作用是为了保证电路的稳定性和电流的控制。

通过这个实验,我们更加深入地了解了计算器的内部结构和工作原理。

实验总结:通过本次实验,我们成功制作了一台简易计算器,并且对计算器的原理和工作原理有了更深入的了解。

实验过程中,我们不仅提高了动手能力和创造力,还培养了解决问题的能力。

计算器作为一种常见的工具,它的设计和制作过程并不复杂,但是它的实用性和便携性却非常高,为我们的生活带来了很大的便利。

未来展望:通过这次实验,我们对计算器的原理和工作原理有了初步的了解。

在未来,我们可以进一步深入研究计算器的更高级功能和更复杂的电路设计。

同时,我们也可以将这种简易计算器的设计思想应用到其他领域,如电子设备、机器人等,从而提高我们的创造力和创新能力。

单片机的简易计算器毕业设计

单片机的简易计算器毕业设计

单片机的简易计算器毕业设计简易计算器是一种基本、常见的电子设备,它能够对数字进行简单的加减乘除运算。

单片机作为一种小型、低功耗的微型计算机,非常适合用于设计和实现计算器的功能。

在本文中,我们将以单片机为基础,设计和实现一个简易计算器。

一、设计思路1.硬件设计:-使用单片机作为主控制器。

-接入键盘矩阵和显示器。

-使用LED灯作为指示灯,用于显示运算符和结果。

2.软件设计:-通过键盘输入数字和运算符。

-将输入的数字和运算符转换成相应的控制信号。

-进行运算,并将结果显示在屏幕上。

3.功能实现:-实现加法、减法、乘法和除法运算。

-提供清零、退格和等号等功能。

-支持小数和负数的输入和运算。

-提供错误提示功能,例如除数不能为零等。

二、具体实现1.硬件实现:-将键盘矩阵的行和列与单片机的IO口相连,通过扫描来检测按键的输入。

-将显示器与单片机的IO口相连,通过控制引脚来发送和接收数据。

-将LED灯与单片机的IO口相连,设置相应的引脚状态来显示不同的指示信号。

2.软件实现:-使用C语言编写程序,通过中断和轮询的方式,实现键盘输入的检测和数据的读取。

-将读取到的数据进行解析,并根据不同的按键进行相应的操作。

-根据输入的数字和运算符,进行相应的运算并输出结果。

3.功能实现:-加法、减法、乘法和除法运算可以通过相应的算法实现,例如加法可以通过循环和位运算来实现。

-清零功能可以将运算结果和输入的数字都清零,退格功能可以删除输入的最后一个数字或运算符。

-支持小数运算可以在运算过程中进行进位和进位操作,支持负数运算可以通过判断运算符来进行相应的处理。

-错误提示功能可以通过对输入的数据进行检查和判断来实现,例如判断除数是否为零。

三、总结通过上述的设计和实现,我们可以成功地设计和制作一个单片机的简易计算器。

通过这个计算器,用户可以进行简单的加减乘除运算,同时还具备清零、退格、小数和负数等功能。

这个计算器可以应用在日常生活中的计算场景,方便用户进行各种简单的运算操作。

简易计算器开题报告

简易计算器开题报告

简易计算器开题报告简易计算器开题报告一、引言计算器是一种广泛应用于日常生活和工作中的工具,它能够帮助人们进行简单的数学运算。

然而,随着科技的不断进步,计算器也发生了很大的改变。

在这个数字化时代,我们可以看到各种各样的高级计算器和手机应用程序,它们提供了更多的功能和更方便的使用体验。

然而,对于一些特定的场景和需求,简易计算器仍然具有一定的优势。

本文将探讨开发一款简易计算器的可行性和必要性。

二、背景分析1. 简易计算器的定义简易计算器是一种功能简单、操作便捷的计算工具,通常只包含基本的四则运算和一些常用函数。

它的界面简洁明了,适合快速计算和简单操作。

2. 现有计算器的不足尽管现有的高级计算器和手机应用程序提供了更多的功能和更方便的使用体验,但在某些情况下,它们可能过于复杂,不适合快速计算。

例如,在一些会计、商务、教育等场景中,人们更倾向于使用简单的计算器进行基本运算,以提高工作效率。

3. 简易计算器的优势简易计算器相对于高级计算器和手机应用程序而言,具有以下优势:- 操作简单:简易计算器通常只有几个按键,界面简洁明了,使用起来非常方便。

- 快速计算:简易计算器专注于基本运算,因此在处理简单的数学运算时更加迅速。

- 便携性:简易计算器体积小巧,便于携带,随时随地使用。

三、开发目标基于上述背景分析,我们的开发目标是设计和开发一款简易计算器,以满足以下需求:1. 提供基本的四则运算功能,包括加、减、乘、除。

2. 支持一些常用函数,如开方、求平方、求倒数等。

3. 界面简洁明了,操作简单方便。

4. 提供快速计算的能力,以提高工作效率。

5. 考虑到便携性,计划将其设计为小巧的手持设备。

四、技术实现1. 硬件需求为了实现简易计算器的开发目标,需要以下硬件设备:- 微处理器:选择一款适合嵌入式系统的微处理器,例如ARM Cortex-M系列。

- 显示屏:选用一款小巧而清晰的显示屏,以方便用户查看计算结果。

- 按键:设计合适的按键布局,以支持用户输入数字和操作符。

简易计算器的制作

简易计算器的制作

简易计算器的制作在本文中,我们将介绍如何使用Visual FoxPro(VFP)制作一个简易计算器。

Visual FoxPro是一种开发工具,可以用于创建数据库应用程序和开发Windows桌面应用程序。

步骤1: 创建新的Visual FoxPro项目首先,打开Visual FoxPro并创建一个新的项目。

在“文件”菜单中选择“新建”,然后选择“项目”。

输入一个项目名称,选择一个合适的位置,然后点击“确定”。

步骤2:创建一个新的表单接下来,我们需要创建一个新的表单来作为计算器的界面。

在项目资源管理器中,右键点击“表单”文件夹,并选择“新建”。

输入一个表单名称,然后点击“确定”。

步骤3:添加控件步骤5:添加按钮事件首先,我们需要声明变量来存储用户输入的数字。

在按钮事件代码中,添加以下代码:```foxproLOCAL num1, num2, result```接下来,我们需要获取用户输入的数字。

在按钮事件代码中,添加以下代码:```foxpronum1 = VAL(Thisform.txtNum1.Value)num2 = VAL(Thisform.txtNum2.Value)```然后,我们可以执行所需的计算操作。

例如,如果我们想要添加两个数字,我们可以使用以下代码:```foxproresult = num1 + num2```最后,我们需要将结果显示在界面上。

在按钮事件代码中,添加以下代码:```foxproThisform.lblResult.Caption = STR(result)```步骤6:运行和测试完成上述步骤后,您可以保存并运行计算器。

在VFP的工具栏中,点击“运行”按钮来启动应用程序。

测试计算器,确保它可以正确执行计算操作并显示结果。

结论通过使用Visual FoxPro,我们可以轻松创建一个简易计算器。

这个计算器可以执行基本的加减乘除等操作,同时提供了一个直观的用户界面。

您可以根据需要进行自定义,添加更多功能和复杂的计算操作。

单片机的简易计算器

单片机的简易计算器

单片机的简易计算器在现代科技的不断发展中,单片机已经成为了人们生活中不可或缺的一部分,其广泛应用于各个领域中。

其中,单片机作为计算器的应用是人们最为熟悉的,本文将介绍一个基于单片机的简易计算器。

1.引言计算器作为一种广泛使用的工具,早已融入人们的生活中。

随着电子技术的不断发展,计算器逐渐从机械式逐渐转变为电子式。

而单片机作为电子计算器中的核心,因其体积小、功耗低、成本低等优点,成为了电子计算器的首选之一2.原理介绍单片机简易计算器的原理是通过单片机对输入的数字和运算符进行解析,然后利用内部的算法进行计算,最后将结果显示在输出设备上。

该计算器主要包括输入模块、解析模块、计算模块以及显示模块四个部分。

3.输入模块输入模块主要包括键盘和显示屏。

键盘用于用户输入数字和运算符,显示屏用于显示输入和计算结果。

在单片机上,键盘和显示屏一般通过矩阵按键扫描和数码管显示等方式实现。

4.解析模块解析模块负责解析用户的输入,并将其转化为内部可以处理的格式。

例如,用户输入的数字和运算符将被解析为二进制码或其他表示形式。

解析模块一般通过状态机等方式实现。

5.计算模块计算模块是单片机简易计算器的核心部分,主要负责对输入的数字和运算符进行计算,并生成计算结果。

计算模块可以使用常见的算法,如加法、减法、乘法、除法,也可以实现特殊的运算功能,如开方、幂运算等。

6.显示模块显示模块负责将计算结果显示在输出设备上。

单片机简易计算器一般采用数码管显示,可以显示整数和小数。

在显示过程中,还需要考虑显示精度和位数等问题。

7.程序设计单片机简易计算器的程序设计需要考虑输入和输出的实时性和准确性。

需要设计相应的中断处理函数,实现按键的响应和显示的更新。

程序设计还需要考虑算法的优化和计算结果的溢出等问题。

8.功能扩展单片机简易计算器还可以进行功能的扩展,如添加转换功能、存储功能等。

例如,可以添加进制转换功能,实现十进制与二进制、八进制、十六进制之间的转换;还可以添加存储功能,实现计算结果的存储和读取。

简易计算器课程设计

简易计算器课程设计

山东大学控制科学与工程学院课程设计报告书课程设计名称:简易计算器班级:测控一班学号:201000171202姓名:魏凯峰一、电路工作原理该电路主要由以下几部分组成,1、51系列单片机最小系统板,由AT89C51单片机,复位电路,晶振电路(晶振频率是11.0592MHZ),这部分是控制中心,晶振电路可产生程序运行所需要的时钟频率。

2、显示部分,由8位共阴数码管和两个74HC573锁存器、排阻(1K)组成,74HC573锁存器用于动态显示数据,也有驱动显示作用,排阻是限流作用。

3、按键部分,由20位独立键盘组成,按矩阵形式连接,用到9个IO口。

原理:键盘作为数字输入,矩阵键盘的工作原理是当某个键按下时,其两端的IO口电平变化,程序中通过相应位的与或运算,就可以判断出是哪个按键被按下,单片机中的程序不断读取键盘的输入并实时显示在数码管上,数码管用段位选不断切换显示,如当位选为高电平时即为点亮,然后再输入相应的数字段码(该电路中用的是共阴极数码管的字码),这样数码管上便可以显示相应数字。

锁存器中的LE口就是段位选口,高电平有效,数码管中的A、B......G、DP是数码管中的每一段,只要某个字母为高电平,则该段二极管就会被点亮(共阴极)。

在同时显示多个数字时要利用到动态显示,视觉动态显示主要就是利用人眼的视觉感来设计的,一般来说如果显示的频率过慢,则会有断断续续的显示;如果显示的频率加快,则人眼就分辨不出这种视觉残余!二、程序简要说明从主函数开始,先是定义一些变量,然后是调用显示函数displaypro(0),先显示0,然后进入一个大循环while(1),在循环里面先检测键盘keyscan(),并把检测值赋给K,然后是段位选循环8次检测,然后用switch(k)函数来执行键盘操作,k的值从0到9表示输入数字0到9,10到13表示加减乘除,17、15分别表示十六进制和二进制,16表示小数点,14表示正负号,18表示清除,19是等于号。

简单介绍简易计算器的使用方法

简单介绍简易计算器的使用方法

简单介绍简易计算器的使用方法简易计算器使用方法计算器是我们日常生活中常见的小工具之一,它能够方便快捷地完成各种数学运算。

在本文中,我们将简单介绍一下简易计算器的使用方法,帮助大家更好地利用这个小工具。

一、开机与关闭使用简易计算器之前,首先需要开机。

通常,在计算器上会有一个电源开关,打开开关后,计算器便会自动启动。

要关闭计算器,只需要将电源开关关闭即可。

二、数字输入在简易计算器上,数字输入是最基本的操作。

计算器通常会有一个数字键盘,上面标有0到9的数字。

通过按下相应的数字键,可以输入需要计算的数值。

输入多位数时,只需按照正确的顺序依次按下每个数字键。

三、基本运算简易计算器能够完成四则运算,包括加法、减法、乘法和除法。

使用计算器进行基本运算时,需要按下特定的运算符键。

1. 加法:简易计算器上通常会有一个“+”键,按下该键后,计算器会把当前输入的数值记为被加数,再输入另一个数值,按下“=”键,计算器就会显示它们的和。

2. 减法:类似地,简易计算器上通常会有一个“-”键,按下该键后,计算器会把当前输入的数值记为被减数,再输入一个数值,按下“=”键,计算器就会显示它们的差。

3. 乘法:简易计算器上通常会有一个“×”键,按下该键后,计算器会把当前输入的数值记为被乘数,再输入一个数值,按下“=”键,计算器就会显示它们的积。

4. 除法:类似地,简易计算器上通常会有一个“÷”键,按下该键后,计算器会把当前输入的数值记为被除数,再输入一个数值,按下“=”键,计算器就会显示它们的商。

四、小数与分数计算除了整数运算,简易计算器还可以进行小数和分数的计算。

对于小数的输入,直接使用数字键盘即可,对于分数的输入,则需要使用特定的输入方式。

通常,在计算器上会有一个“分数”键或“1/x”键,按下该键后,计算器会进入分数输入模式,在屏幕上显示分子和分母的输入框,通过按下数字键来输入相应的分子和分母。

输入完毕后,按下“=”键,计算器就会进行分数的计算。

简易计算器的设计

简易计算器的设计

学号:课程设计题目简易计算器的设计学院自动化专业电气工程及其自动化班级姓名指导教师2014 年1月9日课程设计任务书学生姓名:专业班级:指导教师:工作单位:自动化学院题目: 简易计算器的设计初始条件:用8086CPU、8255A并行通信接口、七段LED数码管接口、小键盘控制电路接口、外围电路芯片及元器件实现一个简易计算器,完成相应的程序编写。

要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)可进行2位十进制的加减乘除法运算。

(2)键盘输入数据,同时LED数码管显示,模拟计算器的工作。

(3)键盘上要求有0~9数字键,+、-、×、÷、=功能键,清除键C。

(4)撰写课程设计说明书。

内容包括:摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

时间安排:12月26日----- 12月 28 日查阅资料及方案设计12月29日----- 1 月 2 日编程1 月 3日----- 1 月 7日调试程序1 月 8日----- 1 月 9日撰写课程设计报告指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (1)1设计的任务及要求 (2)2方案的设计 (3)2.1方案设计论证 (3)2.2方案概述与原理硬件电路图 (3)3系统模块与功能 (5)3.18086CPU芯片 (5)3.2 8255A 并行通信接口芯片 (5)3.3 译码电路 (6)3.4 小键盘电路 (6)3.5 四位七段 LED 数码管显示电路 (7)4软件设计框图与程序 (8)4.1计算器系统程序总体流程图 (8)4.2 模块程序流程图与程序 (8)4.2.1流程图 (8)4.2.2键盘扫描流程图 (9)4.3输入运算 (10)4.3.1输入运算的流程图 (10)4.3.2输入运算程序 (10)4.4显示部分 (11)4.4.1显示部分流程图 (11)4.4.2显示部分程序 (12)5系统仿真 (14)6小结与体会 (15)参考文献 (16)附录:设计源程序 (17)本科生课程设计成绩评定表摘要这次微机原理的课程设计的题目是简易计算器的设计,设计一个可以实现2位十进制加减乘除运算功能的电路,并用LED显示出来。

简易计算器

简易计算器

综合实验四简易计算器的设计
一、实验目的
1、进一步熟悉LED显示电路和键盘扫描电路的工作原理和编程方法;
2、了解数据计算的基本方法。

二、实验内容
利用学习板上提供的显示电路和键盘电路,做一个简单的计算器。

用十六进制A键=‘+’、B键=‘—’、C键=‘*’、D键=‘/’、E键=‘=’、F键=‘CE’。

三、实验电路原理图及连线
1、实验电路原理图如图1所示
图1 实验电路原理图
2、实验连线图
(1)、按键接到P0口。

用一条8针排线,把键盘模块的SW101接到CPU模块的P0口JP0。

(SW101的上四位是行控制,下四位是列控制,P0口低四位接行,高四位接列。

注意顺序不要接错!)
(2)、接8位数码管的显示段控线。

将数码管模块的数据口LED1接到CPU模块的P1口JP1。

(注意顺序不要接错!)
(3)、接4位数码管的显示位控线。

将数码管模块的四位位控接到CPU模块的P2口JPL2的低四位。

四、实验说明
本学习板提供一个4*4的小键盘。

本实验要求做一个简易计算器,包括0~9,10个数字键,‘+’、‘—’、‘*’、‘/’‘=’五个功能键和一个清除键。

五、程序参考框图
六、实验程序:汇编程序及C51程序见“程序”文件夹。

简易计算器实验报告

简易计算器实验报告

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

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

简易计算器 带小数点

简易计算器 带小数点

简易计算器(带小数点)一.主要实现功能1.能完成五位数以内的加减乘除运算(其中整数部分最多为3位,小数部分最多为2位,多余的输入无效)。

2.运算结果数码管显示。

3.在进行减法运算时,如果差是负数,数码管能够显示负数。

4.能及时显示输入的值和运算的结果二.操作方法(类似普通的计算器)显示板上的1--9数字键作为运算是数字的输入,上档键作为加法键,下档键作为减法键,左键作为乘法键,右键作为除法键,Esc键是取消键,用来取消上一次的操作或是返回上一状态。

Enter键在数字输入时作为小数点的键入键,当完成第二个的数输入后,Enter键则作为计算器中的“=”键,得出运算的结果,并且在数码管上显示,其余的操作步骤与方法与普通的计算器类似。

三.程序流程图1.思想从计算器的操作步骤来看,可以把计算器的输入过程分解由四个状态来实现,如下图所示第一个数的输入加减乘除键的输入Enter键得结果第二个数的输入与整数计算器不同的是,带小数的计算器要完成小数点的键入,须记录小数点后面的位数,所以我们又可以把数字的输入分为两个状态,一个是整数部分的键入,另一个是小数部分的键入。

如下所示:数字的输入整数的输入小数的输入程序流程图由程序流程图可以画出程序流程图0 1 2 3以上只是从整体把握计算器程序,也就是程序是通过几个模块实现的。

各个模块之间互不影响的。

各个模块实现的算法可以不同,加减乘除和等号的输入比较简单在这就不描述了,下面对数字的输入和显示做简要的描述,如下图所示:0 1 0 1 2开始 初始化 第一位数加减乘除的输入 第二位数等号键的输入 Num =?显示结束数字的输入Num1=? 整数的输入 小数的输入数字的显示F=?显示第一位 数显示第二位 数显示结果四.算法数字的输入与显示1>.如何从键盘上读出键入的值并且如实的表示出来?例如按顺序输入12.12,则在数码管上显示12.12,我们可设一变量th,从键盘上所读出来的值key ,th=th*10+key,如果按顺序输入1 2 .1 2 ,则th的值为1212。

简易计算器设计

简易计算器设计
自定义边框(border.xml)
引用边框文件
设置边距 设置边框大小 设置边框颜色
网增了一种网格布局(GridLayout),该布局 吸纳了线性布局、表格布局、相对布局的一些优点。它把整个容器划分 成rows行columns列个网格,每个网格可以放置一个控件,除此之外 可以设置一个控件横跨多少列、纵跨多少行,以及控件的摆放方向,是 一行行排列,还是一列列摆放。
直,默认是水平的即按行排列,如果不指定包含多少列,则网格布局只 包含一行,类似于水平的线性布局,如果指定包含多少列,则会根据列 来自动换行;如果是按列排列,则需要指定网格布局中包含多少行,否 则只有一列,类似于垂直的线性布局,如果指定包含多少行,则会根据 行来自动换列; android:layout_row:设置该控件所在网格行的序号; android:layout_rowSpan:设置该控件纵跨多少行; android:layout_column:设置该控件所在网格列的序号; android:layout_columnSpan:设置该控件横跨多少列;
本例中,仅简单实现加、减、乘、除、取余、退格和清空等功能, 单击“←”按钮实现退格功能,将刚刚输入的数字消除,单击“C”按 钮实现清空功能,一切恢复原状。此外,在执行计算过程中,还需处理 多次单击操作符、多次单击小数点、多次单击0等特殊情况。
用户单击按钮
简 易 计 算 器 业 务 流 程

是否第一 次单击
由于大部分按钮都是规则的,并且整体按照行列的形式摆放,因此可 考虑采用表格布局,而表格布局中不允许控件跨行,因此需要嵌套其它 布局管理器。根据最后两行的特点,选择相对布局比较方便,因此可采 用在表格布局中嵌入一个相对布局来实现计算器界面设计。
关键代码

基于单片机简易计算器的设计

基于单片机简易计算器的设计

基于单片机简易计算器的设计在我们的日常生活和工作中,计算器是一个非常实用的工具。

从简单的数学运算到复杂的科学计算,它都能为我们提供快速准确的结果。

而基于单片机设计的简易计算器,不仅具备基本的计算功能,还具有体积小、成本低、易于实现等优点。

一、设计背景随着电子技术的不断发展,单片机的应用越来越广泛。

它在控制、测量、通信等领域都发挥着重要作用。

而将单片机应用于计算器的设计,可以实现更加智能化和个性化的计算功能。

同时,对于学习电子技术的人来说,设计一个基于单片机的简易计算器也是一个很好的实践项目,可以帮助我们更好地理解单片机的工作原理和编程方法。

二、系统总体设计1、功能需求简易计算器应具备基本的四则运算(加、减、乘、除)功能,能够处理整数和小数的运算。

同时,还应具备清零、退位、等号等操作功能。

2、硬件设计硬件部分主要包括单片机最小系统、键盘输入模块、显示模块等。

单片机最小系统是整个系统的核心,负责控制和处理数据。

键盘输入模块用于接收用户的输入指令,显示模块用于显示计算结果。

3、软件设计软件部分主要采用 C 语言进行编程。

通过编写程序,实现对键盘输入的识别和处理,以及对计算结果的输出显示。

三、硬件电路设计1、单片机最小系统单片机选用常见的 STC89C52 芯片,它具有价格低廉、性能稳定等优点。

最小系统包括单片机芯片、晶振电路和复位电路。

晶振电路为单片机提供时钟信号,复位电路用于系统的初始化。

2、键盘输入模块键盘采用4×4 矩阵键盘,通过行列扫描的方式获取用户的输入信息。

键盘上的按键分别对应数字 0-9、四则运算符号、清零、退位和等号等功能。

3、显示模块显示模块选用 1602 液晶显示屏,它可以显示两行字符,每行 16 个字符。

通过单片机的控制,将计算结果和输入的算式显示在屏幕上。

四、软件程序设计1、主程序主程序主要负责初始化系统、扫描键盘、处理输入和计算结果等。

首先,对单片机的各个端口进行初始化设置,然后进入一个无限循环,不断扫描键盘,当检测到有按键按下时,根据按键值进行相应的处理。

简易计算器设计与实现

简易计算器设计与实现

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

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

二、设计思路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("无效的选择,请重新选择功能。

简易计算器实训报告(一)

简易计算器实训报告(一)

简易计算器实训报告(一)简易计算器实训报告实训目的本次简易计算器实训的目的在于让学生了解python语言的基本语法和运算符,同时通过实践操作,提升学生的编程思维和实际应用能力。

实训内容本次实训内容主要包括以下方面:1.简易计算器的基本功能:加、减、乘、除。

2.计算器的界面设计与功能实现。

3.错误处理与异常捕获。

实训步骤步骤一:设计计算器界面在本次实训中,我们采用tkinter库来设计计算器的用户界面。

具体步骤如下:1.创建一个窗口;2.在窗口中添加各种按钮和文本框,用于输入和显示计算结果;3.将按钮按照功能分类,为每个按钮设置对应的事件处理函数。

步骤二:实现基本计算功能根据下拉菜单中所选的运算符,我们可以对输入的两个数进行相应的计算。

具体实现方法如下:1.在计算器窗口中添加一个下拉菜单,用于选择运算符;2.根据所选运算符,获取相应的输入数据,并调用对应的计算函数;3.将计算结果输出到窗口中。

步骤三:错误处理与异常捕获在实际应用中,我们不能保证用户输入的一定是数字,所以我们需要对输入做一些错误处理。

具体方法如下:1.在获取用户输入时,先对输入的字符串进行判断,如果用户输入不合法,弹出提示窗口;2.对于除数为0等异常情况进行相应的异常捕获处理,避免程序崩溃。

实训总结通过本次实训,我们学习了python语言的基本语法和运算符,并通过实践操作,学习了tkinter库的使用方法。

通过本次实训,我们还深入了解了计算器的界面设计和功能实现过程。

此外,我们也学会了一些常用的错误处理和异常捕获方法。

未来拓展本次实训只是简易计算器的基本实现,还有很多可以拓展的功能,如:1.添加科学记数法、三角函数、对数函数、平方根等高级数学运算;2.设计多个数字输入框,实现多操作数的计算;3.添加历史记录功能,记录用户计算过程和结果;4.将计算器移植到移动设备或网页上,提供更为便捷的计算服务。

5.添加输入历史记录及回显功能,便于用户查错和复查。

简易计算器的设计

简易计算器的设计

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

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

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

二、设计目标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____________,________,________,__________。

简易计算器说明书

简易计算器说明书
(6)电源开关
(7)其他基本函数,例如求平方根或百分比键 (%)
更高级的模块也许会有一个单数值记忆按键(M+,M-),可在需要时叫回。
高级电子计算器
较高级的科学计算器或工程型计算器支持三角函数、统计与其他函数。而最先进的现代计算器甚至可显示图型,并且包含计算机代数系统。这种计算器可以编写程序,且内含了代数方程式求解程序、经济模型甚至游戏程序。这类计算器可显示填满显示屏的单一数值。并可将数字以科学记数法表现至9.999999999*10。如果用户试图输入一过大的数值或运算产生过大数值的算式(例如输入100!,即100阶乘),则计算器仅显示错误一词。因为存储器如此有限的计算器无法存储如此巨大的输入(>=10^160)。
1)在程序之中加入足够的操作提醒环节,使得使用者能够清楚的掌握操作流程和界面。
2)程序中分类完成+、-、*、/、x^y、求余、x为底y的对数、求平均,sin、cos、tan、exp、ln、以10为底的对数、取整、平方、立方、绝对值,进制之间的转换;使用者可以根据个人的需要在提示后输入相应的代码,然后进行相应的运算,最后在运算结果中查找自己需要的即可;如需做多步骤运算,只要在上一次运算结束后按照提示输入相应代码即可选择是继续进行运算还是退出程序,操作简便。
3.2算法说明10
4调试分析14
4.1调试目的14
4.2测试要求14
4.3测试方法14
4.4调试与测试结果17
5总结19
参考文献21
致谢22
附录23
1概述
通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!通过C语言课程设计,使自己了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简易计算器设计学院:电气信息工程学院专业:电子科学与技术年级:2010级_小组:王会祥(主力)王成龙余勇老师:_翁嘉铭基于C51单片机的简易计算器1.前言1、本系统选用51单片机为主控机。

通过扩展必要的外围电路接口实现计算的设计。

2、由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD显示数据和结果。

3、键盘部分由3*4矩阵键盘外加8个独立按键共同实现。

通过软件编程可实现整数和小数的简单加、减、乘、除、平方、立方、开根号、清除结果功能。

2.系统总体设计框图3.系统主流程图4.LCD显示1、LCD显示器介绍LCD显示器,它是利用液晶经过处理后能改变光线的传输方向的特性实现信息的显示。

液晶显示器具有体积小、重量轻、功耗低、显示内容丰富灯特点,在单片机的应用系统中得到广泛的应用,液晶显示器按功能可分为三类:笔段式液晶显示器、字符型液晶显示器和图像点阵式液晶显示器。

前两种可显示数字、字符和符号等,而图形点阵式液晶显示器还可以显示汉字和任意图行,达到图文并茂的效果,本次实验是采用LCD1602字符型液晶显示器,LCD1602能够同时显示16x2即32个字符。

1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。

每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用。

2、LCD1602管脚功能1602采用标准的16脚接口,其中:第1脚:VSS为电源地;第2脚:VDD接5V电源正极;第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。

第6脚:E(或EN)端为使能(enable)端。

第7~14脚:D0~D7为8位双向数据端。

第15~16脚:空脚或背灯电源。

15脚背光正极,16脚背光负极。

2、LCD1602字符点阵LCD1602内已经存储了160个不同的点阵字符图形,实现阿拉伯数字、英文字母的大小写、常用符号和日文字符的显示5.键盘检测原理与应用1、键盘电路图3*4键盘8个独立键盘2、独立键盘、矩阵键盘(中断式,扫描式,反转式)在实验中应用。

STC90C51单片机矩阵键盘是3*4=12按键,实现计算器的功能需要约20个按键,12个明显不够,这时考虑用红外遥控来控制,这虽然可以实现,但是在实际中,我们很少用红外的遥控来进行计算,因为容易受到外界的干扰,所以最终采用3*4矩阵键盘和8个独立键盘共同实现。

设计行列键盘接口,一般常采用3种方法读取键值。

一种是中断式,另外两种是扫描法和反转法。

中断式:在键盘按下时产生一个外部中断通知CPU,并由中断处理程序通过不同的地址读取数据线上的状态,判断哪个案件被按下。

扫描法:对键盘上的某一行送低电平,其他行为高电平,然后读取列值。

若列值中有一位是低,则表明该行与低电平对应列的键被按下;否则,扫描下一行。

反转法:先将所有行扫描线输出低电平,读列值。

若列值有一位是低,则表明有键按下,读列值;然后所有列扫描线输出低电平,再读行值。

根据读到的值组合就可以查表得到的键码。

6.实现:1、LCD初始化显示初始化,在这一步进行初始化及设置显示模式等操作,包括以下步骤:设置①显示方式:设置LCD为16X2显示,5X7点阵,八位数据接口②延时③清理显示缓存:清除LCD的显示内容④设置显示模式:LCD显示光标移动设置(光标地址指针加1,整屏显示不移动)2、键盘检测流程图4.3实现算法1、算法设计本计算器支持两个操作数最基本的运算,加法、减法、乘法、除法、平方、立方、开根号的计算,计算结果小数点后保留4位数字。

设计的算法如下:①每输入数字,对数字进行转化,支持小数点;②当输入运算符,说明第一个数输入结束,保存第一个数;i、如果是二元运算符,则返回①,输入第二数后,保存;ii、如果是一元操作符,则等待对第一个数进行计算。

iii、如果是等号,对两个数进行计算,对计算结果保留小数点后4位。

7.原理图8.PCB9.仿真图10.程序代码#include<reg52.h>#include<math.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit K1=P3^0;sbit EN=P2^7;//1602使能控制线sbit RS=P2^6;//1602数据/指令选择控制线sbit RW=P2^5;//1602读写控制线sbit mul_k=P3^0;//按键“*”sbit div_k=P3^1;//按键“/”sbit equ=P3^2;//按键“=”sbit poin_k=P3^3;//按键“.”sbit squre_k=P3^4;//按键平方sbit cube_k=P3^5;//按键立方sbit root_k=P3^6;//按键开根号sbit clear_k=P3^7;//按键清空uchar table[]="0123456789+-*/=.SCRD";//存放字符表uint num=21,d=-1,j=0;long int b=0,e=1,n,c=1;long double k=0,a=0,i=0;void delay(uint z)/*延时子程序。

主要用于系统需要延时的时候*/{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/**1602忙状态检测**/void lcdbusy(){do{EN=0;RS=0;RW=1;P0=0xff;EN=1;_nop_();}while(P0&0x80);EN=0;}void write_com(uchar com)/*LCD1602显示模式控制子程序*/{lcdbusy();RS=0;RW=0;EN=1;P0=com;EN=0;}void write_date(uchar date)/*LCD1602显示子程序*/{lcdbusy();RS=1;RW=0;EN=1;P0=date;EN=0;}uchar keyscan()/*键盘检测子程序。

判断键盘按键,并对每个按键赋予一个相应的键值*/{uchar temp;P1=0xfd;//11111101P1.1=0temp=P1;temp=temp&0xf0;if(temp!=0xf0)//有键被按下{delay(5);P1=0xfd;temp=P1;temp=temp&0xf0;if(temp!=0xf0){switch(temp)//检测按键(0,1,2,3){case0xe0:num=0;d++;i=i*0.1;k=k*(1+9*c)+num*c+num*i;/*当有小数点键按下时(即C=0,i=1),将原来+数字键*0.1,比如原来时10,则运算完后为10.1,若该键又按下,则可以显示10.11,当小数点没按下时,则将原来的数*10,然后加上该按键数,比如原来是9,当该按键按下时,则在液晶上显示91*/break;case0xd0:num=1;d++;i=i*0.1;k=k*(1+9*c)+num*c+num*i;break;case0xb0:num=2;d++;i=i*0.1;k=k*(1+9*c)+num*c+num*i;break;case0x70:num=3;d++;i=i*0.1;k=k*(1+9*c)+num*c+num*i;break;}while(temp!=0xf0)//按键释放temp=P1;temp=temp&0xf0;}}}P1=0xfb;//11111011P1.2=0temp=P1;temp=temp&0xf0;if(temp!=0xf0)//有键被按下{delay(5);P1=0xfb;temp=P1;temp=temp&0xf0;if(temp!=0xf0){switch(temp)//检测按键(4,5,6,7){case0xe0:num=4;d++;i=i*0.1;k=k*(1+9*c)+num*c+num*i;break;case0xd0:num=5;d++;i=i*0.1;k=k*(1+9*c)+num*c+num*i;break;case0xb0:num=6;d++;i=i*0.1;k=k*(1+9*c)+num*c+num*i;break;case0x70:num=7;d++;i=i*0.1;k=k*(1+9*c)+num*c+num*i;break;while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xf7;//11110111P1.3=0temp=P1;temp=temp&0xf0;if(temp!=0xf0)//有键被按下{delay(5);P1=0xf7;temp=P1;temp=temp&0xf0;if(temp!=0xf0){switch(temp)//检测按键(8,9,+,-){case0xe0:num=8;d++;i=i*0.1;k=k*(1+9*c)+num*c+num*i;break;case0xd0:num=9;d++;i=i*0.1;k=k*(1+9*c)+num*c+num*i;break;case0xb0:num=10;j=1;c=1;i=0;a=k;k=0;d++;break;case0x70:num=11;j=2;c=1;i=0;a=k;k=0;d++;break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}return num;}void DLkeyscane()//独立按键检测(*/=.){uchar f,m,g;if(!mul_k)//按键“*”{num=12;j=3;c=1;i=0;a=k;k=0;d++;while(mul_k==0)//按键释放{;}}if(!div_k)//按键“/”{num=13;j=4;c=1;i=0;a=k;k=0;d++;while(div_k==0){;}}if(!squre_k)//按键“平方”{num=16;j=5;c=1;i=0;a=k;k=0;d++;while(squre_k==0){;}}if(!cube_k)//按键“立方”{num=17;j=6;c=1;i=0;a=k;k=0;d++;while(cube_k==0){;}}if(!root_k)//按键“开根号”{num=18;j=7;c=1;i=0;a=k;k=0;d++;while(root_k==0){;}}if(!equ)//按键“=”{num=14;{if(j==2)b=(a-k)*100000;/*做减法运算,由于只要显示小数点后面5位,b又定义为整形,故在此先*100000,这样也方便后面判断b位数和液晶显示*/else if(j==1)b=(a+k)*100000;else if(j==4&&k!=0)b=(a/k)*100000;else if(j==5)b=pow(a,2.0)*100000;else if(j==6)b=pow(a,3.0)*100000;else if(j==7)b=sqrt(a)*100000;elseb=(a*k)*100000;for(n=1,m=0;b/n>0;n=n*10)//判断b的位数{m++;}for(g=0;g<m-5;g++){for(f=1;f<m-g;f++)e=e*10;write_com(0x80+0x40+g);delay(10);write_date(table[b/e%10]);//分解数的小数点前面各个位上的数,并在显示器上显示e=1;delay(10);}write_com(0x80+0x40+m-5);delay(10);write_date(table[15]);//紧接前面显示一个小数点delay(10);e=1;for(g=m-4;g<m;g++)//显示小数后面5位{for(f=0;f<m-g;f++)e=e*10;write_com(0x80+0x40+g);delay(10);write_date(table[b/e%10]);e=1;delay(10);}d++;}while(equ==0){;}}if(!poin_k)//按键“小数点”{num=15;c=0;i=1;d=d+1;while(poin_k==0){;}}if(!clear_k)//按键“清空”{num=21;d=-1;j=0;b=0;e=1;c=1;k=0;a=0;i=0;write_com(0x01);//清除LCD的显示内容while(clear_k==0){;}}}/*Lcd初始化*/void init(){write_com(0x38);//设置LCD为16X2显示,5X7点阵,八位数据接口write_com(0x0c);//LCD显示光标移动设置(光标地址指针加1,整屏显示不移动) write_com(0x06);//LCD开显示及光标设置(光标不闪烁,不显示"_")write_com(0x01);//清除LCD的显示内容}/*LCD显示*/void display(){write_com(0x80+d);delay(10);write_date(table[num]);delay(20);}void main()/*主程序*/{init();while(1){//P3=0xff;keyscan();DLkeyscane();display();}}附1:参考资料[1]李晓林,单片机原理及接口技术(第二版).北京,电子工业出版社,2011[2]郭天祥,新概念51单片机c语言教程。

相关文档
最新文档