模拟计算器数字输入及显示
- 格式:doc
- 大小:53.50 KB
- 文档页数:6
科目:姓名:学号:院系:类别:(学术、专业)实验一Labview 计算器一、实验目的通过利用labview设计一个简易计算器熟练的掌握labview基本功能和基本操作方法。
二、实验要求利用设计的计算器可以进行简单的四则运算、可以进行平方、开根号和倒数运算、计算器可以进行清零和关闭计算器操作、在输入数据时不慎将某个数字输错可以运用BackSpace清除该值等一些基本简单的运算。
三、实验原理和框图1、前面板设计前面板是LabVIEW的图形用户界面,在LabVIEW环境中可以对这些对象的外观和属性进行设计,LabVIEW提供了非常丰富的界面对象,可以方便地设计出生动、直观、操作方便的用户界面。
本系统中前面板显示程序的输入和输出对象,即,控件和显示器。
本程序中控件主要是按钮,显示器主要是文本显示。
在前面板设计过程中先在前面板整齐排列放置22个确定按钮,将这22按钮的标签隐藏,然后修改这22个确定按钮的名字分别为:0~9十个数字、小数点、正负号、加、减、乘、除、等号、倒数、根号、清零、退格和X的Y次方。
前面板还包括一个文本显示控件用于显示计算的结果和计算器的某些提示,通过改变显示控件的大小使之于计算器的大小相适应。
计算器的前面板还有程序框图中while循环的停止按钮,当按钮按下时计算器停止工作退出到LabVIEW的编辑界面。
为了前面板的美观和防止按钮的移动,分别将前面板的各个按钮和文字进行组合和对前面板进行装饰,装饰采用修饰中的平面框。
如下图所示:2.后面板设计程序框图对象包括接线端和节点,将各个对象连线连接便创建了程序框图,接线端的颜色和符号表明了相应输入控件或显示控件的数据类型。
程序框图是程序的核心,程序要实现的功能都是通过程序框图反应出来的。
本课程设计的程序框图主要运用了while循环、时间结构、条件结构和平铺顺序等结构。
通过上图可以看出当小数点按钮按下时,0.和存临时数据通过字符串连接控件将两者连接到一起;小数点按钮没有按下时,临时数据和小数点通过字符串连接按钮也将两者连接在一起,将连接到一起的数据送到显示控件。
摘要本次课程设计的任务是设计一个具有加减运算功能的简易计算器,并通过合适的方式来显示最后的计算结果。
此次设计电路的完成主要是利用简单的数字电路和电路逻辑运算来进行的。
简易加减计算器电路主要是对数据的输入与显示,数据的加减运算,数据的输出与显示三个主要的方面来设计研究完成的。
在输入电路的部分,我们通过开关的闭合与断开来实现数据的输入,开关闭合接入高电平“1”,断开接入低电平“0”。
而输入的数据将通过显示译码管以十进制的形式显示出来。
由于输入二进制的位数较多,我们采用个位十位分别输入的方式来简化电路。
加减运算电路则主要通过加法器来实现的。
设计电路时,我们将个位和个位、十位和十位分别接入一片加法器。
在进行加法运算时我们所选择的加法器是完全符合要求的,但是在进行减法运算时加法器就不能满足我们的设计要求了。
因此我们将减法转换为加法进行运算,运算时采用补码的形式。
在进行减法时通过异或门将减数的原码全部转换为补码,输入加法器中进行相加。
最后将进位信号加到十位的运算电路上就实现了加减法的运算电路。
在显示电路中,由加法器输出的数据是二进制码。
这些码可能表示超过十的数字,所以显示译码管就不能正确的显示出数字了。
此时要将二进制转化成BCD码,再将BCD 码送到显示译码管中就可以将计算所得的数字显示出来了。
概述1.1设计题目:简易加减计算器1.2设计任务和要求:1)用于两位以下十进制数的加减运算。
2)以合适的方式显示输入数据及计算结果。
1.3设计方案比较:方案一:输入十进制的数字,再通过编码器对十进制的数字进行编码,输出二进制的数据。
运用显示译码器对输入的数字以十进制的形式进行显示。
在进行加减计算的时候将二进制数字运用数模转换,然后再进行相加减。
然后将这些模拟信号再次转换成数字信号转换成数字信号,再将数字信号输入到显示译码管中来显示数剧。
这个方案中要进行数模转换和模数转换所需要的电路器件有些复杂,并且转换的时候需要很长的时间,而且转换以后数值的精度不高。
计算器竖式在线计算
calculator竖式在线计算是一种方便、实用的计算工具,尤其在进行复杂数学运算时,更能体现出它的优势。
下面,我们将详细介绍竖式计算的方法、在线计算器的特点以及一些常见问题的解决方法。
一、计算器竖式的意义和作用
计算器竖式是一种模拟传统纸质竖式计算的方式,通过按键输入数字和运算符,依次进行加、减、乘、除等运算。
竖式计算有助于用户更好地理解和进行数学运算,尤其对于小学生和中学生,可以通过使用竖式计算加深对数学知识的理解。
二、竖式计算方法的详细步骤
1.输入数字和运算符:首先,按照题目要求,输入数字和运算符。
例如:12345 + 67890。
2.按下等于键:完成输入后,按下等于键(=),计算器会自动进行运算。
3.查看结果:计算器会将结果显示在屏幕上,如:70235。
三、在线计算器的优势和特点
1.方便快捷:在线计算器无需购买和携带,只需打开网页或APP即可使用。
2.自动出结果:在线计算器在完成运算后,可以直接显示结果,减少了手动抄写的步骤。
3.纠错功能:在线计算器可以检测输入的数字和运算符是否正确,有助于避免因输入错误导致的计算错误。
4.免费使用:大部分在线计算器都是免费提供的,用户可以随时随地使用。
四、常见问题及解决方法
1.输入错误:如果输入的数字或运算符有误,计算器会提示错误信息。
请检查输入并重新尝试。
2.运算顺序错误:部分复杂的运算需要按照特定的顺序进行,如先乘除后加减。
在这种情况下,计算器会按照运算顺序进行计算。
学号:课程设计题目简易计算器的设计学院自动化专业电气工程及其自动化班级姓名指导教师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. 模拟量输入信号的线性缩放计算公式:
输出值= (输入值- 输入范围下限) * (输出范围上限- 输出范围下限) / (输入范围上限- 输入范围下限) + 输出范围下限
2. 温度转换公式(例如将摄氏度转换为华氏度):
华氏度= 摄氏度* 1.8 + 32
3. 电压-电流转换公式(例如将电压转换为电流):
电流= 电压/ 电阻
这些公式只是一些常见的示例,实际应用中可能会有更加复杂的计算公式,需要根据具体的情况和要求来确定。
在设计和使用模拟量计算器时,建议参考相关的技术文档、规格说明或咨询相关领域的专业人士,以确保正确地选择和应用适合的计算公式。
2013-2014学年第二学期《高级语言程序设计》课程设计报告题目:简单计算器专业:数字媒体技术班级:13级1班姓名:邢洪波指导教师:王辉成绩:计算机与信息工程系二0一四年二月二十日1设计内容及要求1.1 利用本学期所学的《C语言程序设计》课程,运用相关知识,查阅相关资料,编写C语言程序,设计一个简单计算器,要求编写的简单计算器能够模拟windows系统的计算器,用户能够用键盘输入相关数据,能够进行简单的加、减、乘、除运算,并且在程序运行过程中能够正常的退出程序。
在计算器程序运行中,输入数据时如果遇到输入错误的情况,能够能过键盘上的退格键进行删除,并且重新输入正确的数据。
在数据输入完成后,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行清零,并为下一次运算作准备。
1.2 运用相关知识,查阅相关资料,编写一个简单的计算器,能够实现简单的基本的加减乘除运算,在计算器工作时用户能利用键盘或鼠标进行相应操作。
程序基本功能要求实现完整,并有简单的验证。
程序还须有符合标准的程序设计报告。
2概要设计2.1系统流程图2.1 系统流程图2.2主要功能表2.2 主要功能表3设计过程或程序代码#include<stdio.h>#include<math.h>#include<malloc.h> /*malloc的头文件代表在内存中开辟存储空间*/double jisuan(char a[]){int i=1,j,k,m,cnt=0,t1=0,t2=0,t3=0;/*定义整型变量i,j,k,m,n,cnt,t1,t2,t3*/char nibo[50],zhan2[50];/*定义字符型数组*/double x,n,l,z=0,zhan3[50];/*定义双精度变量x,n,l,z,zhan3[50]*/typedef struct /*表示可以用con定义结构体变量*/{double d1;int d2;}dd;typedef struct{dd data[50];int top;}zhan1;zhan1 *shu;/*定义指针变量*/shu=(zhan1 *)malloc(sizeof(zhan1));shu->top=0;while(a[i]!='\0') /*外循环是用while语句*/{if(a[i]>='0'&&a[i]<='9') /*内循环使用if-else语句*/{z=0;j=i+1;while(a[j]>='0'&&a[j]<='9') /*内循环使用各种循环语句的嵌套*/{j++;}j--;for(k=i;k<=j;k++){z=z*10+a[k]-'0';}j=j+1;x=z;if(a[j]=='.'){l=1;i=j+1;j=i+1;while(a[j]>='0'&&a[j]<='9') /*内循环使用各种循环语句的嵌套*/{j++;}j--;for(k=i;k<=j;k++){n=pow(0.1,l);l=l+1;x=x+n*(a[k]-'0');}i=j+1;}else i=j;shu->data[++shu->top].d1=x;shu->data[shu->top].d2=++cnt;nibo[++t1]='0'+shu->data[shu->top].d2;nibo[t1+1]='\0';}else if(a[i]=='('){zhan2[++t2]=a[i];i++;}else if(a[i]==')'){j=t2;while(zhan2[j]!='('){nibo[++t1]=zhan2[j];nibo[t1+1]='\0';j--;}t2=j-1;i++;}else if(a[i]=='+') /*对加法的定义*/{while(t2>0&&zhan2[t2]!='(') /*定义当加号和括号同时出现时*/{nibo[++t1]=zhan2[t2];/*将zhan2[t2]赋给nibo[++t2]*/nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='-') /*对减法的定义*/{if(a[i-1]=='$'){a[0]='0';i=0;}else if(a[i-1]=='('){a[i-1]='0';a[i-2]='(';i=i-2;t2--;}else{while(t2>0&&zhan2[t2]!='(') /*对括号的定义*/{nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}else if(a[i]=='*'||a[i]=='/') /*对乘法和除法的定义*/{while(zhan2[t2]=='*'||zhan2[t2]=='/'||zhan2[t2]=='^'||zhan2[ t2]=='#') /*逻辑运算*/{nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}else if(a[i]=='^'||a[i]=='#') /*逻辑运算中的或运算*/{while(zhan2[t2]=='^'||zhan2[t2]=='#'){nibo[++t1]=zhan2[t2];nibo[t1+1]='\0';t2--;}zhan2[++t2]=a[i];i++;}}while(t2>0){nibo[++t1]=zhan2[t2]; /*将的zhan2[t2]值赋给nibo[++t1]*/nibo[t1+1]='\0'; /*碰到'\0'结束部分程序的运算*/t2--;}j=1;t3=0;while(j<=t1){if(nibo[j]>='0'&&nibo[j]!='^'&&nibo[j]!='#'){for(i=1;i<=shu->top;i++){if((int)(nibo[j]-'0')==shu->data[i].d2){m=i;break;}}zhan3[++t3]=shu->data[m].d1;}else if(nibo[j]=='+') /*对加法的定义*/{zhan3[t3-1]=zhan3[t3-1]+zhan3[t3];t3--;}else if(nibo[j]=='-') /*对减法的定义*/{zhan3[t3-1]=zhan3[t3-1]-zhan3[t3];t3--;}else if(nibo[j]=='*')/*对乘法的定义*/{zhan3[t3-1]=zhan3[t3-1]*zhan3[t3];t3--;}else if(nibo[j]=='/') /*对除法的定义*/{zhan3[t3-1]=zhan3[t3-1]/zhan3[t3];t3--;}else if(nibo[j]=='^') /*对乘方的定义*/{zhan3[t3-1]=pow(zhan3[t3-1],zhan3[t3]);t3--;}else if(nibo[j]=='#') /*对开方的定义*/{zhan3[t3]=sqrt(zhan3[t3]);}j++;}return zhan3[t3];/*返回值*/}void main(){for(;;){char x,a[50];double jieguo;int i=0;a[0]='$';printf("#表示开方,^表示乘方(支持负数)\n");/*对乘方和开方的定义*/printf("请输入表达式无需输入 = 号直接回车可输出答案退出请输入q \n\n");scanf("%c",&x);if(x=='q') break;while(x!='\n') /*碰到'\0'结束部分程序的运算*/{a[++i]=x;scanf("%c",&x);}a[i+1]='\0';jieguo=jisuan(a);printf("\n");printf("结果为:%lf",jieguo);printf("\n\n\n");printf("退出请输入q 继续请直接输入\n\n");}}4设计结果与分析系统测试结果如下:根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本参考下能够修改。
SHARP科学计算器操作手册介绍感谢您购买SHARP型号为EL-W531/W531G/W531H/W531HA/W535的科学计算器。
关于一些计算示例(包括一些公式和表格),可参阅手册背面。
使用时可查阅标题右侧的数字。
本手册使用后,请放置在方便的地方,以便以后参考。
注意:·手册述及的某些型号可能未在某些国家销售。
·本产品数字用点分节。
操作注意·不要在后面的衣袋里携带计算器,你坐下的时候有可能会折断它。
显示屏是用易碎的玻璃制成的。
·使计算器远离热源,诸如汽车仪表板、加热器。
避免暴露在过分潮湿或尘埃的环境中。
·本产品不防水,不要在水或其它液体可溅落到的地方使用或存放。
雨滴、喷雾、果汁、咖啡、蒸汽、汗液等,也有可能导致故障。
·用干净柔软的织物擦拭,请勿使用湿布或溶剂。
·勿抛掷或重压。
·勿把电池掷于火中。
·电池远离儿童可触及的地方。
只有在下列情况下,需要用笔尖或类似的物品按压RESET开关(在背面)。
不要使用易碎或锋利的物品。
注意,按压RESET开关后将会清除存储器中的所有数据。
·首次使用时·更换电池后·为了清除所有存储内容时·当因意外情况导致所有按键不起作用时如果计算器需要维修时,只能求助SHARP经销商、SHARP认定的维修工具或SHARP当地售后服务点。
外盖握住下图所示位置移除外盖。
显示·实际使用时,并非所有的符号都会同时显示。
·手册中的计算示例中只有指令用到的符号才会显示。
:指示箭头所指方向还有内容没有显示出来。
:当被按下时显示,表示橙色字体功能被激活。
:指示被按下并且双曲线功能被激活。
如果按下,“”显示,指示反双曲线功能被激活。
:指示,或被按下,输入(调出)存储内容并且执行调出的统计表。
:指示角度单位。
:执行计算期间显示。
:指标选择了WriteView编辑方式。
模拟简单的计算器,输入两个数及运算符,进行两个数的加、减、乘、除四则运算,如输
本文主要讲述简单计算器的用法,它可以帮助我们解决计算麻烦。
简单计算器支持四则运算,包括加、减、乘、除,用户只需输入两个数,再选择其中一种运算符,便可以求解出运算结果。
比如在计算1+2时,首先,将1放入计算器,再按加号运算以把1+2,最后将2放入计算器,按等号,就可以得出1+2的结果。
同理,计算4*5时,需要将4输入计算器,然后按乘法号,将计算器的结果和5放入计算器,最后按等号即可得出4*5的结果。
由此可见,简单计算器的使用方法是非常容易的,只需要输入两个数,再选择相应的运算符,即可完成运算,计算非常方便。
简单计算器因其简单易用,安装软件和数据识别计算任务中非常有用,可以帮助我们更快、更准确地完成我们的工作。
课程设计简易计算器设计与实现长江职业学院工学院毕业实践报告课题名称:简易计算器设计与实现专业班级:计算机控制技术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. 括号使用:如果需要进行复杂的运算,可以使用括号来控制运算的顺序。
点击左括号按钮("(",输入需要放在括号内的表达式,然后点击右括号按钮")"。
使用时请根据具体型号、版本的操作指南进行操作,如有疑问,可以查看使用手册或联系制造商。
程序二组第二大周练习题(完成后请用U盘带回或发至老师的QQ邮箱)1、输入一个五位数,将其倒序输出。
例如输入78965 则输出569872、交换两个变量的值3、对一批货物,不超过500公斤按0.5元/公斤征税;对于超过500公斤的货物,其中500公斤按0.5元/公斤征税,其余超出部分按照0.8元/公斤征税。
编写一个程序,输入货物重量,输出税额。
4、输入1995年的月份,输出这个月份的天数。
5、模拟计算器:试编写一个根据用户键入的两个操作数和一个运算符,由计算机输出运算结果的程序。
这里只考虑加(+)、减(-)、乘(*)、除(/)四种运算。
6、输入两个正整数a,b。
b最大不超过三位数,a不大于31。
使a在左,b在右,拼接成一个新的数c。
例如:a=2,b=16,则c=216;若a=18,b=476,则c=18476。
提示:求c的公式为:c=a×K+b其中:第三大周学习内容:7、输入1995年的月份,输出这个月份的天数。
(要求使用CASE语句完成)8、模拟计算器:试编写一个根据用户键入的两个操作数和一个运算符,由计算机输出运算结果的程序。
这里只考虑加(+)、减(-)、乘(*)、除(/)四种运算。
(要求使用CASE语句完成)9、P37例510、输出300-500之间的所有偶数11、求1+2+3+4+……+100的和12、求200+202+204+206+……+300的和13、求1*2*3*……*10的积14、学校举行卡拉ok大赛,共十个评委打分,输入十个评委的分数,求出该选手的总分及平均分(小学点后保留两位小数)15、输入十个数求最大数16、输入十个数求最小数17、学校举行卡拉ok大赛,共十个评委打分,输入十个评委的分数,去掉一个最高分,去掉一个最低分,求出该选手的及平均分(小学点后保留两位小数)18、求出所有满足下列条件的二位数:将此两位数的个位数字与十位数字进行交换,可得到一个新数,要求新数与原数之和小于100。
隐藏所有计算器:常见问题问答您可以使用计算器来执行加、减、乘和除运算。
计算器还提供了科学计算器和统计计算器的高级功能。
可以单击计算器按钮来执行计算,或者使用键盘键入进展计算。
通过按 Num Lock,数字键盘也可以用来键入数字和运算符。
以下是有关计算器常见问题的解答。
如何翻开计算器?单击翻开计算器。
如何执行简单计算?1.键入或单击计算中的第一个数字。
2.单击“+〞执行加、“-〞执行减、“*〞执行乘、“/〞执行除。
3.键入或单击计算中的下一个数字。
4.键入或单击所有剩余的运算符和数字。
5.单击“=〞。
如何执行科学计算?1.单击“查看〞菜单,然后单击“科学型〞。
2.单击某一数字系统。
3.单击要使用的显示大小,然后继续计算。
如何执行统计计算?1.单击“查看〞菜单,然后单击“科学型〞。
2.键入或单击首段数据,然后单击“Sta〞翻开“统计框〞对话框。
3.单击“RET〞返回“计算器〞,然后单击“Dat〞保存该值。
4.键入或单击其余的数据,每次输入之后单击“Dat〞。
5.单击“Ave〞、“Sum〞或“s〞。
o“Ave〞计算保存在“统计框〞对话框中各值的平均值,“Sum〞计算值的总和,而“s〞计算标准偏向。
o所有数据都输入完之后,单击“Sta〞可以看到数据列表。
o保存的数值个数记录在“统计框〞对话框的底部。
单击“CD〞可以从列表中删除某个特定值,单击“CAD〞可以删除所有值。
单击“加载〞可以将计算器显示区域中的数字更改为在“统计框〞对话框中选中的数字。
如何处理存储在内存中的数字?在内存中存储数字时,内存选项上方的框中会显示“M〞。
存储其他数字时,内存中的数字将被交换。
可以用以下方法处理内存中的数字:•假设要存储显示的数字,请单击“MS〞。
•假设要重调用存储的数字,请单击“MR〞。
•假设要去除内存,请单击“MC〞。
•假设要将显示的数字与内存中已有的数字相加,请单击“M+〞。
假设要查看新数字,请单击“MR〞。
如何在标准型和科学型视图之间转换数字?1.单击“MS〞存储显示的数字。
23.模拟计算器数字输入及显示
1.实验任务
(1.开机时,显示“0”
(2.第一次按下时,显示“D1”;第二次按下时,显示“D1D2”;第三按下时,显示“D1D2D3”,8个全显示完毕,再按下按键下时,给出“嘀”提示音。
2.电路原理图
图4.23.1
3.系统板上硬件连线
(1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;
(2.把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”
区域中的C1-C4R1-R4端口上;
(3.把“单片机系统”区域中的P0.0-P0.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上;
(4.把“单片机系统:区域中的P2.0-P2.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;
4.相关程序设计内容
(1.行列式键盘输入及按键功能设定;
(2.动态数码显示;
(3.数码显示方式处理;
5.汇编源程序
(略)
6.C语言源程序
#include <AT89X51.H>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char dispbuf[8]={0,16,16,16,16,16,16,16};
unsigned char dispbitcount;
unsigned char temp;
unsigned char i,j;
unsigned char key;
unsigned char keypos;
bit alarmflag;
void change(unsigned char *p,unsigned char count)
{
while(count>0)
{
*(p+count)=*(p+count-1);
count--;
}
}
void main(void)
{
TMOD=0x01;
TH0=(65536-4000) / 256;
TL0=(65536-4000) % 256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
P3=0xff;
P3_4=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=7;
break;
case 0x0d:
key=8;
case 0x0b:
key=9;
break;
case 0x07:
key=10;
break;
}
if ((key>=0) && (key<10))
{
keypos++;
if(keypos<8)
{
change(dispbuf,keypos);
dispbuf[0]=key;
}
else
{
keypos=8;
alarmflag=1;
}
}
temp=P3;
P1_0=~P1_0;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
alarmflag=0;
}
}
P3=0xff;
P3_5=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=4;
break;
case 0x0d:
key=5;
break;
case 0x0b:
case 0x07:
key=11;
break;
}
if ((key>=0) && (key<10))
{
keypos++;
if(keypos<8)
{
change(dispbuf,keypos);
dispbuf[0]=key;
}
else
{
keypos=8;
alarmflag=1;
}
}
temp=P3;
P1_0=~P1_0;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
alarmflag=0;
}
}
P3=0xff;
P3_6=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=1;
break;
case 0x0d:
key=2;
break;
case 0x0b:
key=3;
break;
case 0x07:
}
if ((key>=0) && (key<10))
{
keypos++;
if(keypos<8)
{
change(dispbuf,keypos);
dispbuf[0]=key;
}
else
{
keypos=8;
alarmflag=1;
}
}
temp=P3;
P1_0=~P1_0;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
alarmflag=0;
}
}
P3=0xff;
P3_7=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=0;
break;
case 0x0d:
key=13;
break;
case 0x0b:
key=14;
break;
case 0x07:
key=15;
break;
}
{
keypos++;
if(keypos<8)
{
change(dispbuf,keypos);
dispbuf[0]=key;
}
else
{
keypos=8;
alarmflag=1;
}
}
temp=P3;
P1_0=~P1_0;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
alarmflag=0;
}
}
}
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-4000) / 256;
TL0=(65536-4000) % 256;
P0=dispcode[dispbuf[dispbitcount]];
P2=dispbitcode[dispbitcount];
dispbitcount++;
if (dispbitcount==8)
{
dispbitcount=0;
}
if (alarmflag==1)
{
P1_1=~P1_1;
}
}。