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

📄 dis_xl.c

📁 线路微机保护的界面,用标准C写成的很好的欢迎大家共同学习,
💻 C
📖 第 1 页 / 共 5 页
字号:
			break;  
	  case 0x4:  
			data_rx[3]=0;
			data_rx[5] += 0x10;//b7_msk置位,保护soe,0x11起始
			deal_soe();			
			break;
	 case 0x5:
			data_rx[3]=0;
			deal_soe();
			break;
	  case 0x6:  
			data_rx[3]=0;
			rsymbol &= (~b1_msk);//召SOE停止
			break;
	  case 0xc0:  
			data_rx[3]=0;  
			for(i=0;i<17;i++) { dz[i]=data_rx[2*i+5]+data_rx[2*i+6]*256; } 
			for(i=0;i<4;i++)  { kzz[i]=data_rx[i+40]; }
			break;  
	  case 0xd0: 
			data_rx[3]=0; 
			if(data_rx[5]==0x12)
			{  page=36; page_change=1; }		    
			break;  
	  default: 
		  break;
   }  
}
void deal_soe()
{
	unsigned char k;

	if((w_p==r_p)&&(event==1))
	{
		r_p++; 
		r_p &=0xf;			
	}
	else  
	{
		r_p=0;	
	}
	
	soe[w_p][0]=data_rx[5];	
	for(k=1;k<3;k++)
	{	
		soe[w_p][k]=data_rx[2*k+4]+data_rx[2*k+5]*256;
	}
	w_p++;
	w_p &= 0xf;
	event=1;
}

void soe_zz()
{
	if((r_p==w_p)&&(event==1))
	{
		if(s_b==0)
		{
			s_b=0xf;
		}
		else
		{
			s_b--;
		}
	}
	else if((r_p!=w_p)&&(s_b!=r_p))
	{	
		s_b--;
	}
}

void soe_page()
{
	if(r_p!=w_p)
	{
		total= (w_p + 1)/2;
	}
	else if((r_p==w_p)&&(event==1))
	{
		total = 8;
	}
	else 
	{
		total = 0;
	}
}
 
/*  
void tx(unsigned char cmd)
  {
     
     switch(cmd)
      { 
        case 1: data_tx[3]=1; send(7); break;
      }  
                
  }  
*/

void int_com() interrupt 4
{ 
    unsigned char i,check1;  
    //unsigned int run_int;  
	
    if(RI==1)  
    {   
      rx1=rx0;  
      rx0=SBUF;  
      if((rx1==0xeb)&(rx0==0x90)) flag_rx=1;  
      if(flag_rx==1) { p_rx++; data_rx[p_rx]=rx0;}   
      if(p_rx>(data_rx[4]+4))   
      {  	/* LED8=1;CLED = 0;CLED = 1;  */ 
		  data_led=data_led^1;
		  check1=0xeb;
          for(i=1;i<p_rx;i++)  check1=check1^data_rx[i];
          if(check1!=rx0)  data_rx[3]=0;
          flag_rx=0; p_rx=0;  
	  }
      RI=0;   
    }  
	TI=0; 
} 

void LCD_CLR()
{ 
	unsigned int i,j; 

	for(i=0;i<6000;i++); 
	for(i=0;i<4;i++) for(j=0;j<16;j++)  disp816(j*8,i*2,' ');
}

unsigned char check_pass()
{
	unsigned char tem,j;
	
	tem=4;
	recode();
	for(j=0;j<4;j++)
	{
		if(mm[j]!=kk[j])
		{
			tem--;
		}
	}

	if(tem!=4)
	{
		tem=4;
		for(j=0;j<4;j++)
		{
			if(mm[j]!=1)
			{
				tem--;
			}
		}
	}

	return tem;
}
 
void recode()
{
	unsigned int i;

	kk[0]=rdbytespi(1); for(i=0;i<1000;i++);
	kk[1]=rdbytespi(2); for(i=0;i<1000;i++);
	kk[2]=rdbytespi(3); for(i=0;i<1000;i++);
	kk[3]=rdbytespi(4); for(i=0;i<1000;i++);
	
	for(i=0;i<4;i++)
	{
		if(kk[i]>9) { kk[i]=0; }
	}
}

void page_mm()
{
	if(page_change==1) 
    { 
		LCD_CLR();  
		disp_chn(8,0,144); disp_chn(8,2,145); disp_chn(8,4,146);  disp_chn(8,6,143);   //图元
		disp816(32,0,'I'); disp816(40,0,'A'); disp816(56,0,'=');  disp816(88,0,'.');  disp816(104,0,'A');	    
        disp816(40,2,'P'); disp816(56,2,'='); disp816(104,2,'K'); disp816(112,2,'w');	
        page_change=0;  
	}

	fix_asc(5,2,fixstr,dataN[0]);   displ_asc(64,0,fixstr,1); 
    fix_asc(5,1,fixstr,dataN[2]);   displ_asc(64,2,fixstr,1);    

	if(kgzt[1] & b1_msk)        { disp_chn(8,2,145); }//开关合
	else if(kgzt[1] & b2_msk)   { disp_chn(8,2,141); }//开关分
	else { disp_chn(8,2,141); }
	if(kgzt[0] & b0_msk)      { disp_chn(8,0,144); }
    else { disp_chn(8,0,140); } 
    if(kgzt[0] & b1_msk)      { disp_chn(8,4,146); }
    else { disp_chn(8,4,142); }

    KEY8=0xff;  KEY9=1; 
    if((KEY8 !=0xff)||(KEY9 == 0)) 
	{ page = 1;  page_change = 1; }
} 

void page1()
{  
	
     if(page_change==1)
     {
       LCD_CLR(); 	   
	   disp_chn(16,0,13); disp_chn(32,0,14);  //数据
	   disp_chn(16,2,15); disp_chn(32,2,16);  //状态
       disp_chn(16,4,17); disp_chn(32,4,18);  //定值
	   disp_chn(16,6,7);  disp_chn(32,6,8);   //控制
       disp_chn(80,0,83); disp_chn(96,0,84);  //事件
       disp_chn(80,2,85); disp_chn(96,2,106); //复归
	   disp_chn(80,4,94); disp_chn(96,4,95);  //版本
       page_change=0; p_x=8; p_y=0;	  
     } 
 
     KEY8=0xff;  KEY9=1;
     if((KEY8==~8)&&(p_y>=2))                  { disp816(p_x,p_y,' '); p_y=p_y-2; }
     else if((KEY8==~32)&&(p_x==8)&&(p_y<=4))  { disp816(p_x,p_y,' '); p_y=p_y+2; }
	 else if((KEY8==~32)&&(p_x==72)&&(p_y<=2)) { disp816(p_x,p_y,' '); p_y=p_y+2; }
	 else if((KEY8==~32)&&(p_x==8)&&(p_y==6))  { disp816(p_x,p_y,' '); p_x=72;p_y=0; }
	 else if((KEY8==~8)&&(p_x==72)&&(p_y==0))  { disp816(p_x,p_y,' '); p_x=8; p_y=6; }
     else if((KEY8==~4)&&(p_x==72)&&(p_y<=4))  { disp816(p_x,p_y,' '); p_x=8; }
     else if((KEY8==~16)&&(p_x==8)&&(p_y<=4))  { disp816(p_x,p_y,' '); p_x=72; } 
	 else if(KEY8==127)                        { page=0; page_change=1; }
     else if(KEY9==0)
     {   
        if((p_x==8)&&(p_y==0))       { page=11; page_change=1; }   
        else if((p_x==8)&&(p_y==2))  { page=21; page_change=1; }   
        else if((p_x==8)&&(p_y==4))  
		{ 	page=31;  page_change=1;
			data_tx[3]=0xc0;  data_tx[4]=1; 
			send(7);
		} //定值采集  
        else if((p_x==8)&&(p_y==6))  { sup=1; page=34; page_change=1; }   
        else if((p_x==72)&&(p_y==0)) 
		{
		    s_b=w_p;
            ypp=0x11;//初进入ypp与s_b相同,出现白屏现象
	        soe_zz();
			soe_page();
 	        sub=1;  page=25; page_change=1; 
		}   
		else if((p_x==72)&&(p_y==2)) 
		{	data_tx[3]=0x33; data_tx[4]=1;
			send(7);         
			page=37;         page_change=1;
		}
	    else if((p_x==72)&&(p_y==4)) { page=38; page_change=1; }	
     }      
     disp816(p_x,p_y,'>');  
}
   
void page11()
{ 
   if(page_change==1)  
   {  
     LCD_CLR();   
     disp816(16,0,'I'); disp816(24,0,'A'); disp816(32,0,'='); disp816(80,0,'.'); disp816(96,0,'A');  
     disp816(16,2,'I'); disp816(24,2,'C'); disp816(32,2,'='); disp816(80,2,'.'); disp816(96,2,'A');
	 disp816(24,4,'P'); disp816(40,4,'='); disp816(96,4,'K'); disp816(104,4,'w'); 
	 disp816(24,6,'Q'); disp816(40,6,'='); disp816(96,6,'K'); disp816(104,6,'v'); disp816(112,6,'a'); disp816(120,6,'r'); 
     page_change=0;  
   } 
   
   fix_asc(5,1,fixstr,dataN[0]);   displ_asc(56,0,fixstr,1); 
   fix_asc(5,1,fixstr,dataN[1]);   displ_asc(56,2,fixstr,1); 
   fix_asc(5,0,fixstr,dataN[2]);   displ_asc(56,4,fixstr,1);   
   fix_asc(5,0,fixstr,dataN[3]);   displ_asc(56,6,fixstr,1);
     
   KEY8=0xff;  KEY9=1; 
   if(!(KEY8 & b7_msk))                      { page=1; page_change=1; }
   else if((!(KEY8 & b5_msk)) || (KEY9==0))  { page=12; page_change=1; }
} 

void page21()
{
   if(page_change==1)  
   {  
     LCD_CLR(); 
	 displ_chn(16,0,soe_kg,1);                   //开关状态 
	 displ_chn(16,2,soe_dz1,1);                  //刀闸1状态
	 displ_chn(16,4,soe_dz2,1);                  //刀闸2状态	 
     page_change=0;  
   }  
    
   if(kgzt[1] & b1_msk)      { disp_chn(112,0,53); }

⌨️ 快捷键说明

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