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

📄 zdbwnl.lst

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

 699   3                      Disp_Digit(1,56,space); //显示空格
 700   3                              Mcs=0;Scs=1;
 701   3                      Disp_Digit(1,0,space);    
 702   3              }
 703   2          } 
 704   1              else
 705   1          { 
 706   2              d=read_clock(0x89);//读月
 707   2                      e=d;
 708   2                      d=d>>4;
 709   2                      e=e&0x0f;
 710   2                      Mcs=1;Scs=0;
 711   2                      Disp_Digit(1,56,zero+d*16);
 712   2                      Mcs=0;Scs=1;
 713   2                      Disp_Digit(1,0,zero+e*16);
 714   2                      Disp_Chinese(1,8,yue);
 715   2          }   
 716   1      
 717   1              if(day==1)  //日闪烁标志位
 718   1          {
 719   2              if(flag==1)
 720   2              {  
 721   3                              d=read_clock(0x87);//读日
 722   3                              e=d;
 723   3                              d=d>>4;
 724   3                              e=e&0x0f;
 725   3                              Mcs=0;Scs=1;
 726   3                              Disp_Digit(1,24,zero+d*16);
 727   3                              Disp_Digit(1,32,zero+e*16);
 728   3                              Disp_Chinese(1,40,ri);
 729   3              }
 730   2              else
 731   2                      {
 732   3                              Mcs=0;Scs=1;
 733   3                      Disp_Digit(1,24,space); //显示空格
 734   3                      Disp_Digit(1,32,space);    
 735   3              }
 736   2          } 
 737   1              else
 738   1          { 
 739   2              d=read_clock(0x87);//读日
 740   2                      e=d;
 741   2                      d=d>>4;
 742   2                      e=e&0x0f;
 743   2                      Mcs=0;Scs=1;
 744   2                      Disp_Digit(1,24,zero+d*16);
 745   2                      Disp_Digit(1,32,zero+e*16);
 746   2                      Disp_Chinese(1,40,ri);
 747   2          }
 748   1          
 749   1          if(weekk==1)  //星期闪烁标志位
 750   1          {
 751   2              if(flag==1)
 752   2              {    
 753   3                      d=read_clock(0x8b);//读星期
 754   3                              Mcs=1;Scs=0;
 755   3                              Disp_Chinese(3,40,cone+(d-1)*32);//写入星期的汉字
 756   3              }
 757   2              else
 758   2              {
 759   3                              Mcs=1;Scs=0;
 760   3                      Disp_Chinese(3,40,spaces); //显示空格        
C51 COMPILER V7.50   ZDBWNL                                                                12/22/2005 13:04:37 PAGE 14  

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

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

 885   3                      Disp_Digit(4,40,space);    
 886   3              }
 887   2          } 
 888   1              else
 889   1          { 
 890   2              d=read_clock(0xc7);//读闹钟秒的数值
 891   2                      e=d;
 892   2                      d=d>>4;
 893   2                      e=e&0x0f;
 894   2                      Mcs=0;Scs=1;
 895   2                      Disp_Digit(4,32,zero+d*16);
 896   2                      Disp_Digit(4,40,zero+e*16);
 897   2          }
 898   1      }
 899          
 900          /******************************************************************************/
 901          void id_case1_key(void)//id为1时的下一级选择
 902          {
 903   1              if(Add_Key == 0) //增加
 904   1          {
 905   2              Delay(100);
 906   2              if(Add_Key == 0)
 907   2                              Set_time(id,0);  //调用Set_time函数
 908   2                              while(Add_Key ==0);
 909   2          }
 910   1              if (Dec_Key==0)  //减少
 911   1          {
 912   2              Delay(100);
 913   2              if(Dec_Key == 0)
 914   2                              Set_time(id,1);  
 915   2                      while(Dec_Key ==0);
 916   2            }
 917   1      }
 918          
 919          /******************************************************************************/
 920          void Set_time(unsigned char sel, bit sel_1) //根据选择调整相应项目并写入DS1302
 921          {
 922   1        signed char address,item;
 923   1        signed char max,mini;
 924   1        if(sel==7)  {address=0x80; max=0;mini=0;}     //秒
 925   1        if(sel==6)  {address=0x82; max=59;mini=0;}    //分钟
 926   1        if(sel==5)  {address=0x84; max=23;mini=0;}    //小时
 927   1        if(sel==3)  {address=0x86; max=31;mini=1;}    //日
 928   1        if(sel==2)  {address=0x88; max=12;mini=1;}    //月
 929   1        if(sel==1)  {address=0x8c; max=99; mini=0;}    //年
 930   1        if(sel==4)  {address=0x8a; max=7;mini=1;}    //星期
 931   1        
 932   1        //读取1302某地址上的数值转换成10进制赋给item 
 933   1        item=((read_clock(address+1))/16)*10 + (read_clock(address+1))%16;
 934   1        if(sel_1==0) 
 935   1              item++;  
 936   1        else
 937   1              item--;
 938   1        if(item>max) item=mini;   
 939   1        if(item<mini) item=max;
 940   1                 
 941   1        write_clock(0x8e,0x00);//允许写操作
 942   1        write_clock(address,(item/10)*16+item%10);//转换成16进制写入1302
 943   1        write_clock(0x8e,0x80);//写保护,禁止写操作  
 944   1      }
 945          
 946          /******************************************************************************/

⌨️ 快捷键说明

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