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

📄 uart.c

📁 C51的LED显示程序 可以显示多种字符,里面有多种显示驱动,方便应用
💻 C
字号:
#include "REG51.h"
#include "lcd.h"
#include "key.h"
//-----------------------------------
extern xdata unsigned char CEedit;
extern xdata unsigned char CEspeed;
extern xdata unsigned char CEWW;
extern xdata unsigned char CEbegin;
extern xdata unsigned char CEend;
extern xdata unsigned char CEauto;
extern xdata unsigned char CEP1D;
//extern xdata unsigned char CEFF; 
//extern xdata unsigned char CEPP_Sign;
extern xdata unsigned char CElamp;
extern xdata unsigned char CEcut;
extern xdata unsigned char DCEFF[];
extern xdata unsigned char CDSSUart_En;
extern xdata unsigned char LRUart_Sign;
extern xdata unsigned char LRCount;
extern xdata unsigned char StartEn;
extern xdata unsigned char SaveEn;
//xdata unsigned char RRBuffer[50][2];
///int OutKey=0;
//int LcdST=0;
//int LcdData=0;
//-------------------------------------------

unsigned char UARTbme (unsigned char utST)
{
	unsigned char fefe;
	 long TimeEr,TimeEr1;
	 TimeEr1 = 5000;
		do{

		TimeEr1 --;
		if(TimeEr1 == 0)    { return (1); }

		TI=0;
		SBUF=utST;
		while (!TI);
		RI=0;
//		SSTAT=0x60;
		TimeEr=200000;	
		while (!RI)
		{	TimeEr--;
			if(TimeEr==0)	{	return (1);	}
		}
		fefe=SBUF;
		RI=0;
		}	while(fefe!=utST); 	
		return (0);
}

unsigned char UARTend (unsigned char utST)
{
	unsigned char fefe;
	 long TimeEr;
		TI=0;
		SBUF=utST;
		while (!TI);
		RI=0;
		TimeEr=200000;	
		while (!RI)
		{	TimeEr--;
			if(TimeEr==0)	{	return (1);	}
		}
		fefe=SBUF;
		RI=0;
		if(fefe==utST)	{	return(0);	}
		else	{	return (2);		}
}
Sendchar ( unsigned char SendST, unsigned char SendData )
{
	unsigned char seed;
	seed= SendData;
	TI=0;
	SBUF=SendST;
	while (!TI);
	TI=0;
	SBUF=seed;
	while (!TI);
}

/*
UARTRer()
{		
		long TimeEr;
        RI=0;
		TimeEr=400000;	
		while(!RI)
		{	
		TimeEr--; 
		if(TimeEr == 0)
		return (2);
		}
		return 1;
		


}

ReceiveData(unsigned char utST)			//receiv the head address if
{  unsigned char i=0,whexet = 1;									//the head addr equal the ask addr the return 0,else return 1
  unsigned char fefe;  
  long int TimeEr,TimeEr1,TimeEr2; 
  		 TimeEr1  = 5000;
		 TimeEr2 = 5000;
		while (fefe!=utST)	//receive always while fefe == utSt
		{	TimeEr1--;
			if(UARTRer()== 1)
			{

			fefe=SBUF;
			RI=0;
	  		TI=0;
			SBUF=fefe;
			while (!TI);
			}
			else {return (1);}
			if(TimeEr1 == 0){return (2);}
		}


		while (fefe==utST)		//receive always while fefe != utSt
		{	
			TimeEr2 -- ;
			if(TimeEr2 == 0){return (2);}

			if(UARTRer()== 1)
			{
				fefe=SBUF;
				RI=0;

				if(fefe == utST)
					{
	   				TI=0;
					SBUF=fefe;
					while (!TI);
					}
				else 
					{
					RRBuffer[0][0]= fefe;	  //receive the unequal data then give it to rrbuffer!
					}
			}
			else{ return (2); }
		 }
		
			
		while(whexet == 1)
	   { 

     	RI=0;
		TimeEr=400000;	
		while (!RI)
			{	
			TimeEr--;

			if(TimeEr==0)	{	return (2);	}
			}

		RRBuffer[i][1]=SBUF;
		RI=0;
		TimeEr=400000;

		i++;	
		while (!RI)
			{	
			TimeEr--;

			if(TimeEr==0)	{	return (2);	}
			}

		RRBuffer[i][0]=SBUF;
		RI=0;

		if(RRBuffer[i][0] == 0x79)
			{
			 whexet = 0;
			}

		if(i>50)
			{ 
			i = 0;
			return (2); 
			}
		

		}


		TI=0;
		SBUF=0x79;
		while (!TI);
		TI = 0;
		return(0);				  //if all if right return 0;
} 

void UARTRRBuffer()			   //send the data of buffer  which used for test; 
{
 int i = 0,whexet =1;
 while(whexet == 1)
 	{
		TI=0;
		SBUF=i;
		while (!TI);
		TI=0;
 	    TI=0;
		SBUF=RRBuffer[i][0];
		while (!TI);
		TI=0;
		SBUF=RRBuffer[i][1];
		while (!TI);
		i++;
		if(RRBuffer[i+1][0]==0x79)
		{
		whexet = 0;
		}
		
		
		

 	}
	
} 
   
void DealReceiveData()
{
 unsigned char  i = 0,whexet = 1;
 while(whexet == 1)
  {
   
    if(RRBuffer[i][0]==0xC0){Data_H 	= RRBuffer[i][1]*100;}
   	if(RRBuffer[i][0]==0xC1){Data_PSL 	= RRBuffer[i][1];}
	if(RRBuffer[i][0]==0xC5){Data_S		= RRBuffer[i][1]*100;}
	if(RRBuffer[i][0]==0xC1){Data_SLS 	= RRBuffer[i][1];}
   	if(RRBuffer[i][0]==0xC8){Data_DIR 	= RRBuffer[i][1];}
	if(RRBuffer[i][0]==0xCb){Data_T 	= RRBuffer[i][1]*50;}
	if(RRBuffer[i][0]==0xe1){Data_FO 	= RRBuffer[i][1]*100;}
	if(RRBuffer[i][0]==0xe2){Data_FC	= RRBuffer[i][1];}
	if(RRBuffer[i][0]==0xe4){Data_SFM 	= RRBuffer[i][1];}
	if(RRBuffer[i][0]==0xe6){Data_ANU 	= RRBuffer[i][1];}
	if(RRBuffer[i][0]==0xF5){Data_D1 	= RRBuffer[i][1];}
	if(RRBuffer[i][0]==0xF6){Data_D2 	= RRBuffer[i][1];}
	if(RRBuffer[i][0]==0xF7){Data_D3 	= RRBuffer[i][1]*100;}
	if(RRBuffer[i][0]==0xF8){Data_W1 	= RRBuffer[i][1]*100;}
	if(RRBuffer[i][0]==0xF9){Data_W2 	= RRBuffer[i][1]*100;}
	
	i++;
    if(RRBuffer[i][0]==0x79)
   		{
   		whexet = 0;
  		}
 
  }

} */
/*
void UARTrr(void)
{
  unsigned char ER;
  ER = ReceiveData(0x70);
  if(ER == 0)
  {
  DealReceiveData();
  }
  if(ER == 1)
  {while(1)
   {
   DispER(ER);
   }
  }
  if(ER == 2)
  {
   while(1)
   {
   DispER(ER);
   }
  }

  


}  */
unsigned char UARTtt ()
{ 
    xdata  unsigned char OnOffSign0 = 0x00;
	xdata  unsigned char OnOffSign1 = 0x00;
//	unsigned char UPDOWN;
	unsigned char MuER,Cut;
	static int MMER;
	if(CEcut == 1)
	{
	  Cut = 0;
	
	}
	else 
	{
	 Cut = 1;
	
	}
	OnOffSign1 = CElamp;
	OnOffSign0 = (CEbegin)|(CEend<<1)|(CEP1D<<2)|(CEWW<<3)|(Cut<<4)|(CEauto<<5);
	if(	1==UARTbme(0x78))	{	return (1);	}
	MMER=0;
	do
	{
/*		
	 if(LRUart_Sign == 1)
	 {
	 
	  Sendchar( 0xF4,LRCount);
	  LRUart_Sign = 0;
	 }	  */
	if(CEbegin == 1)
	{	
	  if(Data_SBB == 0)
		{
		   	Sendchar( 0xa0,0);
			Sendchar( 0xa1,0);
			Sendchar( 0xa2,0);
			Sendchar( 0xa3,0);
			Sendchar( 0xa4,0);
			Sendchar( 0xa5,0);
		   
		}
	 else if(Data_SBA == 0)
		 {
		    Sendchar( 0xa0,0);
			Sendchar( 0xa1,Data_SBB);
			Sendchar( 0xa2,0);
			Sendchar( 0xa3,0);
			Sendchar( 0xa4,0);
			Sendchar( 0xa5,0);	   
		  }
	 else
		{
		    if(Data_SBN ==1 )
			{
			Sendchar( 0xa0,Data_SBA);
			Sendchar( 0xa1,Data_SBB);
			Sendchar( 0xa2,0);
			Sendchar( 0xa3,0);
			Sendchar( 0xa4,0);
			Sendchar( 0xa5,0);
			
			}
			if(Data_SBN ==2 )
			{
			Sendchar( 0xa0,Data_SBA);
			Sendchar( 0xa1,Data_SBB);
			Sendchar( 0xa2,Data_SBA);
			Sendchar( 0xa3,Data_SBB);
			Sendchar( 0xa4,0);
			Sendchar( 0xa5,0);
			
			}
			if(Data_SBN ==3 )
			{
			Sendchar( 0xa0,Data_SBA);
			Sendchar( 0xa1,Data_SBB);
			Sendchar( 0xa2,Data_SBA);
			Sendchar( 0xa3,Data_SBB);
			Sendchar( 0xa4,Data_SBA);
			Sendchar( 0xa5,Data_SBB);
			
			}	
		 }
   	}

		
		 if(CEend==1)
		{
			if(Data_EBC == 0)
			{
			Sendchar( 0xa6,0);
			Sendchar( 0xa7,0);
			Sendchar( 0xa8,0);
			Sendchar( 0xa9,0);
			Sendchar( 0xaa,0);
			Sendchar( 0xab,0);	
			}

			else if(Data_EBD == 0)
			{
			Sendchar( 0xa6,Data_EBC);
			Sendchar( 0xa7,0);
			Sendchar( 0xa8,0);
			Sendchar( 0xa9,0);
			Sendchar( 0xaa,0);
			Sendchar( 0xab,0);	
			}
			else
			{
			 	if(Data_EBN == 1)
			 	{
				 Sendchar( 0xa6,Data_EBC);
			 	 Sendchar( 0xa7,Data_EBD);
			 	 Sendchar( 0xa8,0);
				 Sendchar( 0xa9,0);
				 Sendchar( 0xaa,0);	   
			     Sendchar( 0xab,0);
			 	}
				if(Data_EBN == 2)
			 	{
				 Sendchar( 0xa6,Data_EBC);
			 	 Sendchar( 0xa7,Data_EBD);
			 	 Sendchar( 0xa8,Data_EBC);
				 Sendchar( 0xa9,Data_EBD);
				 Sendchar( 0xaa,0);
			     Sendchar( 0xab,0);
			 	}
				if(Data_EBN == 3)
			 	{
				 Sendchar( 0xa6,Data_EBC);
			 	 Sendchar( 0xa7,Data_EBD);
			 	 Sendchar( 0xa8,Data_EBC);
				 Sendchar( 0xa9,Data_EBD);
				 Sendchar( 0xaa,Data_EBC);
			     Sendchar( 0xab,Data_EBD);
			 	}
			
			}
			
		}

		 if(CEWW == 1)
		{		    
			Sendchar( 0xac,Data_WWWC);
			Sendchar( 0xad,Data_WWWD);
		}


	   if(CEP1D ==1 )
		{
			Sendchar( 0xb1,Data_PS[1]);
			Sendchar( 0xb2,Data_PS[2]);
			Sendchar( 0xb3,Data_PS[3]);
			Sendchar( 0xb4,Data_PS[4]);
			Sendchar( 0xb5,Data_PS[5]);
			Sendchar( 0xb6,Data_PS[6]);
			Sendchar( 0xb7,Data_PS[7]);
			Sendchar( 0xb8,Data_PS[8]);
			Sendchar( 0xb9,Data_PS[9]);
			Sendchar( 0xba,Data_PS[10]);
			Sendchar( 0xbb,Data_PS[11]);
			Sendchar( 0xbc,Data_PS[12]);
		}
	
		
	    Sendchar( 0xaf,OnOffSign0);		 
		Sendchar( 0xae,OnOffSign1);
		Sendchar( 0xDC,DCEFF[4]);
	   if(StartEn == 1)
	   {
		Sendchar( 0xc2,(unsigned char )(Data_N/100));	 //START BACK-TACKING SPEED
		Sendchar( 0xc3,(unsigned char )(Data_V/100));	 //end back-tacking speed
		Sendchar( 0xc4,(unsigned char )(Data_B/100));	 //bar -tacking speed
		Sendchar( 0xc7,(unsigned char )(Data_A/100));	 //AUTOMATIC CONSTANT STITCH SEWING SPEED
	//	
		Sendchar( 0xC9,(unsigned char )(Data_M/100)); //MIDDLE SPEED 
		Sendchar( 0xCA,(unsigned char )(Data_L/100));
		Sendchar( 0xd0,Data_ACD);
		Sendchar( 0xd1,Data_RVM);
		Sendchar( 0xd2,Data_SBN);

		Sendchar( 0xD3,Data_BT1); 
		Sendchar( 0xD4,Data_BT2);
		Sendchar( 0xD5,Data_EBN);
		Sendchar( 0xD6,Data_BT3);
		Sendchar( 0xD7,Data_BT4);
		Sendchar( 0xd8,Data_BCC);
		Sendchar( 0xd9,Data_BCD);
		Sendchar( 0xDA,Data_BT5);
		Sendchar( 0xDB,Data_BT6);
		Sendchar( 0xDE,Data_BT7);
		Sendchar( 0xDF,Data_BT8);
		Sendchar( 0xE0,Data_FTP);
		Sendchar( 0xE3,Data_FL);
				
		

	//	Sendchar( 0xE7,Data_HL);  //Hign speed limt
  
		Sendchar( 0xE8,Data_MAV);
		Sendchar( 0xE9,(unsigned char )(Data_MIV/10));
		Sendchar( 0xEA,Data_PV);
		Sendchar( 0xEB,(unsigned char )(Data_OVD/10));
		Sendchar( 0xEC,(unsigned char )(Data_LVD/10));
	
		Sendchar( 0xF0,(unsigned char )(Data_TOT/10));
		Sendchar( 0xF1,(unsigned char )(Data_TM1/10));
		Sendchar( 0xF2,(unsigned char )(Data_TM2/10));
		Sendchar( 0xF3,Data_UTD);	 
		
		StartEn = 0;

		}
		 
	if(CDSSUart_En == 1)
	{
		if(Data_H>Data_HL)
		{ 
		Sendchar( 0xc0,(unsigned char )(Data_HL/100));
		}
		else
		{
		Sendchar( 0xc0,(unsigned char )(Data_H/100));	 //Automatic Constant-Stitch sewing speed
		}
		Sendchar( 0xC8,Data_DIR);
		Sendchar( 0xc1,Data_PSL);
		Sendchar( 0xc5,(unsigned char )(Data_S/100));	 //soft start speed
		Sendchar( 0xc6,Data_SLS);
		Sendchar( 0xCB,(unsigned char )(Data_T/50));
	//		
		Sendchar( 0xE1,(unsigned char )(Data_FO/100));
		Sendchar( 0xE2,Data_FC);
		Sendchar( 0xE4,Data_SFM);
		Sendchar( 0xE5,Data_DD);
		Sendchar( 0xE6,Data_ANU);
		Sendchar( 0xED,Data_PDW);		
		Sendchar( 0xF5,Data_D1);
		Sendchar( 0xF6,Data_D2);
		Sendchar( 0xF7,(unsigned char )(Data_D3/100));
		Sendchar( 0xF8,(unsigned char )(Data_W1/100));
		Sendchar( 0xF9,(unsigned char )(Data_W2/100));

		if(SaveEn == 1)
		{
		Sendchar( 0xce,1);
		SaveEn = 0;
		}

	    CDSSUart_En = 0;
	 }	

		MuER = UARTend(0x79);
		MMER++;
		if(MMER>200)	{	return (1);	}
		if(MuER == 1)	{	return (1);	}
	}while(	MuER==2);			 
}

⌨️ 快捷键说明

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