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

📄 main.c

📁 C51单片机16*2LCD显示驱动程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                                             {
                                              State_temp=State;
                                              State=MENUMODIFY;
                                              MenuShow(State);
                                              break;
                                             }
                                           else                   // No modify
                                             {                                              
                                              State=MENUSELALARM;
                                              MenuShow(State);
                                              break;
                                             }
                                 case MOVECURSOR:
                                           SetPoint++;
                                           Xpos++;
                                           if(Xpos==15)
                                             {Xpos=13;SetPoint=0;}
                                           LcdMoveCursor(Xpos,Ypos);
                                           break;
                                 case INCREASE:SetCompare(State);
                                           LcdDisBuf1[SetPoint]++;
                                           if(LcdDisBuf1[SetPoint]>Max_temp)
                                             LcdDisBuf1[SetPoint]=Min_temp;
                                           ACC_temp=LcdDisBuf1[SetPoint]|0x30;
                                           LcdUpdateBit(Xpos,Ypos,ACC_temp); 
                                           LcdMoveCursor(Xpos,Ypos);
                                           break;
                                 default:  MenuShow(State);break;
                                }
                          break;

            case MENUSELALARM:
                          switch(KeyValue)
                                {
                                 case NEXT:State=MENUMAIN;MenuShow(State);break;

                                 case TURNON:AlarmSwitch=ON;State=MENUSETALARM;MenuShow(State);break;

                                 case TURNOFF:AlarmSwitch=OFF;State=MENUMAIN;MenuShow(State);break;

                                 default:  MenuShow(State);break; 
                                }
                          break; 

            case MENUSETALARM:
                          switch(KeyValue)
                                {
                                 case NEXT:
                                           if(CompareModify())    // Yes modify
                                             {
                                              State_temp=State;
                                              State=MENUMODIFY;
                                              MenuShow(State);
                                              break;
                                             }
                                           else                   // No modify
                                             {                                              
                                              State=MENUMAIN;
                                              MenuShow(State);
                                              break;
                                             }        
                                 case MOVECURSOR:
                                           SetPoint++;
                                           Xpos++;
                                           if(Xpos==13)
                                             {Xpos=14;}
                                           if(Xpos==16)
                                             {Xpos=11;SetPoint=0;}
                                           LcdMoveCursor(Xpos,Ypos);
                                           break;
                                 case INCREASE:
                                           SetCompare(State);
                                           LcdDisBuf1[SetPoint]++;
                                           if(LcdDisBuf1[SetPoint]>Max_temp)
                                             LcdDisBuf1[SetPoint]=Min_temp;
                                           ACC_temp=LcdDisBuf1[SetPoint]|0x30;
                                           LcdUpdateBit(Xpos,Ypos,ACC_temp); 
                                           LcdMoveCursor(Xpos,Ypos);
                                           break;   
                                 default:  MenuShow(State);break; 
                                }
                          break;
         
            case MENUMODIFY:
                          switch(KeyValue)
                                {           
                                 case RETURN:
                                           State=State_temp;MenuShow(State);break; // retrun without save
                                 case SAVE:State=State_temp;                       // save and return
                                           SaveModify(State);
                                           State_temp=State;
                                           State=MENUSAVEOK;
                                           MenuShow(State);
                                           Beep=0;
                                           delayXms(500);
                                           Beep=1;
                                           State=State_temp+1;
                                           if(State>MENUSETALARM)
                                             State=MENUMAIN; 
                                           MenuShow(State);break; 
                                 case EXIT:State=MENUMAIN;MenuShow(State);break;   // back to the MainMenu withour save 
                                 default:  MenuShow(State);break; 
                                }
                          break;


            case MENUDISABLEALARM:
                          switch(KeyValue)
                                {
                                 case NEXT:AlarmRunning=OFF;Beep=1;State=State_temp;MenuShow(State);break; 
                                 case MOVECURSOR:
                                           AlarmRunning=OFF;Beep=1;State=State_temp;MenuShow(State);break;
                                 case INCREASE:
                                           AlarmRunning=OFF;Beep=1;State=State_temp;MenuShow(State);break;
                                 default:  MenuShow(State);break; 
                                }
                          break;

                         

            case MENUSAVEOK:MenuShow(State);break; 
           }

     //  以下为循环检测按键和软中断,若有软中断或者按键按下则跳出for(;;),然后回到上面的while(1)
      
      for(;;)
        {
         if(IRQ==1)
           {
            KeyValue=0;IRQ=0;TickMainMenu=2400;break;                                 
           }
         if(KEY1==0)
           {
            delayXms(30);
            if(KEY1==0)
              {
               Beep=BEEPON;
               delayXms(30);
               Beep=BEEPOFF;
               while(!KEY1);
               KeyValue=NEXT;
               Lcd_led=LEDON;
               TickBackLight=200;
               TickMainMenu=2400;
               break;
              }
           }
         if(KEY2==0)
           {
            delayXms(30);
            if(KEY2==0)
              {
               Beep=BEEPON;
               delayXms(30);
               Beep=BEEPOFF;
               while(!KEY2);
               KeyValue=MOVECURSOR;
               Lcd_led=LEDON;
               TickBackLight=200;
               TickMainMenu=2400;
               break;
              }
           } 
         if(KEY3==0)
           {
            delayXms(30);
            if(KEY3==0)
              {
               Beep=BEEPON;
               delayXms(30);
               Beep=BEEPOFF;
               while(!KEY3);
               KeyValue=INCREASE;
               Lcd_led=LEDON;
               TickBackLight=200;
               TickMainMenu=2400;
               break;
              }
           } 
        }
        //返回while(1)        
    }
}




⌨️ 快捷键说明

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