📄 main.c
字号:
#include<reg51.h>
#include<1602lcd.h>
#include<stdio.h>
sbit p17=P1^7;
sbit p16=P1^6;
sbit p15=P1^5;
sbit p14=P1^4;
sbit p13=P1^3;
int t=0,s=0,min=0,hour=0,day=18,mon=4,year=2008,temp=0;//时间初值
int set=0; //设置变量
void timer() interrupt 1
{
IT1=0;
TH0=0X4C;
TL0=0X00;
t++;
IT1=1;
}
void zd()interrupt 2
{
EX1 = 0;
hour++;
EX1 = 1;
}
void delayms(int t)
{
int i;
while(t--)
{
/* 对于11.0592M时钟,约延时1ms */
for (i=0;i<125;i++)
{}
}
}
void main()
{
Init_LCD();
EA=0;
TMOD=0X01;
TH0=0X4C;
TL0=0X00;
EX1 = 1;
IT0 = 1;
ET0=1;
EA=1;
TR0=1;
while(1)
{
if(t==20)
{
t=0;
s++;
temp=!temp;
}
PutNumXY_LCD(7,1,s,2); //输出秒
if(s==60) //秒判断
{
s=0;
min++;
}
PutNumXY_LCD(4,1,min,2); //输出分钟
if(min==60) //时判断
{
min=0;
hour++;
}
PutNumXY_LCD(1,1,hour,2);//输出小时
if(hour==24) //分判断
{
hour=0;
day++;
}
PutNumXY_LCD(9,0,day,2);
PutStrXY_LCD(3,1,":"); //静态点
if(temp==0) //动态点
PutStrXY_LCD(6,1,":");
else
PutStrXY_LCD(6,1," ");
if(mon<=12)
{
switch(mon) //输出月份
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 : if(day==31) {day=1;mon++;} PutNumXY_LCD(6,0,mon,2);break;
case 2 : if (year%4==0 && year%100!=0 || year%400==0)
{ if(day==29) day=1;mon++;}
else {if(day==28) day=1;mon++;}
PutNumXY_LCD(6,0,mon,2);break;
case 4 :
case 6 :
case 9 :
case 11: if(day==30){day=1;mon++;}PutNumXY_LCD(6,0,mon,2);break;
}
}
else {mon=1;year++;}
PutNumXY_LCD(1,0,year,4);//输出年
PutStrXY_LCD(5,0," ");
PutStrXY_LCD(8,0," ");
PutStrXY_LCD(11,0," ");
PutStrXY_LCD(9,1," ");
PutStrXY_LCD(15,1," ");
if(p17==0) //停止计时
{
TR0=0;
p17=1;
}
if(p16==0) //开始计时
{
TR0=1;
p16=1;
}
if(TR0==0) PutStrXY_LCD(13,0,"P"); //暂停显示
else PutStrXY_LCD(13,0," ");
if(p15==0) //设置选择
{
delayms(100);
if(p15==0)
set++;
printf("haha\n");
}
if(set==6) set=0 ; //自动清零
if(set==1) //设置输出
{
PutStrXY_LCD(10,1,"S");
PutStrXY_LCD(11,1,"E");
PutStrXY_LCD(12,1,"T");
PutStrXY_LCD(13,1,":");
PutStrXY_LCD(14,1,"m");
}
if(set==2)
{
PutStrXY_LCD(10,1,"S");
PutStrXY_LCD(11,1,"E");
PutStrXY_LCD(12,1,"T");
PutStrXY_LCD(13,1,":");
PutStrXY_LCD(14,1,"h");
}
if(set==3)
{
PutStrXY_LCD(10,1,"S");
PutStrXY_LCD(11,1,"E");
PutStrXY_LCD(12,1,"T");
PutStrXY_LCD(13,1,":");
PutStrXY_LCD(14,1,"d");
}
if(set==4)
{
PutStrXY_LCD(10,1,"S");
PutStrXY_LCD(11,1,"E");
PutStrXY_LCD(12,1,"T");
PutStrXY_LCD(13,1,":");
PutStrXY_LCD(14,1,"M");
}
if(set==5)
{
PutStrXY_LCD(10,1,"S");
PutStrXY_LCD(11,1,"E");
PutStrXY_LCD(12,1,"T");
PutStrXY_LCD(13,1,":");
PutStrXY_LCD(14,1,"y");
}
if(set==0)
{
PutStrXY_LCD(10,1,"H");
PutStrXY_LCD(11,1,"e");
PutStrXY_LCD(12,1,"l");
PutStrXY_LCD(13,1,"l");
PutStrXY_LCD(14,1,"o");
}
if(set==1) //设置分钟
{
if(p14==0)
{
delayms(100);
if(p14==0)
min++;
}
}
if(set==2) //设置小时
{
if(p14==0)
{
delayms(100);
if(p14==0)
hour++;
}
} //设置天
if(set==3)
{
if(p14==0)
{
delayms(100);
if(p14==0)
day++;
}
}
if(set==4) //设置月
{
if(p14==0)
{
delayms(100);
if(p14==0)
mon++;
}
}
if(set==5) //设置年
{
if(p14==0)
{
delayms(100);
if(p14==0)
year++;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -