基于MATLAB GUI的简易计算器设计

基于MATLAB GUI的简易计算器设计
基于MATLAB GUI的简易计算器设计

基于MATLAB GUI的简易计算器设计

摘要

基于MATLAB GUI的计算器设计是利用GUIDE创建图形用户界面进行计算器设计。设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好的效果。

计算器设计时主要利用到get和set两个函数进行各个控件属性值的传递和设置。计算器实现的功能有:数字0~9和小数点的输入显示,平方、开平方和对数的输入显示。进行四则运算、正弦计算、余弦计算、正切计算和余切计算,可以求阶乘、求百分数和求倒数。可以进行括号及变量x与变量y的输入,结合坐标轴编辑框和曲线颜色编辑框实现函数的曲线绘制。最后运行调试,实现基于MATLAB GUI的计算器的设计。

关键词:MATLAB、GUI、计算器

1 MATLAB GUI介绍

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。

MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂,主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。MATLAB是将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,特别是所附带的30多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。

MATLAB的图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。MATLAB的图形用户界面(GUI)是由光标,窗口,菜单、文字说明等对象构成一个用户界面。用户可以通过键盘输入相关的参数,通

过鼠标选择、激活这些对象,使计算机完成相关的计算或者绘制波形等功能。MATLAB的GUI为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。这样可以使开发者不必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至达到多媒体的效果。可以说MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。

MATLAB的图形界面设计是通过对各种图形对象的操作来实现的,因此用户在使用的过程需要深入了解各种图形对象的特征、属性和操作。由此可见,图形用户界面的设计、制作是一件比较繁琐的工作。图形用户界面的创建一般有两种常用的方式:第一是通过使用m文件直接动态添加控件;第二是使用GUIDE快速生成GUI界面。这两种实现的方法都需要使用M语言编程,但是技术的侧重点不同。所谓的GUIDE就是图形用户界面开发环境(Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。GUIDE可以完成的任务有如下两点:第一是输出GUI,第二是GUI编程。GUIDE实际上是一套MATLAB工具集。打开GUIDE,新建并且保存后,会生成相应的fig文件和m文件,fig文件储存有图形用户界面的外形、菜单构架等信息;m文件则储存设计的程序部分,如主程序、回调函数(Callback)等。在Layout编辑视图,可以使用如下工具:布局编辑器(Layout Editor),对齐工具(Alignment Tool),对象属性观察器(Property Inspector),对象浏览器(Object Browser),菜单编辑器(Menu Editor)。新建一个布局,可以在新窗口中添加各种控件:静态文本(Static Text),编辑框(Edit Text),列表框(List box),滚动条(Slider),按钮(Push button),开关按钮(Toggle Button),单选按钮(Radio button),按钮组(Button Group),检查框(Check Box),弹出式菜单(Popup Menu),坐标轴(Axes),面板(Panel)。每个控件的属性中都含有多个参数,对应各个参数,可以对控件的外观,位置等各方面属性进行修改。其实GUIDE创建图形用户界面的基础也是图形句柄对象,只不过是具有很好的封装,使用起来简便,而且还能够做到可视化的开发,对于一般的用户使用GUIDE创建图形用户界面应用程序已经足够了。本文利用GUIDE创建图形用户界面进行计算器设计,设计GUI界面时,应使总体界面简单大方、控件布局合理,最终达到总体界面友好的效果[3]。

2 计算器设计思路

本文利用GUIDE创建图形用户界面进行计算器设计。设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好的效果。

计算器设计时主要利用到get和set两个函数进行各个控件属性值的传递和设置,利用strcat函数实现把两个字符串连接起来。利用length函数来计算字符串的长度实现后退的功能。利用eval函数将文本框中的字符串转换成数值表达式,利用MATLAB计算出结果返回显示。利用坐标轴axes和ezplot函数进行图形的绘制,利用factorial函数进行求阶乘运算。利用str2num及num2str实现数值与字符之间的转换。

图2-1 计算器设计流程图

3 设计计算器界面及功能

计算器程序由MATLAB代码(.m文件)和GUI图形(.fig)两个部分组成。程序的使用方式是直接利用图形界面中的按键键入所需数值、运算符等,再按等于号即可得出结果。

首先用MATLAB GUI功能,先绘制2个静态文本框和一个坐标轴,再绘制35个命令按钮,以及5个文本编辑框,调整好各控件大小、颜色,整体布局(如图3-1所示)。

图3-1 MATLAB GUI编辑计算器界面

然后通过双击各个按钮来改写其大小、颜色等属性,在m文件中找到与相应按钮对应的回调函数编写其回调函数,最后再运行调试。

计算器设计实现的功能有:数字0~9和小数点的输入显示,平方、开平方和对数的输入显示。进行四则运算、正弦计算、余弦计算、正切计算和余切计算,可以求阶乘、求百分数和求倒数。可以进行括号及变量x与变量y的输入,结合坐标轴编辑框和曲线颜色编辑框实现函数的曲线绘制。还可以实现后退、清空和退出的功能(如图3-2所示)。

图3-2 计算器功能界面

4 计算器的功能实现

4.1 数字0~9设计

计算器数字0~9以按钮(Push Button)为输入传递数字,面板(Panel)和静态文本(Static Text)进行控件的排列和数字显示说明,进行整体界面的设计[1]。

图4-1 计算器数字输入图

数字1~9与数字0的实现代码类似,数字0的实现代码如下:

function pushbutton17_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'0'); %把textstring中的字符与0连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

4.2 四则运算设计

计算器的四则运算是以按钮(Push Button)为输入传递运算符号,面板(Panel)和静态文本(Static Text)进行控件的排列和运算符号显示说明,进行整体界面的设计。

图4-2 计算器四则运算图

运算符号*、/、+与运算符号-的实现代码类似,运算符号-的实现代码如下:

function pushbutton12_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'/'); %把textstring中的字符与/连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

4.3 简单科学计算设计

计算器的简单科学计算是以按钮(Push Button)为输入传递运算符号,面板(Panel)和静态文本(Static Text)进行控件的排列和运算符号显示说明,进行整体界面的设计,正弦、余弦、正切和余切运算是弧度制。

图4-3 计算器余弦运算图

正弦、正切和余切运算与余弦运算的实现代码类似,余弦运算的实现代码如下:

function pushbutton22_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'cos('); %把textstring中的字符与cos(连接起来并赋给textstring

set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

图4-4 计算器阶乘运算图

阶乘运算的实现代码如下:

function pushbutton35_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

ans = factorial(str2num(textString));%把textString求阶乘赋给textstring

textString = strcat(textString,'!'); %把textstring中的字符与!连接起来并赋给textstring set(handles.text1,'String',textString);%把新的textstring中的内容以字符串的形式显示在text1中

set(handles.text2,'String',ans)%把ans中的内容以字符串的形式显示在text2中

4.4 绘制函数图像设计

计算器的绘制函数图像功能是以文本编辑框(Edit Text)为输入传递图形属性,面板(Panel)和静态文本(Static Text)进行控件的排列和运算符号显示说明,坐标轴坐标轴(Axes)进行图形的显示,进行整体界面的设计。Xmin、Xmax为横坐标的范围,Ymin、Ymax为纵坐标的范围,Color为曲线的颜色设置,绘制图像的函数只能为两变量的函数[2]。

图4-5 计算器函数图形绘制

绘制函数图像的实现代码如下:

function pushbutton29_Callback(hObject, eventdata, handles)

fun = get(handles.text2,'String');%把text2中的字符串赋给fun

set(handles.text1,'String',fun); %把新的fun中的内容以字符串的形式显示在text1中

set(handles.text2,'String','') %清空text2

Xmin = get(handles.edit1,'String');%把edit1中的字符串赋给Xmin

Xmax = get(handles.edit2,'String');%把edit2中的字符串赋给Xmax

Ymin = get(handles.edit3,'String');%把edit3中的字符串赋给Ymin

Ymax = get(handles.edit4,'String');%把edit4中的字符串赋给Ymax

fun = ezplot(fun,[str2num(Xmin),str2num(Xmax),str2num(Ymin),str2num(Ymax)]);

col = get(handles.edit5,'String');%把edit5中的字符串赋给col

set(fun,'Color',col);%把设置fun的颜色为col中的字符串

grid on

4.5 功能按钮设计

计算器的功能按钮是以按钮(Push Button)为输入传递相应功能,面板(Panel)进行控件的排列和运算符号显示说明,进行整体界面的设计。

退出即关闭句柄,退出和清空的实现代码如下:

function pushbutton1_Callback(hObject, eventdata, handles)

close(gcf); %关闭句柄值,即关闭界面

function pushbutton2_Callback(hObject, eventdata, handles)

set(handles.text2,'String','') %把text清空

后退的实现代码如下:

function pushbutton3_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

w = length(textString); %w为textstring的长度

t = char(textString);

textString = t(1:w-1); %把t中前w-1个数赋给textstring

set(handles.text2,'String',textString)%把新的textstring中的内容以字符串的形式显示在text2中

五设计总结

本文是利用MATLAB GUI来设计实现科学计算器的简单功能,实现过程较为简单。首先打开MATLAB建立一个GUI工程,然后利用图形用户界面,设计出计算器的大致外观,创建数字按钮、功能按钮、文本框及坐标轴等,再为每一个按钮设置想要实现的功能,然后就是将对应的函数写到自动生成的回调程序中,然后每个按钮就可以实现对应的功能。

本文设计的科学计算器具有实用性强、功能强大、易操作、移植性好、占用资源少、执行效率高等优点。同时也存在不足的方面,可视化界面没有达到最佳效果,功能不是很全面,操作逻辑不是很清晰,以后还需要进一步完善和改进。

在本次计算器设计的过程中还是遇到很多的困难,首先就是程序的问题,编辑出计算器的界面之后,自动生成的结构程序是一个看起来非常乱的程序,每个按键对应什么功能看不出来,于是在原来的工程中找到每个按键所对应回调函数的序号,这样找到按钮所对应的回调函数编写功能程序。编程的过程中,主要是对变量和句柄的控制,对变量相应的赋值后,要返回给主程序,然后就可以在Static Text中显示出来的。通过这次MATLAB GUI 课程设计,使我对MATLAB的操作与GUI界面设计有了更深一步的理解和认识,学习到了以前未曾了解的知识,这次课程设计使我收获很多。

参考文献

[1] 刘卫国.MATLAB程序设计与应用第2版.北京:高等教育出版社,2006.7.

[2] 张德喜等.MA TLAB程序设计与教程.北京:中国铁道出版社,2006.6.

[3] 范明、孟小峰.Matlabd的GUI设计[M].北京:机械工业出版社,2001.

附录

计算器程序:

function varargout = untitled1(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @untitled1_OpeningFcn, ...

'gui_OutputFcn', @untitled1_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

function untitled1_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;

guidata(hObject, handles);

function varargout = untitled1_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;

function pushbutton1_Callback(hObject, eventdata, handles)

close(gcf); %关闭句柄值,即关闭界面

function pushbutton2_Callback(hObject, eventdata, handles)

set(handles.text2,'String','') %把text清空

function pushbutton3_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

w = length(textString); %w为textstring的长度

t = char(textString);

textString = t(1:w-1); %把t中前w-1个数赋给textstring

set(handles.text2,'String',textString)%把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton4_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'^2'); %把textstring中的字符与^2连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton5_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'7'); %把textstring中的字符与7连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton6_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'8'); %把textstring中的字符与8连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton7_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'9'); %把textstring中的字符与9连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton8_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'*'); %把textstring中的字符与*连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在

function pushbutton9_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'4'); %把textstring中的字符与4连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton10_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'5'); %把textstring中的字符与5连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton11_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'6'); %把textstring中的字符与6连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton12_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'/'); %把textstring中的字符与/连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton13_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'1'); %把textstring中的字符与1连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton14_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'2'); %把textstring中的字符与2连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在

function pushbutton15_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'3'); %把textstring中的字符与3连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton16_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'+'); %把textstring中的字符与+连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton17_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'0'); %把textstring中的字符与0连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton18_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'.'); %把textstring中的字符与.连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton19_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

ans = eval(textString); %将textString的内容转换成数值表达式

set(handles.text1,'String',textString); %把新的textString中的内容以字符串的形式显示在text1中

set(handles.text2,'String',ans) %把新的ans中的内容以字符串的形式显示在text2中function pushbutton20_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'-'); %把textstring中的字符与-连接起来并赋给textstring

set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton21_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'sin('); %把textstring中的字符与sin(连接起来并赋给textstring

set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton22_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'cos('); %把textstring中的字符与cos(连接起来并赋给textstring

set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton23_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'tan('); %把textstring中的字符与tan(连接起来并赋给textstring

set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton24_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'log('); %把textstring中的字符与log(连接起来并赋给textstring

set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton25_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'x'); %把textstring中的字符与x连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在

text2中

function pushbutton26_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'y'); %把textstring中的字符与y连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton27_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'('); %把textstring中的字符与连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton28_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,')'); %把textstring中的字符与)连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton29_Callback(hObject, eventdata, handles)

fun = get(handles.text2,'String');%把text2中的字符串赋给fun

set(handles.text1,'String',fun); %把新的fun中的内容以字符串的形式显示在text1中set(handles.text2,'String','') %清空text2

Xmin = get(handles.edit1,'String');%把edit1中的字符串赋给Xmin

Xmax = get(handles.edit2,'String');%把edit2中的字符串赋给Xmax

Ymin = get(handles.edit3,'String');%把edit3中的字符串赋给Ymin

Ymax = get(handles.edit4,'String');%把edit4中的字符串赋给Ymax

fun = ezplot(fun,[str2num(Xmin),str2num(Xmax),str2num(Ymin),str2num(Ymax)]);

col = get(handles.edit5,'String');%把edit5中的字符串赋给col

set(fun,'Color',col);%把设置fun的颜色为col中的字符串

grid on

function pushbutton30_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'='); %把textstring中的字符与=连接起来并赋给textstring set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton31_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'sqrt('); %把textstring中的字符与sqrt(连接起来并赋给textstring

set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton32_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

textString = strcat(textString,'cot('); %把textstring中的字符与cot(连接起来并赋给textstring

set(handles.text2,'String',textString) %把新的textstring中的内容以字符串的形式显示在text2中

function pushbutton33_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

ans = 1/str2num(textString);%把textString取倒数赋给textstring

textString = strcat('1/',num2str(textString)); %把textstring中的字符与%连接起来并赋给textstring

set(handles.text1,'String',textString);%把新的textstring中的内容以字符串的形式显示在text1中

set(handles.text2,'String',ans)%把新的textstring中的内容以字符串的形式显示在text2中function pushbutton34_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

ans = str2num(textString)*100;%把textString乘100赋给textstring

ans = strcat(num2str(ans),'%'); %把textstring中的字符与%连接起来并赋给textstring set(handles.text1,'String',textString);%把新的textstring中的内容以字符串的形式显示在text1中

set(handles.text2,'String',ans)%把ans中的内容以字符串的形式显示在text2中

function pushbutton35_Callback(hObject, eventdata, handles)

textString = get(handles.text2,'String'); %把text2中的字符串赋给textstring

ans = factorial(str2num(textString));%把textString求阶乘赋给textstring

textString = strcat(textString,'!'); %把textstring中的字符与!连接起来并赋给textstring set(handles.text1,'String',textString);%把新的textstring中的内容以字符串的形式显示在text1中

set(handles.text2,'String',ans)%把ans中的内容以字符串的形式显示在text2中

function edit1_Callback(hObject, eventdata, handles)

function edit1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit2_Callback(hObject, eventdata, handles)

function edit2_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit3_Callback(hObject, eventdata, handles)

function edit3_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit4_Callback(hObject, eventdata, handles)

function edit4_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

matlab课程教学设计(简单计算器的设计)

matlab课程设计报告 题目简易计算器的设计 学院电子信息工程学院 专业电子信息 学生姓名和学号 指导教师

一、选题目的及意义 GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作,而在matlab有很简单的gui设计工具,我们可以通过这个工具轻松地构建我们想要的程序,从而实现与用户的信息交互。本次课程设计是使用了matlab中的guide生成了简单的计算器程序。 二、源代码 function varargout = Calculator(varargin) %Simple Calculator %@Anhui University % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Calculator_OpeningFcn, ... 'gui_OutputFcn', @Calculator_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

简易加减计算器小程序

[java語言與程序設計]简易加减计算器小程序 歸真我发表于:2011/8/1922:51:21标签(TAG): 简易加减计算器小程序 在上一篇《简易计算器面板小程序》中,我已对面板部分的程序作了详细的注释,并对程序的运行过程及结果作了完整的介绍,并且是上机调试过了得到的结果。但是,那只是面板,不能运算。要想让它具有运算的功能,还得在此基础上作一些修改,加进有关按钮动作响应部分的程序。为了便于理解,便于调试,便于学习,掌握其要点,我想应该遵循循序渐进的原则,所以,先从加减运算开始,看看这个功能是怎么实现的。请看下面的小程序。从程序中可以看出,它是利用内部类ButtonAct来处理按钮的动作响应的。从总体上讲是两个按钮“运算”和“重置”,但“运算”又区分为“加”和“减”。所以,用负责实现双分支的if语句来编程。 /**C2.java简易加减计算器小程序*/ import java.applet.*; import java.awt.*; import java.awt.event.*; public class C2extends Applet{ TextField t1,t2,t3; Button btn1,btn2; CheckboxGroup select; Checkbox a,s;//分别代表加、减 Label b; public void init(){ t1=new TextField(13); t2=new TextField(13); t3=new TextField(13); btn1=new Button("等于");

btn2=new Button("重置"); select=new CheckboxGroup(); a=new Checkbox("加",true,select); s=new Checkbox("减",false,select); b=new Label("简易加法/减法计算器"); add(b); add(t1); add(a); add(s); add(t2); add(btn1); add(t3); add(btn2); btn1.addActionListener(new ButtonAct());//注册给ButtonAct对象btn2.addActionListener(new ButtonAct());//注册给ButtonAct对象} class ButtonAct implements ActionListener{//内部类,按钮处理public void actionPerformed(ActionEvent e){ int op1,op2,op3; if(e.getSource()==btn1){//等于按钮 op1=Integer.parseInt(t1.getText()); op2=Integer.parseInt(t2.getText()); if(a.getState())//以下判断计算类型并实现相应的计算 op3=op1+op2; else op3=op1-op2; t3.setText(Integer.toString(op3)); } else{//重置按钮 t1.setText(""); t2.setText(""); t3.setText(""); a.setState(true); } } }//end of ButtonAct }//*~ 运行结果为:

基于51单片机的简易计算器论文设计

电子设计结课论文题目: 系别: 专业: 学生姓名: 学号: 实验研究工程设计工程技术研究 年月日

基于51单片机的简易计算器 摘要:工程实践教学环节是为了学生能够更好地巩固和实践所学专业知识而设置 的,在本次工程实践中,我以《智能化测量控制仪表原理与设计》、《MCS-51系列单片微型计算机及其应用》课程中所学知识为基础,设计了简易计算器。本系统以MCS-51系列中的8051单片机为核心,能够实现两位数的四则运算。该系统通过检测矩阵键盘扫描,判断是否按键,经数据转换把数值送入数码管动态显示。 本系统的设计说明重点介绍了如下几方面的内容: 1)基于单片机简易计算器的基本功能,同时对矩阵键盘及1602显示原理进行了简单的阐述; 2)介绍了系统的总体设计、给出了系统的整体流程框图,并对其进行了功能模块划分及所采用的元器件进行了详细说明; 3)对系统各功能模块的软、硬件实现进行了详细的设计说明。 关键词:MCS-51 8051单片机;计算器;加减乘除

目录 目录 第一章绪论 (1) 1.2设计目的 (1) 1.3设计任务 (1) 1.4章节安排说明 (1) 第二章计算器系统简介 (2) 2.1单片机发展现状 (2) 2.2计算器系统现状 (2) 2.3简易计算器系统简介 (3) 第三章主要器件简介 (4) 3.1MCS-51系列单片机简介 (4) 3.2其它器件简介 (7) 3.2.11602显示 (7) 3.2.2矩阵按键 (7) 第四章计算器系统设计 (8) 4.1计算器硬件电路设计 (8) 4.2.2主程序设计............................................................... 错误!未定义书签。结语. (17) 参考文献 (18)

用MATLAB做一个计算器_包括加减乘除_平方_清空等功能

广西科技大学MATLAB课程设计说明书 课题:设计简易计算器 开发环境:MATLAB GUIDE 作者: 系别: 专业: 时间:

实验目的:1、熟悉MATLAB的主要控件使用方法。 2、熟悉MATLAB的GUI设计流程。 实验环境: 编程软件:MATLAB7.0 实验内容与结果: 使用MATLAB的GUI接口设计一个简单的计算器。 效果图: 一、布局GUI。 1.打开Matlab,输入Guide 回车或者在工具栏上点击图标出现Guide 窗口:

2.然后双击“Blank GUI(Default)”出现GUI窗口 3.添加按钮

4.根据按钮的作用及视觉效果做一定的修改 把按钮的字符串大小、颜色进行设置,对按钮的位置进行排布,尽量使按钮集中在静态文本框下面。最终设置的静态文本框为白色,其他按钮均为分红色。 5.保存、添加功能函数 把做好的按钮及静态文本框保存后自动弹出Editor的M文本,对然后对相应的pushbutton添加功能函数。以下是相应按钮的功能函数。 (1)数字按键编写。 在function pushbutton1_Callback(hObject, eventdata, handles)下输入:textString = get(handles.text1,'String'); textString =strcat(textString,'0'); set(handles.text1,'String',textString) 这是使用句柄handles指向对象text1,并以字符串形式来存储数据文本框text1的内容,并存储数个“0”, 然后由set(handles.text1,'String','textString'在text1中输出。

速算,简易计算器c语言代码,可实现加减乘除

#include"stdio.h" #include"math.h" #include"stdlib.h" struct optrstyle { int top; char stack[20]; } struct opndstyle { int top; int stack[20]; } void main() { char ch; while(1) { printf("-----------------------------------------\n"); printf("|-----------欢迎来到速算24--------------|\n"); printf("|----------是否开始游戏?????------------|\n"); printf("|--------- 开始游戏请按'Y'-------------|\n"); printf("|--------- 退出游戏请按其他键-------------|\n"); printf("-----------------------------------------\n"); scanf("%c",&ch); if(ch=='Y' or ch=='y') { } else break; } } int EvaluateExpression() { // 算术表达式求值的算符优先算法。设OPTR 和OPND 分别为运算符栈和运算数栈,OP 为运算符集合。 InitStack(OPTR); Push(OPTR,'#'); InitStack(OPND); c = getchar(); while(c!='#' || GetTop(OPTR)!='#') { if(!In(c,OP))

简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C 语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

用MATLAB GUI设计简单计算器

HUBEI NORMAL UNIVERSITY 《MATLAB与仿真》课程设计论文 Course’s Thesis

摘要 基于MATLAB GUI的计算器设计是利用GUIDE创建图形用户界面进行计算器设计。设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好的效果。 计算器设计时主要利用到get和set两个函数进行各个控件属性值的传递和设置。计算器实现的功能有:数字0~9和小数点的输入显示,平方、开平方和对数的输入显示。进行四则运算、正弦计算、余弦计算、正切计算和余切计算,可以求阶乘、求百分数和求倒数。可以进行括号及变量x与变量y的输入,结合坐标轴编辑框和曲线颜色编辑框实现函数的曲线绘制。最后运行调试,实现基于MATLAB GUI的计算器的设计。 MATLAB GUI介绍 MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。 MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂,主要面对科学计算、可视化以及交互式程设计的高科技计算环境。MATLAB是将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效 数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,特别是所附带的30多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。 MATLAB的图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。MATLAB的图形用户界(GUI)是由光标,窗口,菜单、文字说明等对象构成一个用户界面。用户可以通过键盘输入相关的参数,通过鼠标选择、激活这些对象,使计算机完成相关的计算或者绘制波形等功能。MATLAB的GUI为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。这样可以使开发者不必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至达到多媒体的效果。可以说MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。 MATLAB的图形界面设计是通过对各种图形对象的操作来实现的,因此用户在使用的过程需要深入了解各种图形对象的特征、属性和操作。由此可见,图形用户界面的设计、制作是一件比较繁琐的工作。图形用户界面的创建一般有两种常用的方式:第一是通过使用m文件直接动态添加控件;第二是使用GUIDE快速生成GUI界面。这两种实现的方法都需要使用M语言编程,但是技术的侧重点不同。所谓的GUIDE就是图形用户界面开发环境 (Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。GUIDE可以完成的任务有如下两点:第一是输出GUI,第二是GUI编程。GUIDE

android简单计算器课程设计

摘要 Android是当今最重要的手机开发平台之一,它是建立在Java基础之上的,能够迅速建立手机软件的解决方案。Android的功能十分强大,成为当今软件行业的一股新兴力量。Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,具有以下5个特点:开放性、应用程序无界限、应用程序是在平等条件下创建的,应用程序可以轻松的嵌入网络、应用程序可以并行运行。而简单计算器又是手机上必备的小程序,所以此次创新实践很有意义。并且具有很强的使用性。 关键字:Android Java基础计算器

目录 第1章开发工具与环境 (1) 1.1 Android平台 (1) 1.2 Java开发环境 (1) 1.3 Eclipse (1) 1.4 Android程序基础—Android应用程序的构成 (2) 第2章系统分析与设计 (4) 2.1系统的可行性分析 (4) 2.2 系统的需求分析 (4) 2.3 系统的优势 (4) 2.4 系统的流程图 (5) 第3章系统详细设计 (6) 3.1 动作Activity (6) 3.2 布局文件XML (6) 3.3 Activity的详细设计 (7) 3.2 布局文件XML的详细设计 (21) 3.2 系统的运行结果 (24) 结论 (25) 参考文献 (26)

第1章开发工具与环境 1.1 Android平台 1.谷歌与开放手机联盟合作开发了Android, 这个联盟由包括中国移动、摩托罗拉、高通、宏达和T-Mobile在内的30多家技术和无线应用的领军企业组成。 2.Android是一个真正意义上的开放性移动设备综合平台。通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,来建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统,这样应用之间的通用性和互联性将在最大程度上得到保持。 3.所有的Android应用之间是完全平等的。 4.所有的应用都运行在一个核心的引擎上面,这个核心引擎其实就是一个虚拟机,它提供了一系列用于应用和硬件资源间进行通讯的API。撇开这个核心引擎,Android的所有其他的东西都是“应用”。 5.Android打破了应用之间的界限,比如开发人员可以把Web上的数据与本地的联系人,日历,位置信息结合起来,为用户创造全新的用户体验。 1.2 Java开发环境 Java技术包含了一个编程语言及一个平台。Java编程语言具有很多特性,如面向对象、跨平台、分布式、多线程、解释性等等。Java编程语言起源于Sun公司的一个叫“Green”的项目,目的是开发嵌入式家用电器的分布式系统,使电气更加智能化。1996年1月发布了JDK1.1版本,一门新语言自此走向世界。之后,1998年12月发布了1.2版本,2002年2月发布1.4版本,2004年10月发布1.5版本(5.0),2006年12月发布1.6(6.0)版本,这是目前的最新版本。Java1.2版本是一个重要的版本,基于该版本,Sun将Java技术分为J2SE、J2ME、J2EE,其中J2SE为创建和运行Java程序提供了最基本的环境,J2ME与J2EE 建立在J2SE的基础上,J2ME为嵌入式应用(如运行在手机里的Java程序)提供开发与运行环境,J2EE为分布式的企业应用提供开发与运行环境。 1.3 Eclipse

微机课设简易计算器

微机课程设计报告 题目简易计算器仿真 学院(部)信息学院 专业通信工程 班级2011240401 学生姓名张静 学号33 12 月14 日至12 月27 日共2 周 指导教师(签字)吴向东宋蓓蓓

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C52芯片、汇编语言、数码管、加减乘除

基于matlab的计算器制作

基于MATLAB的计算器制作从入门到高级 项目一、建立GUI框架 1,双击MATLAB图标(本实例使用的是MATLAB R2014),打开软件 2,打开GUI操作界面。有两种方式: a、在命令行窗口输入guide,然后点击回车。 b、先点击新建图标,在选择‘图形用户界面’。 得到如下窗口: 左上方有两个按钮:‘新建GUI’,‘打开现有GUI’。 对于‘新建GUI’:下方的选择框内有你可以选择建立的GUI类型,对于初学者一般选择第一个。下方是用来设置 保存文件位置的。

对于‘打开现有GUI’:初学者可能会在网上下载一些GUI源程序,使用‘打开现有GUI’,再浏览到文件所在位置便可。 3、构建GUI框架: 在选择新建GUI并且确定后,会弹出如下窗口: 在窗口的左边会有很多选项,可以一个个拖动编辑框内; 是不是发现这些选项发挥的作用刚好就是我们平常打开一个网页或者一个软件进行操作时的选择按钮。比较常见的有:按钮、单选按钮、拖动条、弹出式菜单等。看到这里细心地朋友就会发现,MATLAB GUI似乎可以开发出大型

软件哦,只要你有足够的想象力,当你从一个小白进阶到 一个高手之后,你可以做到的。 本次计算器制作只需要用到静态文本(或者是动态文本)用来做显示器,按钮(用来操作)。也可以添加一个面板 用来修饰。 在拖出的选项上双击,会得出该选项的属性栏,比如说 双击一个按钮选项,你会得到: 这个属性框比较复杂,没有必要一个个说清楚(有兴趣的 可以自己研究,其实理解起来也挺简单的) 本次计算器制作,我们只需要知道以下几个:

◆a、BackgroundColor取值为颜色的预定义字符或RGB 数值;缺省(就是默认的意思)值为浅灰色; ◆b、ForegroundColor取值为颜色的预定义字符或RGB 数值,该属性定义控件对象标题字符的颜色;缺省值为黑色; ◆c、String取值为字符串矩阵或块数组,定义控件对 象标题或选项内容; ◆d、FontName取值为控件标题等字体的字库名; ◆e、FontSize取值为数值,控制字体大小; ◆f、Tag取值为字符串,定义了控件的标识值,在任何 程序中都可以通过这个标识值控制该控件对象; ◆g、Style取值可以是pushbutton(缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或listbox; 项目二、简单加法器的制作 1、框架准备

基于MATLAB计算器设计与开发

六.主要参考文献 . (19) 一、课程设计应达到的目的 本课程是为自动化专业本科生开设的专业课程设计课。通过本课程的课程设计实践帮助学生巩固关于数据结构、算法、程序设计的基础知识。通过本课程设计,学生可以初步掌握开发一个小型实用系统的基本方法,提高运用编程软件实现GUI 程序设计的能力。 二、 课程设计的基本要求: 要求利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现: A. 具有友好的用户图形界面。实现十进制数的加、减、乘、除、乘方、取模等简单计算。(必做) B. 科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行。(必做) C. 能够保存上次历史计算的答案,先是答案存储器中得内容。(必做) D. 有清除键,能清除操作,并对不正确的表达式能指出其错误原因。(必做) E. 独立存储器功能,使之可以直接输入存储器,可与存储器中的数值相加减。能够清除独立存储器中的内容。(选做) 利用MATLAB GUI 功能,在绘制一个静态文本框和一个文本编辑框,以及命令按钮,调整好各控件大小、颜色,整体布局如图所示: 然后通过双击个按钮来改写其属性,在m 文件中编写其回调函数,最后在运行调试。 成绩

三、课题设计内容与步骤 3.1 各功能界面设计 GUI设计界面: 3.2 各功能模块实现 算法设计: A. 数字键设计:0—9以及小数点函数都一样,只是参数不同: global jj textString = get(handles.text1,'String'); if(strcmp(textString,'0.')==1)&(jj==0) set(handles. edit1,'String','1') ; else textString =strcat(textString,'1'); set(handles. edit1,'String',textString) end jj=0;

基于单片机的简易计算器设计原理图及程序代码

原理图: #include sbit BEEP=P3^7; char dsp[9]={0,0,12,12,12,12,12,12,12}; unsigned char code Select[]= {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code LED_CODES[]= {0xc0,0xf9,0xa4,0xb0,0x99, //0-4 0x92,0x82,0xf8,0x80,0x90, //5-9 0x86,0xaf,0xff,0x7f,0xbf}; //E,r,不显,.,- void delay11(unsigned int i) { while(i--); } char keyscan() { char KeyL;

char KeyR; P1=0xf0; do { do { P1=0xF0; P1=P1|0xF0; if(P1!=0xF0) { KeyL=P1; P1=0x0F; P1=P1|0x0F; KeyR=P1; } }while(KeyL==0xF0||KeyR==0x0F); delay11(300); } while(P1!=0x0F); switch(KeyL | KeyR) { case 0xb7:{return 0;break;} case 0x7e:{return 1;break;} case 0xbe:{return 2;break;} case 0xde:{return 3;break;} case 0x7d:{return 4;break;} case 0xbd:{return 5;break;} case 0xdd:{return 6;break;} case 0x7b:{return 7;break;} case 0xbb:{return 8;break;} case 0xdb:{return 9;break;} case 0xee:{return 10;break;}//加法 case 0xed:{return 11;break;}//减法 case 0xeb:{return 12;break;}//乘法 case 0xe7:{return 13;break;}//除法 case 0xd7:{return 14;break;}//清零 case 0x77:{return 15;break;}//等于 } } void calculate(char k,char a[8],char b[8]) { char r[8];

基于matlab的计算器编程附代码

1.需求分析 本次的实验要求是设计一个计算器,主要功能如下: (1)实现基本数学运算(加减乘除等),而且要能进行混合运算 (2)实现部分函数功能,如求平方根、求倒数等 (3)能实现小数运算 界面与标准计算器界面类似 根据要求以及以前的学习情况,决定使用matlab进行编程。Matlab强大的计算功能以及便捷的GUI设计,可以较为简便的实现所要求的功能。按照要求,数据输入和输出支持小数点,支持四则混合运算,决定使用如下几个数据进行分析:(1+3)*5 Sqrt(4) 1/2 Sin4 用以检验是否可以进行加减乘除四则运算、平方根、倒数、正弦的运算。 2.程序设计 M atlab的程序设计较为简便,用GUI设计出一个计算器的模型,然后系统会自动生成一个框架,在框架中,写入每一个按键对应的程序就可以实现功能。 3.调式分析 编程的过程中遇到的问题不是很多,基本就是找要实现各个功能的子程序,通过上网和去图书馆,加上自己的编写,终于实现了实验要求的功能。但是有一点很重要,matlab不支持中文,所以从路径到文件名必须是全英文的,不然就无法识别。此外,给每个按键命名也是很重要的,不然在生成的程序框架里面,就无法识别各个按键的作用,编写程序的时候也就无法做到一一对应。 4.使用说明 程序的使用比较简单,由于是可视化界面,直接打开matlab,然后建立一个GUI 工程,再打开生成的fig文件,就是一个计算器的界面,直接按照市面上卖的计算器的

方法,按键使用即可。 5.测试结果 计算结果为20 4sqrt=2 Sin4结果为 1/2=0.5 经过计算,这些结果均与实际结果相吻合,计算器的功能实现的较为完好。 6.心得体会 本次试验由于不限制语言,于是计算功能强大,操作简便的matlab变成了首选,matlab的GUI设计,操作是较为简单的,首先建立一个GUI工程,然后用可视化界面,

用MATLAB制作简单计算器

用M A T L A B制作简单计 算器 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

安阳工学院电子信息与电气工程学院《MATLAB编程与应用》课程大作业 题目:用MATLAB制作简单计算器 班级:电子信息工程(专升本) 教师成绩由以下评分标准累计得出 1、设计和仿真结果正确,分析清晰合理。 40% 2、大作业报告重点突出、阐述清晰。 30% 3、陈述清晰正确、有说服力,能够正确回答问题。 30% 总分 (上述成绩由教师填写) 学生自评分值(该表格全部由学生填写) 大作业总成绩(该表格“姓名”和“学号”由学生填写,“成绩”由教师填写)

1.计任务: 1、熟悉MATLAB的主要控件使用方法。 2、熟悉MATLAB的GUI设计流程。 2.设计方案 利用MATLAB GUI设计实现一个图形用户界面的计算器程序,要求实现: A.实现十进制数的加、减、乘、除、简单计算。 B. 科学计算函数,包括正弦、余弦、正切、(余切、开方、指数等函数运行。 C. 能够保存上次历史计算的答案,先是答案存储器中得内容。 D. 有清除键,能清除操作。 3.方案实施 通过MATLAB的gui程序设计较为简单,在gui设计中主要用到两种控件,显示框用到文本编辑框(edit text),说明框用到静态文本框(Static text),数字以及运算等按钮用到命令按钮(push button)。然后在通过各个按钮的回调函数,实现简单的计算功能。 4.方案施舍 首先用MATLAB GUI功能,在绘制一个静态文本框和一个文本编辑框,以及24个命令按钮,调整好各控件大小、颜色,整体布局如图所示: 图-1 一、布局GUI 1.打开Matlab,输入Guide 回车或者在工具栏上点击图标出现Guide 窗口:

简易加减法计算器

电子技术课程设计 题目:简易加减法计算器 一、设计课题:简易加减法计算器 二、设计任务和要求: 1、用于两位以下十进制数的加减运算。 2、以合适方式显示输入数据及计算结果。 三、原理电路设计 1、方案的比较 对于简单加减计算器可有三种不同的方案 ①用数/模转换,与模拟电路中的加减计算器进行简单的加减计 算。先用74LS147二-十进制优先编码器转化为二进制进行输A,然后数模转化模拟信号,进行加减计算后,转化为数字信号输 出。 此方案思路较明确,但经过二次数模相互转换,精确率较低; 具体输出时的负数效应,与单输入的二进制转化为十进制时电 路较复杂,无成块的集成电路,致使误差率较大。 ②可用数字电路中4位超前进位加法器74LS283与方案一输入相 同;后用三态输出CMOS门电路进行选择输入,进行加法运算

后输出,输出时,注意负数的问题与在输出中2进制与10进制关系的问题。还有寄存器的问题。 此方案思路明确,比较精确,此中的2进制与10进制问题需复杂门电路解决无现成集成元件,存在太多的散元件。减法运算需要反码进行运算,况且在其触发过程中需要考虑同步问题。 ③可运用数字电路中的单时钟同步十进制加/减计数器74LS190 进行加减计算。方案以上升沿进行输入,触发加减计算。本方案输入方式不同于一般输入方式,需要有所改进。但思路明了,不十分复杂,对于负数运算较复杂,可集成程度较高。 终上所述,最好是相互结合,以③为本。 2、单元电路设计

3、元件的选择

对于计数器来说需要选同时可以进行加减计数的计数器进行 加减,因此选用单时钟十进制加/减计数器74LS190. 其电路图及功能表如下: 中间由于1/0的输出不能够持久的进行保持,因此可用RS触 发器进行保持。对于加/减,等于触发需要74LS194进行触发 保持 4、整体电路(见附图) 5、工作原理 主要运用十进制加/减计数器74LS190加/减计数功能与74LS194的触发 功能。 六、设计总结 我们以为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教别人,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。而且,这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。 因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。我们的激情永远还会结束,

计算器参考论文

毕业设计基于单片机的密码锁设计 姓名 系别、专业 导师姓名、职称 完成时间

摘要 近几年单片机技术的发展很快,其中,电子产品的更新速度迅猛。计算器是日常生活中比较常见的电子产品之一。如何才能使计算器技术更加的成熟,充分利用已有的硬件和软件条件,设计出更出色的计算器。 本设计是以STC89C52单片机为核心的计算器模拟系统设计,输入采用4*4矩阵键盘,可以进行加、减、乘、除带符号数字运算(七位整数、六位小数),并在液晶显示屏LCD1602上静态显示操作过程及结果。 关键词:单片机;液晶显示屏;计算器;矩阵键盘 1 绪论 II

1.1 课题背景 随着社会的发展,科学的进步,人们的生活水平在逐步地提高,尤其是微电子技术的发展犹如雨后春笋般的变化。电子产品的更新速度快就不足惊奇了。计算器在人们的日常中是比较常见的电子产品之一,如何使计算器技术更加的成熟,充分利用已有的软件和硬件条件,设计出更出色的计算器,使其更好地为各个行业服务,成了如今电子领域重要的研究课题。 现如今,人们的日常生活中已经离不开计算器了,社会的各个角落都有它的身影,比如商店、办公室、学校……因此设计一款简单实用的计算器会有很大的实际意义。 本设计旨在进一步掌握单片机理论知识,理解嵌入式单片机系统的硬软件设计,加强对实际应用系统设计的能力。通过本设计的学习,使我掌握单片机程序设计和微机接口应用的基本方法,并能综合运用本科阶段所学软、硬件知识分析实际问题,提高解决毕业设计实际问题的能力,为单片机应用和开发打下良好的基础。 1、对字符液晶显示模块的工作原理,如初始化、清屏、显示、调用及外 特性有较清楚的认识,并会使用LCD(液晶显示模块)实现计算结果的显示; 掌握液晶显示模块的驱动和编程,设计LCD和单片机的接口电路,以及利用单片机对液晶显示模块的驱动和操作; 2、在充分分析内部逻辑的概念,进行软件和调试,学会使用,并能够以 其为平台设计出具有四则运算能力简易计算器的硬件电路和软件程序。 1.2 设计目的 通过本次工程实践,运用《智能化测量控制仪表原理与设计》、《MCS-51系列单片微型计算机及其应用》所学知识及查阅相关资料,完成简易计算器的设计,达到理论知识与实践更好结合、提高综合运用所学知识和设计能力的目的。 通过本次设计训练,可以使我们在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。

流体力学简单计算MATLAB程式

用matlab进行编程计算 第一问: z=30;p1=50*9.8*10^4;p2=2*9.8*10^4;jdc=0.00015;gama=9800;d=0.257;L=50000 ;mu=6*10^(-6); hf=z+(p1-p2)/(0.86*gama) xdc=2*jdc/d; beta=4.15;m=1; Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m)); v=4*Q/(pi*d^2); Re=v*d/mu; Re1=59.7/xdc^(8*xdc/7); Re2=(665-765*log(xdc))/xdc; i=hf/L; if Re<3000 Q=Q; elseif 3000

基于MATLAB科学计算器

目录 计算器得效果图 ........................................................................... 错误!未定义书签。 一、GUI设计界面: (3) 1。打开GUI (3) 2。添加按钮 (3) 3。根据按钮得作用及视觉效果做一定得修改: (4) 4。保存、添加功能函数 (4) (1)数字键编写 (4) (2)符号键得编写 (4) (3)运算符“=”得编写 (5) (4)按键“←back"得编写 (5) (5)按键“清空”得编写 (5) (6)按键“退出”得编写 (5) (7)按键“二进制数转十进制数"得编写 (5) (8)按键“十进制数转二进制数”得编写 (5) 二、计算器得使用 (5) 除法运算(÷) (5) 平方运算(^2) (6) 函数cos (∏/3)得计算 (6) 函数arctan (∏/3)得计算 (7) 以2为底得对数得计算(log 2) (7) 十进制数转二进制数得计算(调用dec2bin函数) (8) 二进制数转十进制数得计算(调用bin2dec函数) (8) 三、附各按键得程序源代码 (9) 四、问题与解决方法 (14) 五、心得体会 (14) 参考文献 (15) 计算器得效果图:

一、GUI设计界面: 1。打开GUI 输入Guide 回车或者在工具栏上点击图标打开Guide 窗口: 2。添加按钮

3、根据按钮得作用及视觉效果做一定得修改: 双击按钮(Puch Button)进入按键属性修改显示字符串大小、字体与颜色,然后对按钮得位置进行排布,尽量使按钮集中在静态文本框下面、 4、保存、添加功能函数 把做好得按钮及静态文本框保存后自动弹出Editor得M文本,对然后对相应得pushbutton添加功能函数。以下就是相应按钮得功能函数。 (1)数字键编写 在function pushbutton1_Callback(hObject, eventdata, handles)下输入: textString = get(handles。text1,’String'); textString =strcat(textString,'0'); set(handles、text1,’String',textString) 这就是使用句柄handles指向对象text1,并以字符串形式来存储数据文本框text1得内容,并存储数个“0”, 然后由set(handles。text1,'String','textString’在text1中输出。 同理,分别在function pushbutton2~10_Callback(hObject, eventdata, handles)下给1~9数字按键下编写此类程序、 (2)符号键得编写 function pushbutton12_Callback(hObject, eventdata, handles) textString = get(handles、text1,'String’); textString =strcat(textString,’÷’); set(handles。text1,'String',textString) strcat得作用就是将两个字符串连接起来,就就是在已输入得存储数据textString后添加“÷"进行运算。 然后执行set(handles、text1,’String’,textString)。符号键‘—’、‘*’、‘/’与‘÷'得运算函数类似。“平方运算”,主要就是由“^2”功能实现。

相关文档
最新文档