⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clock.c

📁 定时闹钟小程序 实现了自动提醒功能 可自由设置时间
💻 C
📖 第 1 页 / 共 2 页
字号:
	stop_i2c();
	return date;
}

//====================================================================
/******************************led***********************************/
//* 功能:延时函数
//*********************************************************************
void Delay(char x)
{
    char i;
    while(x--)
    for(i=0;i<5;i++);
}
/***********************led初始化函数**************************/
void init_led()
{
	wela=0;
	dula=0; //一般位选和段选开始时要清零
}
 /***********************显示函数*******************************/
void display(uchar wei_1,uchar wei_2,uchar wei_3,uchar wei_4,uchar wei_5,uchar wei_6)
{
                dula=1;
		P0=table[wei_1];
		dula=0;
		wela=1;
		P0=0xdf;
		wela=0;
		Delay(40);//延时1m秒

		P0=0xdf;
		dula=1;
		P0=table[wei_2];
		dula=0;
		wela=1;
		P0=0xef;
		wela=0;
		Delay(40);

		dula=1;
		P0=table[wei_3];
		dula=0;
		wela=1;
		P0=0xf7;
		wela=0;
		Delay(40);

		dula=1;
		P0=table[wei_4];
		dula=0;
		wela=1;
	        P0=0xfb;
		wela=0;
		Delay(40);

		dula=1;
		P0=table[wei_5];
		dula=0;
		wela=1;
		P0=0xfd;
		wela=0;
		Delay(40);

		dula=1;
		P0=table[wei_6];
		dula=0;
		wela=1;
	        P0=0xfe;
		wela=0;
		Delay(40);

}
/**************************时间显示函数*********************************/
void dis_time()
{
     donetime();
     //Delay(40);
     wei_1=time[5]-0x30;
     wei_2=time[4]-0x30;
     wei_3=time[3]-0x30;
     wei_4=time[2]-0x30;
     wei_5=time[1]-0x30;
     wei_6=time[0]-0x30;
     P_0=(time[0]<<7);
     //display(wei_1,wei_2,wei_3,wei_4,wei_5,wei_6);

}
//====================================================================
/****************************独立键盘程序*****************************/
void key_scan()
{
    if(k1==0)
       {
         Delay(100);
         if(k1==0)
            {
              key1=1;
            }

         while(!k1);
          Delay(200);
           while(!k1);
       }

    if(k2==0)
       {
         Delay(100);
         if(k2==0)
           {
             key2=1;
            }

         while(!k2);
         Delay(200);
         while(!k2);
       }

     if(k3==0)
       {
         Delay(100);
         if(k3==0)
           {
             key3=1;
            }

         while(!k3);
         Delay(200);
         while(!k3);
       }
}
//******************************按键处理*******************************
void key_chuli()
{
   key_scan();
   if(key1==1){k1_d++;if(k1_d>7)k1_d=0;key1=0;}
   if(key2==1){add=1;key2=0;}
   if(key3==1){rec=1;key3=0;
      if(k1_d==0)
         {if(ling_ff==0)ling_ff=1;else ling_ff=0;}}

   if(k1_d==0) //k1_d=0时 正常显示时间
       {dis_time();}
   if(k1_d<=3&&k1_d>0) //******************0<k1_d<=3时间校正
       {
          SetTime();
         if(k1_d==1)
            {
               if(add==1)
               {
                   sec++;
                   if(sec>59|sec<0)sec=0;
                   add=0;
               }
               if(rec==1)
               {
                   sec--;
                   if(sec<0|sec>59)sec=59;
                   rec=0;
               }
            }
         if(k1_d==2)
             {
               if(add==1)
               {
                   min++;
                   if(min>59|min<0)min=0;
                   add=0;
               }
               if(rec==1)
               {
                   min--;
                   if(min<0|min>59)min=59;
                   rec=0;
               }
            }
         if(k1_d==3)
             {
               if(add==1)
               {
                   hou++;
                   if(hou>23|hou<0)hou=0;
                   add=0;
               }
               if(rec==1)
               {
                   hou--;
                   if(hou<0|hou>23)hou=23;
                   rec=0;
               }
            }
        wei_1=hou/10;  //
        wei_2=hou%10;  //
        wei_3=min/10;  //
        wei_4=min%10;  //
        wei_5=sec/10;  //
        wei_6=sec%10;  //
       // display(wei_1,wei_2,wei_3,wei_4,wei_5,wei_6);
      }
    if(k1_d>3)  //闹铃设置
          {
            if(k1_d==4)
                {
                   if(add==1)
                     {
                       if(ling_ff==1)ling_ff=0;
                            else ling_ff=1;
                       add=0;
                     }
                   if(rec==1)
                     {
                       if(ling_ff==1)ling_ff=0;
                           else ling_ff=1;
                       rec=0;
                     }
                }
            if(k1_d==5)
                {
                   if(add==1)
                     {
                       min_d++;
                       if(min_d>59|min_d<0)min_d=0;
                       add=0;
                     }
                   if(rec==1)
                     {
                       min_d--;
                       if(min_d<0|min_d>59)min_d=59;
                       rec=0;
                     }
                }
             if(k1_d==6)
                {
                  if(add==1)
                    {
                       hou_d++;
                       if(hou_d>23|hou_d<0)hou_d=0;
                       add=0;
                    }
                  if(rec==1)
                    {
                      hou_d--;
                      if(hou_d<0|hou_d>23)hou_d=23;
                      rec=0;
                    }
                 }
            if(k1_d==7)
                {
                     P1=0X00;
                     write_add_i2c(10,min_d);
                     Delay(100);
                     write_add_i2c(20,hou_d);
                     Delay(100);
                     write_add_i2c(30,ling_ff);
                     Delay(100);
                     k1_d=0;
                }
            wei_1=hou_d/10;  //
            wei_2=hou_d%10;  //
            wei_3=min_d/10;  //
            wei_4=min_d%10;  //
            if(ling_ff==0)
               {
                  wei_5=10;
                  wei_6=10;
                }
             else
               {
                  wei_5=15;
                  wei_6=15;
               }
         }
         if(k1_d==1) P_1=0;else P_1=1;
         if(k1_d==2) P_2=0;else P_2=1;
         if(k1_d==3) P_3=0;else P_3=1;
         if(k1_d==4) P_4=0;else P_4=1;
         if(k1_d==5) P_5=0;else P_5=1;
         if(k1_d==6) P_6=0;else P_6=1;
  }
//================================================================
 /***************************定时显示****************************/
 void init_t()  //定时器初始化
   {

	TMOD=0x01;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	EA=1;
	ET0=1;
	TR0=1;
   }

void timer0() interrupt 1  //中断函数
  {
        uchar bb;
	TH0=(65536-22000)/256;
	TL0=(65536-22000)%256;
       display(wei_1,wei_2,wei_3,wei_4,wei_5,wei_6);
       if(ling_f==1&&ling_ff==0)
          {
            bb++;
            if(bb>=5)
              {
               if(FMQ==1)FMQ=0;
                    else FMQ=1;
                    bb=0;
              }
          }
          else FMQ=1;
  }
//==================================================================
/************************主函数*************************************/
void main()
{
    init_i2c();
    P1=0X00;
    min_d=read_add_i2c(10);
    Delay(100);
    hou_d=read_add_i2c(20);
    Delay(100);
    ling_ff=read_add_i2c(30);
    Delay(100);
    star=uc_R1302(0x81); //读秒
    //Init1302(); //每次每次上电不能都初始化
    init_t();
    v_W1302(0x90,0xa5); //使能涓流充电
    v_W1302(0x80,star); //秒

    while(1)
        {
            key_chuli();
            if(min==min_d&&hou==hou_d)
               ling_f=1;
               else ling_f=0;
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -