標(biāo)題: 實(shí)時(shí)間鐘帶一路報(bào)警輸出 [打印本頁(yè)]

作者: newchp    時(shí)間: 2009-12-13 22:47
標(biāo)題: 實(shí)時(shí)間鐘帶一路報(bào)警輸出
//有一路報(bào)警輸出,可設(shè)置報(bào)警時(shí)間
//實(shí)間時(shí)間請(qǐng)調(diào)整TH1,TL1值使更準(zhǔn)確
//designed by ljc,gdwm ceramic com,.ltd
#include<at89x51.h>
#define uchar unsigned char
#define uint unsigned int
#define segment P0  //數(shù)碼管顯示
#define wei P2   //數(shù)碼管位控制
uchar hour,min,sec;  //定義小時(shí),分
uchar ms;               //當(dāng)前毫秒
uchar alarm_h1,alarm_m1;//報(bào)警設(shè)置,hour,minute;
uchar alarm_h2,alarm_m2;
sbit flash=P1^0;        //秒閃爍標(biāo)志
sbit seth=P3^0;      //小時(shí)設(shè)置
sbit setm=P3^1;   //分設(shè)置
sbit seta1h=P3^2;  //alarm1 set
sbit seta1m=P3^3;  //alarm1 set
sbit alarm_out=P1^7;    //設(shè)定時(shí)間到,報(bào)警輸出
bit hour_min_sign;      //時(shí),分設(shè)置標(biāo)志
bit pop_key;            //鍵彈起標(biāo)志
uchar code design[10]={0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60};//0,1,2,3,4,5,6,7,8,9
//*************************************************
//**********
void delay(uint i)
{   uint j;
    for(;i>0;i--)
 for(j=0;j<120;j++)
 {;}
}
//*************************************************
//**********
void initial()
{   TMOD=0x01;
    TH0=0X3C; //50ms定時(shí)
 TL0=0xc0;
    EA=1;
    ET0=1;
 TR0=1;
 //報(bào)警時(shí)間初使化
 alarm_h1=7;
 alarm_m1=0;
 alarm_h2=14;
 alarm_m2=0;
}
//*************************************************
//**********
void time0_int() interrupt 1
{   TH0=0x3c;
    TL0=0xc0;
    if(ms<20)
    {   ms++;}
 else
 {   ms=0;
     sec++;
     if(sec>59)
     {   sec=0;
      min++;
   if(min>59)
   {   min=0;
          hour++;
          if(hour>=24)
       {   hour=0;}
   }
  }
 }
 if(ms>10){flash=1;}
 else{flash=0;}
}
//************************************************
//*********
void display(uchar h,m,ah1,am1)
{   uchar hh,hl,mh,ml,hh1,hh2,mm1,mm2;
    hh=h/10;
 hl=h%10;
 mh=m/10;
 ml=m%10;
 hh1=ah1/10;hh2=ah1%10;mm1=am1/10;mm2=am1%10; //報(bào)警時(shí)間顯示
 //
 segment=design[hh];
 wei=0xef;
 delay(2);
 //
 segment=design[hl];
 wei=0xdf;
 delay(2);
 //
 segment=design[mh];
 wei=0xbf;
 delay(2);
 //
 segment=design[ml];
 wei=0x7f;
 delay(2);
 //報(bào)警顯示
 segment=design[hh1];
 wei=0xfe;
 delay(5);
 segment=design[hh2];
 wei=0xfd;
 delay(2);
 segment=design[mm1];
 wei=0xfb;
 delay(2);
 segment=design[mm2];
 wei=0xf7;
 delay(2);
}
//************************************************
//鍵防拌處理**********
void scan_key(bit set_h_m)
{   if(!set_h_m)
    {   delay(30);
     if(!set_h_m)
  {   delay(10);
      hour_min_sign=1;
  }
  else{hour_min_sign=0;}
 }
 while(set_h_m&hour_min_sign)//等街鍵彈起
 {   delay(30);
     if(set_h_m&hour_min_sign)
  {   delay(10);
         pop_key=1; 
  }   //鍵彈起標(biāo)志
  hour_min_sign=0;
 }                          
}
//時(shí)間設(shè)置****************************************
//**********
void time_set()
{   pop_key=0;
    scan_key(seth);
    if(pop_key)      //小時(shí)鍵按下,小時(shí)加1
 {
     if(hour>23)
  {   hour=0;}
  else{hour++;}
  display(hour,min,alarm_h1,alarm_m1);
 }
 pop_key=0;
 //
 scan_key(setm);    //分鍵按下,分加1
 if(pop_key)      
 {
     if(min>59)
  {   min=0;}
  else{min++;}
  display(hour,min,alarm_h1,alarm_m1);
 }
 pop_key=0;
}
//***********************************************
//報(bào)警時(shí)間設(shè)置:小時(shí),分鐘*
//有報(bào)警時(shí)間設(shè)置功能,延時(shí)關(guān)閉功能
void alarm()                 

 //報(bào)警1
 pop_key=0;
 scan_key(seta1h);              //報(bào)警1設(shè)置
 if(pop_key)
 {   alarm_h1++;
     if(alarm_h1>23)
  {   alarm_h1=0;}
 }
 pop_key=0;
 display(hour,min,alarm_h1,alarm_m1);
 scan_key(seta1m);
 if(pop_key)
 {   alarm_m1++;
     if(alarm_m1>59)
  {   alarm_m1=0;}
 }
 display(hour,min,alarm_h1,alarm_m1);  
 if((hour==alarm_h1)&(min==alarm_m1))//相等
    {   alarm_out=0;}     //報(bào)警輸出

//***********************************************
//*************************  
void main()
{   initial();
    for(;;)
 {   time_set();   //時(shí)間設(shè)置
  display(hour,min,alarm_h1,alarm_m1);
  alarm();
 }
}

作者: jackhwang    時(shí)間: 2009-12-21 14:43
大哥是不是在主函數(shù)里面少了個(gè)while(1)語(yǔ)句!
作者: jackhwang    時(shí)間: 2009-12-21 14:51
對(duì)不起,是我搞錯(cuò)了。哈哈!
作者: xi_chang    時(shí)間: 2014-5-4 11:02
謝謝分享
作者: yangbiliang    時(shí)間: 2014-5-25 19:29
怎么就一函數(shù)。。。。。實(shí)物圖呢?




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