1、MATLAB制作时钟 摘 要:MATLAB是一款强大、应用广泛软件,本文关键利用MATLAB相关编程来设计实现时钟界面显示效果。 关键字:MATLAB、时钟、界面 引 言 MATLAB是矩阵试验室(Matrix Laboratory)简称,是美国MathWorks企业出品商业数学软件。MATLAB 应用范围很广,包含信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析和计算生物学等众多应用领域。 本文经过MATLAB编程设计时钟显示界面来体会它功效强大和应用广泛。完整时钟界面有
2、时针、分针、秒针和刻度等组成,下面具体介绍实现时钟界面步骤。 1、设置时钟相关参数,比如界面大小、界面颜色,时钟名称等。 h=figure('menubar','none','color','white',... 'position',[200 200 320 360],... 'name','北京时间'); 2、显示刻度 这个时钟显示了四个刻度,分别是12、9、6、3,以下语句分别显示了这四个刻度。 (1)定义一个text控件,显示刻度“12” b1=ui
3、control('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]);
4、 (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,'p
5、osition',[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,
6、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
7、计算一秒以后秒针角度位置 sita1=sita1+w1*pausetime; (2)计算一秒以后分针角度位置 sita2=sita2+w2*pausetime; (3)计算一秒以后时针角度位置 sita3=sita3+w3*pausetime; 综合以上过程,时钟界面基础已经出炉了,时钟完整程序以下: % function 时钟 h=figure('menubar','none',... 'color','white',... 'positi
8、on',[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
9、'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
10、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
11、 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; %秒针转过角度
12、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;
13、 %设置分针每秒转过角度 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
14、/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(s
15、ita2);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-',
16、'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 程序运行结果
17、以下 结束语 本文经过MATLAB编写时钟程序,对MATLAB有了深入认识和了解,体会到了MATLAB软件应用广泛和强大。为科学研究、工程设计和必需进行有效数值计算众多科学领域提供了一个全方面处理方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)编辑模式,代表了当今国际科学计算软件优异水平。 参考文件 [1]时红霞,刘钧,舒云星.基于MATLAB大学数学试验[J];洛阳工业高等专科学校学报;04期 [2]施晓红,周佳.精通GUI图形界面编程[M].北京:北京大学出版社, [3]孙鹏,高金耀,张涛.利用MATLAB实时处理GPS数据[J],东海海洋.,22(1)






