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

📄 dis_xl.c

📁 很好的51显示程序!做为一个人机对话,HAO
💻 C
📖 第 1 页 / 共 5 页
字号:
	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];
	}
}

/******************************************************************************************
ASCII字符码转换成数据:
					*fix-字符串,value-转换值
*******************************************************************************************/
void asc_fix(unsigned char *fix, unsigned int *val)
{
	unsigned char k,ch,length;
	unsigned int  mid;

	length = *fix++;
	mid=0;
	for(k=0;k<length;k++)
	{
		if(*fix!='.')
		{
			ch =*fix - 0x30;
			mid = (mid*10 + ch);			
		}
		fix++;		
	}
	*val = mid;	
}

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 length)
{ 
	int i,check0; 

	data_tx[0]=0xeb; 
	data_tx[1]=0x90; 
	rsymbol &=(~b0_msk);
	check0=0xeb;  
	for(i=1;i<length-1;i++)
	{
		check0=check0^data_tx[i];
	} 
	data_tx[length-1]=check0;  
	for(i=0;i<length;i++) 
	{
		comtx(data_tx[i]);  
	}
}

void rx_run()
{ 
	unsigned char i; 

	switch(data_rx[3]) 
	{  
	  case 0x3: 
			for(i=0;i<19;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[48] & b0_msk)
			{
				rsymbol |= b1_msk; //召SOE
			}			
			break;  
	  case 0x4: 
	  case 0x5:	
		    data_rx[5] -= 0x10;//信号量soe:0x10~0x1f;保护soe:0x21起始
			deal_soe();			
			break;
	  case 0x6: 
			rsymbol &= (~b1_msk);//召SOE停止
			break;
	  case 0xc0:   
			for(i=0;i<18;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+41]; }
			address = data_rx[37];
			if(page!=0)
			{
				rsymbol &=(~b3_msk);
				p_x=8;
				p_y=0;
				page=31; 
				page_change=1;				
			}
			break;  
	  case 0xd0:
		  if(data_rx[5]==0x12) 
		  { 
			  tpin = ghcg;
		  }
		  else
		  { 
			  tpin = gherr; 
		  }
		  page=33; 
		  page_change=1; 
		  rsymbol &=(~b5_msk);
		  break;  
	  default: 
		  break;
   }  
	rsymbol |= b0_msk;
}

void deal_soe()
{
	unsigned char k;

	if((w_p==r_p)&&(event==1))
	{
		r_p++; 
		r_p &=0xf;			
	}
	else  

⌨️ 快捷键说明

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