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

📄 modify.c

📁 24位AD压力实验板 protell99se打开
💻 C
字号:

 Press_Adjust_state=ReadWord(Adjust_state);
 // Press_Adjust_state=2;
  if(Press_Adjust_state==0x01)
    {    
    PGA_Plus=ReadWord(AD_PGA_Plus);
    PGA_Plus=ADS1240_GAIN_8;
    //=============================================
    //读取零点校正值
    //=============================================
    for(i=0;i<4;i++)
    {
      char_bar[i]=ReadWord(Press_Zero+i);     
     // Zero_data=ReadWord(Press_Zero);    
    }
    Zero_data=0;
    Zero_data=(Zero_data+(unsigned long)char_bar[3])<<8;
    Zero_data=(Zero_data+(unsigned long)char_bar[2])<<8;
    Zero_data=(Zero_data+(unsigned long)char_bar[1])<<8;
    Zero_data=(Zero_data+(unsigned long)char_bar[0]);    
    for(i=0;i<4;i++)
    {
      char_bar[i]=ReadWord(Press_Zero_Sampling_AD+i);       
    }
    Zero_Sampling_AD=0;
    Zero_Sampling_AD=(Zero_Sampling_AD+(unsigned long)char_bar[3])<<8;
    Zero_Sampling_AD=(Zero_Sampling_AD+(unsigned long)char_bar[2])<<8;
    Zero_Sampling_AD=(Zero_Sampling_AD+(unsigned long)char_bar[1])<<8;
    Zero_Sampling_AD=(Zero_Sampling_AD+(unsigned long)char_bar[0]);
    //Initial_Resistance=(float)Zero_Sampling_AD/16;
    //Initial_Resistance=Initial_Resistance*3000;
  //  Initial_Resistance=Initial_Resistance/16777216;
    
    
    //=============================================
    //读取满程校正值
    //=============================================    
    for(i=0;i<4;i++)
    {
      char_bar[i]=ReadWord(Press_Most+i);     
     // Zero_data=ReadWord(Press_Zero);    
    }
    Most_data=0;
    Most_data=(Most_data+(unsigned long)char_bar[3])<<8;
    Most_data=(Most_data+(unsigned long)char_bar[2])<<8;
    Most_data=(Most_data+(unsigned long)char_bar[1])<<8;
    Most_data=(Most_data+(unsigned long)char_bar[0]);
    
    
    for(i=0;i<4;i++)
    {
      char_bar[i]=ReadWord(Press_Most_Sampling_AD+i);       
    }
    Most_Sampling_AD=0;
    Most_Sampling_AD=(Most_Sampling_AD+(unsigned long)char_bar[3])<<8;
    Most_Sampling_AD=(Most_Sampling_AD+(unsigned long)char_bar[2])<<8;
    Most_Sampling_AD=(Most_Sampling_AD+(unsigned long)char_bar[1])<<8;
    Most_Sampling_AD=(Most_Sampling_AD+(unsigned long)char_bar[0]);
    //k=((float)(Most_Sampling_AD-Zero_Sampling_AD))/16;
    //k=k*3000;
   // k=k/16777216;
    //Zero_Most_k=(Most_data-Zero_data)/k;
   // Zero_Most_Revise_Flag=1; 
    //=============================================
    //读取满程校正值
    //=============================================   
    Most_decimal_num=ReadWord(Press_Most_decimal);
    //=============================================
    //读取线性校正值数量
    //=============================================
    line_modify_num=ReadWord(Press_line_modify_num);
    //=============================================
    //读取线性校正值
    //=============================================
 for(i=0;i<line_modify_num;i++)    
 {
   for(j=0;j<4;j++)
    {
      char_bar[j]=ReadWord(Press_Standard+i*8+j);     
     // Zero_data=ReadWord(Press_Zero);    
    }
    Standard_Press[i]=0;
    Standard_Press[i]=(Standard_Press[i]+(unsigned long)char_bar[3])<<8;
    Standard_Press[i]=(Standard_Press[i]+(unsigned long)char_bar[2])<<8;
    Standard_Press[i]=(Standard_Press[i]+(unsigned long)char_bar[1])<<8;
    Standard_Press[i]=(Standard_Press[i]+(unsigned long)char_bar[0]);
    for(j=0;j<4;j++)
    {
      char_bar[j]=ReadWord(Press_Measure+i*8+j);     
     // Zero_data=ReadWord(Press_Zero);    
    }
    Measure_Press[i]=0;
    Measure_Press[i]=(Measure_Press[i]+(unsigned long)char_bar[3])<<8;
    Measure_Press[i]=(Measure_Press[i]+(unsigned long)char_bar[2])<<8;
    Measure_Press[i]=(Measure_Press[i]+(unsigned long)char_bar[1])<<8;
    Measure_Press[i]=(Measure_Press[i]+(unsigned long)char_bar[0]);
 }   
    
    
    Most_Flag=ReadWord(Press_Most_Flag);   
    }
  else
    {//各参数的默认值
    PGA_Plus=ADS1240_GAIN_8;
    Zero_data=0x00;
    Most_data=0xbb8;//3000
    Most_decimal_num=0x04;
    line_modify_num=0x00;
    Most_Flag=0x00;
    }


























//校正模式   
//========================================================================================
//校正密码验证 
//========================================================================================
    LCD_NUM=6;
    /*if(!password_ok_flag)
       Password_check(); */      
     rest_LCD_data();
     Zero_modify_ok=0;
     key_data=0;
//========================================================================================
// 零点校正
//========================================================================================
   Zero_Most_Revise_Flag=0;
   Open_WatchDog();     
   while(!Zero_modify_ok)
   {
      init_port();  
      En_key_INT();
     _BIS_SR(LPM3_bits + GIE);               // Enter LPM3   
     _NOP();
     _NOP();
     if(key_data==0x01)
         Zero_modify_ok=1;
     if(ad_flag==1)
     {
       Show_AD_Data(); //ad1240  
        ad_flag=0;
     }         
   }  
   Close_WatchDog();
   Zero_Sampling_AD=ad1240;
   Save_AD_Data(&Zero_Sampling_AD,Press_Zero_Sampling_AD);
   //Initial_Resistance=(float)Zero_Sampling_AD/PGA_Plus;
  // Initial_Resistance=Initial_Resistance*3000;
 //  Initial_Resistance=Initial_Resistance/16777216;
   key_data=0;
   Zero_modify_ok=0;
   rest_LCD_data();
   set_lcd_out(); 
   while(!Zero_modify_ok)    
     { 
      Zero_modify_ok=get_key_bar(LCD_Key_bar);       
     } 
   Save_key_data(&Zero_data,Press_Zero);
   rest_LCD_data();   
//========================================================================================
// 满程校正
//======================================================================================== 
   Most_modify_ok=0;
   Open_WatchDog();     
   while(!Most_modify_ok)
   {
      init_port();  
      En_key_INT();
     _BIS_SR(LPM3_bits + GIE);               // Enter LPM3   
     _NOP();
     _NOP();
     if(key_data==0x01)
         Most_modify_ok=1;
     if(ad_flag==1)
     {
       Show_AD_Data(); //ad1240  
        ad_flag=0;
     }         
   }    
   Close_WatchDog(); 
   Most_Sampling_AD=ad1240;
   Save_AD_Data(&Most_Sampling_AD,Press_Most_Sampling_AD);   
   rest_LCD_data();
   key_data=0;
   Most_modify_ok=0;
   set_lcd_out();
   while(!Most_modify_ok)// 满程校正
    {
       Most_modify_ok=get_key_bar(LCD_Key_bar);       
    }
  Save_key_data(&Most_data,Press_Most);    
  rest_LCD_data();
 // k=((float)(Most_Sampling_AD-Zero_Sampling_AD))/16;
 // k=k*3000;
  //k=k/16777216;
 // Zero_Most_k=(Most_data-Zero_data)/k;
  Zero_Most_Revise_Flag=1;  
  Dis_key_INT();
  WriteWord(Zero_Most_Revise_Flag,Zero_Most_modify);
  En_key_INT();  
//========================================================================================
// 线性校正点个数
//========================================================================================     
 rest_LCD_data();  
 line_modify_ok=0;
 LCD_NUM=2;
 DisplayNum(5,0,0,1);
 DisplayNum(6,0,0,1);
 DisplayNum(3,0,0,1);
 DisplayNum(4,0,0,1);
  while(!line_modify_ok)// 满程校正
    { 
  line_modify_ok=get_key_bar(LCD_Key_bar); 
    } 
  line_modify_num=(unsigned long)LCD_Key_bar[1]; 
  line_modify_num=line_modify_num+(unsigned long)LCD_Key_bar[0]*10;  
  LCD_NUM=6;
  *Standard_Press=0;
  Dis_key_INT();
  WriteWord(Press_line_modify_num,line_modify_num);
  En_key_INT();
//========================================================================================
// 线性校正数据
//========================================================================================   
for(i=0;i<line_modify_num;i++)
  {      
   line_modify_ok=0;
   Open_WatchDog();     
   while(!line_modify_ok)
   {
      init_port();  
      En_key_INT();
     _BIS_SR(LPM3_bits + GIE);               // Enter LPM3   
     _NOP();
     _NOP();
     if(key_data==0x01)
         line_modify_ok=1;
     if(ad_flag==1)
     {
       Show_AD_Data(); //ad1240  
        ad_flag=0;
     }         
   }    
   Close_WatchDog(); 
   Most_Sampling_AD=ad1240;
   bar1=Press_Measure+i*8;
   bar2=(unsigned long int)(Measure_Press+i);
   Save_AD_Data(&bar2,bar1); 
   line_modify_ok=0;
   rest_LCD_data();    
    line_modify_ok=0;
    rest_LCD_data(); 
    set_lcd_out();
    key_data=0;
    while(!line_modify_ok)// 满程校正
        {line_modify_ok=get_key_bar(LCD_Key_bar);}
    bar1=Press_Standard+i*8;
    bar2=(unsigned long int)(Standard_Press+i);
    Save_key_data(&bar2,bar1); 
    if(i>0)
    {
       k=((float)(Measure_Press[i]-Measure_Press[i-1]))/16;
       k=k*3000;
       k=k/16777216;
       line_modify_k[i-1]=(Standard_Press[i]-Standard_Press[i-1])/k;
    }
  }
//========================================================================================
// 存储校正OK标志
//======================================================================================== 
  Press_Adjust_state=0x01;
  Dis_key_INT();
  WriteWord(Adjust_state,Press_Adjust_state);
  En_key_INT();
  set_lcd_powdn();
//========================================================================================
// 校正结束退出校正模式
//======================================================================================== 
     Mode=0;
    Open_WatchDog();
    AD_Sampling_num=4;

⌨️ 快捷键说明

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