资源描述
MATLAB课程设计时钟
8
2020年4月19日
文档仅供参考
MATLAB制作时钟
摘 要:MATLAB是一款强大的、应用广泛的软件,本文主要利用MATLAB的相关编程来设计实现时钟界面显示效果。
关键字:MATLAB、时钟、界面
引 言
MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件。MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
本文经过MATLAB编程设计时钟显示界面来体会它功能的强大和应用的广泛。完整的时钟界面有时针、分针、秒针以及刻度等组成,下面详细介绍实现时钟界面的步骤。
1、设置时钟相关参数,比如界面大小、界面颜色,时钟名称等。
h=figure('menubar','none','color','white',...
'position',[200 200 320 360],...
'name','北京时间');
2、显示刻度
这个时钟显示了四个刻度,分别是12、9、6、3,以下语句分别显示了这四个刻度。
(1)定义一个text控件,显示刻度“12”
b1=uicontrol('parent',h,'style','text','string','12','fontsize',…
12,'position',[156 275 20 20]);
(2)定义一个text控件,显示刻度“9”
b2=uicontrol('parent',h,'style','text','string','9','fontsize',…
12,'position',[60 175 20 20]);
(3)定义一个text控件,显示刻度“6”
b3=uicontrol('parent',h,'style','text','string','6','fontsize',…
12,'position',[156 75 20 20]);
(4)定义一个text控件,显示刻度“3”
b4=uicontrol('parent',h,'style','text','string','3','fontsize',…
12,'position',[260 175 20 20]);
3、设置刻度,分别设置分针的刻度和小时的刻度。
(1)绘制表盘, 绘制分钟的刻度
for
n=pi*2:-pi/30:pi/30
a1=0.95*cos(n):0.05*cos(n)/2:cos(n);
b1=0.95*sin(n):0.05*sin(n)/2:sin(n);
plot(a1,b1,'r-');
end
(2)绘制表盘,绘制小时的刻度
for
n=pi*2:-pi/6:pi/30
a1=0.9*cos(n):0.1*cos(n)/2:cos(n);
b1=0.9*sin(n):0.1*sin(n)/2:sin(n);
plot(a1,b1,'r-');
end
4、分别绘制秒针、分针、时针在相关时间的位置
(1)计算一秒以后秒针的角度位置
sita1=sita1+w1*pausetime;
(2)计算一秒以后分针的角度位置
sita2=sita2+w2*pausetime;
(3)计算一秒以后时针的角度位置
sita3=sita3+w3*pausetime;
综合以上过程,时钟界面基本已经出炉了,时钟的完整程序如下:
% function 时钟
h=figure('menubar','none',...
'color','white',...
'position',[200 200 320 360],...
'name','北京时间');
e1=uicontrol('parent',h,... %定义一个edit控件,用于存储日期
'style','edit',... %该控件的类型为edit,能够编辑其内容
'fontsize',12,... %字体大小为12
'position',[110 20 120 30]);
%位置,距离左边110,距离底边20,宽度为120,高度为30
b1=uicontrol('parent',h,... %定义一个text控件,显示刻度“12”
'style','text',...
'string','12',...
'fontsize',12,...
'position',[156 275 20 20]);
b2=uicontrol('parent',h,... %定义一个text控件,显示刻度“9”
'style','text',...
'string','9',...
'fontsize',12,...
'position',[60 175 20 20]);
b3=uicontrol('parent',h,... %定义一个text控件,显示刻度“6”
'style','text',...
'string','6',...
'fontsize',12,...
'position',[156 75 20 20]);
b4=uicontrol('parent',h,... %定义一个text控件,显示刻度“3”
'style','text',...
'string','3',...
'fontsize',12,...
'position',[260 175 20 20]);
s1=[0:pi/1000:2*pi];
hl=plot(cos(s1),sin(s1),'black','linewidth',1.5); %绘制表盘的外圆
title('时钟');%添加标题
time=datestr(now); %得到当前时间
set(e1,'string',time(1:11));
%当前时间的1:11位是日期,把日期值给el
sita1=pi/2-str2num(time(19:20))*pi/30; %秒针转过的角度
sita2=pi/2-str2num(time(16:17))*pi/30+sita1/60;
%分针转过的角度
sita3=pi/2-str2num(time(13:14))*pi/6+sita2/12;
%时针转过的角度
w1=-pi/30; %设置秒针每秒转过的角度,分针走一个半圆需要30s
w2=-pi/1800; %设置分针每秒转过的角度
w3=-pi/108000; %设置时针每秒转过的角度
pausetime=1;
axis off;axis equal
hold on
plot(0,0,'or');
%设置刻度
for n=pi*2:-pi/30:pi/30 %绘制表盘,绘制分钟的刻度
a1=0.95*cos(n):0.05*cos(n)/2:cos(n);b1=0.95*sin(n):0.05*sin(n)/2:sin(n);
plot(a1,b1,'r-');
end
for n=pi*2:-pi/6:pi/30 %绘制表盘,绘制小时的刻度
a1=0.9*cos(n):0.1*cos(n)/2:cos(n);b1=0.9*sin(n):0.1*sin(n)/2:sin(n);
plot(a1,b1,'r-');
end
%时钟指针
while 1
x1=0:0.75*cos(sita1)/2:0.75*cos(sita1);y1=0:0.75*sin(sita1)/2:0.75*sin(sita1); %根据秒针的位置绘制分针
x2=0:0.6*cos(sita2)/2:0.6*cos(sita2);y2=0:0.6*sin(sita2)/2:0.6*sin(sita2); %根据分针的位置绘制分针
x3=0:0.45*cos(sita3)/2:0.45*cos(sita3);y3=0:0.45*sin(sita3)/2:0.45*sin(sita3); %根据时针的位置绘制分针
hp1=plot(x1,y1,'r-','linewidth',1.5);
hp2=plot(x2,y2,'b-','linewidth',2);
hp3=plot(x3,y3,'g-','linewidth',3.5);
sita1=sita1+w1*pausetime; %计算一秒以后秒针的角度位置
sita2=sita2+w2*pausetime; %计算一秒以后分针的角度位置
sita3=sita3+w3*pausetime; %计算一秒以后时针的角度位置
pause(pausetime);
delete(hp1);
delete(hp2);
delete(hp3);
end
hold off
程序运行结果如下
结束语
本文经过MATLAB编写时钟程序,对MATLAB有了进一步的认识和了解,体会到了MATLAB软件的应用广泛和强大。为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
参考文献
[1]时红霞,刘钧,舒云星.基于MATLAB的大学数学实验[J];洛阳工业高等专科学校学报; 04期
[2]施晓红,周佳.精通GUI图形界面编程[M].北京:北京大学出版社,
[3]孙鹏,高金耀,张涛.利用MATLAB实时处理GPS数据[J],东海海洋. ,22(1)
展开阅读全文