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

📄 loadbit.c

📁 一个 uC/OS + GUI 驱动 98x67 LCD 的例程 使用 Keil MDK 编译工程,uCOS-II 为 V2.52 版,GUI 为 ZLG 的 V1.0 版,LCD 使用 NOKIA
💻 C
字号:
/****************************************************************************************
* 文件名:LOADBIT.C
* 功能:显示单色图形及汉字显示。先将图形转换为对应的点阵数组,然后即可调用此文件的函数输出驱动。
* 作者:黄绍斌
* 日期:2004.02.26
* 备注:使用GUI_SetBackColor()函数设置显示颜色及背景色。
****************************************************************************************/
#include  "config.h"

#if  (GUI_LoadPic_EN==1)|(GUI_MenuIco_EN==1)|(GUI_PutHZ_EN==1)
/****************************************************************************
* 名称:GUI_LoadLine()
* 功能:输出单色图形的一行数据。
* 入口参数: x		指定显示位置,x坐标
*            y		指定显示位置,y坐标
*           dat		要输出显示的数据。
*           no      要显示此行的点个数
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
uint8  GUI_LoadLine(uint8 x, uint8 y, uint8 *dat, uint8 no)
{  uint8   bit_dat;
   uint8   i;
   TCOLOR  bakc;

   /* 参数过滤 */
   if(x>=GUI_LCM_XMAX) return(0);
   if(y>=GUI_LCM_YMAX) return(0);
   
   for(i=0; i<no; i++)
   {  /* 判断是否要读取点阵数据 */
      if( (i%8)==0 )
       {
	    #if AVR_GCC
		 bit_dat = prg_read_byte(data++);
		#else
         bit_dat = *dat++;
		#endif
	   }
     
      /* 设置相应的点为color或为back_color */
	  #if   GCC_AVR
	  if( (bit_dat&pgm_read_byte(DCB2HEX_TAB+i&0x07))==0 )
	  #else
	  if( (bit_dat&DCB2HEX_TAB[i&0x07])==0 )
	  #endif
	  {
	  GUI_CopyColor(&bakc, back_color); 
	  }
         else  GUI_CopyColor(&bakc, disp_color);
      GUI_Point(x, y, bakc);       
     
      if( (++x)>=GUI_LCM_XMAX ) return(0);
   }
   
   return(1);
}
#endif


#if  (GUI_LoadPic_EN==1)|(GUI_MenuIco_EN==1)
/****************************************************************************
* 名称:GUI_LoadPic()
* 功能:输出单色图形数据。
* 入口参数: x		指定显示位置,x坐标
*           y		指定显示位置,y坐标
*           dat		要输出显示的数据
*           hno     要显示此行的点个数
*           lno     要显示此列的点个数
* 出口参数:无
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
void  GUI_LoadPic(uint8 x, uint8 y, uint8 *dat, uint8 hno, uint8 lno)
{  uint8  i;

   for(i=0; i<lno; i++)
   {  GUI_LoadLine(x, y, dat, hno);				// 输出一行数据
      y++;										// 显示下一行
      dat += (hno>>3);							// 计算下一行的数据
      if( (hno&0x07)!=0 ) dat++;
   }
}




/****************************************************************************
* 名称:GUI_LoadPic1()
* 功能:输出单色图形数据,反相显示。
* 入口参数: x		指定显示位置,x坐标
*           y		指定显示位置,y坐标
*           dat		要输出显示的数据。
*           hno     要显示此行的点个数
*           lno     要显示此列的点个数
* 出口参数:无
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
void  GUI_LoadPic1(uint8 x, uint8 y, uint8 *dat, uint8 hno, uint8 lno)
{  uint8  i;
   
   GUI_ExchangeColor();									// 显示色与背景色交换
   for(i=0; i<lno; i++)
   {  GUI_LoadLine(x, y, dat, hno);						// 输出一行数据
      y++;												// 显示下一行
      dat += (hno>>3);									// 计算下一行的数据
      if( (hno&0x07)!=0 ) dat++;
   }
   GUI_ExchangeColor();
   
}
#endif


#if  GUI_PutHZ_EN==1
/****************************************************************************
* 名称:GUI_PutHZ()
* 功能:显示汉字。
* 入口参数: x		指定显示位置,x坐标
*           y		指定显示位置,y坐标
*           dat		要输出显示的汉字点阵数据。
*           hno     要显示此行的点个数
*           lno     要显示此列的点个数
* 出口参数:无
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
void  GUI_PutHZ(uint8 x, uint8 y, uint8 *dat, uint8 hno, uint8 lno)
{  uint8  i;

   for(i=0; i<lno; i++)
   {  GUI_LoadLine(x, y, dat, hno);						// 输出一行数据
      y++;												// 显示下一行
      dat += (hno>>3);									// 计算下一行的数据
      if( (hno&0x07)!=0 ) dat++;
   }
}
#endif






⌨️ 快捷键说明

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