您当前的位置:五五电子网电子知识单片机-工控设备综合-其它基于单片机AT89C2051的电子钟设计 正文
基于单片机AT89C2051的电子钟设计

基于单片机AT89C2051的电子钟设计

点击数:7490 次   录入时间:03-04 11:39:48   整理:http://www.55dianzi.com   综合-其它

      void conv();                                      /*走时单元转换*/

      void p_out();                                      /*判别闹时到否子函数*/

      void dirve();                                      /*走时时间输出驱动子函数*/

      void t_dirve();                                    /*闹时时间输出驱动子函数*/

      /*闹时启/停子函数*/

      void time1_of()

      {uchar m;

      if(P3_7==0)delay(1);

      if(P3_7==0)o_f=1;

      for(m=0;m<30;m++)

      {

      t_dirve();

      P1=DATA_7SEG[t_min/10];P3=0xfd;delay(1);

      if(P3_1==0){if(o_f==1)P1_7=0;}else P1_7=1;

      delay(1);

      }

      if(P3_5==0)delay(1);

      if(P3_5==0)    o_f=0;

      for(m=0;m<30;m++)

      {

      t_dirve();

      P1=DATA_7SEG[t_min/10];P3=0xfd;delay(1);

      if(P3_1==0){if(o_f==1)P1_7=0;else P1_7=1;}

      delay(1);

      }

      }

      /*走时函数*/

      void time()

      {

      conv();                                              /*走时单元转换*/

      dirve();                                              /*走时时间输出驱动子函数*/

      p_out();                                            /*判别闹时到否子函数*/



www.55dianzi.com

      }

      /*定时器T0  5mS初始化*/

      void init_timer()

      {

      TMOD=0x01;

      TH0=-(4800/256);

      TL0=-(4800%256);

      IE=0x82;

      TR0=1;

      }

      /*扫描按键子函数*/

      void sCAN_key()

      {

      delay(1);

      if(P3_4==0)set++;

      if(set>=4)set=0;

      if(set==1)flag=0x55;

      F0:if(P3_4==0)goto F0;                      /*按键未释放,在此等候*/

      }

      /*延时子函数*/

      void delay(uint k)

      {

      uint i,j;

      for(i=0;i

      for(j=0;j<121;j++)

      {;}}

      }

      /*5mS定时中断服务子函数*/

      void zd(void) interrupt 1

      {

      TH0=-(4800/256);

      TL0=-(4800%256);

      dEDA++;

      }

      /*调整走时时间*/

      void time_adj()

      {uchar m;

      if(P3_5==0)delay(1);

      if(P3_5==0)hour++;

      if(hour==24)hour=0;

      for(m=0;m<30;m++)

      {

      dirve();

      if(P3_2==0)P1_7=0;

      else P1_7=1;

      delay(1);

      }

      if(P3_7==0)delay(1);

      if(P3_7==0)min++;

      if(min==60)min=0;

      for(m=0;m<30;m++)

      dirve();

      if(P3_2==0)P1_7=0;

      else P1_7=1;

      delay(1);

      }

      }

      /*调整闹时时间*/

      void time1_adj()

      {uchar m;

      if(P3_5==0)delay(1);

      if(P3_5==0)t_hour++;

      if(t_hour==24)t_hour=0;

      for(m=0;m<30;m++)

      {

      t_dirve();

      }

      if(P3_7==0)delay(1);

      if(P3_7==0)t_min++;

      if(t_min==60)t_min=0;

      for(m=0;m<30;m++)

      {

      t_dirve();

      }

      }

      /*时、分、秒单元及走时单元转换*/

      void conv()

      {

      if(deda<=100)d_05s=0;

      else d_05s=1;

      if(deda>=200){sec++;deda=0;}

      if(sec==60){min++;sec=0;}

      if(min==60){hour++;min=0;}

      if(hour==24){hour=0;}

      }

      /*走时时间输出驱动子函数*/

      void dirve()

      {

      P1=DATA_7SEG[hour/10];P3=0xf7;delay(1);

      P1=DATA_7SEG[hour%10];P3=0xfb;delay(1);

      if(d_05s==1){if(P3_2==0)P1_7=0;else P1_7=1;}

      delay(1);

      P1=DATA_7SEG[min/10];P3=0xfd;delay(1);

      if(o_f==1){if(P3_1==0)P1_7=0;else P1_7=1;delay(1);}

      P1=DATA_7SEG[min%10];P3=0xfe;delay(1);

      }

      /*闹时时间输出驱动子函数*/

      void t_dirve()

      {

      P1=DATA_7SEG[t_hour/10];P3=0xf7;delay(1);

      if(P3_3==0)P1_7=0;else P1_7=1;

      delay(1);

      P1=DATA_7SEG[t_hour%10];P3=0xfb;delay(1);

      P1=DATA_7SEG[t_min/10];P3=0xfd;delay(1);

      P1=DATA_7SEG[t_min%10];P3=0xfe;delay(1);

      }

      /*判别闹时到否子函数*/

      void p_out()

      {

      if(o_f==1){

      if(t_hour==hour){if(t_min==min)

      if(P3_0==0){P1_7=0;delay(1);}

      else P1_7=1;

      }

      }

      }

      /*主函数*/

      void main()

      {

      init_timer();                      /*定时器T0初始化*/

      while(1)                                    /*无限循环*/

      {

      if(P3_4==0)scan_key();              /*有按键,调用

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


本文关键字:单片机  电子钟  综合-其它单片机-工控设备 - 综合-其它