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

📄 lcmdrv.c

📁 没有开发板也可以学ARM。ucos-ii与ZLG-GUI的GBA移植
💻 C
字号:

#include "config.h"


/***********************************************************************
* 名称:LCM_DispFill()
* 功能:向显示缓冲区填充数据
* 入口参数:filldata  	要写入LCM的填充数据
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
***********************************************************************/
void LCM_DispFill(TCOLOR filldata)
{
   uint32 x,y;
   uint16 ColorIndex = GUI_Color2Index_565(filldata);
   for(y=0;y< GUI_LCM_YMAX;y++)
   for(x=0;x< GUI_LCM_XMAX;x++)
   *(&GBA_VRAM + 240*y + x)=ColorIndex ;
   
}
   
/****************************************************************************
* 名称:GUI_FillSCR()
* 功能:全屏填充。直接使用数据填充显示缓冲区。
* 入口参数:dat		填充的数据
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
****************************************************************************/
void  GUI_FillSCR(TCOLOR dat)
{  
   // 填充LCM
   LCM_DispFill(dat);
}

/****************************************************************************
* 名称:GUI_Initialize()
* 功能:初始化GUI,包括初始化显示缓冲区,初始化LCM并清屏。
* 入口参数:无
* 出口参数:无
* 说明:用户根据LCM的实际情况编写此函数。
****************************************************************************/
void  GUI_Initialize(void)
{ 
   GBA_REG_DISPCNT = 0x0403;

   GUI_ClearSCR(); 
}

/****************************************************************************
* 名称:GUI_Point()
* 功能:在指定位置上画点。
* 入口参数:x		指定点所在列的位置
*           y		指定点所在行的位置
*           color	显示颜色(对于黑白色LCM,为0时灭,为1时显示)
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
* 说明:操作失败原因是指定地址超出缓冲区范围。
****************************************************************************/
uint8  GUI_Point(uint8 x, uint8 y, TCOLOR color)
{ 
   // 参数过滤 
   if(x>=GUI_LCM_XMAX) return(0);
   if(y>=GUI_LCM_YMAX) return(0);
   
   // 设置相应的点 
   *(&GBA_VRAM + 240*y + x) = GUI_Color2Index_565(color);
   return(1);
}

/****************************************************************************
* 名称:GUI_ReadPoint()
* 功能:读取指定点的颜色。
* 入口参数:x		指定点所在列的位置
*           y		指定点所在行的位置
*           ret     保存颜色值的指针
* 出口参数:返回0表示指定地址超出缓冲区范围
* 说明:对于单色,设置ret的d0位为1或0,4级灰度则为d0、d1有效,8位RGB则d0--d7有效,
*      RGB结构则R、G、B变量有效。
****************************************************************************/
uint8  GUI_ReadPoint(uint8 x, uint8 y, TCOLOR *ret)
{  
   // 参数过滤
   if(x>=GUI_LCM_XMAX) return(0);
   if(y>=GUI_LCM_YMAX) return(0);
     
   *ret =GUI_Index2Color_565(*(&GBA_VRAM + 240*y + x));  
   
   return(1);
}

/****************************************************************************
* 名称:GUI_HLine()
* 功能:画水平线。
* 入口参数:x0		水平线起点所在列的位置
*           y0		水平线起点所在行的位置
*           x1      水平线终点所在列的位置
*           color	显示颜色(对于黑白色LCM,为0时灭,为1时显示)
* 出口参数:无
* 说明:操作失败原因是指定地址超出缓冲区范围。
****************************************************************************/
void  GUI_HLine(uint8 x0, uint8 y0, uint8 x1, TCOLOR color) 
{   
    uint32 i,j;
	uint16 ColorIndex =  GUI_Color2Index_565(color);
	j = 240*y0;
	if(x1 >= x0)
	{
		for(i=x0; i<=x1; i++)
			*(&GBA_VRAM + j + i) = ColorIndex;
	}
	else
	{
		for(i=x0; i>=x1; i--)
			*(&GBA_VRAM + j + i) = ColorIndex;		 
	}
}

/***********************************************************************
* 名称:GUI_RLine()
* 功能:画竖直线。根据硬件特点,实现加速。
* 入口参数:x0		垂直线起点所在列的位置
*           y0		垂直线起点所在行的位置
*           y1      垂直线终点所在行的位置
*           color	显示颜色(对于黑白色LCM,为0时灭,为1时显示)
* 出口参数:	无
* 说明:操作失败原因是指定地址超出缓冲区范围。
***********************************************************************/
void  GUI_RLine(uint8 x0, uint8 y0, uint8 y1, TCOLOR color) 
{ 
    uint32 i;
	uint16 ColorIndex =  GUI_Color2Index_565(color);
	if(y1 >= y0)
	{
		for(i=y0; i<=y1; i++)
			*(&GBA_VRAM + 240*i + x0) = ColorIndex;
	}
	else
	{
		for(i=y0; i>=y1; i--)
			*(&GBA_VRAM + 240*i + x0) = ColorIndex;		
	}
}




⌨️ 快捷键说明

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