EFM32片内外设--TFT 汉字字库(续)
来源:互联网 发布:机械动态图制作软件 编辑:程序博客网 时间:2024/06/05 17:15
纪念母亲节。
继上次研究完汉字的编码以及如何生成字库之后,那么现在要做的就是如何将汉字显示在点阵屏上了。
目前EFM32带点阵的也就DK系列,带有320*240的TFT屏了。因此本实验就是拿GG DK来做的。在哪个平台上跑得不重要,关键是如何做的。
1.还记得我们上次的字库点阵的取模方式吗? 这和我们最终写代码,如何显示是有关系的。目前还是采用方式一取模生成的字符库。
2. 将生成的字符点阵库,做成const数组。请参考如下。
http://download.csdn.net/download/efm32/4298638
3.选择GG DK最简单的例程,inttemp 工程进行修改。通过查看该工程的源代码,幸运的发现有
DMD_writeColor(uint16_t x, uint16_t y, uint8_t red,uint8_t green, uint8_t blue, uint32_t numPixels)
这样的函数,可以直接拿来,做某一个点的显示,这样的话,无论是采用何种取模方式,都可以方便的做出汉字显示了。
4.利用DMD_writeColor() 来做一个显示一个汉字的函数。利用上次提到的折算公式。
GBindex = ((unsigned char)GBword.at(0)-161)*94 + (unsigned char)GBword.at(1) - 161;
最后再乘上32, 就可以找到字库中的偏移量了。
void Show_Chinese_Word(unsigned short x, unsigned short y, unsigned char Word1,unsigned char Word2)
{
unsigned long LibOffset;
unsigned Cx,Cy;
Cx = x;
Cy = y;
LibOffset = (Word1-161)*94;
LibOffset = LibOffset + Word2 - 161;
LibOffset = LibOffset * 32;
for(unsigned char Z = 0; Z < 32; Z++)
{
unsigned char ucData = GB2312_Font[LibOffset + Z];
for(unsigned char i = 0; i < 8; i++)
{
if(ucData & 0x80)//黑底白字
{
DMD_writeColor(Cx,Cy,255,255,255,1);
}
else
{
DMD_writeColor(Cx,Cy,0,0,0,1);
}
ucData = ucData << 1;
Cx++;
}
if(Z % 2 == 1)
{
Cy++;Cx = x;
}
}
}
5. 还算蛮顺利的。看来真的是磨刀不误砍柴工啊。
6.整个工程,请从如下地址下载。要调试的话,请将其放入GG DK的example目录下。
http://download.csdn.net/download/efm32/4298688
- EFM32片内外设--TFT 汉字字库
- EFM32片内外设--TFT 汉字字库(续)
- EFM32片内外设 -- Systick
- EFM32片内外设 -- DWT
- EFM32片内外设---USART2
- EFM32片内外设--AES基本介绍
- EFM32片内外设--AES ECB例程
- EFM32片内外设--DAC之tips
- EFM32片内外设--LETimer Free Mode
- EFM32片内外设--ADC 基本例程
- EFM32片内外设--LEUart抖动误差
- EFM32片内外设--RTC+EM3
- EFM32片内外设--LCD Bitband操作
- EFM32片内外设--MSC Device information
- EFM32片内外设--RMU基本操作
- EFM32片内外设--WDT基本操作
- EFM32片内外设--LCD之动画
- EFM32片内外设--GPIO EM4唤醒
- the minimum value of |A - a| + |B - b| + |C - c|
- Android SystemClock 应用
- 注册内核选项
- 管理计算机(域)的内置帐户
- android-整体UI设计-(滑动导航栏+滚动页面)
- EFM32片内外设--TFT 汉字字库(续)
- 一个简单的完成端口(服务端/客户端)类
- Android 启动流程: Init.c 阅读笔记 .
- java之非桥接方式连接Access 2003数据库...
- Shape是一个几何图形的基类,它至少有求自身周长函数Circumference()和求自身面积函数Area()。从Shape类派生出Circle类、Ellipse类、Triangle类和Rectan
- 脚本读INI文件
- eclipse代码提示功能的设置
- linux 中安装与启动FTP服务
- S3C2440 AD转换器