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

📄 menu4.c

📁 多路数据采集 +lcd +菜单功能显示 max485通信
💻 C
📖 第 1 页 / 共 2 页
字号:

                    eepwrite(c/256,c%256,adtemp[0][a].adl);
                    temp[a].adl=adtemp[0][a].adl;
                    check();

                    c++;
                    c=c%0x7fef;


                    eepwrite(c/256,c%256,adtemp[0][a].adig);
                    temp[a].adig=adtemp[0][a].adig;
                    check();
                    c++;
                    c=c%0x7fef;
               }

             }




            address=0;
            ms50=0;

          }

      }



}

void serial() interrupt 4   //串行中断 接收数据
{

//读回来的数据还没有保存到eeprom
    uchar ud=0;
    if(TI==1)
       ;
    else
    { if(RI==1)
       {


             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;
                    }
                    else
                      err++;

                      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 disfill(uchar adr,uchar lcd_dis[8],uchar u0,uchar u1,uchar u2,uchar u3,uchar u4,uchar u5,uchar u6,uchar u7)
{

   uchar ki;
   write(adr,0);
   for(ki=0;ki<8;ki++)
     write(lcd_dis[ki],1);
     write(u0,1);
     write(u1,1);
     write(u2,1);
     write(u3,1);
     write(u4,1);
     write(u5,1);
     write(u6,1);
     write(u7,1);



}


void his_read(void)
{      uchar i,j;
                       ET0=0;
                      if (point2>=0x78)
                          n=(point2-0x78);
                      else
                          n=0x7fef-(0x78-point2);
                     for(i=0;i<=9;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;
}


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



//***********************************************************************************//
    {     //一般的初始化
      SP=0xdd;
      con=0;         //  开液晶屏
      cs=1;          //  iic eeprom 有效
      delay6ms(50);
      disinit();
    }    //液晶显示初始化
    /*
      strcpy(dis,"系统初始化中....");
      write(0x90,0);
      for(i=0;i<16;i++)
      write(dis[i],1);
      */     // 一般的初始化结束

     //delay6ms(200);
    // eepwrite(0x00,0x00,0x56);
    // check();
    // n=eepread(0x00,0x00);

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

     //point1=(point2-0x78)%0x7fef;
     if (point2>=0x78)
       n=(point2-0x78);
     else
       n=0x7fef-(0x78-point2);

      his_read();




      maxinit();//总线485通信初始化




     state=0;
     while(1)
       {  //ms2=1;
          //switch(state)
          {//0 主界面
           if(state==0)
           {

              goback(0x80," 8: 激活状态    ");//80 qing pin 空行
              goback(0x90," 9: 睡眠模式    ");
              goback(0x88,"10: 实时监控    ");
              goback(0x98,"11: 历史浏览    ");

              led=key();
                           
                if(led==10)
                  { 
                    state=1;   // jin ru 实时监控界面
                   
                  }
                else        //else2
                 {
                   if(led==11)
                     {
                    
                      state=2;//进入选择历史点数据界面
                    
                     }
                    else
                     if(led==9)
                       { 
                        
                        con=1;
                       
                       }
                       else
                          if(led==8)
                             {
                             
                               con=0;
                             }
                               
                   } //else 2
                 
              }   //else state
              
              
            if(state==1)                   //实时监控里面的选择界面
              {
                   goback(0x80,"                ");//80 qing pin 空行
                   goback(0x90,"9:  轮流显示    ");
                   goback(0x88,"10: 可选显示    ");
                   goback(0x98,"11: 返回上级    ");


                   led=key();

                   if(led==9)
                      {  
                         i=0;
                         state=3;  //实时监控里面的轮流显示界面
                         
                      }
                    else
                      {     //else1
                        if(led==10)
                          {
                           
                            mulb=0;
                            state=4;//实时监控里面的固定显示界面
                           
                           }
                         else  //else2
                           {
                           if(led==11)
                              {
                                
                                 state=0;    //返回上级
                                
                              }
                           
                           } //else2
                     }      //else1

                 }        //if state
              if(state==2)          //选择那一点的历史数据界面
                {


                     goback(0x80,"请选择下面历史点");//80 qing pin 空行
                     goback(0x90,"0  1  2  3  4   ");
                     goback(0x88,"5  6  7  8  9   ");
                     goback(0x98,"11: 返回上级    ");
                    led=key();
                    if(led==0xff||led==10)    //返回
                       {
                        ;//led=0xff;
                       
                       }
                    else
                      if(led==11)      //返回上级
                      {  
                         state=0;
                         
                      }
                      else
                        {              //把选择的数带过去
                          mulk=led;
                                                
                          state=5;// 进入另一界面来选择固定或者轮流显示
                                                                         
                        }
                      
                  } // if state==2
              if(state==3)
                      //实时监控轮流显示
              {

                     if(ms2==1)
                      {
                        ms2=0;

                        disfill(0x80,lcd15,0x30+i,0x20,0x20,0x20,0x20,0x20,0x20,0x20);


                        disfill(0x90,lcd16,temp[i].adh/10+0x30,'.',temp[i].adh%10+0x30,temp[i].adl/10+0x30,temp[i].adl%10+0x30,'(','V',')');


                        disfill(0x88,lcd17,0x30+temp[i].adig,0x20,0x20,0x20,0x20,0x20,0x20,0x20);



                        goback(0x98,"11: 返回上级    ");




                        i++;
                        i=i%4;
                      }          // ms2
                     led=key();
                     if(led==11)
                      { state=1;
                       
                      }
                      
               }        // if state==3
               if(state==4)
                 {     if(ms2==1)
                      {
                        ms2=0;

                        disfill(0x80,lcd15,0x30+mulb,0x20,0x20,0x20,0x20,0x20,0x20,0x20);


                        disfill(0x90,lcd16,temp[mulb].adh/10+0x30,'.',temp[mulb].adh%10+0x30,temp[mulb].adl/10+0x30,temp[mulb].adl%10+0x30,'(','V',')');




                        disfill(0x88,lcd17,0x30+temp[mulb].adig,0x20,0x20,0x20,0x20,0x20,0x20,0x20);


                        goback(0x98,"号: 0~3 返回:11 ");


                      }           // ms2
                     led=key();
                     if(led==11)
                      { state=1;
                        
                       }
                       else
                          if(led==0||led==1||led==2||led==3)
                           {
                             mulb=led;
                            
                           }
                          
                 }
              if(state==5)
                {

                     goback(0x80,"8:更新历史数据  ");//80 qing pin 空行
                     goback(0x90,"9:  轮流显示    ");
                     goback(0x88,"10: 可选显示    ");
                     goback(0x98,"11: 返回上级    ");

                   led=key();
                   if(led==8)
                     {
                        his_read();

                      

                    /*
                   
                      for(i=0;i<3;i++)
                       {

                        goback(0x80,"恭喜^_^ 成功更新");
                        delay6ms(250);
                        delay6ms(250);
                        delay6ms(250);

                        goback(0x80,"                ");
                        delay6ms(250);
                        delay6ms(250);
                        delay6ms(250);


                       }

                       goback(0x80,"8:更新历史数据  ");
                      */
                     }
                   else  
                    if(led==9)
                      {  
                         i=0;
                         state=6;  //历史数据里面的轮流显示界面
                        
                      }
                    else
                       if(led==10)
                        { 
                          mulb=0;
                          state=7;//历史数据里面的固定显示界面
                         
                        }
                        else
                          if(led==11)
                          {
                            
                            state=2;
                           

                          }
                
                }
               if(state==6)    //lun liu xian shi
                 {
                    if(ms2==1)
                      {
                        ms2=0;

                        disfill(0x80,lcd15,0x30+i,0x20,0xc0,0xfa,0xca,0xb7,':',0x30+mulk);


                        disfill(0x90,lcd16,addate[mulk][i].adh/10+0x30,'.',addate[mulk][i].adh%10+0x30,addate[mulk][i].adl/10+0x30,addate[mulk][i].adl%10+0x30,'(','V',')');



                        disfill(0x88,lcd17,0x30+addate[mulk][i].adig,0x20,0x20,0x20,0x20,0x20,0x20,0x20);


                        goback(0x98,"11: 返回上级    ");

                        i++;
                        i=i%4;
                      }
                     led=key();
                     if(led==11)
                      { state=5;
                        
                      
                       }
        
                }
               if(state==7)
                     if(ms2==1)
                      {
                        ms2=0;

                        disfill(0x80,lcd15,0x30+mulb,0x20,0xc0,0xfa,0xca,0xb7,':',0x30+mulk);


                        disfill(0x90,lcd16,addate[mulk][mulb].adh/10+0x30,'.',addate[mulk][mulb].adh%10+0x30,addate[mulk][mulb].adl/10+0x30,addate[mulk][mulb].adl%10+0x30,'(','V',')');



                        disfill(0x88,lcd17,0x30+addate[mulk][mulb].adig,0x20,0x20,0x20,0x20,0x20,0x20,0x20);


                        goback(0x98,"号: 0~3 返回:11 ");


                      }
                     led=key();
                     if(led==11)
                      { state=5;
                       
                      }
                       else
                          if(led==0||led==1||led==2||led==3)
                           {
                             mulb=led;
                             
                           }
                         

           } //switch
       }  // while

}//main

⌨️ 快捷键说明

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