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

📄 funclcd.lst

📁 Keil C51完整的128X64LCD显示的电子打铃仪代码,内含DS1302X5045等操作代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 732   6                                                              EepromWrite(tempvar1+2,Sys_D_T0[1]);
 733   6                                                              Display_Line(6,0,6,0,ShowTip[10]);//提示打铃已设置
 734   6                                                              Msingle_font_pattern (English_Offset[tempvar1/10],6,96,0);
 735   6                                                              Msingle_font_pattern (English_Offset[tempvar1%10],6,104,0);
 736   6                                                              goto ExitSet;
 737   6                                                      }
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 13  

 738   5                                              }                               
 739   4                                              Display_Line(6,16,6,0,ShowTip[7]);//提示打铃已设置
 740   4                                              Status_Beep();
 741   4                                      }
 742   3      ExitSet:            break;
 743   3                              case ESC:
 744   3                                      ClearRAM(0,8);
 745   3                                      return;
 746   3                              default:
 747   3                                      if(KeyNum==0)
 748   3                                              tempvar1=((Sys_D_T0[2]>>4)&0x0F)*10+(Sys_D_T0[2]&0x0F);
 749   3                                      else if(KeyNum==1)
 750   3                                              tempvar1=((Sys_D_T0[1]>>4)&0x0F)*10+(Sys_D_T0[1]&0x0F);
 751   3      
 752   3                                      if(tempvar==PAGEUP)tempvar1++;
 753   3                                      if(tempvar==PAGEDOWN&&tempvar1>0)tempvar1--;
 754   3                                      
 755   3                                      if(KeyNum==0)
 756   3                                      {
 757   4                                              if(tempvar1>23)tempvar1=0;
 758   4                                              else if(tempvar1<=0)tempvar1=23;
 759   4                                              Sys_D_T0[2]=tempvar1/10;
 760   4                                              Sys_D_T0[2]=(Sys_D_T0[2]<<4)&0xF0;
 761   4                                              Sys_D_T0[2]=Sys_D_T0[2]+(tempvar1%10);
 762   4                                      }
 763   3                                      else if(KeyNum==1)
 764   3                                      {
 765   4                                              if(tempvar1>59)tempvar1=0;
 766   4                                              else if(tempvar1<=0)tempvar1=59;
 767   4                                              Sys_D_T0[1]=tempvar1/10;
 768   4                                              Sys_D_T0[1]=(Sys_D_T0[1]<<4)&0xF0;
 769   4                                              Sys_D_T0[1]=Sys_D_T0[1]+(tempvar1%10);
 770   4                                      }               
 771   3                                      break;
 772   3                      }       
 773   2              }
 774   1      }
 775          
 776          //==========================================================
 777          //日期时间菜单处理函数
 778          //菜单序号:3
 779          //Function:     DateTime_Set
 780          //              Auto_Set
 781          //Description:  Audjst System date and time
 782          //Parameters:   NO.
 783          //Call:                 DispLay_RTC,Get_TimeFromDS1302,Msingle_font_pattern
 784          //              HzDisplay,ClearRAM,SubMenu_Show,Calc_Week
 785          //Returns:              NO.
 786          //=================================================
 787          void TimerSetProc(void)//0
 788          {
 789   1             //显示时间于屏幕中间
 790   1              data      uint8 tempvar,keynum=0,rowno=0,tempvar1,tempvar2;
 791   1                      data      uint8 Sys_D_T0[7];
 792   1                      bdata     uint8 change_index=0x00;
 793   1                      
 794   1                      Get_TimeFromDS1302(Sys_D_T0);
 795   1      
 796   1                      ClearRAM(0,8);
 797   1                      DispRTC(0,Sys_D_T0);
 798   1      
 799   1                      //交换年分与星期的位置,便于操作
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 14  

 800   1                      tempvar     =   Sys_D_T0[6];
 801   1                      Sys_D_T0[6] =   Sys_D_T0[5];
 802   1                      Sys_D_T0[5] =   tempvar;
 803   1                      //秒位置反显
 804   1                      tempvar=(Sys_D_T0[0]>>4)&0x0F;
 805   1                      Msingle_font_pattern (English_Offset[tempvar],0,Db_WZ[0],1);
 806   1                      tempvar=Sys_D_T0[0]&0x0F;
 807   1                      Msingle_font_pattern (English_Offset[tempvar],0,Db_WZ[1],1);
 808   1      
 809   1                      Sys_D_T0[4]=Sys_D_T0[4]&0x1F;
 810   1      
 811   1                      Delay_Ret(T0_6S);
 812   1                      
 813   1                      while(1)
 814   1                  {
 815   2                      if (ret_Flag)
 816   2                              {
 817   3                                  ClearRAM(0,8);
 818   3                                      break;
 819   3                      }
 820   2      
 821   2                              tempvar=(Sys_D_T0[keynum]>>4)&0x0F;
 822   2                              Msingle_font_pattern (English_Offset[tempvar],rowno,Db_WZ[2*keynum],1);
 823   2                  tempvar=Sys_D_T0[keynum]&0x0F;
 824   2                  Msingle_font_pattern (English_Offset[tempvar],rowno,Db_WZ[2*keynum+1],1);
 825   2      
 826   2                  tempvar=KeyScan();
 827   2                  
 828   2                  if (tempvar==NOKEY_PRESS)continue;
 829   2                  //亮背光
 830   2                          Light_On();
 831   2                  NoDelay_Ret();
 832   2                  
 833   2                  //光标移动(下移)
 834   2                  if(tempvar==MOVE)
 835   2                      {
 836   3                          keynum++;
 837   3                          
 838   3                          if(keynum>5)keynum=0;
 839   3                          
 840   3                          if(keynum>2)
 841   3                              rowno=2;
 842   3                          else
 843   3                              rowno=0;
 844   3      
 845   3                          if(keynum==0)
 846   3                          {
 847   4                              tempvar=(Sys_D_T0[5]>>4)&0x0F;
 848   4                              Msingle_font_pattern (English_Offset[tempvar],2,Db_WZ[10],0);
 849   4                              tempvar=Sys_D_T0[5]&0x0F;
 850   4                              Msingle_font_pattern (English_Offset[tempvar],2,Db_WZ[11],0);
 851   4                          }
 852   3                          else
 853   3                          {
 854   4                              if((keynum-1)<3)
 855   4                                  tempvar2=0;
 856   4                              else
 857   4                                  tempvar2=2;
 858   4                              tempvar=(Sys_D_T0[keynum-1]>>4)&0x0F;
 859   4                              Msingle_font_pattern (English_Offset[tempvar],tempvar2,Db_WZ[2*(keynum-1)],0);
 860   4                              tempvar=Sys_D_T0[keynum-1]&0x0F;
 861   4                              Msingle_font_pattern (English_Offset[tempvar],tempvar2,Db_WZ[2*(keynum-1)+1],0);
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 15  

 862   4                          }
 863   3                      }
 864   2                  else if(tempvar==ENTER)
 865   2                      {
 866   3                          //保存秒分时日月星期与年
 867   3                          
 868   3                          tempvar     =   Sys_D_T0[5];
 869   3                          Sys_D_T0[5] =   Sys_D_T0[6];
 870   3                          Sys_D_T0[6] =   tempvar;
 871   3                          
 872   3                          change_index|=0x40;
 873   3                          
 874   3                          Write_TimeToDS1302(Sys_D_T0,change_index);
 875   3      
 876   3                          tempvar     =   Sys_D_T0[6];
 877   3                          Sys_D_T0[6] =   Sys_D_T0[5];
 878   3                          Sys_D_T0[5] =   tempvar;
 879   3                      }
 880   2                              else if(tempvar==BACK)
 881   2                  {//返回键
 882   3                                      ClearRAM(0,8);
 883   3                      return;
 884   3                  }
 885   2                  else 
 886   2                  {//数字键
 887   3                                              tempvar1=  ((Sys_D_T0[keynum]>>4)&0x0F)*10+(Sys_D_T0[keynum]&0x0F);
 888   3      
 889   3                                              if(tempvar==PAGEUP)tempvar1++;
 890   3                                              if(tempvar==PAGEDOWN && tempvar1>0)tempvar1--;
 891   3      
 892   3                                              Sys_D_T0[keynum] =tempvar1/10;
 893   3                                              Sys_D_T0[keynum]=(Sys_D_T0[keynum]<<4) & 0xF0;
 894   3                                              Sys_D_T0[keynum]=Sys_D_T0[keynum]+ tempvar1%10;
 895   3      
 896   3                                              if(keynum<2 &&Sys_D_T0[keynum]>0x59)Sys_D_T0[keynum]=0;
 897   3                                              else if(keynum==2 &&Sys_D_T0[keynum]>0x23)Sys_D_T0[keynum]=0;
 898   3                                              else if(keynum==3)
 899   3                                              {
 900   4                                                         switch(Sys_D_T0[4])
 901   4                                                         {
 902   5                                                                      case 1:
 903   5                                                                      case 3:
 904   5                                                                      case 5:
 905   5                                                                      case 7:
 906   5                                                                      case 8:
 907   5                                                                      case 10:
 908   5                                                                      case 12:
 909   5                                                                                if( Sys_D_T0[3]>0x31)Sys_D_T0[3]=1;
 910   5                                                                                else if( Sys_D_T0[3]<=0)Sys_D_T0[3]=31;
 911   5                                                                                break;
 912   5                                                                      case 2:
 913   5                                                                              tempvar=((Sys_D_T0[5]>>4)&0x0F)*10+(Sys_D_T0[5]&0x0F);
 914   5                                                                              tempvar=month_n_day(tempvar+2000,2);
 915   5                                                                              if( Sys_D_T0[3]>tempvar)Sys_D_T0[3]=1;
 916   5                                                                              else if( Sys_D_T0[3]<=0)Sys_D_T0[3]=tempvar;
 917   5                                                                              break;
 918   5                                                                      default:
 919   5                                                                              if( Sys_D_T0[3]>0x30)Sys_D_T0[3]=1;
 920   5                                                                          else if(Sys_D_T0[3]<=0)Sys_D_T0[3]=0x30;
 921   5                                                         }
 922   4                                              }
 923   3                                              else if(keynum==4)
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 16  

 924   3                                              {
 925   4                                                        if(Sys_D_T0[4]>0x12)Sys_D_T0[4]=1;
 926   4                                                        else if(Sys_D_T0[4]<=0)Sys_D_T0[4]=0x12;
 927   4                                              }
 928   3                                              else if(keynum==5)
 929   3                                              {
 930   4                                                        if(Sys_D_T0[5]>0x99)Sys_D_T0[5]=0x00;
 931   4                                                        else if(Sys_D_T0[5]<=0x00)Sys_D_T0[5]=0x99;
 932   4                                              }
 933   3      
 934   3                          if(keynum>2)
 935   3                              rowno=2;
 936   3                          else
 937   3                              rowno=0;
 938   3                          
 939   3                          change_index|=Flag[keynum];
 940   3                          Sys_D_T0[6]=Calc_Week(Sys_D_T0[5],Sys_D_T0[4],Sys_D_T0[3]);
 941   3      
 942   3                          HzDisplay(Week[Sys_D_T0[6]],0,34,0);
 943   3                                                  
 944   3                  }
 945   2                
 946   2                      }
 947   1      }
 948          
 949          //==========================================================
 950          //系统信息菜单处理,菜单序号:7
 951          //Function:     Display_SysInfo 
 952          //Description:  Display System infomation
 953          //Parameters:   NO.
 954          //Call:                 HzDisplay,Msingle_font_pattern,Display_Pic
 955          //Returns:              NO.
 956          //==========================================================
 957          void DispInfo(void)
 958          {
 959   1              uint8 kk;
 960   1                      ClearRAM(0,8);
 961   1              //版本:1.00.00
 962   1                      HzDisplay(ban,0,0,0);//版
 963   1                      HzDisplay(ben,0,16,0);//本
 964   1                      Msingle_font_pattern (mh,0,32,0);
 965   1                      Msingle_font_pattern (space1,0,40,0);
 966   1                      Msingle_font_pattern (English_Offset[VERSON[0]],0,48,0);
 967   1                      Msingle_font_pattern (Mfont_dot,0,56,0);
 968   1                      Msingle_font_pattern (English_Offset[(VERSON[1]>>4)&0x0F],0,64,0);
 969   1                      Msingle_font_pattern (English_Offset[VERSON[1]&0x0F],0,72,0);
 970   1                      Msingle_font_pattern (Mfont_dot,0,80,0);
 971   1                      Msingle_font_pattern (English_Offset[(VERSON[2]>>4)&0x0F],0,88,0);
 972   1                      Msingle_font_pattern (English_Offset[VERSON[2]&0x0F],0,96,0);
 973   1                      //-----------------------------------------------------------
 974   1                      //日期:06-05-30
 975   1                      HzDisplay(Day,2,0,0);//版
 976   1                      HzDisplay(Qi,2,16,0);//本
 977   1                      Msingle_font_pattern (mh,2,32,0);

⌨️ 快捷键说明

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