找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10338|回復(fù): 2
收起左側(cè)

使用stm32f103c8t6開發(fā)板的中文字庫顯示實驗

[復(fù)制鏈接]
ID:212149 發(fā)表于 2018-3-6 19:13 | 顯示全部樓層 |閱讀模式
本人學(xué)生水平一般,沒有錢購買stm32的開發(fā)板,最近使用手頭有的一些元件,制作了一塊主控芯片為stm32f103c8t6的開發(fā)板。
這兩天研究了一下中文字庫的實現(xiàn),采用W25Q64存儲了GBK碼的中文字庫,顯示到oled 的屏幕上。
實現(xiàn)方法主要是通過fatfs文件系統(tǒng)讀取sd卡中的字庫文件,將字庫文件寫入到flash中,然后根據(jù)漢字的GBK碼計算出漢字點陣存放的地址,讀取之后顯示在oled屏幕上。也可以通過串口發(fā)送字庫文件到單片機(jī),然后在寫入到flash中,方法都差不多。
微信圖片_20180306185559.jpg 1520334438(1).jpg

#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ù)初始化         
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級分組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)變量申請內(nèi)存  
  f_mount(fs[0],"0:",1);         //掛載SD卡
         f_mount(fs[1],"1:",1);         //掛載FLASH.
        OLED_Init();                        //初始化OLED  
        OLED_Clear();
        while(font_init())         //檢查字庫
        {
                OLED_Clear();
                while(SD_Initialize())                                                        //檢測不到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);//更新字庫 更新失敗返回值為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,"中文字庫實驗",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);
}



這里附上三個字庫文件: GBK字庫文件.zip (1.39 MB, 下載次數(shù): 163)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:143203 發(fā)表于 2018-11-11 23:31 | 顯示全部樓層
SD卡模塊怎么連接的
回復(fù)

使用道具 舉報

ID:696977 發(fā)表于 2020-4-19 16:41 | 顯示全部樓層
樓主能給一下完整的程序源碼么,我的內(nèi)存池初始化和SD_Initialize初始化一直有問題卡住
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表