📄 funclcd.lst
字号:
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 + -