简易计算器

合集下载

简易计算器的课程设计

简易计算器的课程设计

简易计算器的课程设计一、课程目标知识目标: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是等于号。

  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语言教程。

相关文档
最新文档