数学建模社区-数学中国

标题: 各位可以借鉴下 [打印本页]

作者: chenhan    时间: 2011-1-23 10:12
标题: 各位可以借鉴下
%温度控制系统 动画演示程序
hf=figure('name','温度控制系统','color',[.96 .96 .96]);%设置标题名字
%该温度控制系统保证温度在60-100摄氏度,当温度高于100摄氏度时,开始冷却;当温度低于60度时,开始加热;分别有指示灯指示
axis([-1 1 -1 1]);
% axis('off');hold on;
x1=[0.2 0.2 0.4 0.4];
y1=[-0.46 -1 -1 -0.46];
t=-0.46;%存储温度纵坐标
k=1;k1=1;%k为运行标志位,当k=1时,运行;当k=0时,停止;k1为温度上下降标志位,当k1=1时,温度上升;当k1=0时,温度下降
line([0.2;0.2],[1;-1],'color','k','linewidth',2); %画温度区域左边
line([0.2;0.4],[-1;-1],'color','k','linewidth',2);%画温度区域下边
line([0.4;0.4],[1;-1],'color','k','linewidth',2);%画温度区域右边
line([0.2;0.4],[1;1],'color','k','linewidth',2);%画温度区域上边
line([0.4;0.5],[1;1],'color','r','linewidth',2);%刻度标记100
text(0.5,1,'100摄氏度','color','r');
line([0.4;0.5],[0.2;0.2],'color','b','linewidth',2);%刻度标记60
text(0.5,0.2,'60摄氏度','color','b');
line([0.4;0.5],[-0.46;-0.46],'color','g','linewidth',2);%刻度标记27
text(0.5,-0.46,'室温27摄氏度','color','g');
pp=line([0.2;0.4],[-0.46;-0.46],'color','r','linewidth',3);
Fun1=plot(-0.95,0.6,'color','k','marker','.','markersize',30);%加热显示
text(-1,0.5,'加热');
Fun2=plot(-0.5,0.6,'color','k','marker','.','markersize',30);%冷却显示
text(-0.55,0.5,'冷却');
Fun3=plot(-0.95,0.2,'color','k','marker','.','markersize',30);%电源开显示
text(-1,0.1,'ON');
Fun4=plot(-0.5,0.2,'color','r','marker','.','markersize',30);%电源关显示
text(-0.53,0.1,'OFF');
text(-0.9,0,'电源指示灯');
%停止按钮
pushbutton1=uicontrol(hf,...
    'units','normalized',...
    'style','pushbutton',...
    'string','停止',...
    'backgroundcolor',[0.75 0.75 0.75],...
    'position',[0.1 0.3 0.1 0.1],...
    'callback','k=0;');
%关闭按钮
pushbutton2=uicontrol(hf,...
    'units','normalized',...
    'style','pushbutton',...
    'string','关闭',...
    'backgroundcolor',[0.75 0.75 0.75],...
    'position',[0.3 0.3 0.1 0.1],...
    'callback','close');
temp=patch(x1,y1,[0 1 1]); %画室温初始温度
while k==1    %产生温度上升、下降动画
        set(Fun4,'color','k');
        set(Fun3,'color','r');
        if k1==1    %温度上升
            set(Fun1,'color','r');
            set(Fun2,'color','k');
            for i=1:1600
              a=t+(1-t)/1600*i;
              y1=[a -1 -1 a];
              set(temp,'ydata',y1);
              set(pp,'ydata',[a,a]);
              drawnow;
            end
            t=a;
            k1=0;
          else if k1==0     %温度下降
            set(Fun1,'color','k');
            set(Fun2,'color','r');
            for i=1:1000
                a=t-(t-0.2)/1000*i;
                y1=[a -1 -1 a];
                set(temp,'ydata',y1);
                set(pp,'ydata',[a,a]);
                drawnow;
            end
            t=a;
            k1=1;
              end
        end
end
set(Fun1,'color','k');  %停止还原
set(Fun2,'color','k');
    set(Fun3,'color','k');
    set(Fun4,'color','r');

作者: hsdst    时间: 2011-1-23 13:58
qiang da -----------------------------------------------
作者: chenhan    时间: 2011-1-23 14:07
回复 hsdst 的帖子


    其实这些都是很容易的东西   不是 很难
作者: chenhan    时间: 2011-1-23 14:15
大家可以好好看看  
作者: 五味大侠    时间: 2011-1-23 14:51
lz有点意思
作者: chenhan    时间: 2011-1-23 15:03
回复 五味大侠 的帖子

那是必须的  
   




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5