从SD更新字库到FLASH,再用LCD显示

本文介绍了如何将SD卡上的字库文件更新到Flash,并通过LCD显示。作者成功移植了原子的程序,主要修改了液晶屏函数、Flash读写函数和存储文件的地址。在text.c的showstr函数中,可以自由设置字符颜色。文章还提供了相关文件的改动及测试代码,分享了字库操作和SD到Flash复制的经验。
摘要由CSDN通过智能技术生成

用Flash当字库存储载体。思路是先将要用到的字库文件存在SD卡,然后存储到Flash,LCD显示时候从Flash中读取

还挺顺利的,移植的原子的程序,自己稍加修改,主要是我的液晶屏函数,Flash读写函数,还有存储文件的flash地址不一样。一晚上搞定,大小字体都OK。挺高兴哈哈。这几天忙工作事情有点耽搁了学习进展嘿嘿

在text.c的showstr函数中char的字体颜色随意设置的,可以显示和汉字不匹配,有兴趣可以随便改的。

原子的显示进度我并没有用懒得折腾LCD输出字符串了。

原子地址:http://openedv.com/posts/list/0/13875.htm?privmsg=1#83239

改动文件:mycc936.c text.c fontupd.c

mycc936.c
 1 #include "ff.h"   
 2 #include "fontupd.h"
 3 #include "flashspi_config.h"   
 4 
 5 WCHAR ff_convert (    /* Converted code, 0 means conversion error */
 6     WCHAR    src,    /* Character code to be converted */
 7     UINT    dir        /* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
 8 )
 9 {
10     WCHAR t[2];
11     WCHAR c;
12     u32 i, li, hi;
13     u16 n;             
14     u32 gbk2uni_offset=0;          
15                           
16     if (src < 0x80)c = src;//ASCII,直接不用转换.
17     else 
18     {
19          if(dir)    //GBK 2 UNICODE
20         {
21             gbk2uni_offset=ftinfo.ugbksize/2;     
22         }else    //UNICODE 2 GBK  
23         {   
24             gbk2uni_offset=0;
25         }
26         //if(UK_FLAG)//存在             
27         {
28             /* Unicode to OEMCP */
29             hi=ftinfo.ugbksize/2;//对半开.
30             hi =hi / 4 - 1;
31             li = 0;
32             for (n = 16; n; n--)
33             {
34                 i = li + (hi - li) / 2;    
35                 SPI_FLASH_BufferRead((u8*)&t,ftinfo.ugbkaddr+i*4+gbk2uni_offset,4);//读出8个字节  
36                 if (src == t[0]) break;
37                 if (src > t[0])li = i;  

38                 else hi = i;    
39             }
40             c = n ? t[1] : 0;  
41          }
42         //else c=0;
43     }
44     return c;
45 }           
46 
47 WCHAR ff_wtoupper (    /* Upper converted character */
48     WCHAR chr        /* Input character */
49 )
50 {
51     static const WCHAR tbl_lower[] = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xA1, 0x00A2, 0x00A3, 0x00A5, 0x00AC, 0x00AF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x0FF, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x148, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x17E, 0x192, 0x3B1, 0x3B2, 0x3B3, 0x3B4, 0x3B5, 0x3B6, 0x3B7, 0x3B8, 0x3B9, 0x3BA, 0x3BB, 0x3BC, 0x3BD, 0x3BE, 0x3BF, 0x3C0, 0x3C1, 0x3C3, 0x3C4, 0x3C5, 0x3C6, 0x3C7, 0x3C8, 0x3C9, 0x3CA, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43A, 0x43B, 0x43C, 0x43D, 0x43E, 0x43F, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44A, 0x44B, 0x44C, 0x44D, 0x44E, 0x44F, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45A, 0x45B, 0x45C, 0x45E, 0x45F, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0 };
52     static const WCHAR tbl_upper[] = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值