導航:首頁 > 編程語言 > 計時器怎麼編程

計時器怎麼編程

發布時間:2023-02-23 10:31:34

A. c語言怎麼樣編寫一個時鍾程序

c語言時鍾程序代碼如下:

#include<windows.h>

#include<math.h>

#define ID_TIMER 1//計時器ID

#define TWOPI (2*3.14159)

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow)

{

static TCHAR szAppName[]=TEXT("Clock");

HWND hwnd;

MSG msg;

WNDCLASS wndclass;

wndclass.cbClsExtra=0;

wndclass.cbWndExtra=0;

wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);

wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);

wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);

wndclass.hInstance=hInstance;

wndclass.lpfnWndProc=WndProc;

wndclass.lpszClassName=szAppName;

wndclass.lpszMenuName=NULL;

wndclass.style=CS_HREDRAW|CS_VREDRAW;

if(!RegisterClass(&wndclass))

{

MessageBox(NULL,TEXT("This program requires Windows

T"),szAppName,MB_ICONERROR);

return 0;

}

hwnd=CreateWindow(szAppName,TEXT("Analog Clock"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,iCmdShow);

UpdateWindow(hwnd);

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam;

}

void Setsotropic(HDC hdc,int cxClient,int cyClient)

{

SetMapMode(hdc,MM_ISOTROPIC);

SetWindowExtEx(hdc,1000,1000,NULL);

SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);

SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL);

}

void RotatePoint(POINT pt[],int iNum,int iAngle)

{

int i;

POINT ptTemp;

for(i=0;i<iNum;i++)

{

ptTemp.x=(int)(pt[i].x*cos(TWOPI*iAngle/360)+pt[i].y*sin(TWOPI*iAngle/360));

ptTemp.y=(int)(pt[i].y*cos(TWOPI*iAngle/360)+pt[i].x*sin(TWOPI*iAngle/360));

pt[i]=ptTemp;

}

}

void DrawClock(HDC hdc)

{

int iAngle;

POINT pt[3];

for(iAngle=0;iAngle<360;iAngle+=6)

{

pt[0].x=0;

pt[0].y=900;

RotatePoint(pt,1,iAngle);

pt[2].x=pt[2].y=iAngle%5?33:100;

pt[0].x-=pt[2].x/2;

pt[0].y-=pt[2].y/2;

pt[1].x=pt[0].x+pt[2].x;

pt[1].y=pt[0].y+pt[2].y;

SelectObject(hdc,GetStockObject(BLACK_BRUSH));

Ellipse(hdc,pt[0].x,pt[0].y,pt[1].x,pt[1].y );

}

}

void DrawHands(HDC hdc,SYSTEMTIME *pst,BOOL fChange)

{

static POINT pt[3][5]={0,-150,100,0,0,600,-100,0,0,-150, 0,-200,50,0,0,800,-50,0,0,-200, 0,0,0,0,0,0,0,0,0,800 };

int i,iAngle[3];

POINT ptTemp[3][5];

iAngle[0]=(pst->wHour*30)%360+pst->wMinute/2;

iAngle[1]=pst->wMinute*6;

iAngle[2]=pst->wSecond*6;

memcpy(ptTemp,pt,sizeof(pt));

for(i=fChange?0:2;i<3;i++)

{

RotatePoint(ptTemp[i],5,iAngle[i]);

Polyline(hdc,ptTemp[i],5);

}

}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)

{

static int cxClient,cyClient;

static SYSTEMTIME stPrevious;

BOOL fChange;

HDC hdc;

PAINTSTRUCT ps;

SYSTEMTIME st;

switch(message)

{

case WM_CREATE:

SetTimer(hwnd,ID_TIMER,1000,NULL);

GetLocalTime(&st);

stPrevious=st;

return 0;

case WM_SIZE:

cxClient=LOWORD(lParam);

cyClient=HIWORD(lParam);

return 0;

case WM_TIMER:

GetLocalTime(&st);

fChange=st.wHour!=stPrevious.wHour||st.wMinute!=stPrevious.wMinute;

hdc=GetDC(hwnd);

Setsotropic(hdc,cxClient,cyClient);

SelectObject(hdc,GetStockObject(WHITE_PEN));

DrawHands(hdc,&stPrevious,fChange);

SelectObject(hdc,GetStockObject(BLACK_PEN));

DrawHands(hdc,&st,TRUE);

stPrevious=st;

return 0;

case WM_PAINT:

hdc=BeginPaint(hwnd,&ps);

Setsotropic(hdc,cxClient,cyClient);

DrawClock(hdc);

DrawHands(hdc,&stPrevious,TRUE);

EndPaint(hwnd,&ps);

return 0;

case WM_DESTROY:

KillTimer(hwnd,ID_TIMER);

PostQuitMessage(0);

return 0;

}

return DefWindowProc(hwnd,message,wParam,lParam);

}

B. C語言編寫的計時器源代碼怎麼編寫

#include
<time.h>
clock_t
start,end;
在開始計時的地方寫:start
=
clock();
在結束的地方寫:end
=
clock();
時間等於:t=(end
-
start)/CLOCKS_PER_SEC;
單位是秒

C. VB計時器怎麼用

需要准備的工具:電腦,VB6.0程序設計軟體。

1、打開VB6.0,新建一個工程,在窗體中添加三個命令按鈕,caption分別改為「設置倒計時」、「啟動倒計時」、「繼續」,將窗體Form1的caption屬性改為「倒計時」,添加一個計時器控制項,添加一個文本框,將界面設置成下圖:

D. 三菱PLC計時器如何編程

用T指令, 格式是 (Tn KX)舉例:x0dx0ald x0 x0dx0aOUT T0 K100x0dx0a意思就是當x0接通後 計時10秒,T0接通。 後續用T0去處罰需要的輸出點就可以達到控制延時計時的目的。

E. c語言中怎麼設置計時器

#include <iostream>

#include <time.h>

using namespace std;

int main()

{

clock_t start = clock();

//do some process here

clock_t end = (clock() - start)/CLOCKS_PER_SEC;

cout<<"time comsumption is "<<end<<endl;

}

(5)計時器怎麼編程擴展閱讀

使用linux的系統設置計時器

#include <sys/time.h>

int main()

{

timeval starttime,endtime;

gettimeofday(&starttime,0);

//do some process here

gettimeofday(&endtime,0);

double timeuse = 1000000*(endtime.tv_sec - starttime.tv_sec) + endtime.tv_usec - startime.tv_usec;

timeuse /=1000;//除以1000則進行毫秒計時,如果除以1000000則進行秒級別計時,如果除以1則進行微妙級別計時

}

timeval的結構如下:

strut timeval

{

long tv_sec; /* 秒數 */

long tv_usec; /* 微秒數 */

};

F. PLC中的計時器是如何工作的

基本定時器為減1計數,當程序進入運行狀態後,定時控制邏輯行接通的瞬間定時器開始工作。

工作過程是先將設定值寄存器SV5中的內容裝入經過值寄存器EV5中。然後每經過一個定時時鍾0.1s(EV5中的內容做減1計數,直至EV5中內容為0,該定時器對應的常開觸點T5閉合,常閉觸點T5斷開。

此後若定時器控制邏輯行一直保持接通狀態,則其觸點動作保持,直至控制邏輯行斷開,各觸點復位。若控制邏輯行接通時間未達到定時器設定時間就斷開,定時器觸點不動作,EV5復位直至控制邏輯行再次接通,重新開始計時。

(6)計時器怎麼編程擴展閱讀

當PLC投入運行後,其工作過程一般分為三個階段,即輸入采樣、用戶程序執行和輸出刷新三個階段。完成上述三個階段稱作一個掃描周期。在整個運行期間,可編程邏輯控制器的CPU以一定的掃描速度重復執行上述三個階段。

在輸入采樣階段,PLC以掃描方式依次地讀入所有輸入狀態和數據,並將它們存入I/O映象區中的相應的單元內。輸入采樣結束後,轉入用戶程序執行和輸出刷新階段。

在這兩個階段中,即使輸入狀態和數據發生變化,I/O映象區中的相應單元的狀態和數據也不會改變。因此,如果輸入是脈沖信號,則該脈沖信號的寬度必須大於一個掃描周期,才能保證在任何情況下,該輸入均能被讀入。

G. 51單片機計時器暫停鍵怎麼寫

您好,51單片機計時器暫停鍵的編程實現,需要使用到51單片機的定時器模塊,以及相關的中斷機制。

首先,需要在51單片機的定時器模塊中設置定時器的計數值,以及定時器的工作模式,以便實現定時器的計時功能。其次,需要在51單片機的中斷機制中設置定時器的中斷服務函數,以便在定時器計數值溢出時,可以觸發定時器的中斷服務函數,從而實現定時器的計時功能。

最後,需要在51單片機的暫停鍵中設置中斷服務函數,以便在按下暫停鍵時,可以觸發暫停鍵的中斷服務函數,從而實現定時器的暫停功能。在暫停鍵的中斷服務函數中,需要關閉定時器的計時功能,以及清除定時器的計數值,以便實現定時器的暫停功能。

綜上所述,51單片機計時器暫停鍵的編程實現,需要使用到51單片機的定時器模塊,以及相關的中斷機制,具體步驟如下:

1. 在51單片機的定時器模塊中設置定時器的計數值,以及定時器的工作模式,以便實現定時器的計時功能。

2. 在51單片機的中斷機制中設置定時器的中斷服務函數,以便在定時器計數值溢出時,可以觸發定時器的中斷服務函數,從而實現定時器的計時功能。

3. 在51單片機的暫停鍵中設置中斷服務函數,以便在按下暫停鍵時,可以觸發暫停鍵的中斷服務函數,從而實現定時器的暫停功能。

4. 在暫停鍵的中斷服務函數中,需要關閉定時器的計時功能,以及清除定時器的計數值,以便實現定時器的暫停功能。

以上就是51單片機計時器暫停鍵的編程實現,希望能夠幫助您解決問題。

H. C語言編程計時器如何工作

秒錶計時器的代碼
#include

#include

#include

#include

struct
tm
//定義時間結構體,包括時分秒和10毫秒
{
int
hours,minutes,seconds;
int
hscd;
}time,tmp,total;
//time用以計時顯示,tmp用以存儲上一階段時間,total記總時間
int
cnt;
file*
fout;
//每次調用update函數,相當於時間過了10ms
void
update(struct
tm
*t)
{
(*t).hscd++;
//10ms單位時間加1
cnt++;
if
((*t).hscd==100)
//計時滿1s,進位
{
(*t).hscd=0;
(*t).seconds++;
}
if
((*t).seconds==60)
//計時滿一分,進位
{
(*t).seconds=0;
(*t).minutes++;
}
if
((*t).minutes==60)
//計時滿一小時,進位
{
(*t).minutes=0;
(*t).hours++;
}
if((*t).hours==24)
(*t).hours=0;
//delay();
sleep(10);
//sleep是windows提供的函數,作用是暫停程序,單位毫秒,所以此處暫停10ms
}
void
display(struct
tm
*t)
{
//此處輸出計時結果,\r為回車不換行,既一直在同一行更新時間
printf("%d:",(*t).hours);
printf("%d:",(*t).minutes);
printf("%d:",(*t).seconds);
printf("%d\r",(*t).hscd);
//printf("now,
press
『e』
key
to
stop
the
clock…");
}
void
time_init()
//初始化時間
{
time.hours=time.minutes=time.seconds=time.hscd=0;
}
void
get_total()
//計算總時間
{
total.hscd
=
cnt
%
100;
cnt
/=
100;
total.seconds
=
cnt
%
60;
cnt
/=
60;
total.minutes
=
cnt
%
60;
cnt
/=
60;
total.hours
=
cnt;
}
int
main()
{
char
m;
time_init();
cnt
=
0;
fout
=
fopen("timeout.txt","w");
printf("按回車鍵開始計時!\n");
while(1)
{
m
=
getch();
if(m
!=
『\r』)
//讀入一個輸入,如果是回車,那麼跳出次循環
printf("輸入錯誤,僅能輸入回車鍵!\n");
else
break;
}
printf("已經開始計時,但是你可以按回車鍵以分段計時!\n");
while(1)
{
if(kbhit())
//此處檢查是否有鍵盤輸入
{
m=getch();
if(m
==
『\r』)
//如果等於回車,那麼計時結束,跳出循環
break;
else
if(m
==

『)
//如果等於空格,顯示此次計時,初始化計時器
{
tmp
=
time;
//記錄上一段計時器結果
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
//寫入文件
time_init();
printf("\n");
}
else
{
printf("輸入錯誤,僅支持輸入回車鍵或者空格鍵!\n");
}
}
update(&time);
//更新計時器
display(&time);
//顯示計時器時間
}
tmp
=
time;
//輸出最後一次即使結果,寫入文件
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
get_total();
//計算總的時間,顯示,並寫入文件
printf("\n總時間:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fprintf(fout,"統計時間:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fclose(fout);
printf("已經保存到當前目錄下的timeout.txt文件中按任意鍵結束!");
getch();
}

I. 單片機倒計時的編程

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
SETB TR0
SETB ET0
SETB EA
MOV R0,#99
MOV R1,#0
LOOP:
JB P1.0,LOOP1
JNB P1.0,$
INC R0
CJNE R0,#100,LOOP
MOV R0,#99
SJMP LOOP
LOOP1:
JB P1.1,LOOP
JNB P1.1,$
CJNE R0,#0,LOOP11
SJMP LOOP
LOOP11:
DEC R0
SJMP LOOP
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
SETB TR0
INC R1
CJNE R1,#100,T0E
DEC R0
MOV R1,#0
DEC R0
CJNE R0,#0,T00
CLR P3.0
SJMP T0E
T00:
SETB P3.0
MOV A,R0
MOV B,#10
DIV AB
MOV DPTR,#TABLE
JB 00H,T001
MOV P2,#0FEH
MOVC A,@A+DPTR
MOV P0,A
SJMP T0E
T001:
MOV P2,#0FDH
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
T0E:
RETI
;---------------------------------------
TABLE: ; 共陰極數碼管顯示代碼表
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789

END

閱讀全文

與計時器怎麼編程相關的資料

熱點內容
安卓快手下載怎麼沒有下載到本地 瀏覽:228
怎麼在安卓手機登繪旅人 瀏覽:404
桌面文件全部加密 瀏覽:401
6s怎麼外接u盤需要什麼app 瀏覽:131
linux查看文件許可權命令 瀏覽:685
安卓手游存檔怎麼用 瀏覽:761
linuxyum安裝ftp 瀏覽:690
村委會主任可以推行政命令嗎 瀏覽:102
電腦文件夾封面多張圖片 瀏覽:263
網吧總伺服器叫什麼 瀏覽:922
多個演算法解決同一個問題 瀏覽:455
小車解壓後我的購車發票呢 瀏覽:977
做app開發用什麼雲伺服器 瀏覽:177
linux網卡子介面 瀏覽:985
21歲職高畢業學程序員怎麼學 瀏覽:321
vs如何對單個文件編譯 瀏覽:6
為什麼有的電腦不能安裝python 瀏覽:75
金蝶迷你版加密狗檢測到過期 瀏覽:186
硬體描述語言編譯結果 瀏覽:655
程序員逆天改命 瀏覽:19