說(shuō)明
使用 timer
對(duì)象以排定執(zhí)行一次或多次 MATLAB? 命令。如果您排定計(jì)時(shí)器多次執(zhí)行命令,可以定義每次執(zhí)行之間的時(shí)間間隔以及如何處理排隊(duì)沖突。
timer
對(duì)象使用回調(diào)函數(shù)執(zhí)行命令。回調(diào)函數(shù)在某些事件中執(zhí)行代碼。對(duì)于 timer
對(duì)象,您可以將回調(diào)函數(shù)指定為函數(shù)句柄或字符串。如果回調(diào)函數(shù)是字符串,MATLAB 將以可執(zhí)行代碼形式對(duì)其求值。當(dāng)計(jì)時(shí)器啟動(dòng) (StartFcn
)、執(zhí)行 (TimerFcn
)、停止 (StopFcn
) 或遇到錯(cuò)誤 (ErrorFcn
) 時(shí),計(jì)時(shí)器對(duì)象支持回調(diào)函數(shù)。
附注: timer
對(duì)象受到您的硬件、操作系統(tǒng)和軟件的限制。應(yīng)避免對(duì)實(shí)時(shí)應(yīng)用程序使用計(jì)時(shí)器對(duì)象。
構(gòu)造
創(chuàng)建一個(gè)空的 t
= timertimer
對(duì)象,以排定 MATLAB 命令的執(zhí)行。如果啟動(dòng)了計(jì)時(shí)器,但未定義 TimerFcn
,則會(huì)出現(xiàn)錯(cuò)誤。
使用由一個(gè)或多個(gè) t
= timer(Name,Value
)Name,Value
對(duì)組參數(shù)指定的其他選項(xiàng)創(chuàng)建 timer
對(duì)象。
MATLAB中使用定時(shí)器(timer)基本格式為
t = timer('PropertyName1', PropertyValue1, 'PropertyName2', PropertyValue2,...);
start(t);
最簡(jiǎn)單的定時(shí)器一般指定以下屬性:
TimerFcn ——指定定時(shí)器被觸發(fā)時(shí)要執(zhí)行的函數(shù)或語(yǔ)句
Period ——指定定時(shí)器的觸發(fā)時(shí)間,單位為秒
ExecutionMode ——指定定時(shí)器的觸發(fā)方式(觸發(fā)一次,還是循環(huán)觸發(fā)……),該屬性有四個(gè)可選值,具體見(jiàn)matlab幫助
TasksToExecute ——指定定時(shí)器最多被觸發(fā)的次數(shù),該屬性默認(rèn)為inf,如果希望不停的循環(huán)執(zhí)行,可以不指定該屬性
tag ——一個(gè)字符串,可以任意指定,一般用于標(biāo)志某個(gè)特定的定時(shí)器,以方便在程序中別的地方查找該定時(shí)器
與定時(shí)器相關(guān)的其他操作
delete(timer) %刪除
disp(timer) %顯示
get(timer) %獲取屬性
isvalid(timer) %檢查有效性
set(timer) %設(shè)置屬性
start %開(kāi)始
startat %開(kāi)始(可以指定開(kāi)始時(shí)的某些參數(shù))
stop %停止
timerfind %查找某個(gè)定時(shí)器
timerfindall %也是查找
wait %等待直到定時(shí)器被停止
例如寫(xiě)一個(gè)計(jì)數(shù)器,每過(guò)一秒計(jì)數(shù)加1
x=0
t = timer('TimerFcn','disp(x);x=x+1;', 'Period', 1, 'ExecutionMode', 'fixedSpacing');
start(t);
運(yùn)行結(jié)果如下,如果不想繼續(xù)可以在命令窗口輸入delete(h)
利用定時(shí)器我們就可以制作數(shù)字時(shí)鐘
首先創(chuàng)建fig
在fig的open回調(diào)函數(shù)里寫(xiě)計(jì)時(shí)器函數(shù)并創(chuàng)建時(shí)間顯示函數(shù)。
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);
%定時(shí)器,定時(shí)會(huì)觸發(fā) TimerFcn 函數(shù),定時(shí)函數(shù)(TimerFcn)觸發(fā)用戶自定義的函數(shù)(disptime函數(shù))
start(h); %開(kāi)啟定時(shí)器
guidata(hObject, handles);
function disptime( , , handles)%顯示系統(tǒng)時(shí)間函數(shù)
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));
%%顯示時(shí)分秒
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)%%刪除顯示日期的定時(shí)器
-
定時(shí)器
+關(guān)注
關(guān)注
23文章
3284瀏覽量
117046 -
計(jì)時(shí)器
+關(guān)注
關(guān)注
1文章
428瀏覽量
33416 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2031瀏覽量
61832 -
MATLAB仿真
+關(guān)注
關(guān)注
4文章
176瀏覽量
20273 -
數(shù)字時(shí)鐘
+關(guān)注
關(guān)注
2文章
153瀏覽量
20728
發(fā)布評(píng)論請(qǐng)先 登錄
單片機(jī)萬(wàn)年歷制作詳細(xì)資料
萬(wàn)年歷制作求助
萬(wàn)年歷
使用定時(shí)器的萬(wàn)年歷~~~
如何在51單片機(jī)實(shí)現(xiàn)電子萬(wàn)年歷 精選資料分享
如何去使用51單片機(jī)定時(shí)器T0做電子萬(wàn)年歷?
萬(wàn)年歷protues仿真 實(shí)時(shí)時(shí)鐘仿真 12864萬(wàn)年歷仿真 5
基于AT89C2051單片機(jī)制作的電子萬(wàn)年歷的原理及設(shè)計(jì)

評(píng)論