c語言鬧鍾程序
Ⅰ c語言鬧鍾程序
如果在VC++中考慮採用定時器
如果不用VC++,考慮採用多線程
Ⅱ 如何拿單片機用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;
}
}
}
Ⅲ C語言編鬧鍾程序
程序員聯合開發網上有:http://www.pudn.com/downloads59/sourcecode/windows/other/detail207633.html
非常漂亮。
///////////////////////
大兄弟你點那個文件名,就自動打開了,不要下載的。
給你我打開TransparentWnd.cpp,內容太多,貼子顯示不了,就一部分;
////////////////////
www.pudn.com > ktclock.rar > TransparentWnd.cpp
//****************
//* TransparentWindow.CPP
//*
//* A transparent window class.
//*
//* Based on the idea of Jason Wylie ,Franz Polzer,Luo yun bin
//* [email protected]
//* (C) 2002 by 王鵬
//*
//* Write to me: [email protected]
//
#include "stdafx.h"
#include "TransparentWnd.h"
#include "Dib.h"
#include "resource.h"
#include
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define WM_LIBEN WM_USER+994
CString GetCurPath()
{
TCHAR exeFullPath[MAX_PATH];
CString strPath;
GetMoleFileName(NULL,exeFullPath,MAX_PATH);
strPath.Format("%s", exeFullPath);
strPath = strPath.Left(strPath.ReverseFind('\\'));
return strPath;
Ⅳ c語言鬧鍾程序 windows程序設計
要是有具體問題來問問還行 要是想上來找人幫你做作業 尤其是比較龐大的 就算了吧 還是自己努力吧
Ⅳ 如何用C語言編輯電子鬧鍾程序
用定時器設定中斷間隔,以此記時,再對比是否到時間了,然後來控制蜂鳴器。可以用一個鏈表來存儲定時的時間。
只是個鬧鍾程序的話很簡單的,我沒這板子,所以只能講下思路。
Ⅵ c語言指針鬧鍾程序
這種用於商業的東西,沒人會免費給你的,不要自作聰明,大部分人比你更聰明
Ⅶ 怎麼用c語言編寫鬧鍾程序,期末作業求大神
最簡單的方法,先讓抄用戶輸入時間,然後使用結構體保存起來,然後用一個循環,while、for都可以,然後在循環中取得當前的時間,使用取得的時間與用戶設定的時間進行比較,
如果沒到時間,那麼就繼續循環。
如果到時間了,發音,然後退出循環。
稍微復雜一些的方法,使用Timer、啟動線程的方法。
Ⅷ 如何用C語言編輯一個鬧鍾!求高手!
呵呵,寫了一個玩玩:
#include <stdio.h>
#include <windows.h>
#include <winbase.h>
int main(int argc, char *argv[])
{
SYSTEMTIME time;
SYSTEMTIME clock;
GetLocalTime(&time);
printf("當前時間版為:%2d:%2d:%2d\n",time.wHour,time.wMinute,time.wSecond);
printf("請設定鬧鍾時間:\n");
printf("時:");
scanf("%2d",&clock.wHour);
printf("分:");
scanf("%2d",&clock.wMinute);
while(1)
{
Sleep(1000);
GetLocalTime(&time);
if((time.wHour==clock.wHour)&&(time.wMinute==clock.wMinute))
{
權printf("\a\a\a時間到!!!");
break;
}
}
return 0;
}
Ⅸ 編寫一個C語言鬧鍾程序
2樓說的創來建一個線程查詢自系統時間 ,就是一個查詢演算法,時間本來就是1~60秒排好序的,那就用2分法排序吧,快又簡單,然後當系統時間==鬧鍾事件【i】,就開始鬧
就這樣,2分演算法要是還不會就用冒泡法吧,嘿嘿
Ⅹ C語言 鬧鍾程序
system可以調用一些dos函數,但是wav文件我估計無法使用.我用qq試了,說是badcommand or filename.如果可以,還請指教.
在tc2.0調試通過.輸入時間,待到時間便會提示.
因為沒有加入日期,所以只支持一天內的時間提醒.如果想進一步完善也可以,輸入時再多加個日期,程序稍微修改.這里是主要功能.
#include<stdio.h>
#include<time.h>
#include<string.h>
int GetHour(char *s)
{
char *p, *q;
p = (char *)malloc(10);
strcpy(p, s);
q = p;
while(*q != ':')
{
q++;
}
*q = '\0';
return atoi(p);
}
int GetMinute(char *s)
{
char *p;
p = (char *)malloc(10);
strcpy(p, s);
while(*p != ':')
{
p++;
}
p++;
return atoi(p);
}
main()
{
char s[10];
int hour,minute;
time_t t;
struct tm *timeinfo;
printf("please input the time like [18:30]:\n");
gets(s);
hour = GetHour(s);
minute = GetMinute(s);
while(1)
{
time(&t);
timeinfo = localtime(&t);
if(timeinfo->tm_hour < hour)continue;
else if(timeinfo->tm_min < minute)continue;
else
{
printf("Time is up!Wake up!\n\007");
system("c:\\she.wav");
exit(0);
}
}
}