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

📄 lpc_lib_mylcd.c

📁 使用embest IDE开发工具开发的基于LPC2294 的触摸屏开发
💻 C
📖 第 1 页 / 共 2 页
字号:
      myLCD_Yaddr(y);
      myLCD_Xaddr(x);	
      com = (x/256)<<2;//TFT板为CMD = ( x/256)<<2;,CSTN板为CMD = (( x/256)<<6)|0x04;
      myLCD_wrcom(com);
      disp_line_byte(han16x16[k++],mygfore_clr,mygback_clr);//左边字节
      disp_line_byte(han16x16[k++],mygfore_clr,mygback_clr);//右边字节     
     
     }
     else
     {
      disp_line_byte_fore(han16x16[k++],mygfore_clr,x,y);
      x=x+8;
      disp_line_byte_fore(han16x16[k++],mygfore_clr,x,y);
      x=x-8;
      
     } 
   }
   mygcolth=mygcolth+2;            //1个汉字对应于2个mygcolth
   if(!(mygcolth%z_column_num))    //写满换行
   {
	myglineth++;
	mygcolth=0;
   }
  } 
}

/*
**********************************************************************************************
* name:		mycls
* func:		用参数的颜色清屏
* para:		col:清屏的颜色
* ret:		none
* modify:
* comment:		
**********************************************************************************************
*/
void mycls(INT8U col)
{
    myposi_piexl_start(0,0);
    myposi_piexl_end(319,239);
    myLCD_line_rectangle(col);
}
/*
**********************************************************************************************
* name:		myposi_set
* func:		set position of the displaying string
* para:		lineth:line number
			colth: column number
* ret:		none
* modify:
* comment:	set value to global variable of position	
**********************************************************************************************
*/
void myposi_set(INT8U lineth,INT8U colth)
{
	myglineth=lineth;
	mygcolth=colth;
}
/*
**********************************************************************************************
* name:		myposi_piexl_start
* func:		开始位置的像素地址
* para:		y:line number
			x: column number
* ret:		none
* modify:
* comment:	set value to global variable of position
**********************************************************************************************
*/

void myposi_piexl_start(INT16U x,INT8U y)
{
  x_piexl_start=x;
  y_piexl_start=y;
}
/*
**********************************************************************************************
* name:		myposi_piexl_end
* func:		结束位置的像素地址
* para:		y:line number
			x: column number
* ret:		none
* modify:
* comment:	set value to global variable of position
**********************************************************************************************
*/
void myposi_piexl_end(INT16U x,INT8U y)
{
  x_piexl_end=x;
  y_piexl_end=y;
}
/*
**********************************************************************************************
* name:		myLCD_disp_picture_full
* func:     用于显示320*240的图片
* para:		data:要显示图片的数据
			
* ret:		none
* modify:
* comment:	
**********************************************************************************************
*/
void myLCD_disp_picture_full(INT8U data[])
{
 INT8U y,com;
 INT16U x;
 INT32U k=0;
 for(y=0;y<line_max;y++)
 {
  x=0;
  myLCD_Xaddr(x);
  myLCD_Yaddr(y);
  com=(x/256)<<2;
  myLCD_wrcom(com);
  for(;x<column_max;x++)
    myLCD_wrdata(data[k++]);
 }
}

/*
**********************************************************************************************
* name:		myLCD_disp_picture
* func:		用于显示非全屏显示的图片
* para:		data:显示图片的数据
			
* ret:		none
* modify:
* comment:	显示图片左上角坐标为(x_piexl_start,y_piexl_start)
            右下角坐标为(x_piexl_end,y_piexl_end)
**********************************************************************************************
*/
void myLCD_disp_picture(INT8U data[])
{
  INT8U y,com,y_min,y_max;
  INT16U x,x_min,x_max;
  INT32U k=0;
  
  
  //防止输入进时x_piexl_start<x_piexl_end,出现错误
  x_min=x_piexl_start<x_piexl_end?x_piexl_start:x_piexl_end;  //
  x_max=x_piexl_start>x_piexl_end?x_piexl_start:x_piexl_end;  //
  
  y_min=y_piexl_start<y_piexl_end?y_piexl_start:y_piexl_end;
  y_max=y_piexl_start>y_piexl_end?y_piexl_start:y_piexl_end;
  

  
 if((y_max<line_max)&&(x_max<column_max)) //防止y_max和x_max超出范围
 {
  for(y=y_min;y<=y_max;y++)
  {
   myLCD_Xaddr(x_min);
   myLCD_Yaddr(y);
   com=(x/256)<<2;
   myLCD_wrcom(com);
   for(x=x_min;x<=x_max;x++)
     myLCD_wrdata(data[k++]);
  }
 }
}
/*
**********************************************************************************************
* name:		myLCD_disp_picture_fore
* func:	    专用于鼠标的显示
* para:		data:显示图片的数据
			
* ret:		none
* modify:
* comment:	当数据为0时,不显示,为1时,显示前景色
**********************************************************************************************
*/
//专用于不显示背景色的不规则图标 (鼠标)
void myLCD_disp_picture_fore(INT8U data[])
{
  INT8U y,com,y_min,y_max,data1;
  INT16U x,x_min,x_max;
  INT32U k=0;
  
  
  //防止输入进时x_piexl_start<x_piexl_end,出现错误
  x_min=x_piexl_start<x_piexl_end?x_piexl_start:x_piexl_end;  //
  x_max=x_piexl_start>x_piexl_end?x_piexl_start:x_piexl_end;  //
  
  y_min=y_piexl_start<y_piexl_end?y_piexl_start:y_piexl_end;
  y_max=y_piexl_start>y_piexl_end?y_piexl_start:y_piexl_end;
  
 
  
  for(y=y_min;y<=y_max;y++)
  {
  
   for(x=x_min;x<=x_max;x++)
   {
    data1=data[k++];
    if(data1!=mygback_clr)             //当data1为背景色时,不显示。
    {
     myLCD_Xaddr(x);
     myLCD_Yaddr(y);
     com=(x/256)<<2;
     myLCD_wrcom(com);
     myLCD_wrdata(data1);
    }
   }
  }  
}
/*
**********************************************************************************************
* name:		myLCD_init
* func:		initialize LCD screen
* para:		none
* ret:		none
* modify:
* comment:		
**********************************************************************************************
*/
void myLCD_display_mouse(INT16U x_mouse,INT8U y_mouse)
{
 INT16U x;
 INT8U y;
 
 x=x_mouse-mouse_length_a/2;
 y=y_mouse-mouse_length_b/2;
 myposi_piexl_start(x,y);
 
 x=x_mouse+mouse_length_a/2;
 y=y_mouse+mouse_length_b/2;
 myposi_piexl_end(x,y);
 
 mycolor_set(0x0,0xff);
 
 myLCD_disp_picture_fore(gImage_mouse);
}

void myLCD_display_mouse_1(INT16U x_mouse,INT8U y_mouse)
{
// INT16U x;
// INT8U y,i;
 
  INT8U y,com,data1,j;
  INT16U x;
  INT32U k=0;

 if((x_mouse<column_max)&&(x_mouse>0)&&(y_mouse<line_max)&&(y_mouse>0))
  for(y=y_mouse;y<=y_mouse+mouse_length_b&&y<line_max;y++)
  {
   data1=gImage_mouse[k++];
   for(x=x_mouse,j=0x80;x<=x_mouse+mouse_length_a&&x<column_max;x++,j=j>>1)
   {
    if(data1&j)             //当data1为背景色时,不显示。
    {
     myLCD_Xaddr(x);
     myLCD_Yaddr(y);
     com=(x/256)<<2;
     myLCD_wrcom(com);
     myLCD_wrdata(0xff);
    }
   }
  }  
}
/*
**********************************************************************************************
* name:		myLCD_line_xie
* func:		画斜线
* para:		col:线的颜色
			
* ret:		none
* modify:
* comment:	
            
**********************************************************************************************
*/
void myLCD_line_xie(INT8U col)
{
  INT8U y,com;
  INT16U x,i;
  FP32 k;
  
  if(x_piexl_start>x_piexl_end)
  {
   i=x_piexl_start;
   x_piexl_start=x_piexl_end;
   x_piexl_end=i;
   
   i=y_piexl_start;
   y_piexl_start=y_piexl_end;
   y_piexl_end=i;
  }
  
  k=(y_piexl_end-y_piexl_start)/(x_piexl_end-x_piexl_start);
 
 for(x=x_piexl_start;x<=x_piexl_end;x++)
 {
  myLCD_Xaddr(x);
  y=(unsigned int)(k*(x-x_piexl_start)+y_piexl_start);
  myLCD_Yaddr(y);
  com=(x/256)<<2;
  myLCD_wrcom(com);
  myLCD_wrdata(col);
 }
}
/*
**********************************************************************************************
* name:		myLCD_line_0
* func:		画x轴线,y轴线
* para:		col:线的颜色
			
* ret:		none
* modify:
* comment:
**********************************************************************************************
*/
void myLCD_line_0(INT8U col)
{
  INT8U y,com,k=0,y_min,y_max;
  INT16U x,x_min,x_max;
  
  x_min=x_piexl_start<x_piexl_end?x_piexl_start:x_piexl_end;
  x_max=x_piexl_start>x_piexl_end?x_piexl_start:x_piexl_end;
  
  y_min=y_piexl_start<y_piexl_end?y_piexl_start:y_piexl_end;
  y_max=y_piexl_start>y_piexl_end?y_piexl_start:y_piexl_end;
  
 for(y=y_min;y<=y_max;y++)
 {
  x=x_min;
  myLCD_Xaddr(x);
  myLCD_Yaddr(y);
  com=(x/256)<<2;
  myLCD_wrcom(com);
  for(;x<=x_max;x++)
   myLCD_wrdata(col);
 }
}
/*
**********************************************************************************************
* name:		myLCD_line
* func:		画直线
* para:		col:线的颜色
			
* ret:		none
* modify:
* comment:
**********************************************************************************************
*/
void myLCD_line(INT8U col)
{
  if((x_piexl_start==x_piexl_end)||(y_piexl_start==y_piexl_end))
   myLCD_line_0(col);
  else
   myLCD_line_xie(col);     
}

/*
**********************************************************************************************
* name:		myLCD_line-rectangle
* func:		画矩形
* para:		col:矩形的颜色
			
* ret:		none
* modify:
* comment:	
**********************************************************************************************
*/
void myLCD_line_rectangle(INT8U col)
{
   INT8U com;
//定义A点坐标(20,20)
   myLCD_wrcom(0x00);
   myLCD_Xaddr(x_piexl_start);
   myLCD_Yaddr(y_piexl_start);
//定义B点低位坐标(300,220)及填充颜色
   myLCD_wrcom(0x20);
   myLCD_Xaddr(x_piexl_end);//
   myLCD_Yaddr(y_piexl_end);//
   myLCD_wrdata(col);//填充颜色
//启动填充操作及B点高位坐标
   com=0x30|((x_piexl_end/256)<<2);
   myLCD_wrcom(com);
//延时16.6毫秒
   myDelayms(17);
//退出填充操作
   myLCD_wrcom(0x00);
}

/*
**********************************************************************************************
* name:		mycolor_set
* func:		set color of char and background
* para:		fcolor: char color
			bcolor: background color
* ret:		none
* modify:
* comment:	set value to global variable of color	
**********************************************************************************************
*/
void mycolor_set(INT16U fcolor,INT16U bcolor)
{
	mygfore_clr=fcolor;
	mygback_clr=bcolor;
}
/*
**********************************************************************************************
* name:		myclear_line
* func:		删除一行
* para:		line_num:要删除的行号
* ret:		none
* modify:
* comment:		
**********************************************************************************************
*/
void myclear_line(INT8U line_num)
{
	INT8U x,y;
	for(y=0;y<16;y++)
	{
	 x=X_SPACE0;
	 myLCD_Xaddr(x);
	 myLCD_Yaddr(line_num*16+Y_SPACE0+y);
	 for(x=X_SPACE0;x<column_max-X_SPACE1;x++)
		myLCD_wrdata(mygback_clr);		
	}	
}

⌨️ 快捷键说明

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