/****************************************************************************<br />* 名称:GUI_PutChar24_32()<br />* 功能:显示ASCII码(24*32字体),显示值为'0'-'9'、'.'、'+'、'-'及':'(若为其它值,则显示' ')。<br />* 入口参数: x 指定显示位置,x坐标<br />* y 指定显示位置,y坐标<br />* ch 要显示的ASCII码值。<br />* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。<br />* 说明:操作失败原因是指定地址超出有效范围。<br />****************************************************************************/<br />uint8 GUI_PutChar24_32(uint32 x, uint32 y, uint8 ch)<br />{ <br /> uint8 font_dat;<br /> uint8 i, j;<br /> TCOLOR bakc;<br /><br /> /* 参数过滤 */<br /> if( x>=(GUI_LCM_XMAX-8) ) return(0);<br /> if( y>=(GUI_LCM_YMAX-8) ) return(0);<br /> for(i=0; i<14; i++)<br /> { if(FONT24x32_TAB==ch) break;<br /> }<br /> ch = i;<br /> <br /> for(i=0; i<32; i++) // 显示共32行<br /> { for(j=0; j<24; j++) // 每行共24点<br /> { /* 若当前点为0、8、16点,读取点阵数据 */<br /> if( (j&0x07)==0 ) font_dat = FONT24x32[ch][i*3+j>>3]; <br /> /* 设置相应的点为color或为back_color */<br /> if( (font_dat&DCB2HEX_TAB[j])==0 ) GUI_CopyColor(&bakc, back_color);<br /> else GUI_CopyColor(&bakc, disp_color);<br /> GUI_Point(x, y, bakc); <br /> x++;<br /> }<br /> <br /> y++; // 指向下一行<br /> x -= 24; // 恢复x值<br /> }<br /> <br /> return(1);<br />} <br />/****************************************************************************<br />* 名称:GUI_PutString()<br />* 功能:输出显示字符串(没有自动换行功能)。<br />* 入口参数: x 指定显示位置,x坐标<br />* y 指定显示位置,y坐标<br />* str 要显示的ASCII码字符串<br />* 出口参数:无<br />* 说明:操作失败原因是指定地址超出有效范围。<br />****************************************************************************/<br />void GUI_PutString2432(uint32 x, uint32 y, char *str)<br />{ while(1)<br /> { if( (*str)=='\0' ) break;<br /> if( GUI_PutChar24_32(x, y, *str++)==0 ) break;//此行本人改为上面的涵数,原为GUI_PutChar(5*7)的字符涵数.<br /> x += 24; // 下一个字符显示位置,y不变(即不换行)<br /> }<br />}<br /><br /><br />以上程序我用的ZLG的,只改为了一行程序,结果显示不出来数字??改为5*7的字符涵数,能正常输出??<br />为什么啊,是不是GUI_PutChar24_32这涵数有问题??<br />小弟先谢谢了<br /> |
|