如何利用定时器制作万年历?

电子说

1.2w人已加入

描述

说明

使用 timer 对象以排定执行一次或多次 MATLAB® 命令。如果您排定计时器多次执行命令,可以定义每次执行之间的时间间隔以及如何处理排队冲突。

timer 对象使用回调函数执行命令。回调函数在某些事件中执行代码。对于 timer 对象,您可以将回调函数指定为函数句柄或字符串。如果回调函数是字符串,MATLAB 将以可执行代码形式对其求值。当计时器启动 (StartFcn)、执行 (TimerFcn)、停止 (StopFcn) 或遇到错误 (ErrorFcn) 时,计时器对象支持回调函数。

附注: timer 对象受到您的硬件、操作系统和软件的限制。应避免对实时应用程序使用计时器对象。

构造

t= timer 创建一个空的 timer 对象,以排定 MATLAB 命令的执行。如果启动了计时器,但未定义 TimerFcn,则会出现错误。

t= timer(Name,Value) 使用由一个或多个 Name,Value 对组参数指定的其他选项创建 timer 对象。

MATLAB中使用定时器(timer)基本格式为

t = timer('PropertyName1', PropertyValue1, 'PropertyName2', PropertyValue2,...);

start(t);

最简单的定时器一般指定以下属性:

TimerFcn ——指定定时器被触发时要执行的函数或语句

Period ——指定定时器的触发时间,单位为秒

ExecutionMode ——指定定时器的触发方式(触发一次,还是循环触发……),该属性有四个可选值,具体见matlab帮助

TasksToExecute ——指定定时器最多被触发的次数,该属性默认为inf,如果希望不停的循环执行,可以不指定该属性

tag ——一个字符串,可以任意指定,一般用于标志某个特定的定时器,以方便在程序中别的地方查找该定时器

与定时器相关的其他操作

delete(timer) %删除

disp(timer) %显示

get(timer) %获取属性

isvalid(timer) %检查有效性

set(timer) %设置属性

start %开始

startat %开始(可以指定开始时的某些参数)

stop %停止

timerfind %查找某个定时器

timerfindall %也是查找

wait %等待直到定时器被停止

例如写一个计数器,每过一秒计数加1

x=0

t = timer('TimerFcn','disp(x);x=x+1;', 'Period', 1, 'ExecutionMode', 'fixedSpacing');

start(t);

运行结果如下,如果不想继续可以在命令窗口输入delete(h)

触发器

利用定时器我们就可以制作数字时钟

首先创建fig

触发器

在fig的open回调函数里写计时器函数并创建时间显示函数。

function varargout = szsz(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton',  gui_Singleton, ...

               'gui_OpeningFcn', @szsz_OpeningFcn, ...

               'gui_OutputFcn',  @szsz_OutputFcn, ...

               'gui_LayoutFcn',  [] , ...

               'gui_Callback',   []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

function szsz_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

global h

h=timer('TimerFcn',{@disptime,handles},'ExecutionMode','fixedRate','Period',1);

%定时器,定时会触发 TimerFcn 函数,定时函数(TimerFcn)触发用户自定义的函数(disptime函数)

start(h); %开启定时器

guidata(hObject, handles);

function disptime( , , handles)%显示系统时间函数

shijian=datestr(now,'yyyy-mm-dd HH:MM:SS');

%生成前日期字符串

set(handles.text2,'string',shijian(1:4));

%%显示年

set(handles.text8,'string',shijian(6:7));

%%显示月

set(handles.text10,'string',shijian(9:10));

%%显示日

set(handles.text12,'string',shijian(12:end));

%%显示时分秒

function varargout = szsz_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function figure1_CreateFcn(hObject, eventdata, handles)

function figure1_DeleteFcn(hObject, eventdata, handles)

global h

delete(h)%%删除显示日期的定时器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分