本帖最后由 芙蓉焊料 于 2024-9-2 13:54 编辑
弄了几天也没能显示出16x16的英文字符,有示范的程序学习吗?扒拉了一段程序改了好久也没弄好,帮忙看看,谢谢!
/*****************************************************************************
函数说明:显示单个字符 x,y显示坐标 num要显示的字符 fc 字的颜色
入口数据: bc 字的背景色 sizey 字号 mode: 0非叠加模式 1叠加模式
******************************************************************************/
void LCD_ShowChar(u16 x,u16 y,u8 num,u16 fc,u16 bc,u8 sizey,u8 mode)
{
u8 temp,sizex,t,m=0;
u16 i,TypefaceNum; //一个字符所占字节大小
u16 x0=x;
sizex=sizey/2;
TypefaceNum=(sizex/8+((sizex%8)?1:0))*sizey;
num=num-' '; //得到偏移后的值
Lcd_SetRegion(x,y,x+sizey-1,y+sizey-1); //设置光标位置
for(i=0;i<16;i++)
{
// if(sizey==12)temp=ascii_1206[num]; //调用6x12字体
else if(sizey==16)temp=asc2_1608[num]; //调用8x16字体
//else if(sizey==24)temp=ascii_2412[num]; //调用12x24字体
// else if(sizey==32)temp=ascii_3216[num]; //调用16x32字体
else return;
for(t=0;t<8;t++)
{
if(!mode)//非叠加模式
{
if(temp&(0x01<<t))Lcd_WriteData_16(fc);
else Lcd_WriteData_16(bc);
m++;
if(m%sizex==0)
{
m=0;
break;
}
}
else//叠加模式
{
if(temp&(0x01<<t))LCD_DrawPoint(x,y,fc);//画一个点
x++;
if((x-x0)==sizex)
{
x=x0;
y++;
break;
}
}
}
}
}
|