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

📄 lcd.c

📁 我在公司做的基于430F206的互感器现场效验仪.有原理图印板图及源程序,已定型.
💻 C
📖 第 1 页 / 共 2 页
字号:
/*		Flag=Normal	正常显示	*/
/*		Flag=Abnormal	反白显示	*/
/*						*/
/************************************************/

void	Lcd_Out_Bmp(unsigned int Dot_X,unsigned int Dot_Y,unsigned int Dot1,unsigned int Dot2,pointer *Data_Add,unsigned int Flag)

{
	unsigned  int	Cursor_X,Cursor_Y;
 	unsigned  int	Counter1,Counter2;
 	Cursor_X=(Dot_Y*Lcd_AP+(Dot_X>>3)+0x4000)&0x00ff;
 	Cursor_Y=((Dot_Y*Lcd_AP+(Dot_X>>3)+0x4000)&0xff00)>>8;
 	Lcd_wc=CSRDIR_RG;	wait();
 	for(Counter2=0;Counter2<Dot2;Counter2++)
 		{
 			Lcd_wc=CSRW;	wait();
	 			Lcd_wd=Cursor_X;	wait();
	 			Lcd_wd=Cursor_Y; 	wait();
		 	Lcd_wc=MWRITE;	wait();
			for(Counter1=0;Counter1<(Dot1>>3);Counter1++)
     				{
     					if(Flag==Abnormal)
     					{
     						Lcd_wd=~(*(Data_Add++));
     							wait();
     					}
		 			else
		 			{
		 				Lcd_wd=*(Data_Add++);
		 					wait();
		 			}
		 		}
     			Cursor_Y=Cursor_Y+((Cursor_X+Lcd_AP)>>8);
 			Cursor_X=(Cursor_X+Lcd_AP)&0x00ff;
 			
     		}
}

/*==============================================*/

/************************************************/
/*						*/
/*	Lcd_Real:	显示实型数子程序	*/
/*			(8x8点阵)		*/
/*	Row:	行坐标<0-29(240/8-1)>		*/
/*	Column:	列坐标<0-39(320/8-1)>		*/
/*	Real_Data:	实型数			*/
/*	Dot_Bit:	显示有效位数		*/
/*						*/
/************************************************/

void	Lcd_Real(unsigned int Row,unsigned int Column,double Real_Data,unsigned int Dot_Bit)
{
 	int	Dis_Data[20];
 	int	Counter=1;
 	int	Dot_Flag=0;

 	if (Real_Data<0)	
 		{
 			Dis_Data[0]='-';
 			Real_Data=fabs(Real_Data);
 		}
 	else 	Dis_Data[0]=' ';

	while (Real_Data>=10.0)
		{
			Real_Data=Real_Data/10.0;
			Dot_Flag++;
			Counter=1;
		}

	while (Real_Data<1)
		{                    
			Real_Data=Real_Data*10.0;
			Dis_Data[1]='0';
			Dis_Data[2]='.';
			Counter=3-Dot_Flag;
			Dis_Data[Counter]='0';
			Dot_Flag--;
		}

 	for (Counter=Counter;Counter<=(Dot_Bit+1);Counter++)
		{	
			Dis_Data[Counter]=(int)Real_Data+0x30;
			Real_Data=(Real_Data-(Dis_Data[Counter]-0x30))*10.0;
			if (Dot_Flag==0)
				{
					Counter=Counter+1;
					Dis_Data[Counter]='.';
				}
			Dot_Flag--;
		}
 		
	for (Counter=0;Counter<Dot_Bit+2;Counter++)
		Lcd_Character(Row,Column++,Dis_Data[Counter]);
		
}

/*==============================================*/

/************************************************/
/*						*/
/*	Lcd_Exp:	科学计数法显示实型数	*/
/*			子程序(8x8点阵)		*/
/*	Row:	行坐标<0-29(240/8-1)>		*/
/*	Column:	列坐标<0-39(320/8-1)>		*/
/*	Real_Data:	实型数			*/
/*	Dot_Bit:	显示有效位数		*/
/*						*/
/************************************************/

void	Lcd_Exp(unsigned int Row,unsigned int Column,double Real_Data,unsigned int Dot_Bit)
{
 	int	Dis_Data[20];
 	int	Counter=1;
 	int	Dot_Flag=0;

 	if (Real_Data<0)	
 		{
 			Dis_Data[0]='-';
 			Real_Data=fabs(Real_Data);
 		}
 	else 	Dis_Data[0]=' ';

	while (Real_Data>=10.0)
		{
			Real_Data=Real_Data/10.0;
			Dot_Flag++;
		}

	while (Real_Data<1)
		{                    
			Real_Data=Real_Data*10.0;
			Dot_Flag--;
		}

 	for (Counter=1;Counter<=(Dot_Bit+1);Counter++)
		{	
			Dis_Data[Counter]=(int)Real_Data+0x30;
			Real_Data=(Real_Data-(Dis_Data[Counter]-0x30))*10.0;
			if (Counter==1)
				{
					Counter=Counter+1;
					Dis_Data[Counter]='.';
				}
		}                        


	Dis_Data[Counter]='e';
	if (Dot_Flag<0)	
		{
			Dot_Flag=-1*Dot_Flag;
			Dis_Data[Counter+1]='-';
			Dis_Data[Counter+2]=Dot_Flag/10+0x30;
			Dis_Data[Counter+3]=Dot_Flag-(Dot_Flag/10*10)+0x30;
		}
	else	if (Dot_Flag>0)	
		{
			Dis_Data[Counter+1]='+';
			Dis_Data[Counter+2]=Dot_Flag/10+0x30;
			Dis_Data[Counter+3]=Dot_Flag-(Dot_Flag/10*10)+0x30;
		}
                                              
	else                                              
		{
			Dis_Data[Counter+1]='+';
			Dis_Data[Counter+2]='0';
			Dis_Data[Counter+3]='0';
		}
 		
	for (Counter=0;Counter<Dot_Bit+6;Counter++)
		Lcd_Character(Row,Column++,Dis_Data[Counter]);
		
}

/*==============================================*/

/************************************************/
/*						*/
/*	Lcd_Int:	显示整型数子程序	*/
/*			(8x8点阵)		*/
/*	Row:	行坐标<0-29(240/8-1)>		*/
/*	Column:	列坐标<0-39(320/8-1)>		*/
/*	Int_Data:	实型数			*/
/*						*/
/************************************************/

void	Lcd_Int(unsigned int Row,unsigned int Column,long int Int_Data)
{
 	int	Dis_Data[15];	/*	Int Max(16Bit)=32768	*/
 	int	Counter=1;
 	long int	temp;  
 	
 	if (Int_Data<0)
 		{
 			Int_Data=-1*Int_Data;
 			Dis_Data[0]='-';
 			Counter=1;
 		}	
 	else if(Int_Data>0)
 		{
 			Dis_Data[0]=' ';
 			Counter=1;
 		}
 	else
 		{
 			Dis_Data[0]=' ';
 			Dis_Data[1]='0';
 			Counter=2;
 		}
 	for (;Int_Data>0;Counter++)
 		{
 			temp=Int_Data;
 			Int_Data=Int_Data/10;
 			Dis_Data[Counter]=0x30+(temp-Int_Data*10);
 		}
 			                                         
	Lcd_Character(Row,Column,Dis_Data[0]);
	for (;Counter>1;Counter--)
		{
			Lcd_Character(Row,++Column,Dis_Data[Counter-1]);
		}       
}		

/*==============================================*/

/************************************************/
/*						*/
/*	Lcd_Real8x16:	显示实型数子程序	*/
/*			(8x16点阵)		*/
/*	Row:	行坐标<0-29(240/8-1)>		*/
/*	Column:	列坐标<0-39(320/8-1)>		*/
/*	Real_Data:	实型数			*/
/*	Dot_Bit:	显示有效位数		*/
/*						*/
/************************************************/

void	Lcd_Real8x16(unsigned int Row,unsigned int Column,double Real_Data,unsigned int Dot_Bit,unsigned int Flag)
{

 	int	Dis_Data[20];
 	int	Counter=1;
 	int	Dot_Flag=0;
 	pointer	*Data_Add;

 	if (Real_Data<0)	
 		{
 			Dis_Data[0]='-';
 			Real_Data=fabs(Real_Data);
 		}
 	else 	Dis_Data[0]=' ';

	while (Real_Data>=10.0)
		{
			Real_Data=Real_Data/10.0;
			Dot_Flag++;
			Counter=1;
		}

	while (Real_Data<1)
		{                    
			Real_Data=Real_Data*10.0;
			Dis_Data[1]='0';
			Dis_Data[2]='.';
			Counter=3-Dot_Flag;
			Dis_Data[Counter]='0';
			Dot_Flag--;
		}


 	for (Counter=Counter;Counter<=(Dot_Bit+1);Counter++)
		{	
			Dis_Data[Counter]=(int)Real_Data+0x30;
			Real_Data=(Real_Data-(Dis_Data[Counter]-0x30))*10.0;
			if (Dot_Flag==0)
				{
					Counter=Counter+1;
					Dis_Data[Counter]='.';
				}
			Dot_Flag--;
		}

 		
	for (Counter=0;Counter<Dot_Bit+2;Counter++)
		{
			Data_Add=Ascii+((Dis_Data[Counter]-0x20)<<4);
			Lcd_Cctw(Row,Column,8,16,Data_Add,Flag);           
			Column++;
		}
		
}

/*==============================================*/

/************************************************/
/*						*/
/*	Lcd_Exp8x16:	科学计数法显示实型数	*/
/*			子程序(8x16点阵)	*/
/*	Row:	行坐标<0-29(240/8-1)>		*/
/*	Column:	列坐标<0-39(320/8-1)>		*/
/*	Real_Data:	实型数			*/
/*	Dot_Bit:	显示有效位数		*/
/*						*/
/************************************************/

void	Lcd_Exp8x16(unsigned int Row,unsigned int Column,double Real_Data,unsigned int Dot_Bit,unsigned int Flag)
{
 	int	Dis_Data[20];
 	int	Counter=1;
 	int	Dot_Flag=0;
 	pointer	*Data_Add;
 	

 	if (Real_Data<0)	
 		{
 			Dis_Data[0]='-';
 			Real_Data=fabs(Real_Data);
 		}
 	else 	Dis_Data[0]=' ';

	while (Real_Data>=10.0)
		{
			Real_Data=Real_Data/10.0;
			Dot_Flag++;
		}

	while (Real_Data<1)
		{                    
			Real_Data=Real_Data*10.0;
			Dot_Flag--;
		}

			
		

 	for (Counter=1;Counter<=(Dot_Bit+1);Counter++)
		{	
			Dis_Data[Counter]=(int)Real_Data+0x30;
			Real_Data=(Real_Data-(Dis_Data[Counter]-0x30))*10.0;
			if (Counter==1)
				{
					Counter=Counter+1;
					Dis_Data[Counter]='.';
				}
		}                        


	Dis_Data[Counter]='e';
	if (Dot_Flag<0)	
		{
			Dot_Flag=-1*Dot_Flag;
			Dis_Data[Counter+1]='-';
			Dis_Data[Counter+2]=Dot_Flag/10+0x30;
			Dis_Data[Counter+3]=Dot_Flag-(Dot_Flag/10*10)+0x30;
		}
	else	if (Dot_Flag>0)	
		{
			Dis_Data[Counter+1]='+';
			Dis_Data[Counter+2]=Dot_Flag/10+0x30;
			Dis_Data[Counter+3]=Dot_Flag-(Dot_Flag/10*10)+0x30;
		}
                                              
	else                                              
		{
			Dis_Data[Counter+1]='+';
			Dis_Data[Counter+2]='0';
			Dis_Data[Counter+3]='0';
		}
 		
	for (Counter=0;Counter<Dot_Bit+6;Counter++)
		{
			Data_Add=Ascii+((Dis_Data[Counter]-0x20)<<4);
			Lcd_Cctw(Row,Column,8,16,Data_Add,Flag);           
			Column++;
		}
		
}

/*==============================================*/

/************************************************/
/*						*/
/*	Lcd_Int8x16:	显示整型数子程序	*/
/*			(8x8点阵)		*/
/*	Row:	行坐标<0-29(240/8-1)>		*/
/*	Column:	列坐标<0-39(320/8-1)>		*/
/*	Int_Data:	实型数			*/
/*						*/
/************************************************/

void	Lcd_Int8x16(unsigned int Row,unsigned int Column,long int Int_Data,unsigned int Flag)
{
 	int	Dis_Data[15];	/*	Int Max(16Bit)=32768	*/
 	int	Counter=1;
 	long int	temp;  
 	pointer	*Data_Add;
 	
 	if (Int_Data<0)
 		{
 			Int_Data=-1*Int_Data;
 			Dis_Data[0]='-';
 			Counter=1;
 		}	
 	else if(Int_Data>0)
 		{
 			Dis_Data[0]=' ';
 			Counter=1;
 		}
 	else
 		{
 			Dis_Data[0]=' ';
 			Dis_Data[1]='0';
 			Counter=2;
 		}
 	for (;Int_Data>0;Counter++)
 		{
 			temp=Int_Data;
 			Int_Data=Int_Data/10;
 			Dis_Data[Counter]=0x30+(temp-Int_Data*10);
 		}
 			                                         
	Data_Add=Ascii+((Dis_Data[0]-0x20)<<4);
	Lcd_Cctw(Row,Column++,8,16,Data_Add,Flag);           

	for (;Counter>1;Counter--)
		{
			Data_Add=Ascii+((Dis_Data[Counter-1]-0x20)<<4);
			Lcd_Cctw(Row,Column,8,16,Data_Add,Flag);           
			Column++;
		}       
}		

/*==============================================*/
	

⌨️ 快捷键说明

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