write_date(' ');
write_com(0x80+0x40+15); write_date(' '); } } } } }
void guangbo()//广播定时 {if(K4num==0)
{write_com(0x80+0x40); for(i=0;i<9;i++)
write_date(Alarm_00[i]); }
if(K4==0&&K4num==0)//判断K3首次被按下,则设置闹钟
{delay(5);//延时消抖,后同 if(K4==0) {flag1=0;
write_com(0x80+0x40+13);//第一次按下光标定位到分钟位置
while(!K4); K4num=1;
write_com(0x80+0x40); for(i=0;i<9;i++)
write_date(Alarm_0[i]);
write_sfm(12,fen1);//送去液晶显示定时的分,时
write_sfm(9,shi1);
write_com(0x0f);//光标开始闪烁 write_com(0x80+0x40+13);//显示位置回到调节处
} }
if(K2==0&&K4num==0)//K2被按下时显示定时时间
{delay(5); if(K2==0)
{write_sfm(12,fen1);//送去液晶显示定时的分,时
write_sfm(9,shi1); while(!K2);
write_sfm(12,fen);//K2松开显示当前时间
write_sfm(9,shi); } }
if(K3==0&&K4num==1)//修改小时,判断K1键按下,K3num=1,表示K3按键按下,则此时修改的是闹钟时间的小时
{delay(5); if(K3==0)
{write_com(0x80+0x40+10);//光标定位到小时位置
K4num=1; while(!K3);
shi1++;//则调整定时的时加1 if(shi1==24)//若满24后将清零 shi1=0;
write_sfm(9,shi1);//每调节一次送液晶显示
write_com(0x80+0x40+10);//显示位置重新回到调节处
} }
if(K2==0&&K4num==1)//按键2按下,修改闹钟时间的分钟
{delay(5); if(K2==0)
{write_com(0x80+0x40+13);//光标定位到分钟位置
K4num=1; while(!K2);
fen1++;//则调整分加1
if(fen1==60)//若满60后将清零
fen1=0;
write_sfm(12,fen1);//每调节一次送液晶显示
write_com(0x80+0x40+13);//显示位置重新回到调节处
} }
if(K4num==1)//当设置闹钟时,K3被按下设置完成。
{if(K4==0)//判断K3按下 {delay(5); if(K4==0) {K1num=0; K4num=0; while(!K4);
write_com(0x0c);//光标停止闪烁 flag1=1;//flag=1.则修改系统时间时液晶显示的系统时间值,flag=0,则为修改闹钟时间时,屏幕显示的是修改闹钟时间的值
write_sfm(12,fen);//送去液晶显示分,时
write_sfm(9,shi);
write_com(0x80+0x40+11); write_date(':');
write_com(0x80+0x40+14); write_date(' ');
write_com(0x80+0x40+15); write_date(' '); } } } }
void shangke()//上课定时 {if(K4num==0)
{write_com(0x80+0x40); for(i=0;i<9;i++) write_date(Alarm_11[i]); }
if(K4==0&&K4num==0)//判断K3首次被按下,则设置闹钟
{delay(5);//延时消抖,后同 if(K4==0) {flag1=0;
write_com(0x80+0x40+13);//第一次按下光标定位到分钟位置
while(!K4); K4num=1;
write_com(0x80+0x40); for(i=0;i<9;i++)
write_date(Alarm_1[i]);
write_sfm(12,fen2);//送去液晶显示定时的分,时
write_sfm(9,shi2);
write_com(0x0f);//光标开始闪烁
write_com(0x80+0x40+13);//显示位置回到调节处
}
}
if(K2==0&&K4num==0)//K2被按下时显示定时时间
{delay(5); if(K2==0)
{write_sfm(12,fen2);//送去液晶显示定时的分,时
write_sfm(9,shi2); while(!K2);
write_sfm(12,fen);//K2松开显示当前时间
write_sfm(9,shi); } }
if(K3==0&&K4num==1)//修改小时,判断K1键按下K3num=1,表示K3按键按下,则此时修改的是闹钟时间的小时
{delay(5);
if(K3==0)
{write_com(0x80+0x40+10);//光标定位到小时位置
K4num=1; while(!K3);
shi2++;//则调整定时的时加1 if(shi2==24)//若满24后将清零 shi2=0;
write_sfm(9,shi2);//每调节一次送液晶显示
write_com(0x80+0x40+10);//显示位置重新回到调节处
} }
if(K2==0&&K4num==1)//按键2按下,修改闹钟时间的分钟
{delay(5); if(K2==0)
{write_com(0x80+0x40+13);//光标定位到分钟位置
K4num=1; while(!K2);
fen2++;//则调整分加1
if(fen2==60)//若满60后将清零 fen2=0;
write_sfm(12,fen2);//每调节一次送液晶显示一下
write_com(0x80+0x40+13);//显示位置重新回到调节处
} }
if(K4num==1)//当设置时间或闹钟时,K3被按下设置完成。
{if(K4==0)//判断K3按下 {delay(5); if(K4==0) {K1num=0; K4num=0; while(!K4);
write_com(0x0c);//光标停止闪烁
flag1=1;//flag=1.则修改系统时间时液晶显示的系统时间值, flag=0,则为修改闹钟时间时,屏幕显示的是修改闹钟时间的值 write_sfm(12,fen);//送去液晶显示分,时
write_sfm(9,shi);
write_com(0x80+0x40+11); write_date(':');
write_com(0x80+0x40+14); write_date(' ');
write_com(0x80+0x40+15); write_date(' '); } } } }
void xiake()//下课定时 {if(K4num==0)
{write_com(0x80+0x40); for(i=0;i<9;i++)
write_date(Alarm_22[i]); }
if(K4==0&&K4num==0)//判断K3首次被按下,则设置闹钟
{delay(5);//延时消抖,后同 if(K4==0) {flag1=0;
write_com(0x80+0x40+13);//第一次按下光标定位到分钟位置
while(!K4); K4num=1;
write_com(0x80+0x40); for(i=0;i<9;i++)
write_date(Alarm_2[i]);
write_sfm(12,fen3);//送去液晶显示定时的分,时
write_sfm(9,shi3);
write_com(0x0f);//光标开始闪烁 write_com(0x80+0x40+13);//显示位置回到调节处
} }
if(K2==0&&K4num==0)//K2被按下时显示定时时间
{delay(5); if(K2==0)
{write_sfm(12,fen3);//送去液晶显示定时的分,时
write_sfm(9,shi3); while(!K2);
write_sfm(12,fen);//K2松开显示当前时间
write_sfm(9,shi); } }
if(K3==0&&K4num==1)//修改小时,判断K1键按下,K3num=1,表示K3按键按下,则此时修改的是闹钟时间的小时
{delay(5); if(K3==0)
{write_com(0x80+0x40+10);//光标定位到小时位置
K4num=1; while(!K3);
shi3++;//则调整定时的时加1 if(shi3==24)//若满24后将清零 shi3=0;
write_sfm(9,shi3);//每调节一次送液晶显示
write_com(0x80+0x40+10);//显示位置重新回到调节处
} }
if(K2==0&&K4num==1)//2按下,修改闹钟时间的分钟
{delay(5); if(K2==0)
{write_com(0x80+0x40+13);//光标定位到分钟位置
K4num=1; while(!K2);
fen3++;//则调整分加1 if(fen3==60)//若满60后将清零 {fen3=0;
write_sfm(12,fen3);//每调节一次送液晶显示
write_com(0x80+0x40+13); } }
if(K4num==1)//当设置时间或闹钟时,K3被按下设置完成
{if(K4==0)//判断K3按下 {delay(5); if(K4==0) {K1num=0; K4num=0; while(!K4);
write_com(0x0c);//光标停止闪烁 flag1=1;
write_sfm(12,fen);//送去液晶显示分,时 write_sfm(9,shi); write_com(0x80+0x40+11);
write_date(':');
write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15);
write_date(' '); } } } } }
void dengkong()//灯光控制 { if(K4num==0)
{write_com(0x80+0x40); for(i=0;i<9;i++)
write_date(Alarm_33[i]); }
if(K4==0&&K4num==0)//判断K3首次被按下,则设置闹钟
{delay(5);//延时消抖,后同 if(K4==0) {flag1=0;
write_com(0x80+0x40+13);//第一次按下光标定位到分钟位置
while(!K4); K4num=1;
write_com(0x80+0x40); for(i=0;i<9;i++)
write_date(Alarm_3[i]);
write_sfm(12,fen4);//送去液晶显示定时的分,时
write_sfm(9,shi4);
write_com(0x0f);//光标开始闪烁
write_com(0x80+0x40+13);//显示位置回到调节处
} }
if(K2==0&&K4num==0)//K2被按下时显示定时时间
{delay(5); if(K2==0)
{write_sfm(12,fen4);//送去液晶显示定时的分,时
write_sfm(9,shi4); while(!K2); write_sfm(12,fen);//K2松开显示当前时间
write_sfm(9,shi); } }
if(K3==0&&K4num==1);//修改小时,判断K1键按下,K3num=1,表示K3按键按下,则此时修改的是闹钟时间的小时
{delay(5); if(K3==0)
{write_com(0x80+0x40+10);//光标定位到小时位置
K4num=1; while(!K3);
shi4++;//则调整定时的时加1
if(shi4==24)//若满24后将清零 shi4=0;
write_sfm(9,shi4);//每调节一次送液晶显示一下
write_com(0x80+0x40+10);//显示位置重新回到调节处
} }
if(K2==0&&K4num==1)//按键2按下,修改闹钟时间的分钟
{delay(5); if(K2==0)
{write_com(0x80+0x40+13);//光标定位到分钟位置
K4num=1; while(!K2);
fen4++;//则调整分加1
if(fen4==60)//若满60后将清零 fen4=0;
write_sfm(12,fen4);//每调节一次送液晶显示一下
write_com(0x80+0x40+13);//显示位置重新回到调节处
} }
if(K4num==1)//当设置时间或闹钟时,K3被按下设置完成。
{if(K4==0)//判断K3按下 {delay(5); if(K4==0) {K1num=0; K4num=0; while(!K4);
write_com(0x0c);//光标停止闪烁 flag1=1;
write_sfm(12,fen);//送去液晶显示分,时 write_sfm(9,shi); write_com(0x80+0x40+11); write_date(':'); write_com(0x80+0x40+14); write_date(' '); write_com(0x80+0x40+15); write_date(' '); } } } }
void clock()//任意闹钟时间到闹钟响 {
if(((fen!=fen1)&&(fen!=fen2)&&(fen!=fen3)&&(fen!=fen4))&&(flag4==0)&&(flag5==0))//显示时间
{xianshi();}
if((fen==fen1)&&(shi==shi1)&&(flag2==1))
{
write_com(0x80+0x40); for(i=0;i<9;i++)
write_date(Alarm_00[i]);
write_sfm(12,fen1);//送去液晶显示定时的分,时
write_sfm(9,shi1);
beep=0;//此时 闹钟响起,连续三次发出哗的一声
flag5=0;
flag3=0;//置flag3=0,表示此时闹钟响起,按下K4键执行停止闹钟响闹语句
delay(100);//这些语句是为了使闹钟响起时,发出连续三次哗的声音
beep=1; delay(100); beep=0; delay(100); beep=1; delay(100); beep=0; delay(100); beep=1; delay(300); }
if((((fen==fen1)&&(shi==shi1)&&(flag2==0))||((fen-1==fen1)&&(shi==shi1)))&&(flag4==0))
{xianshi();}
if((fen==fen2)&&(shi==shi2)&&(flag2==1))
{write_com(0x80+0x40); for(i=0;i<9;i++)
write_date(Alarm_11[i]);
write_sfm(12,fen2);//送去液晶显示定时的分,时
write_sfm(9,shi2);
LED3=1; }
if((((fen==fen2)&&(shi==shi2)&&(flag2==0))||((fen-1==fen2)&&(shi==shi2)))&&(flag4==0))
{xianshi(); }
if((fen==fen3)&&(shi==shi3)&&(flag2==1))
{write_com(0x80+0x40); for(i=0;i<9;i++)
write_date(Alarm_22[i]);
write_sfm(12,fen3);//送去液晶显示定时的分,时
write_sfm(9,shi3);
beep=0;//此时 闹钟响起,连续三次发出哗的一声
flag5=0;
flag3=0;//置flag3=0,表示此时闹钟响起,按下K4键执行停止闹钟响闹语句
delay(200);//这些语句是为了使闹钟响起时,发出连续三次哗的声音
beep=1; delay(200); beep=0; delay(200); beep=1; delay(200); beep=0; delay(200); beep=1; delay(600); }
if((((fen==fen3)&&(shi==shi3)&&(flag2==0))||((fen-1==fen3)&&(shi==shi3)))&&(flag4==0))
{xianshi();}
if((fen==fen4)&&(shi==shi4)&&(flag2==1))
{
LED2=0;
write_com(0x80+0x40); for(i=0;i<15;i++) write_date(deng[i]); }
if((((fen==fen4)&&(shi==shi4)&&(flag2==0))||((fen-1==fen4)&&(shi==shi4)))&&(flag4==0))
{xianshi();}} void main()//主函数 {init();//初始化子程序 while(1)
{if(K5==0&&flag3==0)//当闹钟响起时,按下K4停止响闹,当闹钟响起时候flag3置为0
{delay(5); if(K5==0) {flag2=0; flag3=1; }
delay(300); }
if(K5==0&&LED3==1)//当闹钟响起时,按下K4停止响闹,当闹钟响起时候flag3置为0
{delay(5); if(K5==0) {flag2=0; LED3=0; }
delay(300); } if(K5==0&&flag2==1)//当闹钟响起时,按下K4停止响闹,当闹钟响起时候flag3置为0
{delay(5); if(K5==0) {flag2=0; LED2=1; }
delay(300); }
if((K5==0)&&(flag3==1)) {delay(200); K5num++; delay(100); if(K5num==5) K5num=0; }
if(K5num==0) { time(); flag4=0; }
if(K5num==1) {guangbo(); flag4=1;} if(K5num==2) {shangke(); flag4=1; }
if(K5num==3)
相关推荐: