📄 main.c
字号:
if(ringtime[2]==0)
{
ringtime[2]=5;
ringtime[3]=9;
}
else
{
ringtime[2]--;
ringtime[3]=9;
}
}
else
ringtime[3]--;
play816(1,2,2,shuzi1[ringtime[2]],1);
play816(1,3,2,shuzi1[ringtime[3]],1);
break;
}
case 7:
{
ringtime[4]=~(ringtime[4]);
if(ringtime[4]==0)
{
play816(1,4,2,no,1);
}
else
play816(1,4,2,yes,1);
break;
}
default:;
}
}
if(keycode==0x11) //按下设置键
{
fg=yearstype(2000+10*datastring[0]+datastring[1]);
for(mm=0;mm<(10*datastring[2]+datastring[3]-1);mm++)
{
sum+=days_in_a_mon[fg][mm];
}
sum+=10*datastring[4]+datastring[5];
weekvalue=((2000+10*datastring[0]+datastring[1]-1)+(2000+10*datastring[0]+datastring[1]-1)/4-(2000+10*datastring[0]+datastring[1]-1)/100+(2000+10*datastring[0]+datastring[1]-1)/400+sum)%7;
if(weekvalue==0)
weekvalue=7;
day_set(0);
settime(ds1302_minute,16*datastring[8]+datastring[9]);
settime(ds1302_hour,16*datastring[6]+datastring[7]);
settime(ds1302_day,16*datastring[4]+datastring[5]);
settime(ds1302_month,16*datastring[2]+datastring[3]);
settime(ds1302_year,16*datastring[0]+datastring[1]);
settime(ds1302_week,weekvalue);
init12864();
clear12864();
break;
}
}
}
else if((keycode!=0)&&ringflag)
{
ringdelay=0;
ringflag=0;
ringout=0;
ringoff=0;
}
TH0=(65536-7000)/256;
TL0=(65536-7000)%256;
}
void ringcheck() interrupt 3
{
// gettemperature(); //取温度存在temp数组中
if(ringtime[4]&&ringoff)
{
if((10*datastring[6]+datastring[7])==(10*ringtime[0]+ringtime[1])&&(10*datastring[8]+datastring[9])==(10*ringtime[2]+ringtime[3]))
ringflag=1;
if(ringflag)
{
ringdelay++;
ringout=1;
if(ringdelay>=180)
{
ringdelay=0;
ringflag=0;
ringout=0;
ringoff=0;
}
}
}
if((10*datastring[6]+datastring[7])!=(10*ringtime[0]+ringtime[1])||(10*datastring[8]+datastring[9])!=(10*ringtime[2]+ringtime[3])&&ringtime[4])
{
ringoff=1;
}
TH1=(65536-50000)/256;
TL1=(65535-50000)%256;
}
/***************************************************/
void main()
{
uchar feq=0;
uchar k1,k2,k11,k22,k33;
uchar endrow=63,beginrow=1;
uchar flag0=1;
uchar i,j,kk;
ringout=0;
choose12864(2);
init12864();
clear12864();
disppc12864(pic);
d1s(1);//显示欢迎画面20秒
clear12864();
init_ds1302();
init_time();
TMOD=0x11;
TH0=(65536-7000)/256;
TL0=(65536-7000)%256;
TH1=(65536-50000)/256;
TL1=(65535-50000)%256;
IP=0x02;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
for(;;)
{
/************************时间显示部分***************************/
gettime(); //时间日期数据保存在datastring里面
for(i=0;i<6;i++)
{
kk=0;
for(j=i*16;j<i*16+16;j++)
{
datatemp[j]=shuzi1[datastring[i+6]][kk++];
}
}
for(i=0;i<12;)
{
for(j=i*8;j<i*8+8;j++)
datatemp[j]=datatemp[j]|0x01;
i=i+2;
}
datatemp[0]=0xff;
datatemp[8]=0xff;
datatemp[95]=0xff;
datatemp[87]=0xff;
play816(1,7,0,datatemp+80,0);
play816(1,0,0,datatemp,0);
play816(1,1,0,datatemp+16,0);
play816(1,2,0,dian1,0);
play816(1,3,0,datatemp+32,0);
play816(1,4,0,datatemp+48,0);
play816(1,5,0,dian1,0);
play816(1,6,0,datatemp+64,0);
/****************************************************************/
/************************日期显示部分****************************/
kk=0;
for(i=0;i<16;i++)
{
datatemp[i]=shuzi1[2][kk++];
}
kk=0;
for(i=16;i<32;i++)
{
datatemp[i]=shuzi1[0][kk++];
}
kk=0;
for(i=32;i<48;i++)
{
datatemp[i]=shuzi1[datastring[0]][kk++];
}
kk=0;
for(i=48;i<64;i++)
{
datatemp[i]=shuzi1[datastring[1]][kk++];
}
for(i=0;i<8;)
{
for(j=i*8;j<i*8+8;j++)
datatemp[j]=datatemp[j]|0x01;
i=i+2;
}
datatemp[0]=0xff;
datatemp[8]=0xff;
play816(0,0,1,datatemp,0);
play816(0,1,1,datatemp+16,0);
play816(0,2,1,datatemp+32,0);
play816(0,3,1,datatemp+48,0);
for(i=0;i<16;i++)
datatemp[i]=shuzi1[datastring[2]][i];
kk=0;
for(i=16;i<32;i++)
datatemp[i]=shuzi1[datastring[3]][kk++];
kk=0;
for(i=32;i<64;i++)
datatemp[i]=yue[kk++];
for(i=0;i<4;)
{
for(j=i*8;j<i*8+8;j++)
datatemp[j]=datatemp[j]|0x01;
i=i+2;
}
for(i=0;i<16;i++)
datatemp[i+32]=datatemp[i+32]|0x01;
datatemp[0]=0xff;
datatemp[8]=0xff;
play816(0,0,2,datatemp,0);
play816(0,1,2,datatemp+16,0);
play1616(0,2,2,datatemp+32);
for(i=0;i<64;i++)
datatemp[i]=shuzi2[datastring[4]][i];
for(i=0;i<16;i++)
datatemp[i]=shuzi2[datastring[4]][i]|0x01;
datatemp[0]=0xff;
datatemp[16]=0xff;
datatemp[32]=0xff;
datatemp[48]=0xff;
play1632(0,4,1,datatemp);
for(i=0;i<64;i++)
datatemp[i]=shuzi2[datastring[5]][i];
for(i=0;i<16;i++)
datatemp[i]=shuzi2[datastring[5]][i]|0x01;
play1632(0,6,1,datatemp);
/**************************************************************** /
/****************************星期显示部分************************/
for(i=0;i<64;i++)
datatemp[i]=xingqi[i];
if(datastring[12]==7)
{
kk=0;
for(i=64;i<96;i++)
datatemp[i]=shuzi3[10][kk++];
}
else
{
kk=0;
for(i=64;i<96;i++)
datatemp[i]=shuzi3[datastring[12]-1][kk++];
}
for(i=0;i<6;)
{
for(j=i*16;j<i*16+16;j++)
datatemp[j]=datatemp[j]|0x01;
i=i+2;
}
for(i=1;i<7;)
{
for(j=i*16;j<i*16+16;j++)
datatemp[j]=datatemp[j]|0x80;
i=i+2;
}
datatemp[0]=0xff;
datatemp[16]=0xff;
play1616(0,0,3,datatemp);
play1616(0,2,3,datatemp+32);
play1616(0,4,3,datatemp+64);
/****************************************************************/
/******************************温度显示**************************/
gettemperature(); //取温度存在temp数组中
for(i=0;i<16;i++)
datatemp[i]=shuzi1[temp[0]][i];
kk=0;
for(i=16;i<32;i++)
datatemp[i]=shuzi1[temp[1]][kk++];
kk=0;
for(i=32;i<48;i++)
datatemp[i]=oc[kk++];
for(i=0;i<6;)
{
for(j=i*8;j<i*8+8;j++)
datatemp[j]=datatemp[j]|0x01;
i=i+2;
}
datatemp[0]=0xff;
datatemp[8]=0xff;
play816(1,0,1,datatemp,0);
play816(1,1,1,datatemp+16,0);
play816(1,2,1,datatemp+32,0);
/****************************************************************/
/***********************闹钟时间显示****************************/
for(i=0;i<40;i++)
datatemp[i]=alarm[i]|0x01;
datatemp[0]=0xff;
datatemp[39]=0xff;
play88(1,3,2,datatemp);
play88(1,4,2,datatemp+8);
play88(1,5,2,datatemp+16);
play88(1,6,2,datatemp+24);
play88(1,7,2,datatemp+32);
if(ringtime[4])
{
for(i=0;i<8;i++)
datatemp[i]=shuzi4[ringtime[0]][i];
kk=0;
for(i=8;i<16;i++)
datatemp[i]=shuzi4[ringtime[1]][kk++];
kk=0;
for(i=16;i<24;i++)
datatemp[i]=dian2[kk++];
kk=0;
for(i=24;i<32;i++)
datatemp[i]=shuzi4[ringtime[2]][kk++];
kk=0;
for(i=32;i<40;i++)
datatemp[i]=shuzi4[ringtime[3]][kk++];
}
else
{
for(i=0;i<40;i++)
datatemp[i]=0xff;
}
datatemp[0]=0xff;
datatemp[39]=0xff;
play88(1,3,3,datatemp);
play88(1,4,3,datatemp+8);
play88(1,5,3,datatemp+16);
play88(1,6,3,datatemp+24);
play88(1,7,3,datatemp+32);
/****************************************************************/
/***************************农历显示*****************************/
nongli(2000+10*datastring[0]+datastring[1],10*datastring[2]+datastring[3],10*datastring[4]+datastring[5]);
//获得农历日期保存在datenong里
if(datenong[0]==0)
for(i=0;i<32;i++)
datatemp[i]=0x00;
else
for(i=0;i<32;i++)
datatemp[i]=shuzi3[9][i];
kk=0;
for(i=32;i<64;i++)
datatemp[i]=shuzi3[datenong[1]-1][kk++];
kk=0;
for(i=64;i<96;i++)
datatemp[i]=yue[kk++];
for(i=0;i<6;)
{
for(j=i*16;j<i*16+16;j++)
datatemp[j]=datatemp[j]|0x01;
i=i+2;
}
for(i=1;i<7;)
{
for(j=i*16;j<i*16+16;j++)
datatemp[j]=datatemp[j]|0x80 ;
i=i+2;
}
datatemp[0]=0xff;
datatemp[16]=0xff;
play1616(0,6,3,datatemp);
play1616(1,0,3,datatemp+32);
play1616(1,2,3,datatemp+64);
if(datenong[2]==0)
for(i=0;i<32;i++)
datatemp[i]=shuzi3[12][i];
else if(datenong[2]==1)
for(i=0;i<32;i++)
datatemp[i]=shuzi3[9][i];
else if(datenong[2]==2)
for(i=0;i<32;i++)
datatemp[i]=shuzi3[11][i];
else if(datenong[2]==3)
{
for(i=0;i<32;i++)
datatemp[i]=shuzi3[2][i];
kk=0;
for(i=32;i<64;i++)
datatemp[i]=shuzi3[9][kk++];
}
if(datenong[2]!=3)
{
kk=0;
for(i=32;i<64;i++)
datatemp[i]=shuzi3[datenong[3]-1][kk++];
for(i=0;i<4;)
{
for(j=i*16;j<i*16+16;j++)
datatemp[j]=datatemp[j]|0x01;
i=i+2;
}
}
for(i=1;i<5;)
{
for(j=i*16;j<i*16+16;j++)
datatemp[j]=datatemp[j]|0x80;
i=i+2;
}
datatemp[63]=0xff;
datatemp[47]=0xff;
play1616(1,4,3,datatemp);
play1616(1,6,3,datatemp+32);
/*****************************************************************/
/*****************************节日显示****************************/
jieri(10*datastring[2]+datastring[3],10*datastring[4]+datastring[5],10*datenong[0]+datenong[1],10*datenong[2]+datenong[3]);
/*****************************************************************/
/***************************生肖显示*****************************/
dispshengxiao(10*datastring[0]+datastring[1]);
/****************************************************************/
chsfill(1,0,4,0xff);
chsfill(1,0,5,0xff);
chsfill(1,63,4,0xff);
chsfill(1,63,5,0xff);
/************************滚动显示**************************/
feq++;
if(feq==3)
{
if(flag0==1)
{
for(i=1;i<endrow;i++)
{
chsfill(1,i,4,0x01);
chsfill(1,i,5,0x00);
}
k1=0;
k2=16;
for(i=endrow;i<63;i++)
{
chsfill(1,i,4,zhizuo[k1++]);
if((k1%16==0)&&(((k1/16)%2)==1))
k1=k1+16;
chsfill(1,i,5,zhizuo[k2++]);
if((k2%16==0)&&(((k2/16)%2)==0))
k2=k2+16;
}
endrow--;
if(endrow==1)
{
flag0=0;
k33=0;
k11=0;
k22=16;
}
}
else if(flag0==0)
{
k33++;
if(k33==1)
{
k11=0;
k22=16;
}
else
{
k11++;
k22++;
}
if((k11%16==0)&&(((k11/16)%2)==1))
k11=k11+16;
if((k22%16==0)&&(((k22/16)%2)==0))
k22=k22+16;
k1=k11;
k2=k22;
for(i=1;i<63;i++)
{
chsfill(1,i,4,zhizuo[k1++]);
if((k1%16==0)&&(((k1/16)%2)==1))
k1=k1+16;
chsfill(1,i,5,zhizuo[k2++]);
if((k2%16==0)&&(((k2/16)%2)==0))
k2=k2+16;
}
if(k33==35)
{
flag0=2;
endrow=63;
beginrow=63;
k33=0;
k11=66;
k22=82;
}
}
else if(flag0==2)
{
k33++;
k11++;
k22++;
if((k11%16==0)&&(((k11/16)%2)==1))
k11=k11+16;
if((k22%16==0)&&(((k22/16)%2)==0))
k22=k22+16;
k1=k11;
k2=k22;
for(i=1;i<(63-k33);i++)
{
chsfill(1,i,4,zhizuo[k1++]);
if((k1%16==0)&&(((k1/16)%2)==1))
k1=k1+16;
chsfill(1,i,5,zhizuo[k2++]);
if((k2%16==0)&&(((k2/16)%2)==0))
k2=k2+16;
}
beginrow--;
for(i=beginrow;i<endrow;i++)
{
chsfill(1,i,4,0x01);
chsfill(1,i,5,0x00);
}
if(k33==61)
{
flag0=1;
}
}
feq=0;
}
/**********************************************************/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -