當前位置:首頁 » 編程軟體 » 編程做的鍾

編程做的鍾

發布時間: 2022-04-22 21:10:58

編程中的時鍾時間是如何得到

簡單的說,有幾種時鍾,可部分參見clock_gettime函數描述。(1)掛鍾,返回的是系統內核裡面的一個變數。這個變數是從主板上的CMOS晶元里讀出的。CMOS晶元是獨立供電的,在電腦斷電後也有小電池供電,就像電子表一樣計時。(2)CPU的計時,是CPU有一個寄存器不斷自動累加,比如2GHz的CPU每0.5ns就+1。(3)可編程時鍾,有低精度的和高精度的兩種,其實都是主板上的晶元,受到CPU的控制。
這個描述非常簡化,系統在其中做了很多事情,其實linux時鍾系統非常復雜,詳情請參閱有關書籍。

⑵ 如何拿單片機用c語言編程做一個鬧鍾

下面的程序就是用AT89C2051做的數字式時鍾,數碼管顯示,具有鬧鍾功能,整點報時,幾點蜂鳴器響幾下,晚上九點到第二天早上六點整點不報時。給你參考一下吧。

#include<AT89X051.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char

sbit sda=P3^1;
sbit scl=P3^0;
sbit key1=P1^7;
sbit key2=P1^6;
sbit key3=P1^5;
sbit kz=P3^5;
sbit bs=P3^4;
char shi=12,fen=12,ke1,mm,mi,nh,nf,mn,mms,baos,a;
bit ms,nt,b;
uchar code SEG8[]={ 0x50,0x5F,0x94,0x15,0x1B,
0x31,0x30,0x57,0x10,0x11,
0x40,0x4F,0x84,0x05,0x0B,
0x21,0x20,0x47,0x00,0x01,
0x21,0xa2,0x52,0xff};
//0-9,0.-9.;s.,f.,n 暗
void delay1ms(uchar ms)
{
uchar i;
while(ms--)
{
for(i = 0; i< 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
void display(char numh,char numf)
{
uchar qian,,sh,ge;
if(ke1==1)
qian=20;
else if(ke1==2)
qian=21;
else if((ke1==3)||(ke1==4))
qian=22;
else if(ke1==0)
qian=numh/10;
if((ke1==1)||(ke1==2))
=23;
else if(ke1==3)
=20;
else if(ke1==4)
=21;
else if(ke1==0)
{
=numh%10;
if(ms)
=+10;
}
if((ke1==1)||(ke1==3))
{sh=numh/10;ge=numh%10;}
else if((ke1==2)||(ke1==4)||(ke1==0))
{sh=numf/10;ge=numf%10;}
P1=SEG8[qian];
P3_3=0;delay1ms(2);P3_3=1;
P1=SEG8[];
P3_7=0;delay1ms(2);P3_7=1;
P1=SEG8[sh];
P3_2=0;delay1ms(2);P3_2=1;
P1=SEG8[ge];
P3_0=0;delay1ms(2);P3_0=1;
}
///////////x24c02//////////////////
void delay24()
{ ;; }

void init24c02() //初始化
{
sda=1;
delay24();
scl=1;
delay24();
}

void start2() //開始信號
{
sda=1;
delay24();
scl=1;
delay24();
sda=0;
delay24();
}

void stop() //停止
{
sda=0;
delay24();
scl=1;
delay24();
sda=1;
delay24();
}

void respons() //應答
{
uchar i;
scl=1;
delay24();
while((sda==1)&&(i<250))i++;
scl=0;
delay24();
}

void write_byte(char date) // 寫數據子函數
{
uchar i,temp;
temp=date;

for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay24();
sda=CY;
delay24();
scl=1;
delay24();
}
scl=0;
delay24();
sda=1;
delay24();
}

uchar read_byte() // 讀數據子函數
{
uchar i,k;
scl=0;
delay24();
sda=1;
delay24();
for(i=0;i<8;i++)
{
scl=1;
delay24();
k=(k<<1)|sda;
scl=0;
delay24();
}
return k;
}
///////寫數據函數///////////////////
void write_add(uchar address,char date)
{
start2();
write_byte(0xa0);
respons();
write_byte(address);
respons();
write_byte(date);
respons();
stop();
}
char read_add(uchar address) //讀數據函數
{
uchar date;
start2();
write_byte(0xa0);
respons();
write_byte(address);
respons();
start2();
write_byte(0xa1);
respons();
date=read_byte();
stop();
return date;
}

void keyf(char *con,char up,char don)
{
uint i;
for(i=0;i<800;i++)
{
if((ke1==1)||(ke1==2))
display(shi,fen);
else if((ke1==3)||(ke1==4))
display(nh,nf);
P1=0xff;
if(key1==0)
{
delay1ms(10);
if(key1==0)
{
ke1++;
if(ke1>=5)
ke1=0;
while(!key1);
break;
}
}
if(key2==0)
{
delay1ms(10);
if(key2==0)
{
i=0;
*con+=1;
if(*con>up)
*con=0;
while(!key2);
}
}

if(key3==0)
{
delay1ms(10);
if(key3==0)
{
i=0;
*con-=1;
if(*con<don)
*con=up;
while(!key3);
}
}

}
}
void key()
{
P1=0xff;
if(key1==0)
{
EA=0;
delay1ms(20);
if(key1==0)
{
ke1++;
if(ke1>=5)
ke1=0;
while(!key1);
}
if(ke1==1)
{
keyf(&shi,23,0);
}
if(ke1==2)
{
keyf(&fen,59,0);
}
if(ke1==3)
{
keyf(&nh,23,0);
}
if(ke1==4)
{
keyf(&nf,59,0);
}
P1=0xff;P3=0xff;
write_add(0x01,nh);
delay1ms(5);
write_add(0x03,nf);
ke1=0;
EA=1;
}

}
void Timer0Init(void)
{
TMOD |= 0x01;
TL0 = 0xB0;
TH0 = 0x3C;
TF0 = 0;
TR0 = 1;
EA=1;
ET0=1;
}

void main()
{
P1=0xff;
P3=0xff;
init24c02();
nh=read_add(0x01);
delay1ms(50);
nf=read_add(0x03);
delay1ms(50);
Timer0Init();
while(1)
{
key();
display(shi,fen);
}
}
void tim0 ()interrupt 1
{
TH0=0X3C;
TL0=0XB0;
if(++mms>=10)
{
mms=0;
ms=!ms;
}
if(++mm>=20)
{
mm=0;
if(++mi>=60)
{
mi=0;
if(++fen>=60)
{
fen=0;
if(++shi>=24)
shi=0;
}
}
}
if(fen==0)
{
if((shi>=7)&&(shi<=20))
{
if((baos==0)&&(b==0))
{
baos=shi;
baos=baos*2;
b=1;
}
if(++a==10)
{
a=0;
if(--baos!=0)
{
bs=!bs;
}
else
{
bs=1;
}
}
}
}
else
b=0;
if(nh==shi)
{
if(nf==fen)
{
if(nt==0)
{
P1=0xff;
if(++mn==10)
{
mn=0;
kz=!kz;
}
if(key3==0)
{
nt=1;
kz=1;
}
}
}
else
{
nt=0;
kz=1;
}
}
}

⑶ 51單片機編程製作電子鍾時間問題。

uchar sec=0,min=0,tnum;把它放到主函數裡面看看,並且tnum=0

⑷ keil 編程 設計 時鍾

題目不是很明了啊 如果是要做程序上的設計:要顯示幾位就定義幾個變數,在主程序里循環顯示這些數據 然後在用定時器定時中斷,在中斷時把相關數據的值改一下就可以了

⑸ 如何用編程製作桌面時鍾

利用窗體、時間控制項、文本框和時間函數。文本框顯示。具體代碼就從略了。
在窗體上添加1個計時器和1個標簽
Private Sub Form_Load()
Label1.Caption = ""
Label1.BorderStyle = 1
Label1.ForeColor = vbWhite
Label1.BackColor = vbRed
Label1.FontSize = 20
Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()
Label1.Caption = Time
End Sub

⑹ c++編程 製作一個時鍾,可以顯示小時 分 秒

#include<iostream>
#include<vector>


classCtime{
private:
std::vector<int>_val;
conststaticint_is60=60;
std::vector<int>&calc_clock(constint&v,constintopt=0){
intres=v+opt;
_val.push_back(res%_is60);
_val.push_back((res/_is60)%_is60);
_val.push_back((res-_val[1]*_is60-_val[0])/(_is60*_is60));
return_val;
}
public:
Ctime(constint&v,constintopt=0){
calc_clock(v,opt);
}

friendstd::ostream&operator<<(std::ostream&out,constCtime&clock){
out<<clock._val[2]<<":";
out<<clock._val[1]<<":";
out<<clock._val[0];
returnout;
}
};

intmain(){
Ctimet1(3661);
Ctimet2(3661,-8);
Ctimet3(3661,8);
//
std::cout<<t1<<std::endl;
std::cout<<t2<<std::endl;
std::cout<<t3<<std::endl;
}

⑺ VB編程,做個時鍾

DimPAsSingle,SJ,SHIAsInteger,FENAsInteger,MIAOAsInteger

PrivateSubForm_Load()

Timer1.Interval=1000

Timer1.Enabled=True

P=3.1415926

EndSub

PrivateSubTimer1_Timer()

SJ=Time

SHI=DatePart("H",SJ)

FEN=DatePart("N",SJ)

MIAO=DatePart("S",SJ)

IfSHI>=12Then

SHI=SHI-12

EndIf

Label5.Caption=FormatDateTime(SJ,3)

Line2.X2=2760+1500*Sin(P*(SHI*30+FEN/2)/180)

Line2.Y2=2760-1500*Cos(P*(SHI*30+FEN/2)/180)

Line5.X2=2760+1920*Sin(P*(FEN*6+MIAO/10)/180)

Line5.Y2=2760-1920*Cos(P*(FEN*6+MIAO/10)/180)

Line1.X2=2760+2400*Sin(P*MIAO*6/180)

Line1.Y2=2760-2400*Cos(P*MIAO*6/180)

EndSub

⑻ C++編程:時鍾

下面是我做出來的一個大概樣子,你可以把圖片做得好點就是了,把你郵箱給我,我的郵箱:[email protected]

⑼ 跪求各位會編程的大神,幫我做一個放在桌面的數字時鍾吧!

pc自帶了這個小工具的,不需要舍近求遠,桌面右擊---〉小工具,進去就可以看到數字時鍾這個小工具,拖出來就可以拉

⑽ 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);

}

熱點內容
安卓拳皇對戰用哪個平台 發布:2025-05-19 18:42:39 瀏覽:530
華為暢玩5怎麼取消鎖屏密碼 發布:2025-05-19 18:42:38 瀏覽:582
linuxrm文件夾 發布:2025-05-19 18:40:25 瀏覽:972
譚浩強c語言錯誤 發布:2025-05-19 18:39:33 瀏覽:951
安卓和蘋果用流量哪個劃算 發布:2025-05-19 18:38:04 瀏覽:408
安卓手機怎麼設定背景牆 發布:2025-05-19 18:29:40 瀏覽:1001
androidstudio斷點調試 發布:2025-05-19 18:20:23 瀏覽:766
abaqus如何配置證書 發布:2025-05-19 18:19:38 瀏覽:583
美食的密碼是多少 發布:2025-05-19 18:18:58 瀏覽:72
買合資車選哪個品牌好配置高 發布:2025-05-19 18:01:51 瀏覽:49