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

📄 rili.c

📁 DS1302的1602时钟电路设计LED数码管时钟电路采用24h计时方式
💻 C
📖 第 1 页 / 共 2 页
字号:
 Gotoxy(1,3);Display_string("Make by:YangDeChu And PangJiHui");
 Gotoxy(2,3);Display_string("        0600320229   0600320222");
 MDelay(60000);
 for(i=20;i>0;i--)
 {WriteC(0x18);
  MDelay(65000);
  }
 for(i=20;i>0;i--)
 {
  WriteC(0x1c);
  MDelay(65000);
  }
  MDelay(65000);
  MDelay(65000);
 Clock();  //....获取闹钟时间
   //Music();
   //BaoShi(10);
  //while(1);
 while(1)
 { Key();
  //.............选择修改模式
   switch(m)                                                                      
       {case 0:{f[0]=0;f[1]=0;f[2]=0;f[3]=0;f[4]=0;EX0=0;EX1=0;z=0;WriteC(0x0c);PrintDate();Gotoxy(1,0);Display_string("Date:");Print(GetDate); PrintTime();Delay(100);Gotoxy(2,14);Display_string("  ");break;}
        case 1:{if(f[0]==0){EX0=1;EX1=1;SetT=0;f[0]=1;Gotoxy(1,0);Display_string("Change The Time!");Gotoxy(2,14);Display_string("  "); WriteC(0x0e);WriteC(0xc7);}
				 else if(SetT>2){SetT=0;WriteC(0xc7);} break;
			   }

		case 2:{if(f[1]==0){EX0=1;EX1=1;SetT=0;f[1]=1;Gotoxy(1,0);Display_string("Change the clock!");Clock();Gotoxy(2,6);Print(Setclock);Gotoxy(2,14);Display_string("  "); WriteC(0x0e);WriteC(0xc7);}
				 else if(SetT>2){SetT=0;WriteC(0xc7);} break;
			   }
					             	 
	    case 3:{if(f[2]==0){EX0=1;EX1=1;SetD=0;f[2]=1;Gotoxy(2,0);Display_string("Date:");Print(GetDate);Delay(100);Gotoxy(1,0);Display_string("Change The Date!   "); WriteC(0x0e);WriteC(0xc6);}
			      else if(SetD>3){SetD=0;WriteC(0xc6);} break;
			   }
  	
               //..........娱乐模式
		/*case 4:{if(f[3]==0){EX0=1;EX1=1;SetT=0;f[3]=1;ClearLCD();Gotoxy(1,0);Display_string("  play for fun  ");;Gotoxy(2,0);MDelay(10000);Display_string(" Game1  Game2 ");WriteC(0x0e);WriteC(0xc3);}
                  else if(SetT>1){SetT=0;WriteC(0xc3);} break;
		       }*/
			   //............自动修改模式,若不用自动模式则把if(Auto==0)改为if(Auto==1)
		/*case 5:{if(Auto==1){EX0=1;EX1=1;SetT=0;ClearLCD();Gotoxy(1,3);Display_string("Welcome to Auto-Mode");Gotoxy(2,4);Display_string("Prss key one to enter,key three exit");for(i=25;i>0;i--){WriteC(0x1c);MDelay(60000);}}
	             else {Auto=0;m=0;}	//........第二次时执行次句回到正常模式0.	   
		           } break;*/

		default:m=0;
        }                              //...............注意:因为GetTime[i]、GetDate[i]都是字符且大于等于字符'0'的值48
  		                               //.....................所以修改时先变为零.若想不为零减去字符'0'即可 
  
  if(z)switch (m)                     //........if(Auto==0)z=0;用于判断是否为自动修改模式,若为则z一直等于1直到修改键再次按下
            {case 1:{switch (SetT)   //................时间修改
                         {case 0:{GetTime[1]=GetTime[1]-'0';GetTime[0]=GetTime[0]-'0';GetTime[1]++;if(GetTime[1]>9){GetTime[1]=0;GetTime[0]++;}if((GetTime[0]>=2&&GetTime[1]>3)|GetTime[0]>2){GetTime[0]=0;GetTime[1]=0;}
						          WriteC(0xc6);WriteD(GetTime[0]+'0');WriteC(0xc7);WriteD(GetTime[1]+'0');SetTime_Date[2]=(GetTime[0]*16)+GetTime[1];v_W1302(0x8e,0x00);v_W1302(0x84,SetTime_Date[2]);v_W1302(0x8e,0x80);GetTime[1]=GetTime[1]+'0';GetTime[0]=GetTime[0]+'0';z=0;WriteC(0x10);break;}
						  
                          case 1:{GetTime[4]=GetTime[4]-'0';GetTime[3]=GetTime[3]-'0';GetTime[4]++;if(GetTime[4]>9){GetTime[4]=0;GetTime[3]++;}if((GetTime[3]>=5&&GetTime[4]>9)|GetTime[3]>5){GetTime[3]=0;GetTime[4]=0;}
						          WriteC(0xc9);WriteD(GetTime[3]+'0');WriteC(0xca);WriteD(GetTime[4]+'0');SetTime_Date[1]=(16*GetTime[3])+GetTime[4];v_W1302(0x8e,0x00);v_W1302(0x82,SetTime_Date[1]);v_W1302(0x8e,0x80);GetTime[4]=GetTime[4]+'0';GetTime[3]=GetTime[3]+'0';z=0;WriteC(0x10);break;}
                         
                          case 2:{GetTime[7]=GetTime[7]-'0';GetTime[6]=GetTime[6]-'0';GetTime[7]++;if(GetTime[7]>9){GetTime[7]=0;GetTime[6]++;}if((GetTime[6]>=5&&GetTime[7]>9)|GetTime[6]>5){GetTime[6]=0;GetTime[7]=0;}
						          WriteC(0xcc);WriteD(GetTime[6]+'0');WriteC(0xcd);WriteD(GetTime[7]+'0');SetTime_Date[0]=(16*GetTime[6])+GetTime[7];v_W1302(0x8e,0x00);v_W1302(0x80,SetTime_Date[0]);v_W1302(0x8e,0x80);GetTime[7]=GetTime[7]+'0';GetTime[6]=GetTime[6]+'0';z=0;WriteC(0x10);break;} 
                          default:{z=0;SetT=0;}
                         }
		              }break;
              case 2:{switch (SetT)  //..............闹钟设置,减'0'变为数值后在写进去后再加'0'变回字符
                         {case 0:{Setclock[1]=Setclock[1]-'0';Setclock[0]=Setclock[0]-'0';Setclock[1]++;if(Setclock[1]>9){Setclock[1]=0;Setclock[0]++;}if((Setclock[0]>=2&&Setclock[1]>3)|Setclock[0]>2){Setclock[0]=0;Setclock[1]=0;}
						          WriteC(0xc6);WriteD(Setclock[0]+'0');WriteC(0xc7);WriteD(Setclock[1]+'0');Getclock[0]=(Setclock[0]*16)+Setclock[1];v_W1302(0x8e,0x00);v_W1302(0xc0,Getclock[0]);v_W1302(0x8e,0x80);Setclock[1]=Setclock[1]+'0';Setclock[0]=Setclock[0]+'0';z=0;WriteC(0x10);break;}
						  
                          case 1:{Setclock[4]=Setclock[4]-'0';Setclock[3]=Setclock[3]-'0';Setclock[4]++;if(Setclock[4]>9){Setclock[4]=0;Setclock[3]++;}if((Setclock[3]>=5&&Setclock[4]>9)|Setclock[3]>5){Setclock[3]=0;Setclock[4]=0;}
						          WriteC(0xc9);WriteD(Setclock[3]+'0');WriteC(0xca);WriteD(Setclock[4]+'0');Getclock[1]=(16*Setclock[3])+Setclock[4];v_W1302(0x8e,0x00);v_W1302(0xc2,Getclock[1]);v_W1302(0x8e,0x80);Setclock[4]=Setclock[4]+'0';Setclock[3]=Setclock[3]+'0';z=0;WriteC(0x10);break;}
                         
                          case 2:{Setclock[7]=Setclock[7]-'0';Setclock[6]=Setclock[6]-'0';Setclock[7]++;if(Setclock[7]>9){Setclock[7]=0;Setclock[6]++;}if((Setclock[6]>=5&&Setclock[7]>9)|Setclock[6]>5){Setclock[6]=0;Setclock[7]=0;}
						          WriteC(0xcc);WriteD(Setclock[6]+'0');WriteC(0xcd);WriteD(Setclock[7]+'0');Getclock[2]=(16*Setclock[6])+Setclock[7];v_W1302(0x8e,0x00);v_W1302(0xc4,Getclock[2]);v_W1302(0x8e,0x80);Setclock[7]=Setclock[7]+'0';Setclock[6]=Setclock[6]+'0';z=0;WriteC(0x10);break;} 
                          default:{z=0;SetT=0;}
                         }
		              }break;
			        
			  case 3:{switch (SetD)  //................日期修改,修改时让年份回零,99太大了
                         {case 0:{GetDate[1]++;if(GetDate[1]>9){GetDate[1]=0;GetDate[0]++;}if((GetDate[0]>=9&&GetDate[1]>9)|GetDate[0]>9){GetDate[0]=0;GetDate[1]=0;}
						          WriteC(0xc5);WriteD(GetDate[0]+'0');WriteC(0xc6);WriteD(GetDate[1]+'0');SetTime_Date[6]=(GetDate[0]*16)+GetDate[1];v_W1302(0x8e,0x00);v_W1302(0x8c,SetTime_Date[6]);v_W1302(0x8e,0x80);z=0;WriteC(0x10);break;}
                          
                          case 1:{GetDate[4]=GetDate[4]-'0';GetDate[3]=GetDate[3]-'0';GetDate[4]++;if(GetDate[4]>9){GetDate[4]=0;GetDate[3]++;}if((GetDate[3]>=1&&GetDate[4]>2)|GetDate[3]>1){GetDate[3]=0;GetDate[4]=0;}
						          WriteC(0xc8);WriteD(GetDate[3]+'0');WriteC(0xc9);WriteD(GetDate[4]+'0');SetTime_Date[4]=(16*GetDate[3])+GetDate[4];v_W1302(0x8e,0x00);v_W1302(0x88,SetTime_Date[4]);v_W1302(0x8e,0x80);GetDate[4]=GetDate[4]+'0';GetDate[3]=GetDate[3]+'0';z=0;WriteC(0x10);break;}
                          
                          case 2:{GetDate[7]=GetDate[7]-'0';GetDate[6]=GetDate[6]-'0';GetDate[7]++;if(GetDate[7]>9){GetDate[7]=0;GetDate[6]++;}if((GetDate[6]>=3&&GetDate[7]>1)|GetDate[6]>3){GetDate[6]=0;GetDate[7]=0;}
						          WriteC(0xcb);WriteD(GetDate[6]+'0');WriteC(0xcc);WriteD(GetDate[7]+'0');SetTime_Date[3]=(16*GetDate[6])+GetDate[7];v_W1302(0x8e,0x00);v_W1302(0x86,SetTime_Date[3]);v_W1302(0x8e,0x80);GetDate[7]=GetDate[7]+'0';GetDate[6]=GetDate[6]+'0';z=0;WriteC(0x10);break;} 
                          
                          case 3:{GetDate[10]=GetDate[10]-'0';GetDate[10]++;if(GetDate[10]>7)GetDate[10]=0;WriteC(0xcf);WriteD(GetDate[10]+'0');SetTime_Date[5]=GetDate[10];v_W1302(0x8a,SetTime_Date[5]);v_W1302(0x8e,0x80);GetDate[10]=GetDate[10]+'0';z=0;WriteC(0x10);break;}
						  default:{z=0;SetD=0;}
                         }
		              }break;
			         
			 /* case 4: {switch(SetT)
			                 {case 0: {Gotoxy(2,0);Display_string(" Funing Story ");MDelay(10000);z=0;}
							  case 1: {Gotoxy(2,0);Display_string(" Funing Games ");MDelay(10000);z=0;}
							  default:{z=0;SetT=0;}
 							 }
					   }break;
		     
			   case 5:{if(Auto==1){m=1;ClearLCD();PrintDate(); PrintTime();Delay(100);Gotoxy(2,14);Display_string("  ");z=0;}
			           }break;*/
			  default:{z=0;m=0;}
             }
  //Getclock[0]=1;
  //Getclock[1]=1;Getclock[2]=1;//设此值时,能响,可能是数制不对应
   
   v_Get1302();//获取最新时间                                                 //if(ucCurtime[2]==0)hour=1;这句也不行
   if(ucCurtime[0]+ucCurtime[1]==0){hour=10*(GetTime[0]-'0')+(GetTime[1]-'0'+1);BaoShi(hour);}//其它都正确就1点的时候会报三次,整点报时,GetTime[1]-'0'+1,减'0'是为了从字符转为数字,+1是因为新的整点比已获得的大1
   if((ucCurtime[2]==Getclock[0])&&(ucCurtime[1]==Getclock[1])&&(ucCurtime[0]==Getclock[2]))Music();//响闹铃,时、分、秒相等
         

  }
}
        //修改后输出的数据与所期望的数据不同

	//...........根据模式修改时间和日期
	 /*if(z)switch (m)
            {case 1:{switch (SetT)
                         {case 0:{GetTime[0]++;if(GetTime[0]>2)GetTime[0]=0;WriteC(0xc6);WriteD(GetTime[0]+'0');SetTime_Date[2]=(GetTime[0]*16)+GetTime[1];v_W1302(0x84,SetTime_Date[2]);z=0;WriteC(0x10);break;}
                          case 1:{GetTime[1]++;if(GetTime[1]>9|(GetTime[0]==2)&&(GetTime[1]>3))GetTime[1]=0;WriteC(0xc7);WriteD(GetTime[1]+'0');SetTime_Date[2]=(16*GetTime[0])+GetTime[1];v_W1302(0x84,SetTime_Date[2]);z=0;WriteC(0x10);break;}
                          case 2:z=0;break;
                          case 3:{GetTime[3]++;if(GetTime[3]>5)GetTime[3]=0;WriteC(0xc9);WriteD(GetTime[3]+'0');SetTime_Date[1]=(16*GetTime[3])+GetTime[4];v_W1302(0x82,SetTime_Date[1]);z=0;WriteC(0x10);break;}
                          case 4:{GetTime[4]++;if(GetTime[4]>9)GetTime[4]=0;WriteC(0xca);WriteD(GetTime[4]+'0');SetTime_Date[1]=(16*GetTime[3])+GetTime[4];v_W1302(0x82,SetTime_Date[1]);z=0;WriteC(0x10);break;}
                          case 5:z=0;break;
                          case 6:{GetTime[6]++;if(GetTime[6]>5)GetTime[6]=0;WriteC(0xcc);WriteD(GetTime[6]+'0');SetTime_Date[0]=(16*GetTime[6])+GetTime[7];v_W1302(0x80,SetTime_Date[0]);z=0;WriteC(0x10);break;}
                          case 7:{GetTime[7]++;if(GetTime[7]>9)GetTime[7]=0;WriteC(0xcd);WriteD(GetTime[7]+'0');SetTime_Date[0]=(16*GetTime[6])+GetTime[7];v_W1302(0x80,SetTime_Date[0]);z=0;WriteC(0x10);break;} 
                          default:z=0;SetT=0;
                         }
		              }
             case 2:break;
      	     case 3:{switch (SetD)
                         {case 0:{GetDate[0]++;if(GetDate[0]>9)GetDate[0]=0;WriteC(0x85);WriteD(GetDate[0]+'0');SetTime_Date[6]=(GetDate[0]*16)+GetDate[1];v_W1302(0x8c,SetTime_Date[6]);z=0;WriteC(0x10);break;}
                          case 1:{GetDate[1]++;if(GetDate[1]>9)GetDate[1]=0;WriteC(0x86);WriteD(GetDate[1]+'0');SetTime_Date[6]=(16*GetDate[0])+GetDate[1];v_W1302(0x8c,SetTime_Date[6]);z=0;WriteC(0x10);break;}
                          case 2:z=0;break;
                          case 3:{GetDate[3]++;if(GetDate[3]>1)GetDate[3]=0;WriteC(0x88);WriteD(GetDate[3]+'0');SetTime_Date[4]=(16*GetDate[3])+GetDate[4];v_W1302(0x88,SetTime_Date[4]);z=0;WriteC(0x10);break;}
                          case 4:{GetDate[4]++;if(GetDate[4]>9|(GetDate[3]==1&&GetDate[4]>2))GetDate[4]=0;WriteC(0x89);WriteD(GetDate[4]+'0');SetTime_Date[4]=(16*GetDate[3])+GetDate[4];v_W1302(0x88,SetTime_Date[4]);z=0;WriteC(0x10);break;}
                          case 5:z=0;break;
                          case 6:{GetDate[6]++;if(GetDate[6]>3)GetDate[6]=0;WriteC(0x8b);WriteD(GetDate[6]+'0');SetTime_Date[3]=(16*GetDate[6])+GetDate[7];v_W1302(0x86,SetTime_Date[3]);z=0;WriteC(0x10);break;}
                          case 7:{GetDate[7]++;if(GetDate[7]>9|(GetDate[6]==3&&GetDate[7]>1))GetDate[7]=0;WriteC(0x8c);WriteD(GetDate[7]+'0');SetTime_Date[3]=(16*GetDate[6])+GetDate[7];v_W1302(0x86,SetTime_Date[3]);z=0;WriteC(0x10);break;} 
                          case 8:z=0;break;
						  case 9:{GetDate[9]=0;z=0;WriteC(0x10);break;}
                          case 10:{GetDate[10]++;if(GetDate[10]>7)GetDate[10]=0;WriteC(0x8f);WriteD(GetDate[10]+'0');SetTime_Date[5]=GetDate[10];v_W1302(0x8a,SetTime_Date[5]);z=0;WriteC(0x10);break;}
						  default:z=0;SetD=0;
                         }
		              }*/
             //default:m=0;
            //}
//	if(z)switch(m)
	      // {case 1:	{ClearLCD();Gotoxy(1,0);Display_string("  Please Input");Gotoxy(2,0);Display_string("Hour:");	
 // }
//} 

⌨️ 快捷键说明

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