目录
设计背景
1.1设计目的
2.设计方法
2.1使用软件工具
2.2设计流程
3.模块界面设计及代码分析
3.1登录
3.2注册
3.3主菜单
3.4三极管介绍
3.5进制转换
3.6单位换算
3.7绘图
4.不足和改善
5.总结
-
设计背景
1.1设计目的
本程序旨在帮助为了帮助学生了解三极管的工作原理,输入输出特性并解决其中遇到的一些问题,为此我们还提供一点工具。
2.设计方法
2.1使用软件工具
Matlab2021
2.2设计流程
3.模块界面设计及代码分析
3.1登录
3.1.1登录界面
3.1.2登录代码分析
设置背景图片ha=axes('units','normalized','pos',[0 0 1 1]);uistack(ha,'down');ii=imread('background.jpg');image(ii);colormap grayset(ha,'handlevisibility','off','visible','on');登录accnum=get(handles.edit1,'string');root=get(handles.edit2,'string');fid=fopen('land.txt','r'); %打开文件line=fgetl(fid); %获取文件中的一行while ischar(line) %如果这一行中有字符s=regexp(line,' ','split'); %将这一行以空格为界拆分为数组a=cell2mat(s(1));b=cell2mat(s(2));if strcmp(a,accnum) == 1 && strcmp(b,root)==1 %如果账号密码都对close(spf); %关闭页面run(main); %打开主界面breakendif strcmp(a,accnum)==1 && strcmp(b,root)==0%如果账号对,密码错误msgbox('密码错误!','提示','warn');breakendif strcmp(a,accnum)==0 && strcmp(b,root)==1%如果账号错误msgbox('用户名未注册!','提示','warn');breakendline=fgetl(fid); %获取下一行end清除功能set(handles.edit1,'string',' '); %将空格输入编辑框中set(handles.edit2,'string',' ');关闭功能close(spf)
3.2注册
3.2.1注册界面
3.2.2注册代码分析
accnum=get(handles.edit1,'string');root=get(handles.edit2,'string');fid=fopen('land.txt','a+'); %以追加的方式打开文件fprintf(fid,'%s ',accnum); %将账号和一个空格符写入文件fprintf(fid,'%s\n',root);%将密码写入文件h=dialog('name','关于...','position',[500 500 200 70]);%定义提示框uicontrol('parent',h,'style','text','string','注册成功!','position',[50 40 120 20],'fontsize',12);uicontrol('parent',h,'style','pushbutton','position',...[80 10 50 20],'string','确定','callback','delete(gcbf)');close(spf_01);run(spf);
3.3主菜单
3.3.1主菜单界面
3.3.2主菜单代码分析
工具栏按钮:返回
close(main)
按钮组:切换到下一个gui界面
close(main)
run (其他界面)
3.4三极管介绍
3.4.1介绍界面
3.4.2代码分析
进入坐标系的创造函数
imshow(imread('sjg.png')); %插入图片
3.5进制转换
3.5.1进制转换界面
3.5.2进制转换代码分析
num=get(handles.edit1,'string');num10=bin2dec(num); %二进制转十进制set(handles.edit2,'string',num2str(num10));num=get(handles.edit1,'string');num10=bin2dec(num); %二进制转十进制num8=dec2base(num10,8); %十进制转八进制set(handles.edit2,'string',num2str(num8));num=get(handles.edit1,'string');num10=bin2dec(num); %二进制转十进制num16=dec2hex(num10); %十进制转十六进制set(handles.edit2,'string',num2str(num16));num=get(handles.edit1,'string');num10=base2dec(num,16); %十六进制转十进制num8=dec2base(num10,8); %十进制转八进制set(handles.edit2,'string',num2str(num8));
3.6单位换算
3.6.1单位换算界面
3.6.2单位换算代码分析
长度table=[1,1000,10000,0.53996]; %单位换算表a=get(handles.edit1,'string');b=str2num(a); %类型转换c(1)=b/table(1);for i=1:4%根据单位个数设置循环数c(i)=c(1)*table(i); %计算b=num2str(c(i)); %赋值set(handles.(['edit' num2str(i)]),'string',b);guidata(hObject,handles); %实时更新与保存end面积table=[1,1e2,1e6,1e10]; %单位换算表a=get(handles.edit1,'string');b=str2num(a); %类型转换c(1)=b/table(1);for i=1:4%根据单位个数设置循环数c(i)=c(1)*table(i); %计算b=num2str(c(i)); %赋值set(handles.(['edit' num2str(i)]),'string',b);guidata(hObject,handles); %实时更新与保存end体积table=[1,1e3,1e9]; %单位换算表a=get(handles.edit1,'string');b=str2num(a);c(1)=b/table(1); %类型转换for i=1:3%根据单位个数设置循环数c(i)=c(1)*table(i); %计算b=num2str(c(i));set(handles.(['edit'%赋值 num2str(i)]),'string',b);guidata(hObject,handles); %实时更新与保存end
3.7绘图
3.7.1绘图界面
3.7.2绘图界面代码分析
初始定义t=0:0.01:2*pi; %在列表框的创造函数中定义tcanshu1=sin(t);canshu2=cos(t);canshu3=sin(t)+cos(t);CS={canshu1,canshu2,canshu3};handles.CS=CS;guidata(hObject,handles)%进行更新和保存提取x轴selected_index=get (handles.listbox1,'value');str=get (handles. listbox1, 'string'); %将string的所有文字保存在str中set(handles.edit1,'string',str{selected_index})x=handles.CS{selected_index};%把x储存在handles.xhandles.x=x;guidata(hObject,handles) %进行更新和保存提取y轴selected_index=get (handles.listbox1,'value');str=get (handles. listbox1, 'string'); %将string的所有文字保存在str中set(handles.edit2,'string',str{selected_index})y=handles.CS{selected_index};handles.y=y; %把y储存在handles.yguidata(hObject,handles) %进行更新和保存绘图axes(handles.axes1) %将这个图表至于当前h=plot(handles.x,handles.y);handles.h=h;guidata(hObject,handles) %实时更新与保存axis equal %使其坐标系等价
4.不足和改善
在本次用matlab的gui设计界面时,还有一些不足的地方,如单位换算界面不能实现随机一个输入框都可以换算,输入的数字只会在第一个数据框中显示然后换算到其他数据框,不是非常人性化,还有在进制转换中十进制转二进制,二进制显示有问题,而且十进制两位数转二进制会分开显示,我不知道怎么更改。以上大概就是这次设计的一些问题。除此之外,此次设计还是挺顺利的。
5.总结
在本次设计过程中,我了解matlab的gui设计界面的一些基本应用,例如语句的赋值,图片的插入,界面背景的使用。这次的matlab实习设计让我得到了很大的提升。通过matlab的gui界面可以把许多复杂的程序设计简单化,可以大大节约时间和人力。接下来我也会多多练习matlab加强自身编程能力。