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

📄 keyprc.c

📁 电磁流量计的源程序。将流体流量用电磁转换方式变换成弱电信号
💻 C
📖 第 1 页 / 共 2 页
字号:
        }
		if(set_dp_F == 1)        // if when set dp ,then save dp
		{   
		   Savedata_prc(); 
	//	   set_dp_F = 0;
	//	   set_pra_seg = 0;
		   return;
		}
	
		 
		switch(set_pra_seg )   //fouseg position set
		    {
             case 0x10:
                         set_pra_seg = 0x08;
                         break;
			 case 0x08:  

			  
			             set_pra_seg = 0x04 ;          //next seg set data
			             break;
			 
		     case  0x04:
			
						set_pra_seg = 0x02 ;           
						break ;
			 case 0x02 :
			            
						set_pra_seg = 0x01 ;
						break ;
			 case 0x01 :
						set_pra_seg = 0xf0 ;
						break;
			 
			            
			 default :  break ;
            }
        if(set_pra_seg ==0xf0)                   //queren hou culi
		   {
		   	
		     set_pra_seg = 0x00 ;
		    
			 Savedata_prc();
		
			}
      }
}


/***************************************/
/***          System mima  set       ***/
/***************************************/
void Set_system_code(void)
{
 multi_key_F = 1;
 press_r_key = 0;
 Set_sys_mima();
 
 disp_time = TM100MS ;
 
 disp_mode = PARA_DISP ;
 disp_mode_old = disp_mode ;
 disp_no_u = 7 ;          // disp mima
 return;
}

/******************************/
/******************************/
void Sys_biaodin(void)
{   
    multi_key_F = 1 ;
    biaodin_F = 1;
    press_r_key = 0;
    disp_mode = PARA_SET;
	disp_mode_old = disp_mode;
    disp_no_u = 2 ;                 //set lchen range disp mode
	set4_F =1 ;                     //first set fouth segment led
	user_setdata.oneseg = 0;
	user_setdata.twoseg = 0;
	user_setdata.thrseg = 0;
	user_setdata.fouseg = 0;
	Set_sys_data();
    return;
}
 
/******************************/
/******************************/
void Savedata_prc(void)
{
 unsigned char i =0 ;
 if(biaodin_F == 1)
 {    
      Write1B(ADC_GAIN_16,0x25,0);      //baochen system_gain = 16;
      if((disp_no_u == 2)&&(set_dp_F == 0))         //baochen system lchen
          {
          	  set_dp_F = 1 ;
          	  dp_point = 2;                  //mo ren
              Save_dp_point(0x24);           //baochen system dp
			  Save_dp_point(0x0e);           //biaodin shi  he xitong xiaosu din yiyang

              Write1B(user_setdata.oneseg,0x20,0);
              Write1B(user_setdata.twoseg,0x21,0);
              Write1B(user_setdata.thrseg,0x22,0);
              Write1B(user_setdata.fouseg,0x23,0);

			  // when biaodin,normal lchen = system lchen data 
			  Write1B(user_setdata.oneseg,0x18,0);
			  Write1B(user_setdata.twoseg,0x19,0);
			  Write1B(user_setdata.thrseg,0x1a,0);
			  Write1B(user_setdata.fouseg,0x1b,0);
			  //set system moren dp_point
		      set_pra_seg = dp_blink_potion[dp_point] ;
			  
		   }
        return;
 }
 switch(disp_no_u)
			{
			  case 0x00:                         //jin
            
		                if( Code_check() )       //jinnian mima
                            {          
                                allow_set_F = 1;            //mi ma zhenque
                        
			                }
                       else 
                            {
			                    allow_set_F = 0;
                                disp_mode = PARA_DISP ;
                            }
					   break;
			   case 0x01:      /* zhenxiang leiji liuliang qinglin*/
                           if((user_setdata.oneseg==1)&&(user_setdata.twoseg==1)&&(user_setdata.thrseg==1)
                              &&(user_setdata.fouseg==1))
                           {
                           	   p_count_data = 0 ;
                               n_count_data =0;
                               net_count_data = 0;      
                              for(i=0;i<8;i++)
                                 {
			                    Write1B(0x00,page1_start_addr+i,1);
                          //        page1_start_addr++;
                                  
                                 }
                            }
                            
                               break; 
                   
			    case 0x02:
			                    if(set_dp_F == 0)
			                    {
				                    Write1B(user_setdata.oneseg,0x18,0);
                                    Write1B(user_setdata.twoseg,0x19,0);
                                    Write1B(user_setdata.thrseg,0x1a,0);
                                    Write1B(user_setdata.fouseg,0x1b,0);
								    lchen_data = Get_lchen_data(0x18,dp_point);
								    set_dp_F = 1;
								    set_pra_seg = dp_blink_potion[dp_point];
						        }
						      else
						       {
                                    Write1B(dp_point,0x0e,0);
                                    lchen_data = Get_lchen_data(0x18,dp_point);
                                    set_dp_F = 0 ;
                                    set_pra_seg = 0 ;
                                    
                                    
                               }
								break;
				case 0x03:       //dp baochen
				                if(set_dp_F == 0)
			                    {
			                    
			                    	
				                   //     Write1B(user_setdata.oneseg,0x26,0);
                                   //     Write1B(user_setdata.twoseg,0x27,0);
                                   //     Write1B(user_setdata.thrseg,0x28,0);
                                   //     Write1B(user_setdata.fouseg,0x29,0);
								          set_dp_F = 1;
								          set_pra_seg = dp_blink_potion[pulse_dp];
						           
						            
						         }
						            	
						      else
						       {    
						            if(Judge_setdanlan_range())
						            {  
						               Write1B(user_setdata.oneseg,0x26,0);
                                       Write1B(user_setdata.twoseg,0x27,0);
                                       Write1B(user_setdata.thrseg,0x28,0);
                                       Write1B(user_setdata.fouseg,0x29,0);
                                       Write1B(pulse_dp,0x2a,0);
                                       set_pra_seg = 0;
                                       set_dp_F = 0 ;
                                    }
                                    else 
                                    {   
                                        press_r_key = 0 ;
                                    	set_pra_seg =  0x08 ;
                                    	set_dp_F = 0;
                                    }
                              }
								break;
								 
		        case 0x08:      if(set_dp_F == 0)               //sensor_k set option
		                        {
                                    Write1B(user_setdata.oneseg,0x30,0);
                                    Write1B(user_setdata.twoseg,0x31,0);
                                    Write1B(user_setdata.thrseg,0x32,0);
                                    Write1B(user_setdata.fouseg,0x33,0);
                                    sensor_k = Get_lchen_data(0x30,sensor_dp); 
                                    system_k = sensor_k*lchen_data/0x7fff ;
                                    
                                    set_dp_F = 1;
                                    set_pra_seg =  dp_blink_potion[sensor_dp];
                                }
                                else 
                                {
                                	Write1B(sensor_dp,0x34,0);
                                	sensor_k = Get_lchen_data(0x30,sensor_dp);
                                    system_k = sensor_k*lchen_data/0x7fff ;
                                     
                                	set_dp_F = 0;
                                	set_pra_seg = 0 ;
                                }
                                break;
			    case 0x0a:
                                if(set_dp_F == 0)
		                        {
                                    Write1B(zero_symbol,0x38,0);
                                    Write1B(user_setdata.oneseg,0x39,0);
                                    Write1B(user_setdata.twoseg,0x3a,0);
                                    Write1B(user_setdata.thrseg,0x3b,0);
                                    Write1B(user_setdata.fouseg,0x3c,0);
                                //    zero_offset = Get_lchen_data(0x39,zero_dp); 
                                    
                                    zero_code = (unsigned int)( Get_lchen_data(0x39,zero_dp)/10.0*32767);                        
                                    set_dp_F = 1;
                                    set_pra_seg =  dp_blink_potion[zero_dp];
                                }
                                else 
                                {
                                	Write1B(zero_dp,0x3d,0);
                              //  	zero_offset = Get_lchen_data(0x39,zero_dp); 
                                    zero_code = (unsigned int)( Get_lchen_data(0x39,zero_dp)/10.0*32767);                                 
                                	set_dp_F = 0;
                                	set_pra_seg = 0 ;
                                }
                                break;
				case 0x04:      /* lubo zisu baochen */
				                Write1B(user_setdata.oneseg,0x1c,0);
				                filter_data = user_setdata.oneseg ;
								break;
				case 0x05:      /*xiaoliuliang xinhao qiecu bao chen */
				                Write1B(user_setdata.oneseg,0x1d,0);
                                
								cut_slope = user_setdata.oneseg ;
                                cut_data =(cut_slope/100.0)*lchen_data;
                                break;
				case 0x06:      //baojin shangxian 
				                if((user_setdata.thrseg*100+user_setdata.twoseg*10+user_setdata.oneseg) <=150)
				                {
				                	Write1B(user_setdata.oneseg,0x12,0);
                                    Write1B(user_setdata.twoseg,0x13,0);
                                    Write1B(user_setdata.thrseg,0x14,0);
								    alarm_up_data = ((user_setdata.thrseg*100+user_setdata.twoseg*10+user_setdata.oneseg)/100.0)*lchen_data;
				                }                           // update:2003-09-20
				                break;
				case 0x07:      //baojin xiaxian
				                Write1B(user_setdata.oneseg,0x15,0);
                                Write1B(user_setdata.twoseg,0x16,0);
								alarm_dm_data = ((user_setdata.twoseg*10+user_setdata.oneseg)/100.0)*lchen_data;
                                break;
                case 0x09:
                                
                                Write1B(user_setdata.oneseg,0x35,0);
                                Write1B(user_setdata.twoseg,0x36,0);
                                Write1B(user_setdata.thrseg,0x37,0);
                                da_offset = user_setdata.thrseg*100+user_setdata.twoseg*10+user_setdata.oneseg;
                                break;
				case 0x0b:      //chang mima
				                Write1B(user_setdata.oneseg,0x0d,0);
                                Write1B(user_setdata.twoseg,0x0c,0);
                                Write1B(user_setdata.thrseg,0x0b,0);
                                Write1B(user_setdata.fouseg,0x0a,0);
								break;
			   default:
	                           break;    
				              
      }
}

/***************************/
/***************************/

void Set_sys_data(void)
{
  unsigned char addr;
//set system mima
   if(biaodin_F == 1)       //SURE ONLY AT BIAODIN CAN PRECESS THIS SEGMENT
   {
      Set_sys_mima();
//clear page0 from 0x0e to 0x25 eeprom ram
      for(addr=0x0e;addr<0x3d;addr++)
      {
	       Write1B(0x00,addr,0);
	  }
     Write1B(0x10,0x10,0);         //set page1 start address is 0x10
     Write1B(0x20,0x25,0);         //set system adc_gain = ADC_GIAN_16
  //set system sensor_k = 1.000   
     Write1B(0x03,0x34,0);         //sensor_dp = 3 ;
     Write1B(0x01,0x33,0);         //sensor_K = 1.000  
  /* 4 mA stander out set: da_offset = 203 */
     Write1B(0x03,0x35,0);  
     Write1B(0x00,0x36,0);  
     Write1B(0x02,0x37,0);   
     da_offset = 203 ;    
  //clear page1 from 0x10 to 0x1c ram
      for(addr=0x10;addr<0x1c;addr++)
      {
	       Write1B(0x00,addr,1);
	  }
    }
 }


/******************************/
   void Set_sys_mima(void)
   {
     Write1B(0x01,0x0a,0);
 //    Delay_2us();
     Write1B(0x02,0x0b,0);
 //    Delay_2us();
     Write1B(0x03,0x0c,0);
 //    Delay_2us();
     Write1B(0x04,0x0d,0);
//     Delay_2us();
     return;
   }

/*******************************/
/*******************************/

unsigned char Dp_set_precess(void)
{    
    
	if(set_pra_seg  == 0x08)
    	{
			set_pra_seg = 0x04 ;
		    return(2) ;
		}
    else if(set_pra_seg == 0x04)
	   {
		    set_pra_seg = 0x02;
		    return(1) ;
	   }
	else if(set_pra_seg == 0x02)
	  {
			set_pra_seg = 0x00;
			return(0);
      }
   else
	  {
		   set_pra_seg = 0x08;
		   return(3) ;
	  }
	 
}


/*************************/
/*************************/
bit Judge_setdanlan_range(void)
{
	 float  value;
	unsigned int word ;
	word = (user_setdata.fouseg*1000+user_setdata.thrseg*100+user_setdata.twoseg*10+user_setdata.oneseg);
	if(pulse_dp == 3)
	    value = word /1000.0 ;
	else if(pulse_dp == 2)
	    value = word/100.0 ;
	else if(pulse_dp == 1)
	    value = word/10.0 ;
	else
	    value = word ;
//	if((unsigned int)((lchen_data*1.5*1000/3600)/value) >= MAX_SEND_NUMBER)     //if set danlan over allow send max number
	if((unsigned int)((lchen_data*1000/3600)/value) >= MAX_SEND_NUMBER)        
	        return(SET_ERROR);
	else 
	    {
	    	pulse_danlan = value ;
	        return(SET_OK);
	    }
}


/*************************************/
/*************************************/
unsigned char Sure_biaodin_dp(void)
{
	switch(set_pra_seg)
	{
		case 0x08:
		     return(3);
			 
		case 0x04:
			 return(2);
			
		case 0x02:
			 return(1);
			 
	    default:
		     return(0);
			 
	}
}			       

⌨️ 快捷键说明

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