打开/关闭菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

64x128 English font modulo description:修订间差异

来自LCD wiki
Lin留言 | 贡献
创建页面,内容为“*'''64x128英文字体取模说明''' :尺寸设置如下图所示: :750px :取模数据如下(点击打开): ::[http://www.lcdwiki.…”
 
Lin留言 | 贡献
无编辑摘要
第14行: 第14行:
//bc:背景色;
//bc:背景色;
//num:想要显示的字符,格式如字符A则输入:'A';
//num:想要显示的字符,格式如字符A则输入:'A';
//mode:参数值0代表非叠加显示方式,参数1代表叠加显示方式;
//mode:参数值0代表非叠加显示方式,参数1代表叠加显示方式;  
void LCD_Show_4824_char(u16 x,u16 y,u16 fc, u16 bc, u8 num,u8 mode)
void LCD_Show_12864_char(u16 x,u16 y,u16 fc, u16 bc, u8 num,u8 mode)
{
{
     u32 temp;
     u32 temp;
     u8 pos,t;
     u8 pos,t,i;
     u16 colortemp=POINT_COLOR;         
     u16 colortemp=POINT_COLOR;         
     num=num-' ';//得到偏移后的值
     num=num-' ';//得到偏移后的值
     LCD_SetWindows(x,y,x+24-1,y+48-1);//设置单个文字显示窗口
     LCD_SetWindows(x,y,x+64-1,y+128-1);//设置单个文字显示窗口
     if(!mode) //非叠加方式:字体带有背景色,显示时会将原来显示的内容覆盖掉
     if(!mode) //非叠加方式:字体带有背景色,显示时会将原来显示的内容覆盖掉
     {
     {
for(pos=0;pos<48;pos++)
for(pos=0;pos<128;pos++)
{
{
    temp = (asc2_4824[num][pos*3]<<16)<nowiki>|</nowiki>(asc2_4824[num][pos*3+1]<<8)<nowiki>|</nowiki>asc2_4824[num][pos*3+2];//调用4824字体,需要自己取模定义
    for(i=0;i<2;i++)
    for(t=0;t<24;t++)
    {
    {                 
        temp = (asc2_12864[num][pos*8+i*4]<<24)<nowiki>|</nowiki>(asc2_12864[num][pos*8+i*4+1]<<16)<nowiki>|</nowiki>(asc2_12864[num][pos*8+i*4+2]<<8)<nowiki>|</nowiki>asc2_12864[num][pos*8+i*4+3];//调用4824字体,需要自己取模定义
if(temp&0x800000)
        for(t=0;t<32;t++)
{
        {                 
    Lcd_WriteData_16Bit(fc);
    if(temp&0x80000000)
}
    {
else  
        Lcd_WriteData_16Bit(fc);
{
    }
    Lcd_WriteData_16Bit(bc);  
    else  
}
    {
temp<<=1;
        Lcd_WriteData_16Bit(bc);  
    }
    }
    temp<<=1;
        }
            }
}
}
     }
     }
     else//叠加方式:字体不带背景色,直接叠加显示到原来显示的内容上
     else//叠加方式:字体不带背景色,直接叠加显示到原来显示的内容上
     {
     {
         for(pos=0;pos<48;pos++)
         for(pos=0;pos<128;pos++)
{
{
    temp = (asc2_4824[num][pos*3]<<16)<nowiki>|</nowiki>(asc2_4824[num][pos*3+1]<<8)<nowiki>|</nowiki>asc2_4824[num][pos*3+2];//调用4824字体,需要自己取模定义
    for(i=0;i<2;i++)
    for(t=0;t<24;t++)
    {
    {   
        temp = (asc2_12864[num][pos*8+i*4]<<24)<nowiki>|</nowiki>(asc2_12864[num][pos*8+i*4+1]<<16)<nowiki>|</nowiki>(asc2_12864[num][pos*8+i*4+2]<<8)<nowiki>|</nowiki>asc2_12864[num][pos*8+i*4+3];//调用4824字体,需要自己取模定义
POINT_COLOR=fc;               
        for(t=0;t<32;t++)
if(temp&(0x800000))
        {   
{
    POINT_COLOR=fc;               
    LCD_DrawPoint(x+t,y+pos);//画一个点     
    if(temp&0x80000000)
}
    {
temp<<=1;
        LCD_DrawPoint(x+i*32+t,y+pos);//画一个点     
    }
    temp<<=1;
        }
    }
    }
}
}
第60行: 第65行:
     POINT_COLOR=colortemp;
     POINT_COLOR=colortemp;
     LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏   
     LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏   
<nowiki>}</nowiki>    
<nowiki>}</nowiki>  
}}
}}

2023年6月12日 (一) 11:52的版本

  • 64x128英文字体取模说明
尺寸设置如下图所示:
取模数据如下(点击打开):
64x128英文ASCII取模数据
函数定义如下:
/*参数说明*/
//x:显示的坐标点位置X;
//y:显示的坐标点位置Y;
//fc:前景色;
//bc:背景色;
//num:想要显示的字符,格式如字符A则输入:'A';
//mode:参数值0代表非叠加显示方式,参数1代表叠加显示方式; 
void LCD_Show_12864_char(u16 x,u16 y,u16 fc, u16 bc, u8 num,u8 mode)
{
    u32 temp;
    u8 pos,t,i;
    u16 colortemp=POINT_COLOR;      		   
    num=num-' ';//得到偏移后的值
    LCD_SetWindows(x,y,x+64-1,y+128-1);//设置单个文字显示窗口
    if(!mode) //非叠加方式:字体带有背景色,显示时会将原来显示的内容覆盖掉
    {		
	for(pos=0;pos<128;pos++)
	{
	    for(i=0;i<2;i++)
	    {
	        temp = (asc2_12864[num][pos*8+i*4]<<24)|(asc2_12864[num][pos*8+i*4+1]<<16)|(asc2_12864[num][pos*8+i*4+2]<<8)|asc2_12864[num][pos*8+i*4+3];//调用4824字体,需要自己取模定义
	        for(t=0;t<32;t++)
	        {                 
		    if(temp&0x80000000)
		    {
		        Lcd_WriteData_16Bit(fc);
		    }
		    else 
		    {
		        Lcd_WriteData_16Bit(bc); 
		    }
		    temp<<=1;
	        }
            }		
	}	
    }
    else//叠加方式:字体不带背景色,直接叠加显示到原来显示的内容上
    {
        for(pos=0;pos<128;pos++)
	{
	     for(i=0;i<2;i++)
	     {
	         temp = (asc2_12864[num][pos*8+i*4]<<24)|(asc2_12864[num][pos*8+i*4+1]<<16)|(asc2_12864[num][pos*8+i*4+2]<<8)|asc2_12864[num][pos*8+i*4+3];//调用4824字体,需要自己取模定义
	         for(t=0;t<32;t++)
	         {   
		     POINT_COLOR=fc;              
		     if(temp&0x80000000)
		     {
		         LCD_DrawPoint(x+i*32+t,y+pos);//画一个点    
		     }
		     temp<<=1;
	        }
	    }
	}
    }
    POINT_COLOR=colortemp;	
    LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏  
}