多功能电脑时钟程序Word格式文档下载.docx
《多功能电脑时钟程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《多功能电脑时钟程序Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
//跑表计时保存
unsignedcharMark=0;
//跑表标志位
unsignedintYear=2011;
unsignedcharMonth=7,Date=12;
unsignedcharMode=0;
//按键标志位0:
实时时钟1:
修改小时2:
修改分钟3:
修改年份4:
修改月份5:
修改日期6:
修改闹钟小时7:
修改闹钟分钟
//8:
是否开启闹钟9:
是否整点报时10:
修改倒计时分钟11:
修改倒计时秒12:
倒计时功能是开启13:
倒计时功能是关闭
/*----------------------------------------------------------------------------------------------------*/
unsignedcharTH1_timer1,TL1_timer1;
//定时器1初始值
unsignedcharcodemusic_l_tab[8]={0,1,2,3,4,6,8,16};
//节拍延时单位
unsignedcharcodemusic[]={//两只老虎,高4位为音乐节拍,低4位为音符
0x31,0x32,0x33,0x31,0x31,0x32,0x33,0x31,0x33,0x34,0x45,
0x33,0x34,0x45,0x25,0x16,0x25,0x14,0x33,0x31,0x25,0x16,
0x25,0x14,0x33,0x31,0x31,0x35,0x41,0x31,0x35,0x41,0};
unsignedcharcodemusic_freq_tab[16]={
0xff,0xea,//0休止符
255-FREQ/24/1049/256,//1do高字节//255-FREQ/24/x/256
255-FREQ/24/1049%256,//1do低字节//256-FREQ/24/x%256
255-FREQ/24/1178/256,256-FREQ/24/1178%256,//2re
255-FREQ/24/1322/256,256-FREQ/24/1322%256,//3mi
255-FREQ/24/1400/256,256-FREQ/24/1400%256,//4fa
255-FREQ/24/1572/256,256-FREQ/24/1572%256,//5suo
255-FREQ/24/1665/256,256-FREQ/24/1665%256,//6la
255-FREQ/24/1869/256,256-FREQ/24/1869%256,//7xi
};
unsignedcharPlay_time=0;
//整点报时次数
bitOC_Play_time=1;
//整点报时功能是否开启
bitMusic_play=0;
//闹钟是否开启
bitMusic_Ring=0;
//闹钟运行标志
bitD_Time=0;
//倒计时运行标志
/*****************************************************************************************/
sbitP10=P1^0;
sbitP11=P1^1;
sbitP12=P1^2;
sbitP13=P1^3;
//数码管位选定义
/******************************************************************************************/
sbitK_MODE=P2^0;
sbitK_UP=P2^1;
sbitK_DOWN=P2^2;
sbitK_ENT=P3^2;
//按键定义
sbitLED1=P2^3;
sbitLED2=P2^4;
sbitLED3=P2^5;
sbitLED4=P2^6;
//LED灯定义
//*******************************************************************************************
sbitSPN_MUSIC=P1^4;
//蜂鸣器端口定义
voidFirst_Set();
//初始化程序
voidKey_Mode();
//按键控制
voidSet_diply();
//选着数码管显示的内容
voidmusic_delay(unsignedcharn);
//延时函数
voidRun_play_time();
//整点报时函数
voidmusic_play(unsignedchar*music);
//演奏音乐
intmain()
{
First_Set();
//初始化程序
while
(1)
{
Key_Mode();
//按键扫描
Set_diply();
//数码管显示
Run_play_time();
//整点报时
if(Music_Ring==1)//闹钟开启
{
music_play(music);
Music_Ring=0;
Music_play=0;
}
}
return0;
}
/*******************************************************************************************/
voidFirst_Set()//初始化函数
TMOD=0x11;
TH0=0xee;
TL0=0x00;
//定时5ms
EA=1;
ET0=1;
TR0=1;
ET1=1;
//开定时器1中断
TR1=0;
}
/************************************************************************************************/
voidtimer1()interrupt3using1
SPN_MUSIC=~SPN_MUSIC;
//蜂鸣器
TH1=TH1_timer1;
TL1=TL1_timer1;
//定时器1
/*****************************************************************************************************/
voidtimer0()interrupt1//定时器0
{
staticunsignedcharBit=0;
//位选标志
staticunsignedcharcount=0;
//计数标志
TH0=0xee;
count++;
//------------------------------------------------------------------------------------------------
//跑表计时程序
if(Mark>
=2&
&
Mark<
7)//跑表标志位
if(count%20==0)
{
Second_10++;
if(Second_10==10)
Second_10=0;
Second++;
if(Second==60)
{
Second=0;
Minutes++;
if(Minutes==10)
{
Minutes=0;
}
}
}
//------------------------------------------------------------------------------------------
//倒计时程序
if(D_Time==1)//倒计时运行标志
if(count>
=200)
count=0;
if(D_Sec<
=0)
D_Sec=59;
//倒计时秒
if(D_Min<
D_Min=0;
D_Sec=0;
elseD_Min--;
elseD_Sec--;
//-----------------------------------------------------------------------------------------
//电脑时钟计时程序
if(count>
Sec++;
if(Sec>
=60)
Min++;
Sec=0;
if(Min>
Hour++;
Min=0;
Play_time=Hour;
if(Hour>
=24)
Hour=0;
if(Month==1||Month==3||Month==5|