📄 1602.c
字号:
#include"INCLUDE.H"
//函数声明
void Up_date();
void Up_disp();
void To_almarray();
extern void Song_delay();
void Play();
//定义新旧日期/时间变量
struct date new_date,old_date;
struct time new_time,old_time,alm_time;
//定义软件延时计数变量
uchar secount=0;
//定义闹钟开关变量
bit on=0;
bit K1=1;
//定义扬声器引脚
sbit speaker=P1^0;
code uchar menu3[16]="--Made by Zheng@";
code uchar menu4[16]="Kunlong &Lorise@";
code uchar dispweek[7][4]={"Mon@","Tus@","Wes@","Thu@","Fir@","Sat@","Sun@"};
code uchar menu1[16]="1.Time 2.Alarm @";
code uchar menu2[16]="3.manufacturer@";
code uchar alarm_menu[]="Alarm time@";
code uchar onoff[2][4]={"OFF@","ON @"};
//定义时间、日期显示数组
struct disptime disp_time,disp_almtime;
struct dispdate disp_date;
void time() interrupt 1
{
TH0=0x3c;
TL0=0xd3;
secount++;
if(secount==20)
{
secount=0;
new_time.second++;
if(new_time.second>=60)
{
new_time.second=0;
new_time.minute++;
if(new_time.minute>=60)
{
new_time.minute=0;
new_time.hour++;
if(new_time.hour>=24)
{
new_time.hour=0;
Up_date();
}
}
}
}
}
/***********************把显示数组的值转换为十进制数值 *************/
void To_value()
{
new_date.year=(disp_date.year[0]-'0')*1000+(disp_date.year[1]-'0')*100
+(disp_date.year[2]-'0')*10+(disp_date.year[3]-'0');
new_date.month=(disp_date.month[0]-'0')*10+(disp_date.month[1]-'0');
new_date.day=(disp_date.day[0]-'0')*10+(disp_date.day[1]-'0');
new_time.hour=(disp_time.hour[0]-'0')*10+(disp_time.hour[1]-'0');
new_time.minute=(disp_time.minute[0]-'0')*10+(disp_time.minute[1]-'0');
new_time.second=(disp_time.second[0]-'0')*10+(disp_time.second[1]-'0');
}
/***********************把十进制的值转换为显示数组数值 *************/
void To_almarray()
{
disp_almtime.hour[0]=alm_time.hour/10+'0';
disp_almtime.hour[1]=alm_time.hour%10+'0';
disp_almtime.minute[0]=alm_time.minute/10+'0';
disp_almtime.minute[1]=alm_time.minute%10+'0';
disp_almtime.second[0]=alm_time.second/10+'0';
disp_almtime.second[1]=alm_time.second%10+'0';
}
void To_array()
{
disp_date.year[0]=old_date.year/1000+'0';
disp_date.year[1]=(old_date.year/100)%10+'0';
disp_date.year[2]=(old_date.year/10)%10+'0';
disp_date.year[3]=old_date.year%10+'0';
disp_date.month[0]=old_date.month/10+'0';
disp_date.month[1]=old_date.month%10+'0';
disp_date.day[0]=old_date.day/10+'0';
disp_date.day[1]=old_date.day%10+'0';
disp_time.hour[0]=old_time.hour/10+'0';
disp_time.hour[1]=old_time.hour%10+'0';
disp_time.minute[0]=old_time.minute/10+'0';
disp_time.minute[1]=old_time.minute%10+'0';
disp_time.second[0]=old_time.second/10+'0';
disp_time.second[1]=old_time.second%10+'0';
}
/***********************日期更新函数************************/
void Up_date()
{
new_date.week++;
if(new_date.week==8)
new_date.week=1;
new_date.day++;
if(new_date.day>=29)
{
switch(new_date.month)
{
case 2:
{
if(new_date.year%4==0&&new_date.year%100!=0||new_date.year%400==0)
{
if(new_date.day==30)
{
new_date.day=0;
new_date.month++;
}
else
{
new_date.day=0;
new_date.month++;
}
}
break;
}
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
{
if(new_date.day==32)
{
new_date.day=0;
new_date.month++;
}
break;
}
case 4:case 6:case 9:case 11:
{
if(new_date.day==31)
{
new_date.day=0;
new_date.month++;
}
break;
}
}
if(new_date.month==13)
{
new_date.month=0;
new_date.year++;
}
if(new_date.year==6000)
new_date.year=0;
}
}
/******************更新日期,时间显示函数****************************/
void Up_disp()
{
if(new_date.year!=old_date.year||new_date.month!=old_date.month
||new_date.day!=old_date.day||new_date.week!=old_date.week)
{
old_date.year=new_date.year;
old_date.month=new_date.month;
old_date.day=new_date.day;
old_date.week=new_date.week;
}
if(old_time.hour!=new_time.hour||old_time.minute!=new_time.minute||old_time.second!=new_time.second)
{
old_time.hour=new_time.hour;
old_time.minute=new_time.minute;
old_time.second=new_time.second;
}
}
//初始化函数
void Init()
{
//初始化时间变量
new_time.second=old_time.second=0;
new_time.minute=old_time.minute=0;
new_time.hour=old_time.hour=0;
//初始化闹钟时间变量
alm_time.second=30;
alm_time.minute=50;
alm_time.hour=7;
//初始化日期变量
new_date.year=old_date.year=2007;
new_date.month=old_date.month=5;
new_date.day=old_date.day=10;
new_date.week=old_date.week=3;
//初始化时间显示数组
disp_time.hour[2]='@';
disp_time.minute[2]='@';
disp_time.second[2]='@';
//初始化闹钟时间显示数组
disp_almtime.hour[2]='@';
disp_almtime.minute[2]='@';
disp_almtime.second[2]='@';
//初始化日期显示数组
disp_date.year[4]='@';
disp_date.month[2]='@';
disp_date.day[2]='@';
To_almarray();
Init_LCD();
TMOD=0x11;
TH0=0x3c;
TL0=0xd3;
IE=0x8a;
speaker=1;
TR0=1;
}
main()
{
Init();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -