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

📄 menu.c

📁 多路数据采集 +lcd +菜单功能显示 max485通信
💻 C
📖 第 1 页 / 共 2 页
字号:
    uchar ud=0;
    if(TI==1)
       ;
    else
    { if(RI==1)
       {
          // qi++;

             switch(qi)
             {
               case 0:
                    adtemp[0][address].adh=SBUF;   //这里应该与上一个数
                    qi++;
                    se=0;
                    break;
               case 1:
                    adtemp[0][address].adl=SBUF;
                    se=0;
                     qi++;
                    break;
               case 2:
                    adtemp[0][address].adig=SBUF;
                    se=0;
                    qi++;
                    break;
               case 3:
                    ud=SBUF;
                    if(adtemp[0][address].adh+adtemp[0][address].adl+adtemp[0][address].adig==ud)
                    {
                       se=1;
                       ms6=1;
                       qi=0;
                    }






                    break;
             }


      RI=0;



        }



    }

}

void goback(uchar addr,uchar lcd[16])
{     uchar i;

      write(addr,0);
      for(i=0;i<16;i++)
      write(lcd[i],1);
}


void lcdwr(uchar addr,uchar lcd0[8],uchar lcdv[8])
{     uchar i;
       
      write(addr,0);
      for(i=0;i<16;i++)
      {
         if(i<8)
            write(lcd0[i],1);
         else
            write(lcdv[i-8],1);
      }
     
      
}



void main(void)
{    uchar i,j,led,mul;
     uint n;



//***********************************************************************************//
    {     //一般的初始化
      SP=0xdd;
      con=0;         //  开液晶屏
      cs=1;          //  iic eeprom 有效
      delay(100);
      disinit();     //液晶显示初始化

      write(0x90,0);
      for(i=0;i<16;i++)
      write(lcd12[i],1);
     }      // 一般的初始化结束

     delay6ms(100);
     point2=eepread(0x7f,0xff);
     point2<<=8;
     point2=point2|eepread(0x7f,0xfe);

     point1=(point2-0x78)%0x7fef;


     which=eepread(0x7f,0xfb); //读出上次掉电前转换的是哪一路
     select=eepread(0x7f,0xfa);//读出上次掉电前是什么模式



     pause=eepread(0x7f,0xf8);  //初始值可以写进去

     n=point1;

//****************************************读出数据最后一次写入的10点数据***********************************//

       for(i=0;i<3;i++)
       for(j=0;j<4;j++)
          {

            addate[i][j].adh=eepread(n/256,n%256);
            n++;
            n=n%0x7fef;

            addate[i][j].adl=eepread(n/256,n%256);
            n++;
            n=n%0x7fef;
            addate[i][j].adig=eepread(n/256,n%256);
            n++ ;
            n=n%0x7fef;
          }

       for(i=7;i<14;i++)
       for(j=0;j<4;j++)
          {

            addate[i][j].adh=eepread(n/256,n%256);
            n++;
            n=n%0x7fef;

            addate[i][j].adl=eepread(n/256,n%256);
            n++;
            n=n%0x7fef;
            addate[i][j].adig=eepread(n/256,n%256);
            n++ ;
            n=n%0x7fef;
          }


           maxinit();//总线485通信初始化
           ET0=1;   //定时器0中断关掉
           TR0=1;
           IE0=0;
           EX0=1;    //kai wai bu zhong duan
           select=1;
           pause=0;
           mul=which;  //显示上次显示的路


     state=0;
     while(1)
       {  //ms2=1;
          switch(state)
          {//0 主界面
           case 0:
              goback(0x80,lcd20);//80 qing pin 空行
              goback(0x90,lcd0); //实时监控
              goback(0x88,lcd8);  //历史浏览
              goback(0x98,lcd9); //空行
              led=key();
              if(led==0xff)
                 break;
              else
              
              {
                if(led==10)
                  { led=0xff;
                    state=1;   // jin ru 实时监控界面
                    break;
                  }
                else
                 {
                   if(led==11)
                     {
                      led=0xff;
                      state=2;//进入选择历史点数据界面
                      break;
                     }
                     if(led==9)
                       { led=0xff;
                        //IE0=1;
                        con=1;
                        break;
                       }
                       else
                          if(led==8)
                             {
                               led=0xff;
                               con=0;
                             }
                                else
                                   break;
                 }  
              }
            case 1:                   //实时监控里面的选择界面
                   goback(0x80,lcd7);  //空行
                   goback(0x90,lcd10); //轮流显示
                   goback(0x88,lcd11);  //可选显示
                   goback(0x98,lcd4);   //返回上级
                   
                   led=key();
                   
                   if(led==9)
                      {  led=0xff;
                         i=0;
                         state=3;  //实时监控里面的轮流显示界面
                         break;
                      }
                    else
                      {
                        if(led==10)
                          {
                            led=0xff;
                            mulb=0;
                            state=4;//实时监控里面的固定显示界面
                            break;
                           }
                         else
                           {
                           if(led==11)
                              {
                                 led=0xff;
                                 state=0;    //返回上级
                                 break;
                              }
                            else                             

                                break;
                            }   
                     } 
              case 2:          //选择那一点的历史数据界面
                    goback(0x80,lcd13);
                    goback(0x90,lcd6);
                    goback(0x88,lcd14);
                    goback(0x98,lcd4);
                    led=key();
                    if(led==0xff||led==10)    //返回
                       {
                        led=0xff;
                        break;
                       }
                    else
                      if(led==11)      //返回上级
                      {  led=0xff;
                         state=0;
                         break;
                      }
                      else

                        {              //把选择的数带过去
                          mulk=led;
                          led=0xff;
                          state=5;// 进入另一界面来选择固定或者轮流显示

                         

                          break;
                        }
                        break;
               case 3:        //实时监控轮流显示
                    

                     if(ms2==1)
                      {
                        ms2=0;
                        dis[0]=0x30+i;
                        //dis[0]=0x20;
                        dis[1]=0x20;
                        dis[2]=0x20;
                        dis[3]=0x20;
                        dis[4]=0x20;
                        dis[5]=0x20;
                        dis[6]=0x20;
                        dis[7]=0x20;
                       
                        lcdwr(0x80,lcd15,dis);
                        
                        dis[0]=temp[i].adh/10+0x30;
                        dis[1]='.';
                        dis[2]=temp[i].adh%10+0x30;
                        dis[3]=temp[i].adl/10+0x30;
                        dis[4]=temp[i].adl%10+0x30;
                        dis[5]='(';
                        dis[6]='V';
                        dis[7]=')';
                        lcdwr(0x90,lcd16,dis);
                        dis[0]=0x30+temp[i].adig;
                        //dis[0]=' ';
                        dis[1]=' ';
                        dis[2]=' ';
                        dis[3]=' ';
                        dis[4]=' ';
                        dis[5]=' ';
                        dis[6]=' ';
                        dis[7]=' ';
                        lcdwr(0x88,lcd17,dis);
                        goback(0x98,lcd4);
                       
                        i++;
                        i=i%4;
                      }
                     led=key();
                     if(led==11)
                      { state=1;
                        led=0xff;
                        break;
                       }
                       else
                         break;
               case 4:
                      if(ms2==1)
                      {
                        ms2=0;
                        dis[0]=0x30+mulb;
                        //dis[0]=' ';
                        dis[1]=' ';
                        dis[2]=' ';
                        dis[3]=' ';
                        dis[4]=' ';
                        dis[5]=' ';
                        dis[6]=' ';
                        dis[7]=' ';
                        //dis[]=temp[i].adg+0x30;
                        lcdwr(0x80,lcd15,dis);
                        dis[0]=temp[mulb].adh/10+0x30;
                        dis[1]='.';
                        dis[2]=temp[mulb].adh%10+0x30;
                        dis[3]=temp[mulb].adl/10+0x30;
                        dis[4]=temp[mulb].adl%10+0x30;
                        dis[5]='(';
                        dis[6]='V';
                        dis[7]=')';
                        lcdwr(0x90,lcd16,dis);
                        dis[0]=0x30+temp[mulb].adig;
                        //dis[0]=' ';
                        dis[1]=' ';
                        dis[2]=' ';
                        dis[3]=' ';
                        dis[4]=' ';
                        dis[5]=' ';
                        dis[6]=' ';
                        dis[7]=' ';
                        lcdwr(0x88,lcd17,dis);
                        goback(0x98,lcd5);


                      }
                     led=key();
                     if(led==11)
                      { state=1;
                        led=0xff;
                        break;
                       }
                       else
                          if(led==0||led==1||led==2||led==3)
                           {
                             mulb=led;
                             led=0xff;
                             break;
                           }
                           else
                              {
                                led=0xff;
                                break;
                             }
              case 5:
                   goback(0x80,lcd18);
                   goback(0x90,lcd10);
                   goback(0x88,lcd11);
                   goback(0x98,lcd4);
                   led=key();
                   if(led==8)
                     {
                         ET0=0;
                      n=point1;
                     for(i=0;i<3;i++)
                            for(j=0;j<4;j++)
                        { // addate[10][4];

                        addate[i][j].adh=eepread(n/256,n%256);
                        n++;
                        n=n%0x7fef;

                        addate[i][j].adl=eepread(n/256,n%256);
                        n++;
                        n=n%0x7fef;
                        addate[i][j].adig=eepread(n/256,n%256);
                        n++ ;
                        n=n%0x7fef;
                        }

                       for(i=7;i<14;i++)
                       for(j=0;j<4;j++)
                       {

                        addate[i][j].adh=eepread(n/256,n%256);
                        n++;
                        n=n%0x7fef;

                        addate[i][j].adl=eepread(n/256,n%256);
                        n++;
                        n=n%0x7fef;
                        addate[i][j].adig=eepread(n/256,n%256);
                        n++ ;
                        n=n%0x7fef;
                        }

                       ET0=1;
                       
                       led=0xff;
                       
                       
                       for(i=0;i<2;i++)
                       {
                       
                        goback(0x80,lcd19);
                        delay(250);
                        delay(250);
                        delay(250);
                        goback(0x80,lcd7);
                        delay(250);
                        delay(250);
                        delay(250);
                        
                       } 
                       goback(0x80,lcd18);
                     }
                   if(led==9)
                      {  led=0xff;
                         i=0;
                         state=6;  //历史数据里面的轮流显示界面
                         break;
                      }
                    else
                       if(led==10)
                        { led=0xff;
                          mulb=0;
                          state=7;//历史数据里面的固定显示界面
                          break;
                        }
                        else
                          if(led==11)
                          {
                            led=0xff;
                            state=2;
                            break;

                          }
                  break;        
               case 6:    //lun liu xian shi

                    if(ms2==1)
                      {
                        ms2=0;
                        dis[0]=0x30+i;
                      
                        dis[1]=0x20;//'p';
                        dis[2]=0xc0;//'o';
                        dis[3]=0xfa;//'i';
                        dis[4]=0xca;//'n';
                        dis[5]=0xb7;//'t';
                        dis[6]=':';
                        dis[7]=0x30+mulk;
                       
                        lcdwr(0x80,lcd15,dis);
                        dis[0]=addate[mulk][i].adh/10+0x30;
                        dis[1]='.';
                        dis[2]=addate[mulk][i].adh%10+0x30;
                        dis[3]=addate[mulk][i].adl/10+0x30;
                        dis[4]=addate[mulk][i].adl%10+0x30;
                        dis[5]='(';
                        dis[6]='V';
                        dis[7]=')';
                        lcdwr(0x90,lcd16,dis);
                        dis[0]=0x30+addate[mulk][i].adig;
                      
                        dis[1]=' ';
                        dis[2]=' ';
                        dis[3]=' ';
                        dis[4]=' ';
                        dis[5]=' ';
                        dis[6]=' ';
                        dis[7]=' ';
                        lcdwr(0x88,lcd17,dis);
                        goback(0x98,lcd4);
                       
                        i++;
                        i=i%4;
                      }
                     led=key();
                     if(led==11)
                      { state=5;
                        led=0xff;
                        break;
                       }
                       else
                         break;
                    ;
                    
                    break;
               case 7:
                     if(ms2==1)
                      {
                        ms2=0;
                        dis[0]=0x30+mulb;
                      
                       //dis[0]=0x30+i;
                      
                        dis[1]=0x20;//'p';
                        dis[2]=0xc0;//'o';
                        dis[3]=0xfa;//'i';
                        dis[4]=0xca;//'n';
                        dis[5]=0xb7;//'t';
                        dis[6]=':';
                        dis[7]=0x30+mulk;
                        
                        
                        lcdwr(0x80,lcd15,dis);
                        dis[0]=addate[mulk][mulb].adh/10+0x30;
                        dis[1]='.';
                        dis[2]=addate[mulk][mulb].adh%10+0x30;
                        dis[3]=addate[mulk][mulb].adl/10+0x30;
                        dis[4]=addate[mulk][mulb].adl%10+0x30;
                        dis[5]='(';
                        dis[6]='V';
                        dis[7]=')';
                        lcdwr(0x90,lcd16,dis);
                        dis[0]=0x30+addate[mulk][mulb].adig;
                       
                        dis[1]=' ';
                        dis[2]=' ';
                        dis[3]=' ';
                        dis[4]=' ';
                        dis[5]=' ';
                        dis[6]=' ';
                        dis[7]=' ';
                        lcdwr(0x88,lcd17,dis);
                        goback(0x98,lcd5);
                        
                        
                      }
                     led=key();
                     if(led==11)
                      { state=5;
                        led=0xff;
                        break;
                       }
                       else
                          if(led==0||led==1||led==2||led==3)
                           {
                             mulb=led;
                             led=0xff;
                             break;
                           }
                           else
                              {
                                led=0xff;
                                break;
                             }
                             break;

           } //switch
       }  // while

}//main

⌨️ 快捷键说明

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