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

📄 zdbwnl.lst

📁 万年历+温度+闹钟.dan单片机应用上的一些小代码。
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.50   ZDBWNL                                                                12/22/2005 13:04:37 PAGE 9   

 451   1              WriteOneChar(0xCC); //跳过读序号列号的操作
 452   1              WriteOneChar(0xBE); //读取温度寄存器
 453   1              a=ReadOneChar();  //读低8位
 454   1              b=ReadOneChar(); //读高8位
 455   1              t=b;
 456   1              t<<=8;
 457   1              t=t|a;
 458   1              tt=t*0.0625;
 459   1              t= tt*10+0.5; //放大10倍输出并四舍五入
 460   1              return(t);
 461   1      }
 462          
 463          /******************************************************************************/
 464          //1302驱动程序
 465          void clock_out(unsigned char dd)
 466          {
 467   1              ACC=dd;
 468   1              clock_dat=a0; clock_clk=1; clock_clk=0;
 469   1              clock_dat=a1; clock_clk=1; clock_clk=0;
 470   1              clock_dat=a2; clock_clk=1; clock_clk=0;
 471   1              clock_dat=a3; clock_clk=1; clock_clk=0;
 472   1              clock_dat=a4; clock_clk=1; clock_clk=0;
 473   1              clock_dat=a5; clock_clk=1; clock_clk=0;
 474   1              clock_dat=a6; clock_clk=1; clock_clk=0;
 475   1              clock_dat=a7; clock_clk=1; clock_clk=0;
 476   1      }
 477          
 478          /******************************************************************************/
 479          unsigned char clock_in(void)
 480          {
 481   1              clock_dat=1;
 482   1              a0=clock_dat;
 483   1              clock_clk=1; clock_clk=0; a1=clock_dat;
 484   1              clock_clk=1; clock_clk=0; a2=clock_dat;
 485   1              clock_clk=1; clock_clk=0; a3=clock_dat;
 486   1              clock_clk=1; clock_clk=0; a4=clock_dat;
 487   1              clock_clk=1; clock_clk=0; a5=clock_dat;
 488   1              clock_clk=1; clock_clk=0; a6=clock_dat;
 489   1              clock_clk=1; clock_clk=0; a7=clock_dat;
 490   1              return(ACC);
 491   1      }
 492          
 493          /******************************************************************************/
 494          unsigned char read_clock(unsigned char ord)
 495          {
 496   1              unsigned char dd=0;
 497   1              clock_clk=0;
 498   1              clock_Rst=0;
 499   1              clock_Rst=1;
 500   1              clock_out(ord);
 501   1              dd=clock_in();
 502   1              clock_Rst=0;
 503   1              clock_clk=1;
 504   1              return(dd);
 505   1      }
 506          
 507          /******************************************************************************/
 508          void write_clock(unsigned char ord, unsigned char dd)
 509          {
 510   1              clock_clk=0;
 511   1              clock_Rst=0;
 512   1              clock_Rst=1;
C51 COMPILER V7.50   ZDBWNL                                                                12/22/2005 13:04:37 PAGE 10  

 513   1              clock_out(ord);
 514   1              clock_out(dd);
 515   1              clock_Rst=0;
 516   1              clock_clk=1;
 517   1      }
 518          
 519          /******************************************************************************/
 520          void Disp(void)//显示和闪烁函数!
 521          {
 522   1              unsigned int i=0;
 523   1              unsigned char a=0,b=0,c=0,f=0;
 524   1      
 525   1              i=ReadTemperature();//读温度并送显
 526   1              a=i/100;
 527   1              Mcs=1;Scs=0;
 528   1              Disp_Digit(5,40,zero+a*16);
 529   1              b=i/10-a*10;
 530   1              Mcs=1;Scs=0;
 531   1              Disp_Digit(5,48,zero+b*16);
 532   1              c=i-a*100-b*10;
 533   1              Mcs=0;Scs=1;
 534   1              Disp_Digit(5,0,zero+c*16);
 535   1      
 536   1              if(sec==1)  //秒闪烁标志位
 537   1              {
 538   2              if(flag==1)
 539   2              {    
 540   3                      d=read_clock(0x81);//读秒
 541   3                              e=d;
 542   3                              d=d>>4;
 543   3                              e=e&0x0f;
 544   3                              Mcs=0;Scs=1;
 545   3                              Disp_Digit(3,40,zero+d*16);//送显示
 546   3                              Disp_Digit(3,48,zero+e*16);   
 547   3             }
 548   2                 else
 549   2             {
 550   3                      Mcs=0;Scs=1;
 551   3                      Disp_Digit(3,40,space); //显示空格
 552   3              Disp_Digit(3,48,space);    
 553   3             }
 554   2          } 
 555   1              else
 556   1          {
 557   2              d=read_clock(0x81);//读秒
 558   2                      e=d;
 559   2                      d=d>>4;
 560   2                      e=e&0x0f;
 561   2                      Mcs=0;Scs=1;
 562   2      /********************************************************************************/              
 563   2                      if(d == 0 && e == 0)
 564   2                      {
 565   3                              flag_sec = 1;//秒标志位设定
 566   3                      }
 567   2      /********************************************************************************/    
 568   2                      Disp_Digit(3,40,zero+d*16);
 569   2                      Disp_Digit(3,48,zero+e*16);      
 570   2          }    
 571   1         
 572   1              if(min==1)  //分钟闪烁标志位
 573   1          {
 574   2              if(flag==1)
C51 COMPILER V7.50   ZDBWNL                                                                12/22/2005 13:04:37 PAGE 11  

 575   2              {    
 576   3                      d=read_clock(0x83);//读分钟
 577   3                              e=d;
 578   3                              d=d>>4;
 579   3                              e=e&0x0f;
 580   3                              Mcs=0;Scs=1;
 581   3                              Disp_Digit(3,16,zero+d*16);
 582   3                              Disp_Digit(3,24,zero+e*16);     
 583   3              }
 584   2              else
 585   2              {       
 586   3                              Mcs=0;Scs=1;
 587   3                      Disp_Digit(3,16,space); //显示空格
 588   3                      Disp_Digit(3,24,space);    
 589   3              }
 590   2          } 
 591   1              else
 592   1          {
 593   2              d=read_clock(0x83);//读分钟
 594   2                      e=d;
 595   2                      d=d>>4;
 596   2                      e=e&0x0f;
 597   2                      Mcs=0;Scs=1;
 598   2      /******************************************************************************/                
 599   2                      if(d == 0 && e == 0)
 600   2                      {
 601   3                              flag_min = 1;//分标志位设定
 602   3                      }
 603   2      /******************************************************************************/
 604   2                      Disp_Digit(3,16,zero+d*16);
 605   2                      Disp_Digit(3,24,zero+e*16);         
 606   2          } 
 607   1      
 608   1              if(flag_sec == 1 && flag_min == 1)
 609   1              {
 610   2                      Beep();//整点报警
 611   2                      flag_sec = 0;//清除标志位
 612   2                      flag_min = 0;
 613   2              }
 614   1      
 615   1              if(hour==1)  //小时闪烁标志位
 616   1          {
 617   2              if(flag==1)
 618   2              {    
 619   3                      d=read_clock(0x85);//读小时
 620   3                              e=d;
 621   3                              d=d>>4;
 622   3                              e=e&0x0f;
 623   3                              Mcs=1;Scs=0;
 624   3                              Disp_Digit(3,56,zero+d*16);
 625   3                              Mcs=0;Scs=1;
 626   3                              Disp_Digit(3,0,zero+e*16);
 627   3              }
 628   2              else
 629   2              {
 630   3                              Mcs=1;Scs=0;
 631   3                      Disp_Digit(3,56,space); //显示空格
 632   3                              Mcs=0;Scs=1;
 633   3                      Disp_Digit(3,0,space);    
 634   3              }
 635   2          } 
 636   1              else
C51 COMPILER V7.50   ZDBWNL                                                                12/22/2005 13:04:37 PAGE 12  

 637   1              { 
 638   2              d=read_clock(0x85);//读小时
 639   2                      e=d;
 640   2                      d=d>>4;
 641   2                      e=e&0x0f;
 642   2                      Mcs=1;Scs=0;
 643   2                      Disp_Digit(3,56,zero+d*16);
 644   2                      Mcs=0;Scs=1;
 645   2                      Disp_Digit(3,0,zero+e*16);
 646   2              }
 647   1      
 648   1              if(year==1)  //年闪烁标志位
 649   1          {
 650   2              if(flag==1)
 651   2              {    
 652   3                      d=read_clock(0x8d);//读年
 653   3                              e=d;
 654   3                              d=d>>4;
 655   3                              e=e&0x0f;
 656   3                              Mcs=1;Scs=0;
 657   3                              Disp_Digit(1,8,two);
 658   3                              Disp_Digit(1,16,zero);
 659   3                              Disp_Digit(1,24,zero+d*16);
 660   3                              Disp_Digit(1,32,zero+e*16);
 661   3              }
 662   2              else
 663   2              {
 664   3                              Mcs=1;Scs=0;
 665   3                      Disp_Digit(1,24,space); //显示空格
 666   3                      Disp_Digit(1,32,space);    
 667   3              }
 668   2          } 
 669   1              else
 670   1          { 
 671   2              d=read_clock(0x8d);//读年
 672   2                      e=d;
 673   2                      d=d>>4;
 674   2                      e=e&0x0f;
 675   2                      Mcs=1;Scs=0;
 676   2                      Disp_Digit(1,8,two);
 677   2                      Disp_Digit(1,16,zero);
 678   2                      Disp_Digit(1,24,zero+d*16);
 679   2                      Disp_Digit(1,32,zero+e*16);
 680   2          }
 681   1           
 682   1              if(mon==1)  //月闪烁标志位
 683   1          {
 684   2              if(flag==1)
 685   2              {    
 686   3                      d=read_clock(0x89);//读月
 687   3                              e=d;
 688   3                              d=d>>4;
 689   3                              e=e&0x0f;
 690   3                              Mcs=1;Scs=0;
 691   3                              Disp_Digit(1,56,zero+d*16);
 692   3                              Mcs=0;Scs=1;
 693   3                              Disp_Digit(1,0,zero+e*16);
 694   3                              Disp_Chinese(1,8,yue);
 695   3              }
 696   2              else
 697   2              {
 698   3                              Mcs=1;Scs=0;

⌨️ 快捷键说明

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