MATLAB网红时钟

MATLAB网红罗盘时钟

与实际时间一致的罗盘时钟

先看效果(颜色比较丑)
网红时钟
代码附上

%%网红罗盘时钟,基本与当前时间同步   
%%%%差距区别于计算机的运算速度    速度越快,精度越高
clc
close
clear 
tic
T=clock;
%%参数输入
sss=1;%%秒针的步时设施  正常为1秒    很小时用于检测程序正确性   即快进设置
A=[3,22,9,14,40];%%%(月,日,时,分,秒)  %%设置起始时间
xx=-6;
yy=-13;

%%**************程序主体*************************************  
for i=2:length(T)
     A(i-1)=fix(T(i));
 end
y1=A(1);
 r1=A(2);
 s1=A(3);
 ff1=A(4);
 mm1=A(5);
 yyy='m';%%月轮盘颜色
 rrr='m';%%日轮盘颜色
 ssss='m';%%时轮盘颜色
 fff='m';%%分轮盘颜色
 mmm='m';%%秒轮盘颜色
 %%******以上为初始参数%**************************************
 %%下边几句是火柴棍时间的准备语句
x=[-1.6,13,13,-1.6,-1.6];
y=[-0.5,-0.5,0.5,0.5,-0.5];
plot(x,y)
xa=0.5;
ya=0.6;
ba=12;
aa=-2;
plot([aa+1.65],[ba+3*ya/2],'.','color','b')
hold on
plot([aa+1.65],[ba+ya/2],'.','color','b')
hold on
S=[1
    1];
% h0=plot(A(k,1),A(k,2),'*','erasemode','none');
hh1=plot(S(1,:),S(2,:),'color','b','erasemode','none');
hold on
hh2=plot(S(1,:),S(2,:),'color','b','erasemode','none');
hh3=plot(S(1,:),S(2,:),'color','b','erasemode','none');
hh4=plot(S(1,:),S(2,:),'color','b','erasemode','none');
hh5=plot(S(1,:),S(2,:),'color','b','erasemode','none');
hh6=plot(S(1,:),S(2,:),'color','b','erasemode','none');
%%以上是火柴棍时间的准备语句
%以下是罗盘时间的准备语句
axis([-15,15,-15,15]);
set(gcf,'Unit','normalized','Position',[0,0,0.6,1]) 
h=text(xx,yy,'');
fc = sprintf('公元 %d年',T(1)); 
hc=text(-1.4,0,fc,'rotation',0);
%%秒罗盘的设置
for k=1:60
    f0 = sprintf('                                                           %d秒',60-k); 
    h0(k)=text(0,0,f0,'rotation',0,'color',mmm);
end
%%分罗盘的设置
for k=1:60
    f1 = sprintf('                                              %d分',60-k); 
    h1(k)=text(0,0,f1,'rotation',0,'color',fff);
end
%%时罗盘的设置
for k=1:24
    f2 = sprintf('                                   %d时',24-k); 
    h2(k)=text(0,0,f2,'rotation',0,'color',ssss);
end
%%月罗盘的设置
for k=1:12
    f4= sprintf('            %d月',13-k); 
    h4(k)=text(0,0,f4,'rotation',0,'color',yyy);
end
for y=y1:12   %%月计时
    for yh=1:12%%月画图
        set(h4(yh),'rotation',-30*(yh+y-1))
    end
ys=[31 28 31 30 31 30 31 31 30 31 30 31];
if mod(T(1),4)~=0
    ys(2)=29;
end
%%日罗盘的设置
for k3=1:ys(y)
    f3 = sprintf('                       %d日',ys(y)-k3+1); %获得位置
    h3(k3)=text(0,0,f3,'rotation',0,'color',rrr);
end
if y~=y1
    r1=1;
end
for r=r1:ys(y)   %%日计时
    for rh=1:ys(y)%%日画图
        set(h3(rh),'rotation',-(360/ys(y))*(rh+r-1))
    end
    if r~=r1
        s1=1;
    end
for s=s1:24   %%时计时
    for sh=1:24%%时画图
        set(h2(sh),'rotation',-15*(sh+s))
    end  
    if s~=s1
        ff1=1;
    end
for f=ff1:60   %%分计时
   for fh=1:60%%分画图
        set(h1(fh),'rotation',-6*(fh+f))
   end  
    if f~=ff1
        mm1=1;
    end
for m=mm1:60   %%秒计时
    for mh=1:60%%秒画图
        set(h0(mh),'rotation',-6*(mh+m))
    end
    pause(sss*0.992)
    set(h,'string',sprintf('当前时间为:公元 %d年 %d 月 %d 日 %d 时 %d 分 %d 秒',T(1),y,r,s,f,m+1),'color','b')
    %%以下是画火柴棍时间的语句
    s11=fix(s/10);
    s12=s-s11*10;
    f11=fix(f/10);
    f12=f-f11*10;
    m11=fix((m+1)/10);
    m12=m+1-m11*10;
    S=[1
        1];
    [S1]=FX(s11,1,ya,ba,xa,aa);
    [S2]=FX(s12,2,ya,ba,xa,aa);
    [F1]=FX(f11,3,ya,ba,xa,aa);
    [F2]=FX(f12,4,ya,ba,xa,aa);
    [M1]=FX(m11,5,ya,ba,xa,aa);
    [M2]=FX(m12,6,ya,ba,xa,aa);
    set(hh1,'Xdata',S1(1,:),'Ydata',S1(2,:))
    set(hh2,'Xdata',S2(1,:),'Ydata',S2(2,:))
    set(hh3,'Xdata',F1(1,:),'Ydata',F1(2,:))
    set(hh4,'Xdata',F2(1,:),'Ydata',F2(2,:))
    set(hh5,'Xdata',M1(1,:),'Ydata',M1(2,:))
    set(hh6,'Xdata',M2(1,:),'Ydata',M2(2,:))
end%%秒结束
end%%分结束
end%%时结束
end%%日结束
end%%月结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值