原创 自己做的计算器-LABVIEW

2008-6-19 23:11 8783 6 17 分类: 测试测量

点击下载 这是自己做的计算器,没有优化,呵呵。需要的自己优化吧


 


虚拟仪器实验报告一<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


                             -----计算器


一、实验目的


实现两个数之间的加、减、乘、除四则运算及开方、求倒、取负运算,达到简易计算器的功能。


二、编程思想


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />完成一种运算的完整过程是:输入第一个数,存储并显示      输入要进行运算的类型并存储   输入第二个数,存储并显示      按“=”或则按其它运算符号“+-*/”进行连续的运算时显示运算结果。


三、程序流程图





 




输入第一个数




输入运算类型




输入第二个数


 




显示结果




结束




按“EXIT




按“C




按“+-*/




按“=




显示结果


 




按“C

<?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />1  程序流程图


四、实现过程


1)、键入感应


首先建立一个簇,然后在簇中再建立布尔量,复制20个以满足键的需求。包括0--9十个数字键,一个小数点键,一个等号键,四则运算键,一个开方键,一个倒数键,一个反号键,一个清零键及一个退出键。然后通过将簇中元素按产生的顺序组成一个一维数组,这样就实现了每个键与数字(0--20)之间的对应。每次按下一个键时,通过查找出对应的键并把结果(对应的数字)连接到一个case结构,然后执行对应case结构中的程序,至此就完成了对一个键的感应过程(图2)。



2  键的感应


2)、数字的读入



3  数字读入程序图


具体赋给哪个操作数通过布尔量change的状态决定,该布尔量状态在输入运算类型键后改变。这里要注意的是:在第二个数键入时,要把结果赋给num3,最终是在num1 num3之间进行运算运算,这样做是为了在一种运算结束后能实现连续的运算。


3)、多零问题


进行运算的数不能以多个零开头。虽然不影响运算结果,但在形式上是错误的。解决这个问题的方法是如图4



4  多零问题解决程序图


4)、小数点问题


一个数中不可能出现两个或两个以上的小数点。解决方法如图5



5  小数点问题程序图


5)、非小数前面出现0开头的问题


进行运算的非小数不能以零开头。虽然不影响运算结果,但在形式上是错误的。解决这个问题的思路如图6,具体解决程序在数据输入时(如图6):


 



输入第二位数据时




把第一位数据与“0“比较




=0




将第一位数据赋为空并显示第二位数




顺序显示数据


6  0开头的问题框图


6)、操作类型


当按下运算类型键时,存储对应的数字序号到type,以按下“=”号时进行运算类型的确定。操作类型默认为“空”。在此操作类型case中同时执行对change状态转换。在其中再用一个case结构用于实现“+-*/”的连续运算(如图7)。



7  操作类型程序图


7)、等号键


11键的case中实现加、减、乘、除、开方及倒数运算。连续按此键可以实现第一操作数对第二操作数的连续运算。并且对type1type2changechange1num2分别清0、清0FT,赋空。


8)、清零键


   16键的case中对num1num2num3赋空字符,显示框中显示0changechange1复位F状态,type1type20


9)、退出键


17键的case中首先对显示框赋空字符,然后终止程序。即以不显示任何字符退出程序。


10)、开方键


18键的case中对当前操作数进行开方运算即可。


11)、倒数键


19键的case中对当前操作数进行倒数运算即可。


12)、反号键


20序号的case中对当前操作的进行乘以负1的运算实现反号。


13)、backspace


21序号的case中对当前操作的进行操作以清除输入的错误键(如图8)。计算字符串的长度,把长度减1位后显示。



8  backspace程序图


14)、去掉小数末尾为0的功能


由于经过前面的运算,数据都保持6位小数,不可避免的会出现小数末尾为0的情况。利用while循环,检测result最后一位是否为0,若为0,则减去末位后赋值给本身;若不为0,则退出循环显示数据,从而实现去0的功能(图9)。



9  去掉小数末尾为0程序图


15)、美化面板


    对前面板进行美化,把num1num2num3type1type2resultchange隐藏。计算器前面板如图10


      


10  前面板                       11 windows 系统简易计算器


五、寄存器及布尔变量的作用解释


num1用来存储第一个输入数据。第二个输入数据存入num2中,然后将其赋给 num3,并使num2为空,以便输入的数据存入num2,所有的运算是在num1num3间进行,运算结果都赋给num1resultChange用来判断是第一个数据还是第二个数据。change1的功能是在输入=,运算完后,不需要初始化即可进行下一次运算。change2用来去掉数据小数末尾的0change3用来保证backspace键仅对输入的数据有效,对运算结果无效。type1用来存储运算符号,type2用来保证连续“+-*/”的正确性。 所有的运算结果都赋给resultresult1用来将数据显示在前面板上。后面板及所有的寄存器及布尔变量的初值如图12



12  后面板


六、总结


经过演示,本计算器可实现界面上所有按键的功能,可实现连续运算、报错提示(除数为0、对负数开方)、纠错(非小数前面为0、多个小数点、多零、清除前一位错误输入)等功能。具体操作和功能与WINDOWS系统的简易计算器(图11)一样。


但是由于该计算器仅使用了一些比较简单的结构,所以程序框图不够简化,比较繁琐,这是需要改进的地方,但是这不影响其正常使用。



 

PARTNER CONTENT

文章评论11条评论)

登录后参与讨论

用户1835693 2015-4-22 11:30

图呢???

用户377235 2011-12-27 21:55

大神求发份完整的看看,邮箱an0620@sina.com

用户339504 2011-6-11 16:10

多零问题解决程序图 小数点问题程序图 0开头的问题框图 楼主这三个程序框图不知道是哪个?新手学labview 求教了!!谢谢

jizzll_617398179 2008-7-9 23:53

呵呵,彩云姐的东西不敢删呀

jizzll_617398179 2008-6-27 00:16

呵呵,就是没有优化的。主要是没有时间

zwj-gg_818035047 2008-6-26 19:12

能加进科学计算器就完善了,有空晚上功能。

用户152939 2008-6-26 10:15

终于找到了,谢谢呀

用户149535 2008-6-21 10:39

不错哈

jizzll_617398179 2008-6-20 12:10

怎么会这样呢,我再发发吧

用户124183 2008-6-20 09:48

是啊,没有图片~
相关推荐阅读
jizzll_617398179 2010-02-08 10:53
正确理解A/D转换器的输入
http://www.freescale.com.cn/tech_ariticles/2005/1102_1.asp 许多嵌入式应用都会用到A/D转换器。然而,如果错误连接了A/D转换器输入端的电路,...
jizzll_617398179 2010-01-12 13:37
好久没来,都长草了
好久没来,都长草了,呵呵。整天忙得很,不过估计再过两个月会轻松点~\(≧▽≦)/~啦啦啦...
jizzll_617398179 2009-03-16 21:57
很奇怪,我收到站内信,但是却找不到发信人呢
发信人是个[],点击就跳到我自己的主页了。只好在这里给那位朋友留言了。 我不知道你说的哪篇文章,还有我也不知道你的EDN的ID。你可以在博客上面留言的。...
jizzll_617398179 2009-03-14 13:08
如何在EXCEL中使用16进制数
最近需要计算串口发送的数据,太多而且比较麻烦。知道EXECL功能强大,所以网上找了找,刚好,不错,很方便。网上找到的http://hi.bccn.net/space-99452-do-blog-id-...
jizzll_617398179 2009-03-05 14:37
〖常识〗不同晶振的最大波特率及其误差
最近犯了个错误,呵呵,晶振和波特率的问题,特查了记在这里,O(∩_∩)O~〖常识〗不同晶振的最大波特率及其误差http://www.aoxue.org/bbs/read.php?tid=65585不同...
jizzll_617398179 2009-02-11 14:30
大端模式和小端模式
转载http://www.cnblogs.com/TsuiLei/archive/2008/10/29/1322504.html大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则...
EE直播间
更多
我要评论
11
6
关闭 站长推荐上一条 /3 下一条