|
发表于 2008-1-11 08:38:41
|
显示全部楼层
/* ASCII码字符字模检索表 */
__flash char FONT24x32_TAB[]="0123456789.+-: ";
/****************************************************************************
* 名称:GUI_PutChar24_32()
* 功能:显示ASCII码(24*32字体),显示值为'0'-'9'、'.'、'+'、'-'及':'(若为其它值,则显示' ')。
* 入口参数: x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* ch 要显示的ASCII码值。
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
uint8 GUI_PutChar24_32(uint32 x, uint32 y, uint8 ch)
{
uint8 font_dat;
uint8 i, j;
TCOLOR bakc;
/* 参数过滤 */
if( x>(GUI_LCM_XMAX-32) ) return(0);
if( y>(GUI_LCM_YMAX-32) ) return(0);
for(i=0; i<14; i++)
{
if(FONT24x32_TAB==ch) break;
}
ch = i;
for(i=0; i<32; i++) // 显示共32行
{
for(j=0; j<24; j++) // 每行共24点
{
/* 若当前点为0、8、16点,读取点阵数据 */
if( (j&0x07)==0 )
{
font_dat = FONT24x32[ch][i*3+j/8]; //不要改为i*3+j>>3
}
/* 设置相应的点为color或为back_color */
if( (font_dat&DCB2HEX_TAB[j%8])==0 )
GUI_CopyColor(&bakc, back_color);
else
GUI_CopyColor(&bakc, disp_color);
GUI_Point(x, y, bakc);
x++;
}
y++; // 指向下一行
x -= 24; // 恢复x值
}
return(1);
}
此句 font_dat = FONT24x32[ch][i*3+j/8]; //不要改为i*3+j>>3
i*3+j/8与i*3+j>>3 结果不同吗?
谁能解答一下? |
|