1、CVI计算器设计报告课 程 设 计基本信息学生XX:学号:院系名称:信息与电气工程学院 课程设计名称:用CVI设计一个普通的计算器 课程设计地点:H408课程设计时间:2012年11月5日至11月10日同组人XX:课程设计内容目录 页码1、课程设计题目与任务书.22、课程设计用仪器设备名称. 3、课程设计过程. 4、课程设计心得、建议等. 教师评语及课程设计成绩 评语: 成绩:教师签字:年 月 日一、课程设计题目与任务书课程设计(论文)任务书专 业测控技术与仪器班 级0902203学 生徐明珠指导教师王玲题 目虚拟仪器课程设计子 题用CVI设计一个普通的计算器设计时间2012年11月5日至20
2、11年11月10日 共 1 周设计要求用CVI设计一个普通标准型计算器(参考操作系统中的计算器)1、实现简单的加减乘除四则运算;2、实现开方,百分数转化,取倒数运算;3、可以实现清屏,清寄存器的功能;4、实现计算器内部寄存器的存储,读取,加减,清寄存器的功能5、菜单栏的复制,粘贴,退出等功能;指导教师签字: 系(教研室)主任签字:年 月 日二、课程设计用仪器设备名称 计算机一台、NI Labwindows CVI 软件;三、课程设计过程课程设计总体设计概述:题目要求我们使用CVI设计一个简易的计算器,由于功能应与操作系统中的计算器类似,因而我们首先应了解系统自带的计算器的功能。在了解了系统计算
3、器的功能之后,我们便能使用CVI首先设计出计算器的用户界面,在生成源代码之后,为计算器每个按钮设计相对应的回调函数,通过不断的调试,使之满足设计要求,最后,我们还为设计的计算器添加了菜单,力求尽可能地与系统自带的计算器做到一样。3.1 了解系统计算器功能图1 系统计算器操作系统自带的计算器如图1所示,下面分述各个按钮的功能1、 数字键09对应数字,小数点为插入小数点2、 加减乘除对应各自的功能,=号将运算结果显示出来3、 sqrt开方键,将显示的数直接开方,并显示4、 1/x 倒数键,将显示的数取倒数,并显示5、 % 百分号,将按百分比显示运算结果,如50+25%=62.56、 退格键,删除当
4、前显示数字的最后一位7、 CE 清屏8、 C 清除当前的计算,包括显示的数和存储的数字和运算9、MS 将显示的数保存在内存中10、MR 将内存中存储的数显示出来11、MC 清除内存中存储的数12、M+ 将显示的数与内存中存储的数相加,并存储在寄存器中12、M将显示的数与内存中存储的数相减,并存储在寄存器中参照系统计算器,在CVI用户界面窗口设计了如图2的计算器面板。图2 CVI设计的计算器3.2 各按钮及回调函数介绍加减乘除运算程序介绍:1、数字键:当19的按键按下后,其对应的回调函数会读取相应按键的标题值,并与显示框的字符串连接后重新显示在文本框中,字符串用字符串数组str1 存储。2、符号
5、键:当+,*,/,键按下后,会当做运算的第一个数已经输入完毕并存于str1中,将其转化为double型数据存储进strvalue1,并置运算符号的标志位,便于等号处理。3、等号键:当等号键按下后表明运算的第二个数已经输入完毕,将当前的输入数据转化为double型数据,并存储于strvalue2中,依据符号标志位值进行相应的操作,将运算结果存储在strvalue3中,并转化为字符串送文本框显示。(注:此计算器可以实现连续运算:equalflag为输入完参加运算的两个数后是否有等号按下;若有等号按下equalflag=1,则进行有等号的正常运算操作,若没有等号按下equalflag=0,则表明有连
6、续运算,在相应的连续运算的符号的回调函数中进行相应的运算,相当于在符号控件的回调函数中有等号运算操作)其他按键介绍:5、开方键:当第一个数输入完毕后,当按下开方键后,在相应的回调函数中将第一个数由字符串转化为double型数据存储在strvalue1中,并strvalue2=sqrt(strvalue1),将strvalue2转化为字符串并送文本框显示结果。6、百分键:当第一个数输入完毕后,当按下百分键后,在相应的回调函数中将第一个数由字符串转化为double型数据存储在strvalue1中,并strvalue2=100*(strvalue1),将strvalue2转化为字符串str2,并连接
7、%后,送文本框显示结果。7、倒数键:当第一个数输入完毕后,当按下倒数键后,在相应的回调函数中将第一个数由字符串转化为double型数据存储在strvalue1中,并strvalue2=1/ (strvalue1),将strvalue2转化为字符串str2,送文本框显示结果。8、后退键:当数输入完毕后,当按下后退键后,在相应的回调函数里,获取当前文本框的字符串,并获取当前字符串的长度,对字符串的最后字符置零。并送文本框显示。9、清屏键:当数输入完毕后,当按下清屏键后,在相应的回调函数里,将文本框送“”显示。10、清运算结果键:当数输入完毕后,当按下C键后,在相应的回调函数里将字符串数组,存储器清
8、0。11、当前显示数据存储键MS:MS键将当前显示数据存储在寄存器中。12、之前存储数据读取键MR:MR键将之前存储在寄存器中的数据读取,并显示在文本框。13、存储数据运算键M+():将之前MS存储数据与当前数据加,减后放到文本框显示。14、请存储键MC:将存储器里的数据清0。附加菜单介绍:15、复制菜单:将当前显示的数据复制到系统粘贴板上。16、粘贴菜单:将系统粘贴板上数据粘贴到当前文本框中。四、课程设计心得通过本次虚拟仪器课设,我学到了如何用C语言编写简单的计算器程序,熟悉了labwindows CVI的开发环境,基本掌握了编程方法。在实验中,我在数据的连续运算过程中遇到了困难,但通过分析
9、,利用几个标志位来分别标志:是否是第一次进行运算的标志xflag,两次输入数据后是否有等号按下的标志equalflag,基本解决了连续运算的问题。总之,本次实验留给我的编程方法和思考方式,给了我很大的影响,我相信,在未来的学习中,这次实验将给予我产生巨大的指导附:/*/ Labwindows/cvi2009 实现了计算器的基本功能/*#include #include #include #include #include #include toolbox.h#include jisuanqi.h/*static int panelHandle,aboutpanelhandle;static i
10、nt menubarhandle;static char str120; / 参数1的字符串static char str220; / 参数2的字符串static char str320; static char str420; static double strvalue1; / 参数1的值static double strvalue2; / 参数2的值static double strvalue3; / 运算结果static double strvalue4; / 计算器存储用变量static double strvalue5; / 粘贴板用变量static double strvalue
11、6; /static double strvalue7; /static int flag; / 加减乘除的标志static int equalflag=1; / 输完2个数后是否按下“=”标志static int mflag;static int xflag=1; int i;/*void setvalue (void);/*int main (int argc, char *argv) if (InitCVIRTE (0, argv, 0) = 0) return -1; /* out of memory */ if (panelHandle = LoadPanel (0, jisuanq
12、i.uir, PANEL) 0) return -1; DisplayPanel (panelHandle); menubarhandle = GetPanelMenuBar (panelHandle); /获取菜单栏的句柄 RunUserInterface (); DiscardPanel (panelHandle); return 0;/*/ 面板的函数/*int CVICALLBACK panelcb (int panel, int event, void *callbackData, int eventData1, int eventData2) switch (event) case
13、 EVENT_RIGHT_CLICK: / 弹出式的菜单 RunPopupMenu (menubarhandle, MENUBAR_EDIT, panelHandle, eventData1, eventData2, 0, 0, 0, 0); break; case EVENT_CLOSE: QuitUserInterface (0); break; return 0;/*/清显示int CVICALLBACK cmd_ce (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) switch (event) case EVENT_MIT: SetCtrlVal
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1