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

📄 main.lst

📁 多功能数字钟,内含I2C驱动
💻 LST
📖 第 1 页 / 共 3 页
字号:
 274   3                  d=d&0x3f;
 275   3                  e=d;
 276   3                  d=d>>4;
 277   3                  e=e&0x0f;
 278   3                  Mcs=0;Scs=1;
 279   3                  Disp1_Digit(0,16,zero+d*16);
 280   3                  Disp1_Digit(0,24,zero+e*16);
 281   3                  Disp1_Chinese(0,32,ri);
 282   3              }
 283   2              else
 284   2              {
 285   3                  Mcs=0;Scs=1;
 286   3                  Disp1_Digit(0,16,space); //显示空格
 287   3                  Disp1_Digit(0,24,space);    
 288   3              }
 289   2          } 
 290   1          else
 291   1          { 
 292   2              d=read_clock(0x05);//读日
 293   2              d=d&0x3f;
 294   2              e=d;
 295   2              d=d>>4;
 296   2              e=e&0x0f;
 297   2              Mcs=0;Scs=1;
 298   2              Disp1_Digit(0,16,zero+d*16);
 299   2              Disp1_Digit(0,24,zero+e*16);
 300   2              Disp1_Chinese(0,32,ri);
 301   2          }
 302   1          
C51 COMPILER V8.08   MAIN                                                                  06/28/2008 15:24:32 PAGE 6   

 303   1          Conver_week(((read_clock(0x08))&0x80)>>7,read_clock(0x08),read_clock(0x07)&0x1F,read_clock(0x05)&0x3F)
             -;
 304   1          
 305   1          
 306   1          
 307   1          if(weekk==1)  //星期闪烁标志位
 308   1          {
 309   2              if(flag==1)
 310   2              {
 311   3                  d=week; 
 312   3                  // d=read_clock(0x06);//读星期
 313   3                  Mcs=1;Scs=0;
 314   3                  Disp_Chinese(2,40,cone+(d-1)*32);//写入星期的汉字
 315   3              }
 316   2              else
 317   2              {
 318   3                  Mcs=1;Scs=0;
 319   3                  Disp_Chinese(2,40,spaces); //显示空格        
 320   3              }
 321   2          } 
 322   1          else
 323   1          { 
 324   2              d=week; 
 325   2              // d=read_clock(0x06);//读星期
 326   2              Mcs=1;Scs=0;
 327   2              Disp_Chinese(2,40,cone+(d-1)*32);//写入星期的汉字
 328   2          }     
 329   1      }
 330          
 331          /******************************************************************************/
 332          void Disp2(void)//显示和闪烁函数
 333          {
 334   1          if(Kgb==1)  //开关闪烁标志位
 335   1          {
 336   2              if(flag==1)
 337   2              {
 338   3                  if(Bell_Swh == 0)//0为关
 339   3                  {
 340   4                      Mcs=0;Scs=1;
 341   4                      Disp1_Chinese(2,32,guan);//显示关
 342   4                  }
 343   3                  else
 344   3                  {
 345   4                      Mcs=0;Scs=1;
 346   4                      Disp1_Chinese(2,32,kai);//显示开
 347   4                  }
 348   3              }
 349   2              else
 350   2              {
 351   3                  Mcs=0;Scs=1;
 352   3                  Disp1_Chinese(2,32,spaces); //显示空格
 353   3              }
 354   2          } 
 355   1          else
 356   1          {
 357   2              if(Bell_Swh == 0)//关
 358   2              {
 359   3                  Mcs=0;Scs=1;
 360   3                  Disp1_Chinese(2,32,guan);
 361   3              }
 362   2              else
 363   2              {
C51 COMPILER V8.08   MAIN                                                                  06/28/2008 15:24:32 PAGE 7   

 364   3                  Mcs=0;Scs=1;
 365   3                  Disp1_Chinese(2,32,kai);
 366   3              }
 367   2          }    
 368   1          
 369   1          if(Hourb==1)  
 370   1          {
 371   2              if(flag==1)       //时闪烁标志位
 372   2              {    
 373   3                  d = Read_One_Byte(0x01);//读取2408的小时的数值
 374   3                  Mcs=1;Scs=0;
 375   3                  Disp_Digit(4,48,zero+(d/10)*16);
 376   3                  Disp_Digit(4,56,zero+(d%10)*16);   
 377   3              }
 378   2              else
 379   2              {
 380   3                  Mcs=1;Scs=0;
 381   3                  Disp_Digit(4,48,space); //显示空格
 382   3                  Disp_Digit(4,56,space);    
 383   3              }
 384   2          } 
 385   1          else
 386   1          {
 387   2              d = Read_One_Byte(0x01);//读取24的小时的数值
 388   2              Mcs=1;Scs=0;
 389   2              Disp_Digit(4,48,zero+(d/10)*16);
 390   2              Disp_Digit(4,56,zero+(d%10)*16);        
 391   2          } 
 392   1          
 393   1          if(Minb==1)  //分钟闪烁标志位
 394   1          {
 395   2              if(flag==1)
 396   2              {    
 397   3                  d = Read_One_Byte(0x02);//读取24的分的数值
 398   3                  Mcs=0;Scs=1;
 399   3                  Disp1_Digit(4,8,zero+(d/10)*16);
 400   3                  Disp1_Digit(4,16,zero+(d%10)*16);
 401   3              }
 402   2              else
 403   2              {
 404   3                  Mcs=0;Scs=1;
 405   3                  Disp1_Digit(4,8,space); //显示空格
 406   3                  Disp1_Digit(4,16,space);    
 407   3              }
 408   2          } 
 409   1          else
 410   1          { 
 411   2              d = Read_One_Byte(0x02);//读取24的分的数值
 412   2              Mcs=0;Scs=1;
 413   2              Disp1_Digit(4,8,zero+(d/10)*16);
 414   2              Disp1_Digit(4,16,zero+(d%10)*16);
 415   2          }
 416   1          
 417   1          if(Secb==1)  //秒闪烁标志位
 418   1          {
 419   2              if(flag==1)
 420   2              {    
 421   3                  d = Read_One_Byte(0x03);//读取24的秒的数值
 422   3                  Mcs=0;Scs=1;
 423   3                  Disp1_Digit(4,32,zero+(d/10)*16);
 424   3                  Disp1_Digit(4,40,zero+(d%10)*16);
 425   3              }
C51 COMPILER V8.08   MAIN                                                                  06/28/2008 15:24:32 PAGE 8   

 426   2              else
 427   2              {
 428   3                  Mcs=0;Scs=1;
 429   3                  Disp1_Digit(4,32,space); //显示空格
 430   3                  Disp1_Digit(4,40,space);    
 431   3              }
 432   2          } 
 433   1          else
 434   1          { 
 435   2              d = Read_One_Byte(0x03);//读取24的秒的数值
 436   2              Mcs=0;Scs=1;
 437   2              Disp1_Digit(4,32,zero+(d/10)*16);
 438   2              Disp1_Digit(4,40,zero+(d%10)*16);
 439   2          }
 440   1      }
 441          
 442          /******************************************************************************/
 443          void id_case1_key(void)//id为1时的下一级选择
 444          {
 445   1          if(Add_Key == 0) //增加
 446   1          {
 447   2              Delay(100);
 448   2              if(Add_Key == 0)
 449   2              Set_time(id,0);  //调用Set_time函数
 450   2              while(Add_Key ==0);
 451   2          }
 452   1          if (Dec_Key==0)  //减少
 453   1          {
 454   2              Delay(100);
 455   2              if(Dec_Key == 0)
 456   2              Set_time(id,1);  
 457   2              while(Dec_Key ==0);
 458   2          }
 459   1      }
 460          
 461          /******************************************************************************/
 462          void Set_time(unsigned char sel, bit sel_1) //根据选择调整相应项目并写入DS8563
 463          {
 464   1          signed char address,item;
 465   1          signed char max,mini;
 466   1          if(sel==7)  
 467   1          {
 468   2              address=0x02; max=0;mini=0;
 469   2          }
 470   1          //秒
 471   1          if(sel==6)  
 472   1          {
 473   2              address=0x03; max=59;mini=0;
 474   2          }
 475   1          //分钟
 476   1          if(sel==5)  
 477   1          {
 478   2              address=0x04; max=23;mini=0;
 479   2          }
 480   1          //小时
 481   1          if(sel==3)  
 482   1          {
 483   2              address=0x05; max=31;mini=1;
 484   2          }
 485   1          //日
 486   1          if(sel==2)  
 487   1          {
C51 COMPILER V8.08   MAIN                                                                  06/28/2008 15:24:32 PAGE 9   

 488   2              address=0x07; max=12;mini=1;
 489   2          }
 490   1          //月
 491   1          if(sel==1)  
 492   1          {
 493   2              address=0x08; max=99; mini=0;
 494   2          }
 495   1          //年
 496   1          if(sel==4)  
 497   1          {
 498   2              address=0x16; max=7;mini=1;
 499   2          }
 500   1          //星期
 501   1          
 502   1          //读取8563某地址上的数值转换成10进制赋给item 
 503   1          item=((read_clock(address))/16)*10 + (read_clock(address))%16;
 504   1          if(sel_1==0) 
 505   1          item++;  
 506   1          else
 507   1          item--;
 508   1          if(item>max) item=mini;   
 509   1          if(item<mini) item=max;
 510   1          
 511   1       
 512   1          write_clock(address,(item/10)*16+item%10);//转换成16进制写入8563
 513   1       
 514   1      }
 515          
 516          /******************************************************************************/
 517          void id_case2_key(void)//id为1时的下一级选择
 518          {
 519   1          if(Add_Key == 0) //增加
 520   1          {
 521   2              Delay(100);
 522   2              if(Add_Key == 0)
 523   2              Set_Bell(id2,0);  //调用Set_time函数
 524   2              while(Add_Key ==0);
 525   2          }
 526   1          if (Dec_Key==0)  //减少
 527   1          {
 528   2              Delay(100);
 529   2              if(Dec_Key == 0)
 530   2              Set_Bell(id2,1);  
 531   2              while(Dec_Key ==0);
 532   2          }
 533   1      }
 534          
 535          /******************************************************************************/
 536          void Set_Bell(unsigned char sel, bit sel_1)//根据选择调整相应项目并写入24 
 537          {
 538   1          signed char address,item;
 539   1          signed char max,mini;
 540   1          if(sel==4)  
 541   1          {
 542   2              address=0x03; max=59;mini=0;
 543   2          }
 544   1          //秒
 545   1          if(sel==3)  
 546   1          {
 547   2              address=0x02; max=59;mini=0;
 548   2          }
 549   1          //分
C51 COMPILER V8.08   MAIN                                                                  06/28/2008 15:24:32 PAGE 10  

 550   1          if(sel==2)  
 551   1          {
 552   2              address=0x01; max=23; mini=0;
 553   2          }

⌨️ 快捷键说明

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