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

📄 lcd.c

📁 dsp 控制sed1330的 程序 直接可以调用
💻 C
📖 第 1 页 / 共 2 页
字号:
	Lcd_wc=CSRW;	LCDWAIT; 
	Lcd_wd=Cursor_X;     LCDWAIT; 
	Lcd_wd=Cursor_Y;  	  LCDWAIT; 
	Lcd_wc=MWRITE; 	 LCDWAIT; 
    Lcd_wd=Read_Data&(~(0x80>>Counter));
    LCDWAIT;
}/*==============================================*/
/************************************************/
/*						*/
/*	Lcd_Line:	划线子程序		*/
/*						*/
/*	(X0,Y0):	起始点坐标		*/
/*	(X1,Y1):	终止点坐标		*/
/*						*/
/*	X0,X1:	0-319				*/
/*	Y0,Y1:	0-239				*/
/*						*/
/************************************************/
void  Lcd_Line1(unsigned int X0,unsigned int Y0,unsigned int X1,unsigned int Y1)
{	unsigned int	Cursor_X,Cursor_Y;
	unsigned int	Counter,Dot_Type;                         
	unsigned int	Read_Data,Read_Flag;
	double	k;
	if (Y0>Y1)	{Counter=Y0;Y0=Y1;Y1=Counter;}
		 if (Y1>=239)	Y1=239;
	for (Counter=Y0;Counter<=Y1;Counter++)
		 {Lcd_Point1(X0,Counter);} 
}
/************************************************/
/*						*/
/*	Lcd_Cctw:	写点阵字符子程序	*/
/*						*/
/*	Row:	行坐标<0-29(240/8-1)>		*/
/*	Column:	列坐标<0-39(320/8-1)>		*/
/*	(Dot1,Dot2):	点阵格式		*/
/*		(eg:8x8,8x16,16x16,16x32,...)	*/
/*	Data_Add:	点阵数据首址		*/
/*	Flag:	反显标志			*/
/*		Flag=Normal	正常显示	*/
/*		Flag=Abnormal	反白显示	*/
/*						*/
/************************************************/  
void	Lcd_Cctw(unsigned int Row,unsigned int Column,unsigned int Dot1,unsigned int Dot2,pointer *Data_Add)
{	unsigned  int	Cursor_X,Cursor_Y;
 	unsigned  int	Counter1,Counter2;
 	Cursor_X=((Row<<3)*Lcd_AP+Column+0x4000)&0x00ff;
 	Cursor_Y=(((Row<<3)*Lcd_AP+Column+0x4000)&0xff00)>>8;
 	Lcd_wc=CSRDIR_DW;	LCDWAIT;
 	for(Counter2=0;Counter2<(Dot1>>3);Counter2++)
 		{Lcd_wc=CSRW; LCDWAIT;
	 	 Lcd_wd=Cursor_X;LCDWAIT;
	 	 Lcd_wd=Cursor_Y;LCDWAIT;
		 Lcd_wc=MWRITE;	LCDWAIT;
		 for(Counter1=0;Counter1<Dot2;Counter1++)
     			{Lcd_wd=*(Data_Add++);LCDWAIT;
		 		}
			Cursor_X++;
		}
}
/************************************************/
/*						*/
/*	Lcd_Out_Bmp:	显示位图子程序		*/
/*	Dot_X:	x坐标(0-319)			*/
/*	Dot_Y:	y坐标(0-239)			*/
/*	(Dot1,Dot2):	位图点阵格式		*/
/*	Data_Add:	位图数据首地址		*/
/*	Flag:	反显标志			*/
/*		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	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;		LCDWAIT;
 	for(Counter2=0;Counter2<Dot2;Counter2++)
 		{
 			Lcd_wc=CSRW;		LCDWAIT;
	 			Lcd_wd=Cursor_X;		LCDWAIT;
	 			Lcd_wd=Cursor_Y; 		LCDWAIT;
		 	Lcd_wc=MWRITE;		LCDWAIT;
			for(Counter1=0;Counter1<(Dot1>>3);Counter1++)
     				{ Lcd_wd=*(Data_Add++);
		 			  LCDWAIT;
		 			}
		 	Cursor_Y=Cursor_Y+((Cursor_X+Lcd_AP)>>8);
 			Cursor_X=(Cursor_X+Lcd_AP)&0x00ff;
 			
     		}
}/*============================================*/
/************************************************/
/*						*/
/*	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)
{int	Dis_Data[20];
 int	Counter=1;
 int	Dot_Flag=0;
 	pointer	*Data_Add;
 if (Real_Data<0)	
 	{Dis_Data[0]=11;        /*'-'*/
 	 Real_Data=fabs(Real_Data);
 	}
 else 	Dis_Data[0]=10;      /*' '*/
 while (Real_Data>=10.0)
	{Real_Data=Real_Data/10.0;
	 Dot_Flag++;
	 Counter=1;
	 }
 while (Real_Data<1)
	{if (Real_Data==0)
		 {goto AAA;}                 
	 Real_Data=Real_Data*10.0;
	 Dis_Data[1]=0; /* '0'*/
	 Dis_Data[2]=12; /* '.'*/
	 Counter=3-Dot_Flag;
	 Dis_Data[Counter]=0; /*'0'*/
	 Dot_Flag--;
	}
AAA: for (Counter=Counter;Counter<=(Dot_Bit+1);Counter++)
		{Dis_Data[Counter]=(int)Real_Data;
		 Real_Data=(Real_Data-(Dis_Data[Counter]))*10.0;
		 if (Dot_Flag==0)
			{Counter=Counter+1;
			 Dis_Data[Counter]=12;  /*'.'*/
			}
			Dot_Flag--;
		}
    for (Counter=0;Counter<Dot_Bit+2;Counter++)
		{Data_Add=Ascii[0]+((Dis_Data[Counter])<<4);
		 Lcd_Cctw(Row,Column,8,16,Data_Add);           
		 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,int Int_Data)
{	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]=11;   /*'-'*/ 
 		 Dis_Data[1]=12;   /*.*/
 		 Counter=2;
 		}	
 	else if(Int_Data>0)
 		{Dis_Data[0]=10; /*' '*/
 		 Counter=1;
 		}
 	else {Dis_Data[0]=10; /*' '*/
 		  Dis_Data[1]=0; /*'0'*/
 		  Counter=2;
 		 }
 	for (;Int_Data>0;Counter++)
 		{temp=Int_Data;
 		 Int_Data=Int_Data/10;
 		 Dis_Data[Counter]=temp-Int_Data*10;
 		}
 	Data_Add=Ascii[0]+(Dis_Data[0]<<4);
	Lcd_Cctw(Row,Column,8,16,Data_Add);  
	for (;Counter>1;Counter--)
		{Data_Add=Ascii[0]+((Dis_Data[Counter-1])<<4);
		 Lcd_Cctw(Row,++Column,8,16,Data_Add);           
		}       
}/*====================================================*/		
void Lcd_Ascii(unsigned int Row,unsigned int Column,unsigned int Character)
{ pointer	*Data_Add;
  Data_Add=Ascii[0]+Character*16;
  Lcd_Cctw(Row,Column,8,16,Data_Add);           
}/*===========================================================*/	
void Lcd_Axis(unsigned int Row,unsigned int Column,unsigned int XX,unsigned int YY)
{unsigned int  X0,Y0,X1,Y1,i,j;   /*画坐标轴*/
     X0=Row;
     Y0=Column;
     Y1=YY;
     X1=XX;
     Lcd_Line(Y0,X0,Y1,X0); /*共记320个点,y轴*/ 
     Lcd_Line(Y1-5,X0-5,Y1,X0); /*y轴左侧箭头(20)*/
     Lcd_Line(Y1-5,X0+5,Y1,X0); /*y轴右侧箭头(20)*/ 
     Lcd_Line(Y0,X0,Y0,X1); /*共记220个点,x轴*/
     Lcd_Line(Y0,X1,Y0-5,X1+5); /*x轴上侧箭头(20)*/
     Lcd_Line(Y0,X1,Y0+5,X1+5);  /*x轴下侧箭头(20)*/  
     for (i=1;i<=9;i++)
     {Y0=Y0+26; X0=X0-16;  /*160/16=10,hotizontal*/
      Lcd_Line(Y0,200,Y0,197); /*260/16=10,vertical*/ 
      Lcd_Line(40,X0,43,X0);
     }      
}/*======================================================*/	
void CursorMove(unsigned section,int x,int y)	/*type=0,1,2区*/
{unsigned int	s;
    s=x+y*Lcd_AP+section*0x4000; LCDWAIT;LCDWAIT;
	Lcd_wc=0x46; LCDWAIT; LCDWAIT;
	Lcd_wd=s;  LCDWAIT; LCDWAIT;
	Lcd_wd=s>>8;  LCDWAIT;LCDWAIT; LCDWAIT; LCDWAIT;
}/*-------------------------------------------------*/  
void ReadChar(unsigned page,unsigned x,unsigned y,unsigned d[]) 
{unsigned int	i,k,d0;	
	CursorMove(page,x,y);
	Lcd_wc=CSRDIR_DW; LCDWAIT; LCDWAIT;
	Lcd_wc=0x43;   LCDWAIT; LCDWAIT;
	for(i=0;i<8;i++)
	   {d[i]=Lcd_wc;  LCDWAIT; LCDWAIT;
	    d[i] &= 0x00ff;
	   }
	for(i=0;i<8;i++)
    	{d0=d[i]<<8;
          for(k=0;k<8;k++)
	        {d[k]=((d[k]>>1) & 0xff00) + (d[k] & 0x00ff);
	         d[k]=d[k] | (d0 & 0x8000);
	         d0=d0<<1 ;
	        }
         } 
	for(i=0;i<8;i++)
	  {d[i]>>=8;}
}/*=====================================================*/

⌨️ 快捷键说明

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