您当前的位置:五五电子网电子知识电子制作自动控制-单片机[课程设计]可设置8个闹钟时间的智能时钟(C) 正文
[课程设计]可设置8个闹钟时间的智能时钟(C)

[课程设计]可设置8个闹钟时间的智能时钟(C)

点击数:7346 次   录入时间:03-04 11:54:21   整理:http://www.55dianzi.com   自动控制-单片机
   { count_down=8000
     sec++
     if(sec==60)
      { sec=0
        min++
        if(min==60)
          { min=0
            hour++
            if(hour==24)
              { hour=0
                            switch(day)
                            { case 29: if(month==2 && year%4)    { day=1
                                       break
                              case 30: if(month==2 && year%4==0) { day=1
                                       break
                              case 31: if(month==4 || month==6 || month==9 || month==11)
                                       { day=1
                                          break
                              case 32: day=1
                                     if(month==13) { month=1
                             }
               }
           }
       }
     }
}
void Timer1ISR(void) interrupt 3 using 2            //定时器2中断,用于按键扫描
{unsigned char keytmp
 char tmp
  TH1=0x15
  if(show_status==0)   //当前正在设置闹钟项
    { display[0]=cur_alarm_set
     display[2]=alarm[cur_alarm_set].h/10
        display[4]=alarm[cur_alarm_set].m/10
     display[6]=(alarm_wk>>cur_alarm_set)&1
     }
  if(show_status==1 || show_status==3)         //当前显示或设置日期
    { display[0]=year/10
         display[3]=month%10
         display[6]=0xf
     }
  if(show_status==2 || show_status==4)         //当前显示或设置时间
    { display[0]=hour/10
        display[3]=min%10
         display[6]=0xf
        }
  keytmp=~(P1) & 0x0f
  if(keytmp==0)  { km=0
  else
   { if(km==0)   km=1
        else
     { if(kp==0)
        { kp=1
                if(keytmp==1)                  //第一个按钮
                 { if(sound) { alarm_stop=1
                   else if((show_status==1 || show_status==2) && led_on)  //正显示日期或时间
                   { show_status=0
                      else if(show_status==0)                //如正在设置闹钟时间项
                      { show_status=2
                      return
                     }
                if(keytmp==2 && led_on)    //第二个按钮,仅当数码管打开时有效
                 { switch(attr)
                   { case 0xff: if(show_status==1) show_status=2
                                else if(show_status==2) show_status=1
                                      break
                        case 0x3f: if(show_status==0) cur_alarm_set=(cur_alarm_set+1)%8
                      else if(show_status==3)
                             year=(year+1)%50
                     else if(show_status==4)
                         hour=(hour+1)%24

上一页  [1] [2] [3] [4] [5]  下一页


本文关键字:智能  课程  自动控制-单片机电子制作 - 自动控制-单片机