cubeIDE开发,结合汉字取模工具,在LCD输出各种字体

news/2024/11/28 13:30:40/

一、汉字取模工具

        嵌入式LCD屏显示无非就是不间断刷新LCD宽度*LCD高度的像素矩阵,并为每个像素指定特定颜色。对于LCD屏幕显示汉字,无非就是将字体形状转换为字体宽度*字体高度的像素矩阵,及指定每个字体像素的颜色,然后在LCD屏幕指定位置按字体宽度*字体高度的像素矩阵进行刷新渲染。

        汉字取模工具可以设置汉字显示的行、列像素大小,设置字体类型等信息,将输入的每个字符转换成指定行宽、列宽的二进制矩阵,在该矩阵中,字体覆盖区域采用1标记、字体不覆盖区域采用0标记。

        取模工具读者可以自行在网上搜索“LcmZimo.exe”下载,或采用下面链接:

嵌入式开发之lcd汉字取模工具-嵌入式文档类资源-CSDN下载

二、汉字取模配置

        我们双击LcmZimo.exe打开,取模工具界面如下,红框部分是字体相关参数设置,篮框部分是图片参数设置(通常用于各种艺术字体、图片像素等):

         现在来制作24*24矩阵的“嵌入式开发测试!”的字体编码表,如下图进行设置。

         最终得到字符编码表:

         点击保存,将字符编码表输出为头文件“pytest.h”,如下图:

 三、创建工程

        本文基于STM32L496VGT3的MCU创建一个新工程,并提前实现了lpusart串口驱动、三个按键及三个LED灯驱动、以及OLED屏幕驱动(SPI引脚),相关设置参考本专栏的博文:

   cubeIDE开发, stm32的OLED点亮及字符显示设计(基于SPI通信)_py_free的博客-CSDN博客

        假定已经实现了这些基本功能,在此基础上实现OLED屏幕显示刚刚定义汉字“嵌入式开发测试!”。

四、汉字LCD显示设计

        将刚才取模软件保存输出的pytest.h头文件拷贝到ICore/oled目录下,本文对pytest.h做了细微调整(去除一些不规范编程告警,不调整无影响):

         取模软件针对每个字符输出了一个72字节的8bit的数值,也就是72字节*8bit=576bit=24*24像素,目前该字符编码在取模软件上设置是横向取模左高位,数据排列:从左到右从上到下,就意味着,每3个字节*8bit=24bit表示一行的像素,如前三个字符0X00 0X18 0X00->0000 0000 0001 1000 0000 0000,作为“嵌”字第一行像素标记,位数值为1的填充前景色,为0的填充背景色。具体代码如下:

//绘制每个字符,24*24像素大小
void OLED_DISPLAY_24x24(uint8_t xpos, uint8_t ypos,uint8_t index)
{uint16_t textData[24][24]={0};    //24*24大小颜色矩阵FNT_GB24 cur_text = code_GB_24[index];for(uint8_t i=0;i<72;i++){for(uint8_t j=0; j<8; j++)if(cur_text.Msk[i]&(0x01<<(8-j))){textData[i/3][(i%3)*8+j] = LCD_DISP_BLUE;//前景色,蓝色}else{textData[i/3][(i%3)*8+j] = LCD_DISP_BLACK;//背景色,黑色}}for(uint8_t i=0; i<24; i++){OLED_WriteLine(xpos,ypos+i,textData[i],24);//列像素渲染}
}

        上述代码中,每个汉字72字节编码表,3个字节表示一行(列宽3*8bit=24),共24行(72字节/3=24),构成24*24的二进制矩阵,然后根据该二进制矩阵,为1的给与前景色,为0的给与背景色,从而得到24*24的颜色矩阵,然后在渲染时在24*24像素的LCD区域渲染对应的颜色,形成屏幕显示输出。

        然后逐个字符绘制输出,完成前面输入字段“嵌入式开发测试!”的全部输出:

void BSP_LCD_login(uint8_t xpos, uint8_t ypos)
{BSP_LCD_Clear_DMA(LCD_DISP_BLUE);for(uint8_t index=0; index<8;index++){OLED_DISPLAY_24x24(xpos+index*24,ypos,index);}
}

五、汉字输出测试

        在主循环函数中,按键KEY0时,屏幕输出显示“嵌入式开发测试!”字段:

         编译及下载:

         按键KEY0,屏幕输出显示如下:

 六、附件

        源码地址:https://download.csdn.net/download/py8105/87241407


http://www.ppmy.cn/news/1670.html

相关文章

应用 Serverless 化,让业务开发心无旁骛

我们希望让用户做得更少而收获更多&#xff0c;通过Serverless化&#xff0c;用云就像用电一样简单。”张建锋表示&#xff0c;Serverless 让云计算从一种资源真正变成一种能力&#xff0c;未来云将全面 Serverless 化&#xff0c;更加接近“电网”模式&#xff0c;按计算的调用…

蚂蚁面试官:Zookeeper 的选举流程是怎样的?我当场懵逼了

​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 面试经常会遇到面试官问 Zookeeper 的选举原理&#xff0c;我心想&#xff0c;问这些有啥用吗&#xff1f;又不要我造火箭&#xff01; 每次面试也只知道个大概&#xff0c;并没有深究…

股市资讯天宇优配|政策利好叠加竞争格局向好 机构做多建材板块

近来&#xff0c;受房地产板块上涨带动&#xff0c;建材板块也敞开一轮反弹行情&#xff0c;东方雨虹、三棵树、科顺股份等体现抢眼。在组织看来&#xff0c;房地产职业近期利好政策频出&#xff0c;商场对建材职业后期需求的忧虑将会消解。另一方面&#xff0c;在过去一年多的…

基于Android的学生信息管理App设计(Android studio开发)

目 录 一、 题目选择&#xff08;题目、选题意义&#xff09; 3 二、 设计目的 3 1、 初衷 3 2、 结合实际 3 3、 使用工具 3 三、 最终页面效果展示 4 1、 登陆界面 4 2、 主界面 5 3、 各个功能模块 6 四、 各部分设计 11 1、活动页面Activity布局文件 11 2、Activity的编程 …

企企通成功入选「亿欧EqualOcean 2022 中国SaaS 50强」榜单!

近日&#xff0c;由EqualOcean全球化智库主办的2022 EqualOcean Summit for Globalization (ESG) 2022 全球化峰会顺利召开,并重磅发布《2022年中国SaaS 50强》榜单。作为行业领先的数字化采购SaaS服务商&#xff0c;企企通凭借在SRM领域的持续创新和深厚的SaaS服务经验成功入选…

十二条后端开发经验分享,纯干货

一. 优雅的进行线程池异常处理 在Java开发中&#xff0c;线程池的使用必不可少&#xff0c;使用无返回值 execute() 方法时&#xff0c;线程执行发生异常的话&#xff0c;需要记录日志&#xff0c;方便回溯&#xff0c;一般做法是在线程执行方法内 try/catch 处理&#xff0c;…

万字大章_标题、段落、链接、图像等_HTML入门必备基础

万字大章_HTML入门必备基础HTML篇_第四章、HTML基础一、标题二、段落三、链接3.1文本超链接3.2锚点链接3.3功能性链接四、图像4.1 图像标签&#xff08;<img>&#xff09;和源属性&#xff08;Src&#xff09;4.2 alt属性4.3title属性4.4、设置图像4.4.1设置图像的宽度和…

【吴恩达机器学习笔记】十二、降维

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4e3;专栏定位&#xff1a;为学习吴恩达机器学习视频的同学提供的随堂笔记。 &#x1f4da;专栏简介&#xff1a;在这个专栏&#xff0c;我将整理吴恩达机器学习视频的所有内容的笔记&…