www.pudn.com > armzhiwenshibie.rar > hz24.c


/**************************************************************************************** 
* 文件名:hz24.C 
* 功能:24*24 ASCII码字体及显示函数。 
* 作者:路涛 
* 日期:2006.10.13 
* 备注:使用GUI_SetColor()函数设置前景颜色及背景色。 
****************************************************************************************/ 
#include "config.h" 
 
 
/* 24*24字体定义 */ 
const uint8  hz24[][72] = { 
//欢[24*24]横排 
 { 0x00,  0x08,  0x00,  0x00,  0x0E,  0x00,  0x00,  0x0C, 
   0x00,  0x00,  0x0C,  0x00,  0x01,  0x8C,  0x00,  0x7F, 
  0x0D8,  0x0C,  0x01,  0x9F, 0x0FE,  0x01,  0x90,  0x0C, 
   0x01, 0x0A2,  0x18,  0x21, 0x0A3,  0x90,  0x13,  0x43, 
   0x00,  0x1B,  0x03,  0x00,  0x0B,  0x03,  0x00,  0x06, 
   0x03,  0x00,  0x06,  0x06,  0x80,  0x07,  0x06,  0x80, 
   0x0D,  0x86,  0x80,  0x19,  0x8C,  0x40,  0x10, 0x0CC, 
   0x60,  0x20,  0x98,  0x30,  0x40,  0x30,  0x38,  0x00, 
   0x60,  0x1E,  0x01,  0x80,  0x08,  0x02,  0x00,  0x00 
  }, 
 
//迎[24*24]横排 
{ 
   0x00,  0x00,  0x00,  0x30,  0x08,  0x00,  0x18,  0x5E, 
   0x18,  0x0C,  0x63, 0x0FC,  0x0C,  0x63,  0x18,  0x04, 
   0x63,  0x18,  0x00,  0x63,  0x18,  0x00,  0x63,  0x18, 
   0x0C,  0x63,  0x18,  0x7E,  0x63,  0x18,  0x0C,  0x63, 
   0x18,  0x0C,  0x63,  0x18,  0x0C,  0x67,  0x18,  0x0C, 
   0x7B,  0x18,  0x0C,  0x73,  0x18,  0x0C, 0x0E3,  0x78, 
   0x0C,  0x43,  0x30,  0x0C,  0x03,  0x00,  0x0C,  0x03, 
   0x00,  0x0E,  0x02,  0x00,  0x19,  0x00,  0x00,  0x70, 
  0x0FF, 0x0FE,  0x20,  0x7F, 0x0F8,  0x00,  0x00,  0x00 
}, 
 
//进[24*24]横排 
{  0x00,  0x10,  0x80,  0x10,  0x1C, 0x0E0,  0x18,  0x18, 
  0x0C0,  0x0C,  0x18, 0x0C0,  0x06,  0x18, 0x0C8,  0x06, 
  0x0FF, 0x0FC,  0x04,  0x18, 0x0C0,  0x00,  0x18, 0x0C0, 
   0x00,  0x18, 0x0C0,  0x0C,  0x18, 0x0C0,  0x7E,  0x18, 
  0x0CC,  0x0D, 0x0FF, 0x0FE,  0x0C,  0x18, 0x0C0,  0x0C, 
   0x18, 0x0C0,  0x0C,  0x30, 0x0C0,  0x0C,  0x30, 0x0C0, 
   0x0C,  0x60, 0x0C0,  0x0C, 0x0C0, 0x0C0,  0x0D,  0x00, 
  0x0C0,  0x0C,  0x00,  0x80,  0x32,  0x00,  0x00,  0x61, 
  0x0FF, 0x0FE,  0x20, 0x0FF, 0x0F8,  0x00,  0x00,  0x00 
}, 
//入[24*24]横排 
{  0x00,  0x00,  0x00,  0x03,  0x00,  0x00,  0x07, 0x0C0, 
   0x00,  0x00,  0x30,  0x00,  0x00,  0x10,  0x00, 0x00, 
   0x08,  0x00,  0x00,  0x18,  0x00,  0x00,  0x1C, 0x00, 
   0x00,  0x1C,  0x00,  0x00,  0x34,  0x00,  0x00,  0x32, 
   0x00,  0x00,  0x62,  0x00,  0x00,  0x63,  0x00,  0x00, 
  0x0C1,  0x00,  0x00, 0x0C1,  0x80,  0x01,  0x81,  0x80, 
   0x03,  0x00, 0x0C0,  0x06,  0x00, 0x0E0,  0x0C,  0x00, 
   0x60,  0x08,  0x00,  0x78,  0x10,  0x00,  0x3E,  0x20, 
   0x00,  0x18,  0x40,  0x00,  0x00,  0x00,  0x00,  0x00 
}, 
//指[24*24]横排 
{  0x04,  0x10,  0x00,  0x07,  0x1C,  0x00,  0x06,  0x18, 
   0x18,  0x06,  0x18, 0x0FC,  0x06,  0x1F,  0x00,  0x06, 
   0x98,  0x04,  0x7F, 0x0D8,  0x04,  0x06,  0x18,  0x06, 
   0x06,  0x1F, 0x0FE,  0x06,  0x0F, 0x0FC,  0x06, 0x0C0, 
   0x00,  0x07,  0x10,  0x18,  0x1E,  0x1F, 0x0FC,  0x7E, 
   0x18,  0x18,  0x36,  0x18,  0x18,  0x06,  0x18,  0x18, 
   0x06,  0x1F, 0x0F8,  0x06,  0x18,  0x18,  0x06,  0x18, 
   0x18,  0x06,  0x18,  0x18,  0x7E,  0x1F, 0x0F8,  0x1C, 
   0x18,  0x18,  0x08,  0x10,  0x10,  0x00,  0x00,  0x00 
}, 
//纹[24*24]横排 
{  0x04,  0x02,  0x00,  0x07,  0x01,  0x00,  0x06,  0x01, 
   0x80,  0x0C,  0x01,  0x80,  0x0C,  0x01,  0x04,  0x08, 
   0x7F, 0x0FE,  0x19,  0x08,  0x30,  0x11, 0x0C8,  0x30, 
   0x23,  0x88,  0x30,  0x7F,  0x08,  0x30,  0x23,  0x04, 
   0x60,  0x06,  0x04,  0x60,  0x04,  0x04,  0x60,  0x0C, 
   0x02,  0x60,  0x18, 0x0E2, 0x0C0,  0x3F,  0x03, 0x0C0, 
   0x10,  0x01,  0x80,  0x00,  0x03,  0x80,  0x01, 0x0E6, 
  0x0C0,  0x7F,  0x0C,  0x60,  0x38,  0x18,  0x38,  0x20, 
   0x30,  0x1E,  0x00, 0x0C0,  0x08,  0x01,  0x00,  0x00 
}, 
//识[24*24]横排 
{  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x18,  0x20, 
   0x30,  0x0C,  0x3F, 0x0F8,  0x06,  0x30,  0x30,  0x06, 
   0x30,  0x30,  0x04,  0x30,  0x30,  0x00,  0x30,  0x30, 
   0x0C,  0x30,  0x30,  0x7E,  0x30,  0x30,  0x0C,  0x30, 
   0x30,  0x0C,  0x3F, 0x0F0,  0x0C,  0x30,  0x30,  0x0C, 
   0x20,  0x20,  0x0C,  0x08,  0x80,  0x0C,  0x4E,  0x40, 
   0x0C,  0x8C,  0x20,  0x0D,  0x18,  0x30,  0x0E,  0x10, 
   0x18,  0x0E,  0x30,  0x0C,  0x1C,  0x60,  0x0E,  0x08, 
   0x80,  0x06,  0x01,  0x00,  0x04,  0x00,  0x00,  0x00 
}, 
//别[24*24]横排 
{  0x00,  0x00,  0x08,  0x10,  0x18,  0x0E,  0x1F, 0x0FC, 
   0x0C,  0x18,  0x18,  0x8C,  0x18,  0x18, 0x0EC,  0x18, 
   0x18, 0x0CC,  0x18,  0x18, 0x0CC,  0x18,  0x18, 0x0CC, 
   0x1F, 0x0F8, 0x0CC,  0x18,  0x18, 0x0CC,  0x12,  0x10, 
  0x0CC,  0x03,  0x80, 0x0CC,  0x03,  0x18, 0x0CC,  0x3F, 
  0x0FC, 0x0CC,  0x03,  0x18, 0x0CC,  0x03,  0x18, 0x0CC, 
   0x03,  0x18,  0x8C,  0x06,  0x18,  0x0C,  0x06,  0x18, 
   0x0C,  0x0C,  0x38,  0x0C,  0x19, 0x0F0,  0x0C,  0x30, 
   0x60,  0x7C,  0x40,  0x40,  0x38,  0x00,  0x00,  0x10 
}, 
//系[24*24]横排 
{  0x00,  0x00,  0x20,  0x00,  0x0F, 0x0F0,  0x00,  0x7F, 
  0x0F8,  0x3F, 0x0F0,  0x00,  0x00,  0x20,  0x00,  0x00, 
   0x70,  0x80,  0x00, 0x0C1, 0x0E0,  0x01,  0x03,  0x80, 
   0x0F, 0x0FE,  0x00,  0x06,  0x18,  0x00,  0x00,  0x63, 
   0x00,  0x01,  0x81, 0x0C0,  0x06,  0x00, 0x0F0,  0x3F, 
  0x0FF, 0x0F8,  0x1C,  0x18,  0x1C,  0x01,  0x18,  0x08, 
   0x03, 0x0DB,  0x80,  0x03,  0x18, 0x0E0,  0x06,  0x18, 
   0x38,  0x0C,  0x18,  0x1C,  0x18,  0x18,  0x0C,  0x21, 
  0x0F8,  0x08,  0x40,  0x70,  0x00,  0x00,  0x20,  0x00 
}, 
//统[24*24]横排 
{  0x04,  0x06, 0x00,  0x07,  0x03,  0x00,  0x0E,  0x03, 
   0x80,  0x0C,  0x01,  0x0C,  0x18, 0x0FF, 0x0FE,  0x18, 
   0x02,  0x00,  0x31,  0x07,  0x00,  0x21, 0x0CC,  0x40, 
   0x7F,  0x98,  0x30,  0x23,  0x20,  0x18,  0x06,  0x7F, 
  0x0FC,  0x0C,  0x30,  0x08,  0x18,  0x08,  0x80,  0x20, 
   0x0E, 0x0E0,  0x7F, 0x0CC, 0x0C0,  0x38,  0x0C, 0x0C0, 
   0x00,  0x0C, 0x0C0,  0x00,  0x0C, 0x0C4,  0x07, 0x0D8, 
  0x0C4,  0x7C,  0x18, 0x0C4,  0x30,  0x30, 0x0C6,  0x00, 
   0x60, 0x0FE,  0x01,  0x80,  0x7C,  0x06,  0x00,  0x00 
} 
}; 
const int8 hz24_tab[]="欢迎进入指纹识别系统"; 
const uint8 dcb2dex_tab[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; 
/**************************************************************************** 
* 名称:GUI_PutChar24() 
* 功能:显示ASCII码(24*24字体),显示值为20H-7FH(若为其它值,则显示' ')。 
* 入口参数: x		指定显示位置,x坐标 
*           y		指定显示位置,y坐标 
*           ch		要显示的ASCII码值。 
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。 
* 说明:操作失败原因是指定地址超出有效范围。 
****************************************************************************/ 
 
uint8  GUI_PutChar24(uint32 x, uint32 y,int8 ch) 
{  uint8   font_dat; 
   uint8   i, j, k; 
 
	 
   /* 参数过滤 */ 
   if( x>(GUI_LCM_XMAX-24) ) return(0); 
   if( y>(GUI_LCM_YMAX-32) ) return(0); 
   
   
   for(i=0;i<10;i++) 
   { 
   		if(ch==hz24_tab[i])break; 
   		i++; 
   } 
   k=i;  
     
   for(i=0; i<24; i++)						// 显示共24行 
   {  for(j=0; j<24; j++)					// 每行共24点 
      {  // 若当前点为0、8、16点,读取点阵数据  
         if((j==0)|(j==8)|(j==16)) font_dat = hz24[k][i*3+j/8];      
         // 设置相应的点为color或为back_color  
         if( (font_dat&dcb2dex_tab[j%8])==0 ) GUI_Point(x, y, RED); 
            else  GUI_Point(x, y, GREEN);  
         x++; 
      } 
       
      y++;									// 指向下一行 
      x -= 24;								// 恢复x值 
   } 
    
   return(1); 
} 
 
 
uint8  GUI_Put(uint32 x, uint32 y) 
{  uint8   font_dat; 
   uint8   i, j, k; 
 
	 
   /* 参数过滤 */ 
   if( x>(GUI_LCM_XMAX-24) ) return(0); 
   if( y>(GUI_LCM_YMAX-32) ) return(0); 
   
   
    
   for(k=0;k<10;k++) 
   {  
	   for(i=0; i<24; i++)						// 显示共24行 
	   {  for(j=0; j<24; j++)					// 每行共24点 
	      {  // 若当前点为0、8、16点,读取点阵数据  
	         if((j==0)|(j==8)|(j==16)) font_dat = hz24[k][i*3+j/8];      
	         // 设置相应的点为color或为back_color  
	         if( (font_dat&dcb2dex_tab[j%8])==0 ) GUI_Point(x, y, RED); 
	            else  GUI_Point(x, y, GREEN);  
	         x++; 
	      } 
	       
	      y++;									// 指向下一行 
	      x -= 24;								// 恢复x值 
	   } 
	   y-=24; 
	   x+=24; 
   } 
   return(1); 
} 
 
 
 
/**************************************************************************** 
* 名称:GUI_PutString24() 
* 功能:输出显示字符串((24*24字体,没有自动换行功能)。 
* 入口参数: x		指定显示位置,x坐标 
*           y		指定显示位置,y坐标 
*           str		要显示的ASCII码字符串 
* 出口参数:无 
* 说明:操作失败原因是指定地址超出有效范围。 
****************************************************************************/ 
void  GUI_PutString24(uint32 x, uint32 y, int8 *str) 
{  uint8 i; 
	while(1) 
   {  if( (*str)=='\0' ) break; 
   	  i=GUI_PutChar24(x, y, *str++); 
      if(i==0) break; 
      x += 24; 
      y+=24;								// 下一个字符显示位置,y不变(即不换行) 
   } 
}