单片机中不带字库LCD液晶屏显示少量汉字
单片机中不带字库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液晶屏显示少量汉字的更多相关文章
- 【雕爷学编程】MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
配套 2.4寸LCD屏 ST7789驱动器芯片(24P 320X240) ST7789驱动器芯片2.4寸LCD屏(24P 320X240)主要参数 1. 模块名称:液晶显示模块2. 型号:KD024C ...
- 痞子衡嵌入式:降低刷新率是定位LCD花屏显示问题的第一大法(i.MXRT1170, 1280x480 LVDS)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170上LCD花屏显示问题的分析解决经验. 痞子衡最近这段时间在参与一个基于i.MXRT1170的大项目(先保个密),需要 ...
- 51单片机 | 实现SMC1602液晶屏显示实例
———————————————————————————————————————————— LCD1602 - - - - - - - - - - - - - - - - - - - - - - - - ...
- C#中如何禁止WindowsMediaPlayer双击全屏显示
问题描述:在项目中使用WindowsMediaPlayer播放视频时,双击会出现视频全屏的效果,而且视频恢复后会暂停,除非再次双击返回后才能正常播放.那么如何禁止WindowsMediaPlayer的 ...
- Keil BUG 导致读字库时,无法显示某些汉字解决办法
原因在于:KEIL C51 的一个汉字BUG,keil c51在编译的时候会将0xfd的字符(有些汉字含该字符的内码)过滤, 最佳解决方案:打补丁,用 晓奇工作室出的补丁 cckeilvxx.exe ...
- 页面显示LCD液晶字体或者其他特殊字体
如果web项目中需要用到LCD液晶字体显示数值(如下图所示)该怎么办? 在这就需要用到@font-face(具体看一下语法) /* 定义 */ @font-face { font-family: 'M ...
- Keil UV4 BUG(带字库液晶不能显示“数、正、过”问题的请看)
Keil UV3一直存在汉字显示(0xFD)的bug,以前在用到带字库的12864液晶的时候,“数”字总是不能正常显示,后来有网友告诉我这是keil的bug,解决掉了.后来keil升级了,我也换了新版 ...
- 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)
前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...
- C# WinForm中 让控件全屏显示的实现代码
夏荣全 ( lyout(at)163.com )原文 C#中让控件全屏显示的实现代码(WinForm) 有时候需要让窗口中某一块的内容全屏显示,比如视频播放.地图等等.经过摸索,暂时发现两种可行方法, ...
随机推荐
- [翻译] HSDatePickerViewController
HSDatePickerViewController HSDatePickerViewController is an iOS ViewController for date and time pic ...
- 沉淀再出发:jetty的架构和本质
沉淀再出发:jetty的架构和本质 一.前言 我们在使用Tomcat的时候,总是会想到jetty,这两者的合理选用是和我们项目的类型和大小息息相关的,Tomcat属于比较重量级的容器,通过很多的容器层 ...
- How to Remove A Service Entry From Win10 Service List
Warning Please do this operation CAREFULLY, otherwise you may get something wrong with your system. ...
- [Tyvj 模拟赛] 运
运 [问题背景] zhx和妹子们玩数数游戏. [问题描述] 仅包含4或7的数被称为幸运数. 一个序列的子序列被定义为从序列中删去若干个数,剩下的数组成的新序列.两个子序列被定义为不同的当且仅当其中的元 ...
- pat 5—1 求该日是该年的第几天
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 前面还是欠了一堆,慢慢补吧. 看了别人的博客才知道前面有一次圆面积的题,我上课是在干啥......... 打是打出来了,但是还是有几个蒙蔽的地方: ...
- 6、Python文件操作工具 openpyxl 工具
#-*- coding:utf-8 -* from openpyxl.reader.excel import load_workbook import MySQLdb import time ...
- Python安装Windows的pip包
1.到https://www.python.org/downloads/ 下载python包安装python 2.到https://pypi.python.org/pypi/pip#downloads ...
- 【[SDOI2017]序列计数】
感觉自己的复杂度感人 大概是\(O(p*\pi(m)+p^3logn)\) 还是能过去的 我们看到这么大的数据范围还是应该先想一想暴力怎么写 显然我们可以直接暴力\(dp\) 设\(dp[i][j]\ ...
- IE8崩溃在CElement::GetUpdatedLayoutWithContext
发了一个我们页游助手的版本时,测试报告在某些机器上点开某网站时崩溃 "0x637e5067指令引用的0x00000008内存,该内存不能为read",查看dump文件,堆栈如下: ...
- ethereumjs/browser-builds
https://github.com/ethereumjs/browser-builds ethereumjs - Browser Builds This repository contains br ...