用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