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

📄 funclcd.lst

📁 Keil C51完整的128X64LCD显示的电子打铃仪代码,内含DS1302X5045等操作代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 486   1                      for(i=0;i<len;i++)
 487   1                      {
 488   2                              HzDisplay(menuitem[i],page_y_in,startcol,flag);
 489   2                              startcol=startcol+16;
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 9   

 490   2                      }               
 491   1      }
 492          
 493          //=================================================
 494          //Function:     MainMenu_Show   
 495          //Description:  Display one System Main Menu
 496          //Parameters:   index
 497          //GOBAL Var:    Main_Menu[]
 498          //Call:                 Display_Line
 499          //Returns:              NO.
 500          //Side Effects: 
 501          //=================================================
 502          void MainMenuShow(uint8 index)
 503          {
 504   1              data uint8 i;
 505   1      
 506   1         #if MAINMENUITEMNUM>4
                      if(!First_Showmenu)
                      {
                              First_Showmenu=TRUE;
                              ClearRAM(0,8);
                      }
                 #endif
 513   1                      
 514   1              if(index<4)
 515   1              {
 516   2                      //显示第一屏主菜单
 517   2                      for(i=0;i<MENUITEMONELCD;i++)
 518   2                      {
 519   3                              if (index==i)
 520   3                                      Display_Line(i*2,32,4,1,Main_Menu[i]);
 521   3                              else
 522   3                                      Display_Line(i*2,32,4,0,Main_Menu[i]);
 523   3                      }
 524   2              }
 525   1      
 526   1              #if MAINMENUITEMNUM>4
                      else
                      {
                              //显示第二屏主菜单
                              for(i=MENUITEMONELCD;i<MAINMENUITEMNUM;i++)
                              {
                                      if (index==i)
                                              Display_Line((i-4)*2,32,4,1,Main_Menu[i]);
                                      else
                                              Display_Line((i-4)*2,32,4,0,Main_Menu[i]);
                              }
                      }
                      #endif
 539   1      }
 540          
 541          
 542          void SunMenuShow(uint8 MenuIndex)
 543          {
 544   1              uint8 i;
 545   1      
 546   1              //显示第一屏主菜单
 547   1              for(i=0;i<4;i++)
 548   1              {
 549   2                      if (MenuIndex==i)
 550   2                              Display_Line(i*2,32,4,1,Sub_Menu[i]);
 551   2                      else
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 10  

 552   2                              Display_Line(i*2,32,4,0,Sub_Menu[i]);
 553   2              }
 554   1      }
 555          
 556          
 557          //===========================================================================================
 558          //================================ 菜单功能处理函数 =========================================
 559          //===========================================================================================
 560          
 561          //系统设置
 562          void SystemSet(void)
 563          {
 564   1              uint8 KeyV,Inx=0;
 565   1              
 566   1              Delay_Ret(T0_60S);
 567   1              ClearRAM(0,8);
 568   1              
 569   1              while(1)
 570   1              {
 571   2                      SunMenuShow(Inx);
 572   2      
 573   2                      if(ret_Flag)
 574   2                      {
 575   3                              ClearRAM(0,8);
 576   3                              return;                 
 577   3                      }
 578   2      
 579   2                      KeyV=KeyScan();
 580   2      
 581   2                  if(KeyV==NOKEY_PRESS)continue;
 582   2      
 583   2                      Light_On();
 584   2                      NoDelay_Ret();
 585   2      
 586   2                      if(KeyV==ENTER)
 587   2                      {
 588   3                               ClearRAM(0,8);
 589   3      
 590   3                               if(Inx==0)
 591   3                               {
 592   4                                      LcdLightProc();
 593   4                               }
 594   3                               else if(Inx==1)
 595   3                               {
 596   4                                      BeepProc();
 597   4                               }
 598   3                               else  if(Inx==2)
 599   3                               {
 600   4                                        DelTimer();
 601   4                               }
 602   3                               else
 603   3                               {
 604   4                                       ViewTimer();
 605   4                               }
 606   3                      }
 607   2                      else if(KeyV==MOVE)
 608   2                      {
 609   3                               Inx++;
 610   3                               if(Inx>3)Inx=0;
 611   3                      }
 612   2                      else if(KeyV==ESC)
 613   2                      {
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 11  

 614   3                              ClearRAM(0,8);
 615   3                              return;
 616   3                      }
 617   2      
 618   2              }
 619   1      }
 620          
 621          //设置闹铃
 622          void WakeSetProc()
 623          {
 624   1              uint8 tempvar,Sys_D_T0[7],tempvar1;
 625   1              bool h_Flag=1,m_Flag=0;
 626   1              uint8 KeyNum=0;
 627   1      
 628   1              TimerCount=EepromRead(Timers);
 629   1              ClearRAM(0,8);
 630   1              //请输入时间:
 631   1              Display_Line(0,16,6,0,ShowTip[4]);
 632   1              //序号:
 633   1              Display_Line(4,32,3,0,ShowTip[5]);
 634   1      
 635   1              Get_TimeFromDS1302(Sys_D_T0);
 636   1              Msingle_font_pattern (mh,2,64,0);
 637   1              Delay_Ret(T0_6S);
 638   1      
 639   1              while(1)
 640   1              {
 641   2                      if (ret_Flag)
 642   2                      {
 643   3                              ClearRAM(0,8);
 644   3                              break;
 645   3                  }
 646   2                      TimerCount=EepromRead(Timers);
 647   2                      Msingle_font_pattern (English_Offset[TimerCount/10],4,88,0);
 648   2                      Msingle_font_pattern (English_Offset[TimerCount%10],4,96,0);
 649   2      
 650   2                      tempvar=(Sys_D_T0[2]>>4)&0x0F;
 651   2                      Msingle_font_pattern (English_Offset[tempvar],2,48,h_Flag);
 652   2              tempvar=Sys_D_T0[2]&0x0F;
 653   2              Msingle_font_pattern (English_Offset[tempvar],2,56,h_Flag);
 654   2                      tempvar=(Sys_D_T0[1]>>4)&0x0F;
 655   2                      Msingle_font_pattern (English_Offset[tempvar],2,72,m_Flag);
 656   2              tempvar=Sys_D_T0[1]&0x0F;
 657   2              Msingle_font_pattern (English_Offset[tempvar],2,80,m_Flag);
 658   2      
 659   2                      tempvar=KeyScan();
 660   2                      if(tempvar==NOKEY_PRESS)continue;
 661   2                      ClearRAM(6,8);
 662   2                      Light_On();
 663   2              NoDelay_Ret();
 664   2      
 665   2                      switch(tempvar)
 666   2                      {
 667   3                              case MOVE:
 668   3                                      if(KeyNum==1)
 669   3                                      {
 670   4                                              KeyNum=0;
 671   4                                      }
 672   3                                      else
 673   3                                      {
 674   4                                              KeyNum=1;
 675   4                                      }
C51 COMPILER V7.50   FUNCLCD                                                               06/10/2006 08:26:02 PAGE 12  

 676   3                                      if(KeyNum==0)
 677   3                                      {
 678   4                                              h_Flag=1;
 679   4                                              m_Flag=0;
 680   4                                      }
 681   3                                      else if(KeyNum==1)
 682   3                                      {
 683   4                                              h_Flag=0;
 684   4                                              m_Flag=1;
 685   4                                      }
 686   3                                      break;
 687   3                              case ENTER://保存闹铃
 688   3      
 689   3                                      if(EepromRead(TimerFlag)!=0x55)EepromWrite(TimerFlag,0x55);
 690   3                                      Delay(1);
 691   3                                      if(EepromRead(TimerFlag+1)!=0xAA)EepromWrite(TimerFlag+1,0xAA);
 692   3      
 693   3                                      if(TimerCount<MaxTimer)
 694   3                                      {
 695   4                                              for(tempvar1=0;tempvar1<TimerCount;tempvar1++)
 696   4                                              {
 697   5                                                      if(TimerArray[tempvar1].Hour==Sys_D_T0[2]&&TimerArray[tempvar1].Minute==Sys_D_T0[1])
 698   5                                                      {
 699   6                                                              TimerArray[tempvar1].BitEnable=0xAA;//恢复打铃
 700   6                                                              Display_Line(6,16,6,0,ShowTip[6]);//提示打铃已设置
 701   6                                                              Status_Beep();
 702   6                                                              goto ExitSet;
 703   6                                                      }
 704   5                                              }                               
 705   4                                              tempvar=TimerValue+TimerCount*3;
 706   4                                              EepromWrite(tempvar,0xAA);
 707   4                                              Delay(1);
 708   4                                              EepromWrite(tempvar+1,Sys_D_T0[2]);
 709   4                                              Delay(1);
 710   4                                              EepromWrite(tempvar+2,Sys_D_T0[1]);
 711   4                                              _NOP_();
 712   4                                              TimerArray[tempvar1].BitEnable=0xAA;//                                    EepromRead(tempvar);//
 713   4                                              TimerArray[tempvar1].Hour=Sys_D_T0[2];//                                                  EepromRead(tempvar+1);//
 714   4                                              TimerArray[tempvar1].Minute=Sys_D_T0[1];//                                              EepromRead(tempvar+2);//
 715   4                                              TimerCount++;
 716   4                                              EepromWrite(Timers,TimerCount);
 717   4                                      }
 718   3                                      else
 719   3                                      {//找已删除的点位置
 720   4                                              for(tempvar1=0;tempvar1<TimerCount;tempvar1++)
 721   4                                              {
 722   5                                                      if(TimerArray[tempvar1].BitEnable!=0xAA)
 723   5                                                      {
 724   6                                                              TimerArray[tempvar1].BitEnable=0xAA;
 725   6                                                              TimerArray[tempvar1].Hour=Sys_D_T0[2];
 726   6                                                              TimerArray[tempvar1].Minute=Sys_D_T0[1];
 727   6                                                              tempvar=TimerValue+TimerCount*3;
 728   6                                                              EepromWrite(tempvar1,0xAA);
 729   6                                                              Delay(1);
 730   6                                                              EepromWrite(tempvar1+1,Sys_D_T0[2]);
 731   6                                                              Delay(1);

⌨️ 快捷键说明

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