本人最近做的一款多功能数字钟,用的是STC89C52单片机。该数字钟具有基本的时钟功能。并能通过继电器输出18组打铃程序,该功能是模拟的教学楼打铃。还可以通过按键设定一组闹钟时间,闹钟时间到响铃。该数字钟没有用到时钟芯片。遗憾的是红外接触止闹功能还未完成,作品就得上交了,更令人郁闷的是作品交了之后就不见了,鄙视那些保管作品的人,浪费了我多少心血啊!
由于成序太大下面只贴部分程序:
void ring() //打铃子程序
{
flag1=0; //是,则标志位,flag1清零
while(!(flag1==200)) //判断flag1是否到100
{
fmq=0; //没有,则,继续驱动蜂鸣器响,时间约为:10s=50ms*200
shijian(); //调用时间子函数
display(); //调用显示子函数
}
fmq=1;//关闭蜂鸣器
}
void clock() //闹铃子函数
{
if(miao2==miao) //显判断秒的数值是否相等
if(fen2==fen) //是,在判断分是否相等
if(shi2==shi) //是,再判断时是否相等
ring();
}
void clock2() //打铃的程序
{
if((miao==0x00)&&(fen==0x32)&&(shi==0x07)) ring();
else if((miao==0x00)&&(fen==0x00)&&(shi==0x08)) ring();
else if((miao==0x00)&&(fen==0x32)&&(shi==0x08)) ring();
else if((miao==0x00)&&(fen==0x00)&&(shi==0x09)) ring();
else if((miao==0x00)&&(fen==0x32)&&(shi==0x09)) ring();
else if((miao==0x00)&&(fen==0x0a)&&(shi==0x0a)) ring();
else if((miao==0x00)&&(fen==0x00)&&(shi==0x0b)) ring();
else if((miao==0x00)&&(fen==0x0a)&&(shi==0x0b)) ring();
else if((miao==0x00)&&(fen==0x00)&&(shi==0x0c)) ring();
else if((miao==0x00)&&(fen==0x14)&&(shi==0x0d)) ring();
else if((miao==0x00)&&(fen==0x1e)&&(shi==0x0d)) ring();
else if((miao==0x00)&&(fen==0x14)&&(shi==0x0e)) ring();
else if((miao==0x00)&&(fen==0x1e)&&(shi==0x0e)) ring();
else if((miao==0x00)&&(fen==0x14)&&(shi==0x0f)) ring();
else if((miao==0x00)&&(fen==0x1e)&&(shi==0x0f)) ring();
else if((miao==0x00)&&(fen==0x14)&&(shi==0x10)) ring();
else if((miao==0x00)&&(fen==0x1e)&&(shi==0x10)) ring();
else if((miao==0x00)&&(fen==0x14)&&(shi==0x11)) ring();
}
更详细的内容见附件,里面有源程序和原理图。