设计总说明
本次课程设计基于LABVIEW实现具有加减乘除以及开方等简单运算功能的计算器,总体思路是数据的输入,存储,以及相应运算功能转码实现,从而达到数据运算的目的。本次设计运用条件结构、顺序结构以及层叠式顺序结构等实现具体的计算器功能。
目录
一.总体设计思路 (2)
二.前面板的设计以及变量的初始化操作 (3)
2.1设计前面板操作 (3)
2.2各个变量的初始化 (4)
三.数据的输入确定 (6)
3.1 .数据输入方式总体思路 (6)
3.2数据1~9的输入 (7)
3.3数据0的输入 (8)
四.具体运算功能的实现 (9)
4.1加减乘除以及开方功能实现 (9)
4.2倒数功能实现 (11)
4.3小数点的操作 (12)
4.4停止功能实现 (13)
五.设计总结 (14)
六.参考文献 (15)
一.总体设计思路
首先进行第一个数据的输入,本次设计中定义了三个变量number1 number2、以及number3,首次按下的数据存入第一个number1中,并显示,接着进行运算符号的键入,最后输入第二个变量存入number2中,最后运算并显示在结果result 中。具体流程图设计如图1-1
注:由于设计问
题,输错如果不进
行清零处理,会造
成接下来的运算
错误。
图1-1总体流程图
二.前面板的设计以及变量的初始化操作
2.1设计前面板操作
本次设计的计算器共设计22个键码,分别为:0~9十个数字、小数点、正
负号、加、减、乘、除、等号、倒数、根号、清零、退格、开方和停止按钮,还
有一个数据显示display。具体设计如下,如图2-1所示,其中簇中的键码为21个。
图2-1计算器前面板
2.2各个变量的初始化
在运行程序之前,首先对需要用到的变量进行初始化,以免造成运算出错或者紊乱,其具体初始化如下图2-2所示。
不同的变量初始化对应不同的操作,变量的初始赋值至关重要,在整个程序设计中,可以使用变量的相关将一个可以类似使用的变量相关联,变量越少,程序越易于控制。
图2-2变量初始化流程图
三.数据的输入确定
3.1 .数据输入方式总体思路
首先,在前面板上建立一个簇,将各个键码编入在后面板中通簇与数组的转换,将簇中元素按产生的顺序组成一个一维数组,这样就实现了21键与数字(0--20)之间的对应。每次按下一个键时,通过查找出对应的键并把结果(对应的数字)连接到一个case结构,然后执行对应case结构中的程序,至此就完成了对一个键的感应过程,其具体如图3-1
图3-1 簇的建立及数据输入图
(注:簇至数组转换,将相同数据类型元素组成的簇转换为数据类型相同的一维数组
搜索一维数组,在一维数组中从开始索引处开始搜索元素。因为搜索是线性的,所以调用该函数前不必对数组排序。找到元素后,LabVIEW会立即停止搜索。)
3.2数据1~9的输入
图3-2 a 数字0~9输入图
图3-2 b 数字0~9输入图
(注::将输入字符串和一维字符串数组连接成输出字符串。对于数组输入,该函数连
接数组中的每个元素。右键单击函数,从快捷菜单中选择添加输入,或调整函数大小,均可向函数增加输入端
数值至十进制数字符串转换,将数字转换为十进制数组成的字符串,至少为宽度个字符,如有需要,还可适当加宽。如数字为浮点数或定点数,转换之前将被舍入为64位整数。)
3.3数据0的输入
图3-3a 数字0输入图
图3-3b 数字0输入图
四.具体运算功能的实现
4.1加减乘除以及开方功能实现
图4-1减法实现图
图4-2除法实现图
图4-3乘法实现图
图4-4加法实现图
图4-5开方实现图
4.2倒数功能实现
图4-6倒数实现图
(注:分数/指数字符串至数值转换,从偏移量位置开始,将字符串中的下列字符:0-9、加号、减号、e、E、小数点(通常是句点)解析为工程、科学或分数格式的浮点数,在数字中返回。连线板可显示该多态函数的默认数据类型。
数值至小数字符串转换,将数字转换为小数(分数)格式的浮点型字符串,至少为宽度个字符,如有需要,还可适当加宽。连线板可显示该多态函数的默认数据类型)
4.3小数点的操作
图4-7a小数点操作实现图
图4-7b小数点操作实现图
判断已输入的数据中是否含有小数点,若不含有,则执行程序,将数据和小数点进行连接,如图a,若其中已经含有,则不进行数据和小数点的连接操作,如图b。
4.4停止功能实现
图4-8a 停止功能实现图
图4-8b 停止功能实现图
五.设计总结
此次设计应用labview的多种结构以及控件实现简单计算器的功能,但是设计并不十分完善,例如实现运算时只能实现简单的一次加减运算,如果一次计算结束后没有进行清零处理,会造成运算结果错误,所以只是简单的计算。
由于设计是先进行数据的输入再进行相应的运算操作,所以输入的如果不是数据线输入,就会造成运算结果出错。
停止和显示是单独放在簇外面进行处理,当遇到停止按钮按下时,首先文本提示,再确定是否进行停止计算器操作。
本次课程设计,开始设计的时候我只是简单的以为只要运用一个函数编辑器进行加减乘除设计,然后调用子VI再编辑面板就可以了,但经过上网找资料,才发现每个数字键或者运算符键的对应并不是一件简单的事,经过资料搜集以及讨论,我们才明白原来键码的确定十分复杂,开始我把文本显示放在簇中,会出现连线错误,后来就把文件显示和停止直接放在簇外进行设计了,可能面板会比较繁琐一点,我以后会努力改进的。
还有此次课程设计中也遇见了很多的问题,运用了很多的结构,后面板的设计经常出现问题,诸多的结构以及初始化值的确定都出现了很多的错误,经过这次课设,学到了很多老师上课书本没有涉及到的东西,譬如小数点的输入确定,用的是字符串的连接控件实现,我还深切地体会到可能身边很小的一个点也会让自己的处境变得柳暗花明,所以,我以后一定会努力观察,细心设计,不断试着尝试新的东西去学习,还有和同学的交流。
六.参考文献
[1] 黄松岭. 虚拟仪器设计基础教程[M]. 北京:清华大学出版社, 2008
[2] 刘君华. 基于LabVIEW的虚拟仪器设计[M]. 北京: 电子工业出版社, 2003
[3] 张小虹. 数字信号处理[M]. 北京:机械工业出版社, 2005