基于LABVIEW的计算器课程设计报告文档格式.docx
《基于LABVIEW的计算器课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《基于LABVIEW的计算器课程设计报告文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
Function
基于LABVIEW的简易计算器设计
1引言
本次课程设计是基于LabVIEW虚拟仪器系统开发与实践等原理与技术而设计的计算器,可以用来模拟真实计算器而进行一些简单的基本运算。
虚拟仪器的起源可以追溯到20世纪70年代,“虚拟”的含义主要是强调软件在仪器中的作用,体现了虚拟仪器与主要通过硬件实现各种功能的传统仪器的不同。
由于虚拟仪器结构形式的多样性和适用领域的广泛性,目前对于虚拟仪器的概念还没有统一的定义。
美国国家仪器公司(NationalInstrunentsCorpotion,NI)认为,虚拟仪器是由计算机硬件资源、模块化仪器硬件和用于数据分析、过程通信及图形用户界面的软件组成的测控系统,是一种计算机操纵的模块化仪器系统。
本次设计的计算器是利用虚拟仪器技术而完成的,可以完成利用计算器可以进行简单的四则运算、可以进行平方、开根号和倒数运算、计算器可以进行清零和关闭计算器操作、在输入数据时不慎将某个数字输错可以运用BackSpace清除该值等一些基本简单的运算。
2总体设计方案
完成标准型计算器的一般功能。
设计框图如图2-1所示:
图2-1程序框图
2.1程序流程图
图2-2程序流程图
2.2簇中的各元素在条件结构中代表的序号
表2-1
簇中元素
默认
1
2
3
4
5
条件结构中序号
6
7
8
9
.
10
11
+/-
+
-
*
/
=
12
13
14
15
16
17
sqrt
%
1/x
Backspace
C
EXIT
18
19
20
21
22
23
2.3具体实现过程
2.3.1前面板设计及键入感应
首先建立一个簇
,然后在簇中建立23个布尔量,其中包括0--9十个数字键,1个小数点键,4个“+、-、*、/”运算键,1个等号键,1个开方键,1个符号转换键,1个倒数键,1个求百分数键,1个清零键,1个退格键,1个退出键。
如图2-3所示:
图2-3前面板
然后通过簇至数组转换函数
将簇中元素按产生的顺序组成一个一维数组,如图2-4所示:
图2-4键入感应过程
这样就实现了每个键与数字(1--23)之间的对应。
每次按下一个键时,通过搜索一维数组函数
查找出对应的键并把其加1后对应的数字连接到一个case结构,然后执行对应case结构中的程序,至此就完成了对一个键的感应过程。
2.3.2运算变量的初始化
在运行程序之前,首先对需要用到的变量进行初始化,如图2-5所示:
图2-5运算变量的初始化
在没有键按下的情况下,数值显示控件显示的是0。
从上到下的寄存器功能依次为:
最上面的用来存储display中的数据,第二个用来存放四则运算的符号,第三个用来前一次运算后输出的数值,最底下的用来给出控制变量。
2.3.3数字1--9的输入
以数字“1”为例,当第一次输入数字“1”后,波尔量为真,进入case结构,将1输出到display中,波尔量变为假,如图2-6所示。
图2-6输入数字1时
若再次输入1,为避免出现01这样的字符串,先判断之前显示的数据是否为0,若为0,则直接输出1,如图2-7所示。
图2-7输入第一个数字为0时
若不为0,则将这两次输入的数据通过连接字符串函数连接到一起,在display中输出。
数字2到9也是同样的道理,如图2-8所示。
图2-8输入第一个数字不为0时
2.3.4数字0的输入
当第一次输入0时,与输入数字1-9的情况相同,现在就零输入时的多零问题进行设计。
虽然以多个零开头不影响输出的结果,但考虑到显示形式的正确性,只在小数点前显示一个零。
当数据输入后,通过连接字符与00比较,若不等,则将数据直接输出如图2-9所示。
图2-9输入不是00时
当数据输入后,通过连接字符与00比较,若相等,则直接输出0,如图2-10所示。
图2-10输入是00时
2.3.5小数点的输入
在小数点的输入时,最多只能显示出一个。
若直接点击小数点,则以“0.”输出。
若之前已输入数据,此时再输入小数点首先利用如图2-11所示程序
图2-11判断小数点的有无
判断已输入的数据中是否含有小数点,若不含有,则执行程序“真”,如图2-12所示;
图2-12输入不含小数点时
若已输入的数据中含有小数点,则执行程序“假”,如图2-13所示。
图2-13输入含有小数点
2.3.6结果去零操作
在进行“+、-、*、/”运算及取负,取百分数,去倒数,开放运算之后程序默认为以保留6位小数的形式输出。
而为了显示结果的简便,将末位不影响结果的零及小数点进行省略。
利用层叠式顺序结构,首先将得出的结果经过N-1位的偏移后与零进行比较,若相等,则进行去零操作,运用while循环结构,直至末位数字不为零,循环结束(如图2-14------上图表示末位为零,下图表示末位不为零)。
图2-14去0操作
在进行去零操作之后,进行层叠式顺序结构的第二层,对无关的小数点进行清除(如图2-15------上图表示末位为小数点,下图表示末位不是小数点)。
图2-15去多余小数点操作
2.3.7“+/-”键的设计
首先进行扫描字符串,将字符串数据转换为数值数据,经过取负数后再转换为字符串形式输出。
如图2-16所示,其中的顺序结构为去末尾零和去无关小数点的操作。
图2-16去0和小数点操作
2.3.8“+、-、*、/”四则运算
以加法为例,当簇中输出的数据表示进行加法运算时,程序进入五层的层叠式顺序结构,首先将字符串进行扫描,转换为数值变量,如图2-17所示。
图2-17扫描字符串并转换为数值变量
之后,对之前的数据进行运算,以保证连续运算时得到正确的结果:
当第一次输入时,默认进行firstrun条件下的程序,如图2-18所示。
图2-18默认条件下的程序
若以前已有运算,以减法为例,先将之前的两个数进行相减运算,并进行去零操作,之后再将本次的运算符号送入“运算符号”的局部变量,以便于进行下次运算,如图2-19所示。
图2-19运算过程操作
2.3.9等号键
实现最终的运算结果,将结果进行去零操作后输出到display中,同时将代表运算符号的移位寄存器置为空字符串。
以加法为例。
如图2-20所示:
图2-20输出运算结果
2.3.10百分数运算
将字符串转换为数值输出后除以100即可得到百分数输出,并对其进行去零(顺序结构的后两层为去零操作),如图2-21所示:
图2-21输出百分数运算结果
2.3.11开方运算
将字符串转换为数值后进行开放运算,再转换为字符串输出,并进行去零操作(顺序结构的后两层为去零操作),如图2-22所示:
图2-22输出开方运算结果
2.3.12取倒数运算
将字符串转换为数值后进行取倒数运算,再转换为字符串输出,并进行去零操作(顺序结构的后两层为去零操作),如图2-23所示:
图2-23取倒去0操作
2.3.13退格键的设计
在点击退格键时,要实现从末位开始的依次推格,直至输出为0.首先,将整数部分与小数部分进行分离,运用拆分字符串函数实现此功能。
分离后,将小数部分的字符串长度与0进行比较,若大于0,则进入到条件结构的“真”,字符串长度减1后与整数部分连接,得到新的display输出,如图2-24所示。
图2-24小数部分退格键设计
若原字符串只有整数部分或者小数部分已经过退格键清除,则进入到条件结构的“假”。
若整数部分的字符串长度大于1,则进入到子条件结构的“假”,将整数的字符串长度减一后输出,如图2-25所示。
图2-25整数部分退格键设计
若整数部分的长度不大于1,即小于等于1时,则进入到子条件结构的“真”,直接输出0.,如图26所示。
图2-26整数部分退格键设计
2.3.14清零键的设计
将程序中所有用到的变量均进行复位,达到清零复位的目的,如图2-27所示。
图2-27清零操作
相当于进行计数器的初始化操作。
2.3.15停止键
程序结束,将T输入到while循环的停止键上,如图2-28所示。
图2-28退出操作
3结论
经过调试,此次设计的简易计算器可以实现实物计算器具有的一般功能。
LABVIEW对于初学者比较容易理解接受,用LABVIEW设计的程序调理分明,具有很强的逻辑。
即使在不深入学习的情况下,也可以实现一些简单的设计。
还可以根据用户自己的需要添加一些特有的功能,这是比实物的计算器更高明的地方的。
但是,由于虚拟仪器的局限,使得用户在一些情况下没有实物用着方便,使用LABVIEW必须在准备好的环境下才能使用。
总之,由于LABVIEW能够为用户提供简明、直观、易用的图形编辑方式,能够将繁琐复杂的语言编程简化成以菜单提示方式选择功能,与传统的语言比较,LABVIEW图形编辑方式能够节省程序的开发时间。
在不久的将来,人们可以LABVIEW设计的计算器计算出任何问题,在实现基础运算的条件下,只需要选择运算的路径,届时使用虚拟仪器一定会成为社会的主流。
致谢
这次毕业设计得到了老师和同学的帮助,另外,感谢消校方给予我们这样一次机会,能够独立的完成一个课题,并在这个过程当中,给予我们一些机会,使我们在即将实习的最后一段时间里,能够更多学习一些实践应用知识,增强了我们实践操作和动手应用能力,提高了独立思考的能力。
再一次对我的母校表示感谢。
感谢在整个毕业设计期间给予过我帮助的伙伴们,在本次课程设计即将结束的最后的日子里,正是因为有了你们的帮助,才让我不仅学到了本次课题所涉及的新知识,更让我感觉到了知识以外的东西。
最后,感谢所有在这次毕业设计中给予过我帮助的人。
再一次真诚地表示感谢你们!
参考文献
[1]叶齐鑫,侯国屏,赵伟.虚拟仪器环境下的频率特性测试方法[J].电测与仪表,2005(6):
10-13.
[2]高聪杰,李松岩.基于LabVIEW的信号输出与数据采集系统[J].数采与监测,2008,(24):
135-136.
[3] 马银平,宣亮亮,彭如.基于LabVIEW的数据采集系统分析与设计《电子元器件应用》2009年第11卷第10期
[4]夏俊芳,周勇,张平华.基于虚拟仪器技术的排种器漏播检测技术[J].华中农业大学学报,2008,27(4):
540-544.
[5] 刘雁征,滕光辉.虚拟仪器技术在设施农业中的应用现状及趋势[J].华中农业大学学报,2004(增刊35):
81-86.
[6]陈秀清.关于虚拟实验室的建设[J].福建广播电视大学学报,2003
(1):
40-43.
[7]杨乐平,李海涛.北京LabVIEW高级程序设计[M].北京:
清华大学出版社,2003.1-350.
[8]陈锡辉.Labview8.20程序设计从入门到精通[M].北京:
清华大学出版社,2007.
[9]龙华伟,顾永刚.LabVIEW8.2.1与DAQ数据采集[M].北京:
清华大学出版社,2008.
[10][美]RobertHBishop,乔瑞萍译.LabVIEW7实用教程[M].北京:
电子工业出版社,2005.
[11]侯国屏,王坤,叶齐鑫.LabVIEW7.1编程与虚拟仪器设计[M].北京:
清华大学出版社,2005.
[12]张桐,陈国顺,王正林.精通LabVIEW程序设计[M].北京:
电子工业出版社,2008.
附录
整体程序
课程设计验收
指导教师评语及成绩:
成绩
指导教师签字
年月日
教研室主任意见
教研室主任签字
年月日
一、设计思想:
.创建3个字符串显示控件num1,num2,num3,其中:
1、第一个输入数据存储在num1中
2、第二个输入数据存入num2中
3、将其赋给
num3,并使num2为空,以便输入的数据存入num2
4、所有的运算是在num1和
num3间进行
5、运算结果都赋给result,同时赋给num1,用于下一次的运算
.创建4个布尔开关按钮change,change1,change2,change3,其中:
1、Change的真假用来判断是第一个数据还是第二个数据
2、change1的功能是在输入=,运算完后,不需要初始化即可进行下一次运算
3、change2用来去掉数据小数末尾的0
4、change3用来保证backspace键仅对输入的数据有效,对运算结果无效
.创建2个数值显示控件type1,type2,并分别在其后面板的属性——数据类型——表示法中选择U8其中:
1、type1用来存储运算符号
2、type2用来保证连续“+、-、*、/”的正确性
3、所有的运算结果都赋给result
4、result经过去零处理后得到result1,将数据显示在前面板上。
利用labview设计一些小项目不仅
可以更好的学习虚拟仪器知识,还能方便生活!
应用所学知识,实现计算器实现步骤的设计框架,设计计算器!
(1)设计目的
利用所学虚拟仪器知识,应用labview软件设计一个能实现加减乘除以及开方、取倒、取反功能的计算器。
提高使用labview设计项目的能力!
(2)设计思路
该设计采用模块化编程思想,从而使整个项目更加的简洁明了,直观大方,利于阅读。
总体上可分为以下几个模块:
(1)数值输入模块:
主要实现的功能就是数值的键入,主要是数字键以及表示进制转换时的进制数的键入。
(2)按键模块:
这个模块包括3个部分,输入数按键,运算符按键以及特殊功能按键。
(3)菜单选择模块:
该模块主要实现的功能有,进制转换功能,弧度角度转换功能,以及标准型计算器和科学计算器之间的切换。
(4)进制选择模块:
可以转换二、八、十、十六进制的数。
(5)单位选择模块:
该功能可以实现将输出的数转换成你想要的单位,包括角度、弧度以及各种进制数。
(6)数值显示模块:
该模块主要功能就是数值的键入显示以及数值的输出显示。
(7)清除返回模块:
该模块主要的功能就是当用户发现输入错误数据时,使用该功能就能改正错误,从而节约了时间
以及提高了计算效率。
(8)三角函数等高级运算模块:
该模块主要就是一些三角函数等一些高级运算,是为科学计算器而设计的,功能非常强大,实时操作性很好。
本次毕业设计是基于LabVIEW所设计的计算器,目的是为了实现两个数之间的加、减、乘、除四则运算及开方、求倒、取负运算,达到简易计算器的功能。
编程的思想是完成一种运算的完整过程是:
输入第一个数,存储并显示
输入要进行运算的类型并存储
输入第二个数,存储并显示
按“=”或则按其它运算符号“+、-、*、/”进行连续的运算时显示运算结果
输入第一个数,进行存储并显示
输入运算的类型并存储
按“=”或则按其它运算符号“+、-、*、/”进行连续的运算,最后显示运算结果。
创建3个字符串显示控件num1,num2,num3,其中:
第一个输入数据存储在num1中,第二个输入数据存入num2中,将其赋给
num3,并使
num2为空,以便输入的数据存入num2,所有的运算是在num1和
num3
间进行,运算结果都赋给result,同时赋给num1,用于下一次的运算。
创建4个布尔开关按钮change,change1,change2,change3,其中:
Change的真假用来判断是第一个数据还是第二个数据,change1的功能是
在输入=,运算完后,不需要初始化即可进行下一次运算,change2用来去
掉数据小数末尾的0,
change3用来保证backspace键仅对输入的数据有效,对运算结果无效。
创建2个数值显示控件type1,type2,并分别在其后面板的属性——
数据类型——表示法中选择U8其中:
type1用来存储运算符号,type2用
来保证连续“+、-、*、/”的正确性,所有的运算结果都赋给result,result
经过去零处理后得到result1,将数据显示在前面板上。
此计算器可以实现基本的加减乘除以及开方、取倒、取反功能,可以
进行数据的连续运算以及简单的报错、纠错功能,在此计算器模版上,可
以继续添加条件分支,实现更多功能的运算,但是不支持第二个数位为开
方、取反、取倒的功能。
前面板设计:
前面板是LabVIEW的图形用户界面,在LabVIEW环境中可以对这些对象的外观和属性进行设计,LabVIEW提供了非常丰富的界面对象,可以方便地设计出生动、直观、操作方便的用户界面。
本系统中前面板显示程序的输入和输出对象,即,控件和显示器。
本程序中控件主要是按钮,显示器主要是文本显示。
在前面板设计过程中先在前面板整齐排列放置22个确定按钮,将这22按钮的标签隐藏,然后修改这22个确定按钮的名字分别为:
0~9十个数字、小数点、正负号、加、减、乘、除、等号、倒数、根号、清零、退格和X的Y次方。
前面板还包括一个文本显示控件用于显示计算的结果和计算器的某些提示,通过改变显示控
件的大小使之于计算器的大小相适应。
计算器的前面板还有程序框图中while循环的停止按钮,当按钮按下时计算器停止工作退出到LabVIEW的编辑界面。
为了前面板的美观和防止按钮的移动,分别将前面板的各个按钮和文字进行组合和对前面板进行装饰,装饰采用修饰中的平面框。
如下图所示:
刚开始接触虚拟仪器这个概念的时候是在大三的下学期,这个当时陌生的新词。
一看到这个词我马上想到我们经常用的仿真软件proteus,那里面就有好多虚拟的电阻、电源、波形发生器等。
顿时,我觉得这个很有意思啊,要是能自己在电脑里设计一个示波器那就厉害了。
从那时开始,我对虚拟仪器产生了一定的兴趣。
Labview采用的是G语言,也就是图形化语言,它不仅是一种编程环境,也是一门编程语言。
Labview因为采用的是图形化语言,
比较适合于专业知识比较薄弱的学习者。
Labview采用的编程思想和传统C语言一样,是嵌套,主函数包含子函数的思想。
所以,当要编写比较大的程序时,整个结构就显得很大很复杂,编写起来比较困难。
虚拟仪器是在通用计算机上加上一组软件和/或硬件,使用者在操作这台计算机时,就像是在操作一台他自己设计的专用电子仪器。
虚拟仪器是一种软件定义的系统,它基于用户需求的软件定义了一般测量硬件的功能。
这就应证了前面师兄跟我说的那句话,光有软件也是不行的,还得有硬件配合,任何软件都有一定的局限性,因为它们都是基于操作系统平台的,而硬件是不需要任何平台的,它自身就可以成为一个平台。
最后我们学习了LabView知识入门,初步掌握了其设计虚拟仪器的方法和步骤,老师的讲解很到位,简单易懂。
在这次虚拟仪器设计过程中,虽然整体上都是借鉴与网上的资源,但是还是有遇到很多的困难,好在共同努力下,终于实现了功能,别说那时候特别兴奋,也更想去学习labview了。
通过学习虚拟仪器这么课,我不仅了解了虚拟仪器的相关知识,而且比较好地掌握了LabWindow/CVI的编程设计,能够编写简单的虚拟仪器。
但是我也知道要想成为一名CVI编程高手还需要进行大量的练习,需要不断地学习。
四、总结
此计算器可以实现基本的加减乘除以及开方、取倒、取反功能,可以进行数据的连续运算以及简单的报错、纠错功能,在此计算器模版上,可以继续添加条件分支,实现更多功能的运算,但是不支持第二个数位为开方、取反、取倒的功能。
为期一周半的虚拟仪器课程设计完成了,时间虽然不长,但是却十分的有意义,课题定下来之后,我们组就积极上网寻找资料,然后自己动手开始设计程序,当我们开始做的时候,一切都不像想象的那么容易,首先简单计算器的程序还比较复杂,虽然不需要接硬件设备,但程序我们编的够呛,不是多复杂,但是层层的嵌套让我们还是有点头晕呢,当我们用几天的时间将程序设计完成之后,我以为下面的工作应该会很简单,但是要将前面板上的键准确的找出来还是花费了我们很长的时间,幸好最后我们还是顺利的将每个键都找出来,实现了既定的设计目标,当结果出来的时候,我们都非常开心,因为这是我们努力出来的结果,这已经是我们大学时期最后第二个课程设计了,我们都非常珍惜这样的机会,在我们即将走向工作岗位的时候,这样需要动手动脑的设计会给我们很大的帮助,最后感谢老师的指导,让我们顺利的完成了课程设计。