单片机中不带字库LCD液晶屏如何显示少量汉字,一般显示汉字的方法有1.使用带字库的LCD屏,2.通过SD

卡或者外挂spi flash存中文字库,3.直接将需要的汉字取模存入mcu的flash中。

第一种方式最方便,带字库的液晶屏价格稍贵,第二种方式电路复杂价格也不便宜,第三种方法可以存储少

量必要的汉字,经济实用。将汉字字模数据存储到大数组中,通过偏移值来取出需要的汉字显示。

typedef struct _GB16  // 汉字字模数据结构
{
char Index[]; // 汉字内码索引
char Msk[]; // 点阵码数据
}GB16_Typedef; const GB16_Typedef GB16x16[] = {//创建字库,阴码,顺向,逐行式取模 {"天",0x00,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,
0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,
0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,
0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06}, {"地",0x10,0x20,0x10,0x20,0x10,0x20,0x11,0x20,
0x11,0x2C,0xFD,0x34,0x11,0x64,0x13,0xA4,
0x11,0x24,0x11,0x34,0x11,0x28,0x1D,0x22,
0xE1,0x22,0x41,0x02,0x00,0xFE,0x00,0x00}, {"不",0x00,0x00,0x7F,0xFC,0x00,0x80,0x00,0x80,
0x01,0x00,0x01,0x00,0x03,0x40,0x05,0x20,
0x09,0x10,0x11,0x08,0x21,0x04,0x41,0x04,
0x81,0x00,0x01,0x00,0x01,0x00,0x01,0x00}, {"仁",0x08,0x00,0x08,0x00,0x08,0x00,0x13,0xFC,
0x10,0x00,0x30,0x00,0x30,0x00,0x50,0x00,
0x90,0x00,0x10,0x00,0x10,0x00,0x10,0x00,
0x17,0xFE,0x10,0x00,0x10,0x00,0x10,0x00}, } /*
其中定义的汉字结构体元素中Index[2]存放汉字,而Msk用于存放点阵码。
具体程序如下:
*/ void show_chinese(uint16_t x, uint16_t y, uint8_t *pstr, uint16_t pointColor, uint16_t backColor)
{ uint8_t bit_cnt, byte_cnt, wordNum;
uint16_t color, word_index;
const GB16_Typedef* p_tab; p_tab = GB16x16;
wordNum = sizeof(GB24x24) / sizeof(GB24_Typedef);//汉字的个数 while(*pstr != '\0')
{
for(word_index=; word_index<wordNum; word_index++)
{
if(*pstr==p_tab[word_index].Index[] && *(pstr+)==p_tab[word_index].Index[])
{
tft_set_window(x, y, x+, y+);//设置要操作的窗口范围 for(byte_cnt=; byte_cnt<; byte_cnt++)
{
uint8_t color = p_tab[word_index].Msk[byte_cnt];
for (bit_cnt=; bit_cnt<; bit_cnt++)
{
if((color&0x80) == 0x80)
{
tft_wrdat(pointColor);//LCD写数据
}
else
{
tft_wrdat(backColor);//LCD写数据
}
color = color<<;
} }
pstr+=;
x += ;
if(x > )
{
x = ;
y += ;
}
}
}
}
} int main()
{
TFT_Init(); //TFT彩屏初始化
LED_Init(); //LED初始化
tft_clear_screen(BLACK); //清屏
show_chinese(, , "天地不仁", MAGENTA, YELLOW);//YELLOW while()
{
KeyTask();//按键扫描
} }

单片机中不带字库LCD液晶屏显示少量汉字的更多相关文章

  1. 【雕爷学编程】MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏

    配套 2.4寸LCD屏 ST7789驱动器芯片(24P 320X240) ST7789驱动器芯片2.4寸LCD屏(24P 320X240)主要参数 1. 模块名称:液晶显示模块2. 型号:KD024C ...

  2. 痞子衡嵌入式:降低刷新率是定位LCD花屏显示问题的第一大法(i.MXRT1170, 1280x480 LVDS)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170上LCD花屏显示问题的分析解决经验. 痞子衡最近这段时间在参与一个基于i.MXRT1170的大项目(先保个密),需要 ...

  3. 51单片机 | 实现SMC1602液晶屏显示实例

    ———————————————————————————————————————————— LCD1602 - - - - - - - - - - - - - - - - - - - - - - - - ...

  4. C#中如何禁止WindowsMediaPlayer双击全屏显示

    问题描述:在项目中使用WindowsMediaPlayer播放视频时,双击会出现视频全屏的效果,而且视频恢复后会暂停,除非再次双击返回后才能正常播放.那么如何禁止WindowsMediaPlayer的 ...

  5. Keil BUG 导致读字库时,无法显示某些汉字解决办法

    原因在于:KEIL C51 的一个汉字BUG,keil c51在编译的时候会将0xfd的字符(有些汉字含该字符的内码)过滤, 最佳解决方案:打补丁,用  晓奇工作室出的补丁 cckeilvxx.exe ...

  6. 页面显示LCD液晶字体或者其他特殊字体

    如果web项目中需要用到LCD液晶字体显示数值(如下图所示)该怎么办? 在这就需要用到@font-face(具体看一下语法) /* 定义 */ @font-face { font-family: 'M ...

  7. Keil UV4 BUG(带字库液晶不能显示“数、正、过”问题的请看)

    Keil UV3一直存在汉字显示(0xFD)的bug,以前在用到带字库的12864液晶的时候,“数”字总是不能正常显示,后来有网友告诉我这是keil的bug,解决掉了.后来keil升级了,我也换了新版 ...

  8. 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...

  9. C# WinForm中 让控件全屏显示的实现代码

    夏荣全 ( lyout(at)163.com )原文 C#中让控件全屏显示的实现代码(WinForm) 有时候需要让窗口中某一块的内容全屏显示,比如视频播放.地图等等.经过摸索,暂时发现两种可行方法, ...

随机推荐

  1. js变量作用域--变量提升

    1.JS作用域 在ES5中,js只有两种形式的作用域:全局作用域和函数作用域,在ES6中,新增了一个块级作用域(最近的大括号涵盖的范围),但是仅限于let方式申明的变量. 2.变量声明 var x; ...

  2. 文件复制(shutil)

    import shutil #拷贝整个目录树 shutil.copytree('d:\\aaa','e:\\aaa') #目标文件夹(e:\aaa)必须不存在 shutil.rmtree('e:\\a ...

  3. Retrieving failed records after an SqlBulkCopy exception

    Let me start by saying that the idea I used in this article is not originally mine, but since I have ...

  4. 深入浅出SharePoint——获取Choice Field的Mapping value

    list field对应的caml定义如下 <Field Type="Choice" DisplayName="Inspection Result" Re ...

  5. August 31st 2017 Week 35th Thursday

    Whatever happened in the past is gone, the best is always yet to come. 无论过去发生什么,最好的永远尚未到来. Correct j ...

  6. ZT Android的引用计数(强弱指针)技术及一些问题

    Android的引用计数(强弱指针)技术及一些问题 分类: Android 2013-06-07 18:25 844人阅读 评论(4) 收藏 举报 目录(?)[+] Android C++框架层的引用 ...

  7. Union Find

    并查集 前言 来自知乎,Coursera 上普林斯顿大学的算法公开课,稍微来博客上写写记记. 课程资源:1. Algorithms, Part I 2. Algorithms, Part II 3. ...

  8. scala当中的特质trait

    1.将trait作为接口使用 Scala中的trait是一种特殊的概念: 首先先将trait作为接口使用,此时的trait就与Java中的接口 (interface)非常类似: 在trait中可以定义 ...

  9. [T-ARA][TIAMO]

    歌词来源:http://music.163.com/#/song?id=439915067 改了一版格式,先尝试一下,考虑到总不能永远只看着拼音读,所以想把发音按照韩文字来写,以后争取看着韩文字唱. ...

  10. mysql install steps

    the official documents for mysql 5.6 install key steps: # Preconfiguration setup shell> groupadd ...