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

📄 wannianli.lst

📁 万年历,可以在单片机等各种微控制器上显示年月日小时分钟秒,比较准确.可以适当的修改加入你自己的东西
💻 LST
📖 第 1 页 / 共 5 页
字号:
 703   3                      d=read_clock(0x89);//读月
 704   3                              e=d;
 705   3                              d=d>>4;
 706   3                              e=e&0x0f;
 707   3                              Mcs=1;Scs=0;
 708   3                              Disp_Digit(1,56,zero+d*16);
 709   3                              Mcs=0;Scs=1;
 710   3                              Disp_Digit(1,0,zero+e*16);
 711   3                              Disp_Chinese(1,8,yue);
 712   3              }
 713   2              else
 714   2              {
 715   3                              Mcs=1;Scs=0;
 716   3                      Disp_Digit(1,56,space); //显示空格
 717   3                              Mcs=0;Scs=1;
 718   3                      Disp_Digit(1,0,space);    
 719   3              }
 720   2          } 
 721   1              else
 722   1          { 
 723   2              d=read_clock(0x89);//读月
 724   2                      e=d;
 725   2                      d=d>>4;
 726   2                      e=e&0x0f;
 727   2                      Mcs=1;Scs=0;
 728   2                      Disp_Digit(1,56,zero+d*16);
 729   2                      Mcs=0;Scs=1;
 730   2                      Disp_Digit(1,0,zero+e*16);
 731   2                      Disp_Chinese(1,8,yue);
 732   2          }   
 733   1      
 734   1              if(day==1)  //日闪烁标志位
 735   1          {
 736   2              if(flag==1)
 737   2              {  
 738   3                              d=read_clock(0x87);//读日
 739   3                              e=d;
 740   3                              d=d>>4;
 741   3                              e=e&0x0f;
 742   3                              Mcs=0;Scs=1;
 743   3                              Disp_Digit(1,24,zero+d*16);
 744   3                              Disp_Digit(1,32,zero+e*16);
 745   3                              Disp_Chinese(1,40,ri);
 746   3              }
 747   2              else
 748   2                      {
 749   3                              Mcs=0;Scs=1;
 750   3                      Disp_Digit(1,24,space); //显示空格
 751   3                      Disp_Digit(1,32,space);    
 752   3              }
 753   2          } 
 754   1              else
 755   1          { 
 756   2              d=read_clock(0x87);//读日
 757   2                      e=d;
 758   2                      d=d>>4;
 759   2                      e=e&0x0f;
 760   2                      Mcs=0;Scs=1;
C51 COMPILER V7.50   WANNIANLI                                                             05/23/2006 13:38:52 PAGE 14  

 761   2                      Disp_Digit(1,24,zero+d*16);
 762   2                      Disp_Digit(1,32,zero+e*16);
 763   2                      Disp_Chinese(1,40,ri);
 764   2          }
 765   1          
 766   1          if(weekk==1)  //星期闪烁标志位
 767   1          {
 768   2              if(flag==1)
 769   2              {    
 770   3                      d=read_clock(0x8b);//读星期
 771   3                              Mcs=1;Scs=0;
 772   3                              Disp_Chinese(3,40,cone+(d-1)*32);//写入星期的汉字
 773   3              }
 774   2              else
 775   2              {
 776   3                              Mcs=1;Scs=0;
 777   3                      Disp_Chinese(3,40,spaces); //显示空格        
 778   3              }
 779   2          } 
 780   1              else
 781   1          { 
 782   2              d=read_clock(0x8b);//读星期
 783   2                      Mcs=1;Scs=0;
 784   2                      Disp_Chinese(3,40,cone+(d-1)*32);//写入星期的汉字
 785   2          }     
 786   1      }
 787          
 788          /******************************************************************************/
 789          void Disp2(void)//显示和闪烁函数
 790          {
 791   1              if(Kgb==1)  //开关闪烁标志位
 792   1              {
 793   2              if(flag==1)
 794   2              {
 795   3                              if(Bell_Swh == 0)//0为关
 796   3                              {
 797   4                                      Mcs=0;Scs=1;
 798   4                                      Disp_Chinese(2,32,guan);//显示关
 799   4                              }
 800   3                              else
 801   3                              {
 802   4                                      Mcs=0;Scs=1;
 803   4                                      Disp_Chinese(2,32,kai);//显示开
 804   4                              }
 805   3              }
 806   2                 else
 807   2             {
 808   3                              Mcs=0;Scs=1;
 809   3                              Disp_Chinese(2,32,spaces); //显示空格
 810   3             }
 811   2          } 
 812   1              else
 813   1          {
 814   2              if(Bell_Swh == 0)//关
 815   2                      {
 816   3                              Mcs=0;Scs=1;
 817   3                              Disp_Chinese(2,32,guan);
 818   3                      }
 819   2                      else
 820   2                      {
 821   3                              Mcs=0;Scs=1;
 822   3                              Disp_Chinese(2,32,kai);
C51 COMPILER V7.50   WANNIANLI                                                             05/23/2006 13:38:52 PAGE 15  

 823   3                      }
 824   2          }    
 825   1         
 826   1              if(Hourb==1)  //时闪烁标志位
 827   1          {
 828   2              if(flag==1)
 829   2              { 
 830   3                      d=read_clock(0xc3);//读闹钟小时的数值
 831   3                              e=d;
 832   3                              d=d>>4;
 833   3                              e=e&0x0f;
 834   3                              Mcs=1;Scs=0;
 835   3                              Disp_Digit(4,48,zero+d*16);
 836   3                              Disp_Digit(4,56,zero+e*16);   
 837   3              }
 838   2              else
 839   2              {
 840   3                              Mcs=1;Scs=0;
 841   3                      Disp_Digit(4,48,space); //显示空格
 842   3                      Disp_Digit(4,56,space);    
 843   3              }
 844   2          } 
 845   1              else
 846   1          {
 847   2              d=read_clock(0xc3);//读闹钟小时的数值
 848   2                      e=d;
 849   2                      d=d>>4;
 850   2                      e=e&0x0f;
 851   2                      Mcs=1;Scs=0;
 852   2                      Disp_Digit(4,48,zero+d*16);
 853   2                      Disp_Digit(4,56,zero+e*16);     
 854   2          } 
 855   1      
 856   1              if(Minb==1)  //分钟闪烁标志位
 857   1          {
 858   2              if(flag==1)
 859   2              {    
 860   3                      d=read_clock(0xc5);//读闹钟分钟的数值
 861   3                              e=d;
 862   3                              d=d>>4;
 863   3                              e=e&0x0f;
 864   3                              Mcs=0;Scs=1;
 865   3                              Disp_Digit(4,8,zero+d*16);
 866   3                              Disp_Digit(4,16,zero+e*16);
 867   3              }
 868   2              else
 869   2              {
 870   3                              Mcs=0;Scs=1;
 871   3                      Disp_Digit(4,8,space); //显示空格
 872   3                      Disp_Digit(4,16,space);    
 873   3              }
 874   2          } 
 875   1              else
 876   1              { 
 877   2              d=read_clock(0xc5);//读闹钟分钟的数值
 878   2                      e=d;
 879   2                      d=d>>4;
 880   2                      e=e&0x0f;
 881   2                      Mcs=0;Scs=1;
 882   2                      Disp_Digit(4,8,zero+d*16);
 883   2                      Disp_Digit(4,16,zero+e*16);
 884   2              }
C51 COMPILER V7.50   WANNIANLI                                                             05/23/2006 13:38:52 PAGE 16  

 885   1      
 886   1              if(Secb==1)  //秒闪烁标志位
 887   1          {
 888   2              if(flag==1)
 889   2              {    
 890   3                      d=read_clock(0xc7);//读闹钟秒的数值
 891   3                              e=d;
 892   3                              d=d>>4;
 893   3                              e=e&0x0f;
 894   3                              Mcs=0;Scs=1;
 895   3                              Disp_Digit(4,32,zero+d*16);
 896   3                              Disp_Digit(4,40,zero+e*16);
 897   3              }
 898   2              else
 899   2              {
 900   3                              Mcs=0;Scs=1;
 901   3                      Disp_Digit(4,32,space); //显示空格
 902   3                      Disp_Digit(4,40,space);    
 903   3              }
 904   2          } 
 905   1              else
 906   1          { 
 907   2              d=read_clock(0xc7);//读闹钟秒的数值
 908   2                      e=d;
 909   2                      d=d>>4;
 910   2                      e=e&0x0f;
 911   2                      Mcs=0;Scs=1;
 912   2                      Disp_Digit(4,32,zero+d*16);
 913   2                      Disp_Digit(4,40,zero+e*16);
 914   2          }
 915   1      }
 916          
 917          /******************************************************************************/
 918          void id_case1_key(void)//id为1时的下一级选择
 919          {
 920   1              if(Add_Key == 0) //增加
 921   1          {
 922   2              Delay(100);
 923   2              if(Add_Key == 0)
 924   2                      {
 925   3                              Set_time(id,0);  //调用Set_time函数
 926   3                              backled_flag = 1;//开始记数
 927   3                              timecount2 = 0;
 928   3                      }
 929   2                              while(Add_Key ==0);
 930   2          }
 931   1              if (Dec_Key==0)  //减少
 932   1          {
 933   2              Delay(100);
 934   2              if(Dec_Key == 0)
 935   2                      {
 936   3                              Set_time(id,1);  
 937   3                              backled_flag = 1;//开始记数
 938   3                              timecount2 = 0;
 939   3                      }
 940   2                      while(Dec_Key ==0);
 941   2            }
 942   1      }
 943          
 944          /******************************************************************************/
 945          void Set_time(unsigned char sel, bit sel_1) //根据选择调整相应项目并写入DS1302
 946          {
C51 COMPILER V7.50   WANNIANLI                                                             05/23/2006 13:38:52 PAGE 17  

 947   1        signed char address,item;
 948   1        signed char max,mini;
 949   1        if(sel==7)  {address=0x80; max=0;mini=0;}     //秒
 950   1        if(sel==6)  {address=0x82; max=59;mini=0;}    //分钟
 951   1        if(sel==5)  {address=0x84; max=23;mini=0;}    //小时
 952   1        if(sel==3)  {address=0x86; max=31;mini=1;}    //日

⌨️ 快捷键说明

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