导航菜单
Toggle navigation
英文主页
树莓派显示模块
树莓派HDMI
树莓派MHS显示屏
树莓派GPIO显示屏
SPI显示模块
常规SPI模块
Arduino SPI模块
全视角SPI模块
Arduino显示模块
Arduino UNO
Arduino Mega2560
其他显示模块
8/16位并口模块
OLED显示模块
RGB显示模块
开发板
显示屏
IPS彩屏
TN彩屏
OLED屏
查看“【教程】中英文显示取模设置”的源代码
←
【教程】中英文显示取模设置
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 底层支撑函数 == LCD_SetWindows 该函数实现因驱动IC而异(不同的驱动IC设置坐标值命令和原理有差异),但是原理基本一样,都是设置起始坐标和结束坐标,设置一块显示区域 LCD_DrawPoint(x,y); LCD_DrawPoint == 英文取模 == 12X6 16X8英文取模设置 16X8汉字取模对应显示函数: void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) { } 64X32英文取模设置 64X32英文取模对应显示函数: void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) { } == 中文取模 == 16X16汉字取模设置 16X16汉字取模对应显示函数: {{code|1= void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) { u8 i,j; u16 k; u16 HZnum; u16 x0=x; HZnum=sizeof(tfont16)/sizeof(typFNT_GB16); //自动统计汉字数目 for (k=0;k<HZnum;k++) { if ((tfont16[k].Index[0]==*(s))&&(tfont16[k].Index[1]==*(s+1))) { LCD_SetWindows(x,y,x+16-1,y+16-1); for(i=0;i<16*2;i++) { for(j=0;j<8;j++) { if(!mode) //非叠加方式 { if(tfont16[k].Msk[i]&(0x80>>j)) LCD_DrawPoint_16Bit(fc); else LCD_DrawPoint_16Bit(bc); } else { POINT_COLOR=fc; if(tfont16[k].Msk[i]&(0x80>>j)) LCD_DrawPoint(x,y);//画一个点 x++; if((x-x0)==16) { x=x0; y++; break; } } } } } continue; //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响 } LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏 } }} 24X24汉字取模设置 24X24汉字取模对应显示函数: void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) { } void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) { u8 i,j; u16 k; u16 HZnum; u16 x0=x; HZnum=sizeof(tfont16)/sizeof(typFNT_GB16); //自动统计汉字数目 for (k=0;k<HZnum;k++) { if ((tfont16[k].Index[0]==*(s))&&(tfont16[k].Index[1]==*(s+1))) { LCD_SetWindows(x,y,x+16-1,y+16-1); for(i=0;i<16*2;i++) { for(j=0;j<8;j++) { if(!mode) //非叠加方式 { if(tfont16[k].Msk[i]&(0x80>>j)) LCD_DrawPoint_16Bit(fc); else LCD_DrawPoint_16Bit(bc); } else { POINT_COLOR=fc; if(tfont16[k].Msk[i]&(0x80>>j)) LCD_DrawPoint(x,y);//画一个点 x++; if((x-x0)==16) { x=x0; y++; break; } } } } } continue; //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响 } LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏 }
该页面使用的模板:
模板:Code
(
查看源代码
)
模板:Lan
(
查看源代码
)
返回至
【教程】中英文显示取模设置
。