當前位置:首頁 » 編程語言 » 最晚的鬧鍾c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

最晚的鬧鍾c語言

發布時間: 2023-08-13 16:57:57

『壹』 用c語言寫51單片機鬧鍾程序

//*********************************************************
//實現功能:本程序實現在P1口模擬一個流水燈程序
//*********************************************************
#include <reg51.h>
#define p_out P1 //宏定義輸出的i/o口為P1
//******************時間延遲函數**********************
//描 述:用指令實現延時一段時間
//入口參數:int i,為時間延遲參數
//****************************************************
void delay_time(int i)
{
while(i)
i--;
}
//******************主函數***************************
//描 述:實現在P1口模擬一個流水燈程序
//****************************************************
void main(void)
{unsigned char i=0; //初始化一個局部變數為0
p_out=0xff; //初始化將要輸出的i/o口,輸出高電平,熄滅所有燈
while(1)
{
for(i=0;i<8;i++)
{
p_out=~(1<<i);//點亮一個燈,
delay_time(50000); //延遲一段時間
p_out=0xff;//熄滅所有燈
}
}
}
//**************************************
//****************************************************
//實現功能:把鍵盤輸入的鍵盤碼,用led顯示出來
//****************************************************
#include <reg51.h>
#define p_key P1
#define led_date P0
#define choose_p P2
unsigned char change(unsigned char i);
unsigned int display_num=0;
//******************時間延遲函數**********************
//描 述:用指令實現延時一段時間
//入口參數:int i,為時間延遲參數
//****************************************************
void delay_time(int i)
{
while(i)
i--;
}
//******************按鍵掃描函數**********************
//描 述:對4*4鍵盤進行掃描,程序只適合4*4鍵盤使用,
// 鍵盤佔用一組完整的i/o口,在使用這個程序前
// 要宏定義p_key為用戶實際連接鍵盤的i/o口
// #define p_key Pn;//(n=0、1、2、3)
//返回參數:若有檢測到按鍵就返回按鍵的編號,否則返回0xff
//****************************************************
unsigned char read_key(void)
{
unsigned char j,key,key_buf=0;
p_key=0xff;
//檢測是否有建按下//
p_key=0xf0;
key=p_key;
if(key==0xf0)
{
return(0xff);//沒按鍵按下,返回0xff
}
//有按下,延時去抖//
delay_time(5000);
//確認是否有建按下//
p_key=0xf0;
key=p_key;
if(key==0xf0)
{
return(0xff);//沒按鍵按下,返回0xff
}
//真的有按鍵按下,掃描是哪一行有按鍵按下//
for(j=0;j<4;j++)
{key=p_key&(0x10<<j);
if (key)
{
key=p_key;
}
else
{
key_buf=j*4;
p_key=~(0x10<<j);//第j行的按鍵按下了,第j行輸出0,其他的i/o口輸出1
//掃描是第j行的哪個按鍵按下//
for(j=0;j<4;j++)
{
key=p_key&(1<<j);
if (key)
{
key=p_key;
}
else
{
key_buf+=j;
return(key_buf);//掃描到按鍵的確定位置,返回按鍵的編號
}
}
}
}
//沒掃描到按鍵,//
return(0xff);
}
//***************七段數碼管顯示函數*******************
//描 述:對四位的掃描型七段數碼管進行掃描顯示,在使用
// 前要定義一個全局變數display_num
// unsigned int display_num;
//入口參數:unsigned int num,要顯示的數字(0-9999)
//****************************************************
void display(unsigned int num)
{
if(num<10000)
{
display_num=num;
}
choose_p|=3;//先關顯示
led_date=change(display_num/1000);//得到千位的數字,並轉換成七段碼型
choose_p&=0xfe;//選通千位
delay_time(50);//延時一段時間
choose_p|=1;//關顯示
display_num=display_num%1000;
led_date=change(display_num/100);//得到百位的數字,並轉換成七段碼型
choose_p&=0xfd;//選通百位
delay_time(50);//延時一段時間
choose_p|=2;//關顯示
display_num=display_num%100;
led_date=change(display_num/10);//得到十位的數字,並轉換成七段碼型
choose_p&=0xfb;//選通十位
delay_time(50);//延時一段時間
choose_p|=4;//關顯示
led_date=change(display_num%10);//得到個位的數字,並轉換成七段碼型
choose_p&=0xf7;//選通十位
delay_time(50);//延時一段時間
choose_p|=8;//關顯示
}
//****************數字-碼型轉換函數*******************
//描 述:把數字轉換成七段碼型,此程序僅配合共陽的七
// 段數碼管使用
//入口參數:unsigned char i,要轉換的數字(0-9),
//返回參數:轉換後的七段碼型,0xff表示轉換失敗
//****************************************************

unsigned char change(unsigned char i)
{
switch(i)
{
case 0:
return(0xc0);//0的七段碼型
case 1:
return(0xf9);//1的七段碼型
case 2:
return(0xa4);//2的七段碼型
case 3:
return(0xb0);//3的七段碼型
case 4:
return(0x99);//4的七段碼型
case 5:
return(0x92);//5的七段碼型
case 6:
return(0x82);//6的七段碼型
case 7:
return(0xf8);//7的七段碼型
case 8:
return(0x80);//8的七段碼型
case 9:
return(0x90);//9的七段碼型
default:
return(0xff);//轉換失敗
}
}
//*********************主函數*************************
//描 述:把鍵盤輸入的鍵盤碼,用led顯示出來
//****************************************************
int main(void)
{unsigned char i;
while(1)
{
i=read_key();//掃描鍵盤
if(i<16)
display((unsigned int)i);//有效的鍵盤值
else
display(0xffff);//數據無效
}
}
//兩個程序加起來就可以完成你要求的功能,有說明,你認真看一下吧。

『貳』 用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語言中,alarm函數的用法

你好!
在你的alarm()的後面加一個pause()這個函數吧,應該可以的
希望回答能給你帶來幫助
如果滿意,請採納,如有疑問,可繼續追問。
記得給問豆啊!

『肆』 C語言 鬧鍾程序

用C語言實現的鬧鍾程序
#include
#include
#include
#include
#include
void
main()
{
int
gd=DETECT,gm;
int
x=320,y=240,r=200,i,h,m,s,thetamin,thetasec;
struct
time
t;
char
n[12][3]={"3","2","1","12","11","10","9","8","7","6","5","4"};
initgraph(&gd,&gm,"g:\\tc\\bgi");//圖形驅動器路徑,根據自己的系統更換。
circle(x,y,210);
setcolor(4);
settextstyle(4,0,5);
for(i=0;i<12;i++)
{
if(i!=3)
outtextxy(x+(r-14)*cos(M_PI/6*i)-10,y-(r-14)*sin(M_PI/6*i)-26,n[i]);
else
outtextxy(x+(r-14)*cos(M_PI/6*i)-20,y-(r-14)*sin(M_PI/6*i)-26,n[i]);
}
gettime(&t);
printf("The
current
time
is:
%2d:%02d:%02d.%02d\n",t.ti_hour,
t.ti_min,
t.ti_sec,
t.ti_hund);
while(!kbhit())
{
setcolor(5);
setfillstyle(1,5);
circle(x,y,10);
floodfill(x,y,5);
gettime(&t);
if(t.ti_min!=m)
{
setcolor(0);
line(x,y,x+(r-60)*cos(thetamin*(M_PI/180)),y-(r-60)*sin(thetamin*(M_PI/180
)));
circle(x+(r-80)*cos(thetamin*(M_PI/180)),y-(r-80)*sin(thetamin*(M_PI/180))
,10);
line(x,y,x+(r-110)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-110)*sin(M_PI/6*h
-((m/2)*(M_PI/180))));
circle(x+(r-130)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-130)*sin(M_PI/6*h-(
(m/2)*(M_PI/180))),10);
}
if(t.ti_hour>12)
t.ti_hour=t.ti_hour-12;
if(t.ti_hour<4)
h=abs(t.ti_hour-3);
else&n
bsp;
h=15-t.ti_hour;
m=t.ti_min;
if(t.ti_min<=15)
thetamin=(15-t.ti_min)*6;
else
thetamin=450-t.ti_min*6;
if(t.ti_sec<=15)
thetasec=(15-t.ti_sec)*6;
else
thetasec=450-t.ti_sec*6;
setcolor(4);
line(x,y,x+(r-110)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-110)*sin(M_PI/6*h
-((m/2)*(M_PI/180))));
circle(x+(r-130)*cos(M_PI/6*h-((m/2)*(M_PI/180))),y-(r-130)*sin(M_PI/6*h-(
(m/2)*(M_PI/180))),10);
line(x,y,x+(r-60)*cos(thetamin*(M_PI/180)),y-(r-60)*sin(thetamin*(M_PI/180
)));
circle(x+(r-80)*cos(thetamin*(M_PI/180)),y-(r-80)*sin(thetamin*(M_PI/180))
,10);
setcolor(15);
line(x,y,x+(r-70)*cos(thetasec*(M_PI/180)),y-(r-70)*sin(thetasec*(M_PI/180
)));
delay(1000);
setcolor(0);
line(x,y,x+(r-70)*cos(thetasec*(M_PI/180)),y-(r-70)*sin(thetasec*(M_PI/180
)));
}
}
該程序已在Turbo
C++3.0中通過編譯.

『伍』 用AT89C51單片機設計一電子鬧鍾,C語言程序和模擬

可以用單片機內部定時器來完成,
#include <reg52.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned int
/* 函數申明 -----------------------------------------------*/
void TransferData(char data1,bit DI);
void display(void);
void display_grapic(void);
void delayms(uint n);
void DisplayLine(uchar line1,uchar line2);
void DisplayGraphic(uchar code *adder);
void delay(uint m);
void lcd_mesg(uchar code *adder1);
unsigned char Convert(unsigned char In_Date);
void initinal(void);
void initina2(void) ;
void lcd_m(uchar adder1,uchar adder2,uchar a);
/* 變數定義 -----------------------------------------------*/
uchar scnt = 0 ;
uchar last_scnt = 0 ;
uchar updat_vision = 0 ;
sbit key1 = P3^5 ;
sbit key2 = P3^7 ;
sbit key3 = P3^6 ;
sbit gnd = P3^0 ;
sbit spk = P1^0 ;
uchar timer_miao = 0 ;
uchar timer_fen = 0 ;
uchar timer_shi = 0 ;
uchar cnt = 0 ;
uchar sw = 0 ;
uchar spk_on = 0 ;
uchar noise_shi = 0 ;
uchar noise_fen = 0 ;
uint count = 0 ;
uint count1 = 0 ;
uint count2 = 0 ;
uchar time_rch = 0 ;
sbit datacs=P2^6;
sbit chipcs=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x07,
0x39,0x5e,0x79,0x71
};
/*
********************************************************************************
** 函數名稱 : Init_Timer0(void)
** 函數功能 : 定時器初始化子程序
********************************************************************************
*/
void Init_Timer0(void) //定時器初始化子程序
{
TMOD |= 0x11; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
TH0=0x3c; //給定初值,這里使用定時器最大值從0開始計數一直到65535溢出
TL0=0xaf;
TH1=0x03; //給定初值,這里使用定時器最大值從0開始計數一直到65535溢出
TL1=0xe8;
EA=1; //總中斷打開
ET0=1; //定時器中斷打開
TR0=1; //定時器開關打開
ET1=1;
TR0=1;
}
/*
********************************************************************************
** 函數名稱 : Timer0_isr(void) interrupt 1 using 1
** 函數功能 : 定時器中斷程序
********************************************************************************
*/
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x3c; //重新賦值,方式1是16位計數器,不能硬體重裝初始值
TL0=0xaf;

if(cnt<20)
{
cnt ++ ;
}else
{
cnt = 0 ;
if(sw==0)
{
if(timer_miao<59)
{
timer_miao++;
}else
{
timer_miao = 0 ;
if(timer_fen<59)
{
timer_fen++;
}else
{
timer_fen = 0 ;
if(timer_shi<23)
{
timer_shi++;
}else
{
timer_shi = 0 ;
}
}
}
}
}
}
void Timer1_isr(void) interrupt 3
{
TH1=0x03; //給定初值,這里使用定時器最大值從0開始計數一直到65535溢出
TL1=0xe8;
if(scnt<7)
{
scnt ++ ;
}else
{
scnt = 0 ;
}
switch(scnt)
{
case 0 : P0 = 0xfe ;chipcs = 1 ; chipcs = 0 ; P0=table[timer_miao%10] ;datacs=1;datacs=0; break ;
case 1 : P0 = 0xfd ;chipcs = 1 ; chipcs = 0 ; P0=table[timer_miao/10] ;datacs=1;datacs=0; break ;
case 2 : P0 = 0xfb ;chipcs = 1 ; chipcs = 0 ; P0= 0x40 ;datacs=1;datacs=0; break ;
case 3 : P0 = 0xf7 ;chipcs = 1 ; chipcs = 0 ; P0=table[timer_fen%10] ;datacs=1;datacs=0;break ;
case 4 : P0 = 0xef ;chipcs = 1 ; chipcs = 0 ; P0=table[timer_fen/10] ;datacs=1;datacs=0;break ;
case 5 : P0 = 0xdf ;chipcs = 1 ; chipcs = 0 ; P0= 0x40 ;datacs=1;datacs=0; break ;
case 6 : P0 = 0xbf ;chipcs = 1 ; chipcs = 0 ; P0=table[timer_shi%10] ;datacs=1;datacs=0;break ;
case 7 : P0 = 0x7f ;chipcs = 1 ; chipcs = 0 ; P0=table[timer_shi/10] ;datacs=1;datacs=0;break ;
}
}
void key(void)
{
if(key1==0)
{
if(count<8000)
count ++ ;
}else
{
if(count>5000)
{
if(sw<3)
sw++;
else
sw=0;
}
count = 0 ;
}
if(key2==0)
{
if(count1<8000)
count1 ++ ;
}else
{
if(count1>5000)
{
switch(sw)
{
case 0 : spk_on = 1 ; time_rch=0;break ;
case 1 : if(timer_shi<23)timer_shi++;else timer_shi = 0 ; break ;
case 2 : if(timer_fen<59)timer_fen++;else timer_fen = 0 ; break ;
case 3 : if(timer_miao<59)timer_miao++;else timer_miao = 0 ; break ;
}
}
count1 = 0 ;
}
if(key3==0)
{
if(count2<8000)
count2 ++ ;
}else
{
if(count2>5000)
{
switch(sw)
{
case 0 : spk_on = 0 ; time_rch=0; break ;
case 1 : if(timer_shi>0)timer_shi--;else timer_shi = 23 ; break ;
case 2 : if(timer_fen>0)timer_fen--;else timer_fen = 59 ; break ;
case 3 : if(timer_miao>0)timer_miao--;else timer_miao = 59 ; break ;
}
}
count2 = 0 ;
}
}
/********************************************************************
* 名稱 : Main()
* 功能 : 主函數
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void main(void)
{
sw=0;
noise_shi = 0 ;
noise_fen = 2 ;
Init_Timer0();
while(1)
{
key();
}
}

『陸』 怎麼用c語言編個鬧鍾

控制台程序么?是的話
#include <time.h>
#include <stdio.h>
#include <string.h>
int main()
{
time_t timer;
char str[80];
char str1[80];
struct tm *tblock;
timer=time(NULL);
tblock=localtime(&timer);
printf("Local time is: %s",asctime(tblock));
strcpy(str1,asctime(tblock));
struct tm *t;
t=localtime(&timer);
scanf("請輸入 秒 分 小時 天 月 年(從1900開始加)",&t->tm_sec,&t->tm_min,&t->tm_hour ,&t->tm_mday ,&t->tm_mon ,&t->tm_year );
strcpy(str,asctime(t));

for(;;)
{
if(strcmp(str,str1)==0)
{
for(;;)
{
printf("\a");
}
}
}
return 0;
}