標(biāo)題: 單片機(jī)時鐘的簡易鬧鐘程序分析 [打印本頁]

作者: kz0018    時間: 2022-10-29 21:58
標(biāo)題: 單片機(jī)時鐘的簡易鬧鐘程序分析
大家在制作單片機(jī)時鐘或萬年歷時,都習(xí)慣用蜂鳴器來做訊響器件。大都用來指示設(shè)置步奏。當(dāng)然,同時用來制作一個簡易鬧鐘也是很容易的。前段時間在網(wǎng)上留意了幾個鬧鐘程序,撿最簡易的兩個做了一下分析,現(xiàn)分享給大家
單片機(jī)時鐘的簡易鬧鐘程序:
程序1:
void BJ_alarm()//定義一個鬧鐘函數(shù)
{
  if(alarm_sdgb==0&&alarm_kg==1&&set==0)//如果在時鐘運行中
  {                   //手動關(guān)閉標(biāo)志為0且鬧鐘開關(guān)為開啟狀態(tài)
     if(hour==nz_shi&&min==nz_fen)//如果時分到達(dá)預(yù)設(shè)時刻
     bj=1;                      //報警標(biāo)志為真(1)
     else                       //否則
     {
        fmq=1;//蜂鳴器不響
        bj=0;//報警標(biāo)志為假(0)
     }
  }
}
void time() interrupt //定時器中斷函數(shù)
{
   TH0=0x3c;//高位
   TL0=0xb0;//低位 定時50毫秒溢出  12MHz
   ee++;    //溢出次數(shù)增加
   if(ee==10)//如果達(dá)到10次  500毫秒
   {
      ee=0;  //次數(shù)清0
      if(bj==1)//如果報警標(biāo)志為真
      fmq=!fmq;//蜂鳴器狀態(tài)翻轉(zhuǎn)
   }
}
程序2:
void BJ_alarm()
{
   read_eeprom();//讀取鬧鐘數(shù)據(jù)
   if((hour==nz_shi)&&(min==nz_fen)&&(set==0)) //如果在運行期間     {                                     //時分達(dá)到設(shè)置鬧鐘時刻
      bj=1;//報警標(biāo)志為真(1)
      if(alarm_kg==1&&bj==1) //如果鬧鈴開關(guān)打開且報警時間標(biāo)志為真        {
          if(sec%2) //秒能整除2(即秒數(shù)為偶數(shù))
          fmq=0;//蜂鳴器響
          else  //否則
          fmq=1;//蜂鳴器停響
       }
    }

    {
        fmq=1;
        bj=0;
    }  
}

對以上兩種鬧鐘簡易程序的分析:
  1.兩種程序代碼很少,極易生成相應(yīng)效果。
  2.程序1蜂鳴器訊響頻率依據(jù)單片機(jī)定時器而定,鳴響和停響時間相等。
    程序2蜂鳴器訊響頻率依據(jù)時鐘走時秒數(shù)而定,鳴響和停響時間可以不等.
  3.程序1鬧鐘設(shè)置的數(shù)據(jù)在斷電后會丟失,而程序2則不會,只需一次設(shè)定.
  4.另外在按鍵使用上,靈活性上兩者也有諸多不同。本人傾向用第二種.






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1