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