|
本人學(xué)生水平一般,沒有錢購(gòu)買stm32的開發(fā)板,最近使用手頭有的一些元件,制作了一塊主控芯片為stm32f103c8t6的開發(fā)板。
這兩天研究了一下中文字庫(kù)的實(shí)現(xiàn),采用W25Q64存儲(chǔ)了GBK碼的中文字庫(kù),顯示到oled 的屏幕上。
實(shí)現(xiàn)方法主要是通過fatfs文件系統(tǒng)讀取sd卡中的字庫(kù)文件,將字庫(kù)文件寫入到flash中,然后根據(jù)漢字的GBK碼計(jì)算出漢字點(diǎn)陣存放的地址,讀取之后顯示在oled屏幕上。也可以通過串口發(fā)送字庫(kù)文件到單片機(jī),然后在寫入到flash中,方法都差不多。
微信圖片_20180306185559.jpg (135.6 KB, 下載次數(shù): 116)
下載附件
2018-3-6 19:04 上傳
1520334438(1).jpg (32.69 KB, 下載次數(shù): 104)
下載附件
2018-3-6 19:07 上傳
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "key.h"
#include "flash.h"
#include "mmc_sd.h"
#include "malloc.h"
#include "usart.h"
#include "ff.h"
#include "exfuns.h"
#include "fontupd.h"
#include "text.h"
#include "usmart.h"
int main(void)
{
u8 key;
// u8 res;
//u8 data_FAFTS[24];
// UINT bww;
delay_init(); //延時(shí)函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級(jí)分組2
uart_init(9600); //串口初始化為9600
OLED_Init(); //初始化液晶
LED_Init(); //LED初始化
KEY_Init(); //按鍵初始化
SPI_Flash_Init();
usmart_dev.init(72); //usmart初始化
mem_init(); //初始化內(nèi)存池
exfuns_init(); //為fatfs相關(guān)變量申請(qǐng)內(nèi)存
f_mount(fs[0],"0:",1); //掛載SD卡
f_mount(fs[1],"1:",1); //掛載FLASH.
OLED_Init(); //初始化OLED
OLED_Clear();
while(font_init()) //檢查字庫(kù)
{
OLED_Clear();
while(SD_Initialize()) //檢測(cè)不到SD卡
{
OLED_ShowString(0,0,"SD Card Error!",8);
delay_ms(500);
OLED_ShowString(0,0,"Please Check! ",8);
delay_ms(500);
LED0=!LED0;//DS0閃爍
}
OLED_ShowString(0,0,"SD Card OK",8);
key=update_font(0,1,8);//更新字庫(kù) 更新失敗返回值為0
while(key)//更新失敗
{
OLED_ShowString(0,1,"Font Update Failed!",8);
delay_ms(500);
LED0=!LED0;//DS0閃爍
}
OLED_ShowString(0,1,"Font Update Success!",8);
delay_ms(1000);
OLED_Clear();
}
Show_Str(0,0,"中文字庫(kù)實(shí)驗(yàn)",12,0);
Show_Str(0,2,"STM32自制開發(fā)板",16,0);
Show_Str(0,4,"51黑論壇",16,0);
OLED_ShowString(0,6,"2018/3/5",16);
while(1);
}
這里附上三個(gè)字庫(kù)文件:
GBK字庫(kù)文件.zip
(1.39 MB, 下載次數(shù): 163)
2018-3-6 19:13 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|