51时钟含闹钟(可按键设置) (三)

2014-11-24 01:38:49 · 作者: · 浏览: 13
}
if(s1num==6)//月
{
month--;
if(month==-1)month=12;
write_ymd(7,month);
write_com(0x80+0x07);
}
if(s1num==7)//年
{
year--;
if(year==-1)year=99;
write_ymd(4,year);
write_com(0x80+0x04);
}
}//if(s3==0)
}//if(s3==0)
//闹铃键
if(s4==0)
{
delay(5);
if(s4==0)
{
flag1=1;//闹铃设置开启
while(!s4);
/*在液晶上显示设置闹铃的界面*/
lcd_reset();
write_com(0x80);
while(table2[i]!='\0')
{
write_date(table2[i]);
i++;
}
i=0;
write_com(0x80+0x40);
while(table1[i]!='\0')
{
write_date(table1[i]);
i++;
}
write_sfm(10,miao);
write_sfm(7,fen);
write_sfm(4,shi);
/*显示出光标*/
write_com(0x80+0x40+10);
write_com(0x0f);
i=0;
}//if(s4==0)
}//if(s4==0)
}//if(s1num!=0)
/*若闹铃响则按下闹铃键取消*/
if(flag2)
{
if(s4==0)
{
delay(5);
if(s4==0)
{
while(!s4);
flag2=0;
}
}
}
}
/*写数据函数*/
void write_ds(uchar add,uchar date)
{
dscs=0;
dsas=1;
dsds=1;
dsrw=1;
P0=add;
dsas=0;
dsrw=0;
P0=date;
dsrw=1;
dsas=1;
dscs=1;
}
/*读数据函数*/
uchar read_ds(uchar add)
{
uchar ds_date;
dsas=1;
dsds=1;
dsrw=1;
dscs=0;
P0=add;
dsas=0;
dsds=0;
P0=0xff;
ds_date=P0;
dsds=1;
dsas=1;
dscs=1;
return ds_date;
}
/*液晶初始化函数*/
void lcd_reset()
{
delay(15);
write_com(0x38);
delay(5);
write_com(0x38);
delay(5);
write_com(0x38);
delay(5);
write_com(0x08);
write_com(0x01);
write_com(0x06);
write_com(0x0c);
}
/*主函数*/
void main()
{
lcd_reset();
init();
while(1)
{
keyscan();
asec=read_ds(1);//读出闹铃时间
amin=read_ds(3);
ahour=read_ds(5);
if(flag==0)//若是功能键未被按下,则运行时钟
{
miao=read_ds(0);
fen=read_ds(2);
shi=read_ds(4);
week=read_ds(6);
day=read_ds(7);
month=read_ds(8);
year=read_ds(9);
if(asec==miao&&amin==fen&&ahour==shi)flag2=1;//闹铃标志
write_sfm(10,miao);
write_sfm(7,fen);
write_sfm(4,shi);
write_week();
write_ymd(0x0a,day);
write_ymd(7,month);
write_ymd(4,year);

}
if(flag2)music();//闹铃响
}
}
/*外部中断函数*/
void exter() interrupt 0
{
uchar c;
c=read_ds(0x0c);
}