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

📄 dis_key.c

📁 配电变XIANSHI CHENGXU !下拉界面,事件查询,控制操作,很好的
💻 C
📖 第 1 页 / 共 5 页
字号:
************************************************************************************/
void displ_asc( unsigned char x , unsigned char y , unsigned char *asc , unsigned char face)
{
	unsigned char n,length;

	length = *asc++;
	for( n=0; n<length; n++)
	{ 	
		if(face) { disp816(x,y,*asc++); }
		else     { disp816n(x,y,*asc++);}
		x+=8;
	}
}

/***********************************************************************************
显示汉字程序:
             指定坐标显示16*16(字符)
             x-(汉字列坐标0=< x <= 7),y-(字符行坐标0=< y <=7),
************************************************************************************/

void disp_chn( unsigned char x , unsigned char y , unsigned char chn )
{ 
	unsigned char ii, k; 
	unsigned int jj ; 

	if( x < 64 )	{ LCD1 = 1 ; LCD2 = 0 ; }           // 左半屏幕 
	else	        { LCD1 = 0 ; LCD2 = 1 ; x -= 64 ; }	// 右半屏幕 	
	for( k=0; k<2; k++)
	{
		write_com( PAGE_ADD + y +k) ;
		write_com( COL_ADD + x ) ; 
		jj =( chn ) * 32 + 1 -k ;     // 取字库 
		for( ii = 0x00 ; ii < 0x10 ; ii ++ ) 
		{  write_data ( chn16 [ jj ] ) ;   
		   jj += 0x02 ;
		}
	}	
} 

/***********************************************************************************
显示汉字程序:(反显)
             指定坐标显示16*16(字符)
             x-(汉字列坐标0=< x <= 7),y-(字符行坐标0=< y <=7),
************************************************************************************/

void disp_chnn( unsigned char x , unsigned char y , unsigned char chn )
{ 
	unsigned char ii, k; 
	unsigned int jj ; 

	if( x < 64 )	{ LCD1 = 1 ; LCD2 = 0 ; }     // 左半屏幕 
	else	        { LCD1 = 0 ; LCD2 = 1 ; x -= 64 ; }	// 右半屏幕 	
	for( k=0; k<2; k++)
	{
		write_com( PAGE_ADD + y +k) ;
		write_com( COL_ADD + x ) ; 
		jj =( chn ) * 32 + 1 - k ;     // 取字库 
		for( ii = 0x00 ; ii < 0x10 ; ii ++ ) 
		{  write_data ( chn16 [ jj ]^0xff ); 
		   jj += 0x02 ;
		}
	}	
} 

/******************************************************************************************
显示多字程序:
             指定坐标显示16*16(字符),首字坐标(x,y),
             x-(字符列坐标0=< x <=7),y-(字符行坐标0=< y <=7),
             face为1字符正显,  face为0字符反显
*******************************************************************************************/
void displ_chn( unsigned char x , unsigned char y , unsigned char *chn , unsigned char face)
{
	unsigned char m,length;

	length = *chn++;
	for(m=0; m<length; m++)
	{	
		if(face)  { disp_chn( x , y ,*chn++ ); }
		else      { disp_chnn( x , y ,*chn++); }
		x +=16;
	}
}

/******************************************************************************************
数据转换成ASCII字符码:
					length-字符长度,dot-小数点位,*fix-字符串,value-转换值,zero-1为前消零
*******************************************************************************************/
void fix_asc(unsigned char length,unsigned char dot,unsigned char *fix, unsigned int value)
{
	unsigned char k;
	unsigned int  mid;

	mid = value; 	
	msec[0] = length;
	for(k=length;k>0;k--)
	{
		if((dot==0) || (k!=(length - dot)))
		{ 		
			msec[k] = (mid%10 + 0x30);
			mid= mid/10;
		}
		else
		{
			msec[k] = '.';
		} 
	}
	for(k=0;k<=length;k++)
	{
		*fix++=msec[k];
	}
}

unsigned char comtx(unsigned char nData)
{/*函数返回:1:成功 ; 0:不成功*/
	unsigned int i=0;
	TI = 0;
	SBUF = nData;
	while ((TI==0)&&(i++<2000));
	return TI;
}

void spidout ( unsigned char ch )
{
   unsigned char xi ,yi ;

   for ( xi=0; xi<8; xi++)
   {
      if ((ch & 0x80) == 0)	  { MOSI = 0; }	     
	  else   { MOSI = 1; }
	  SCK = 1;
      for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
	  ch = ch << 1;
	  SCK = 0;
      for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
   }
}
unsigned char spidin()
{
   unsigned char xi,yi,ch;

   ch = 0;
   for ( xi=0; xi<7; xi++)
   {
      //MISO = 1;
	  if (MISO == 1)   { ch ++; }
	  SCK = 1;
	  ch = ch << 1;
      for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
	  SCK = 0;
      for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
   }
      MISO = 1;
      if (MISO == 1)
         ch ++;
   return ch;
}

void spiwcmd ( unsigned char cmd )
{
   unsigned char xi ;

   //SPIEN = 1 ;                     //允许SPI总线
   CSPI = 0 ;                    // nss = 0
   SCK = 0;
   for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
   spidout(cmd);
   for ( xi = 0x00 ; xi < 200 ; xi ++ )  ;
   CSPI = 1 ;
   //SPIEN = 0 ;
}
void spiwsts ( void )
{
   unsigned char xi ;

   //SPIEN = 1 ;                     //允许SPI总线
   CSPI = 0 ;                    // nss = 0
   SCK = 0;
   for ( xi = 0x00 ; xi < 200 ; xi ++ )  ;
   spidout(SPI_WRSR);
   spidout(0x08);
   for ( xi = 0x00 ; xi < 200 ; xi ++ )  ;
   CSPI = 1 ;
   //SPIEN = 0 ;
}
/*unsigned char spirsts ( void ) 
{
   unsigned char xi ;
   unsigned char ch;
   //SPIEN = 1 ;
   CSPI = 0 ;                    // nss = 0
   SCK = 0;
   for ( xi = 0x00 ; xi < 200 ; xi ++ )  ;
   spidout(SPI_RDSR);
   ch = spidin();
   for ( xi = 0x00 ; xi < 200 ; xi ++ )  ;
   CSPI = 1 ;
   return ch ;
}*/

void wrbytespi ( unsigned int address , unsigned char dat ) 
{
   unsigned char xi ;
   spiwcmd ( SPI_WREN ) ;
   //SPIEN = 1 ;                     // 允许SPI总线
   CSPI = 0 ;                    // nss = 0
   for ( xi = 0x00 ; xi < 200 ; xi ++ )  ;
   //SPIF = 0;
   spidout(SPI_WRITE) ;
   spidout(address / 0x100) ;
   spidout(address % 0x100) ;
   spidout(dat) ;
   for ( xi = 0x00 ; xi < 200 ; xi ++ )  ;
   CSPI = 1 ;
   //SPIEN = 0 ;
   //SPIF = 0 ;
}

unsigned char rdbytespi ( unsigned int address )
{
   unsigned char xi,dat ;
   //SPIEN = 1 ;                     // 允许SPI总线
   CSPI = 0 ;                    // nss = 0
   for ( xi = 0x00 ; xi < 200 ; xi ++ )  ;
   //SPIF = 0;
   spidout(SPI_READ) ;
   spidout(address / 0x100) ;
   spidout(address % 0x100) ;
   dat = spidin();
   for ( xi = 0x00 ; xi < 200 ; xi ++ )  ;
   CSPI = 1 ;
   //SPIEN = 0 ;
   //SPIF = 0 ;
   return dat ;
}


void send(unsigned char l)
{ 
	int i,check0; 

	data_tx[0]=0xeb; data_tx[1]=0x90; 
	check0=0xeb;  
	for(i=1;i<l-1;i++)  check0=check0^data_tx[i]; 
	data_tx[l-1]=check0;  
	for(i=0;i<l;i++)   comtx(data_tx[i]);  
}   

void rx_run()
{ 
	unsigned char i; 

	switch(data_rx[3]) 
	{  
	  case 0x3:  
			data_rx[3]=0;
			for(i=0;i<12;i++)  { dataN[i]=data_rx[2*i+9]+data_rx[2*i+10]*256; }
			for(i=0;i<2;i++) 
			{   bhzt[i]=data_rx[i+5]; 
				kgzt[i]=data_rx[i+7];
			} 
			if(data_rx[32]==1) { rsymbol |= b1_msk; }//召SOE
			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<14;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+33]; }
			break;  
	  case 0xd0: 
			data_rx[3]=0; 
			if(data_rx[5]==0x12)
			{  page=36; page_change=1; }		    
			break;  
	  default: 
		  break;
   }  

⌨️ 快捷键说明

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