本人學生水平一般,沒有錢購買stm32的開發板,最近使用手頭有的一些元件,制作了一塊主控芯片為stm32f103c8t6的開發板。
這兩天研究了一下中文字庫的實現,采用W25Q64存儲了GBK碼的中文字庫,顯示到oled 的屏幕上。
實現方法主要是通過fatfs文件系統讀取sd卡中的字庫文件,將字庫文件寫入到flash中,然后根據漢字的GBK碼計算出漢字點陣存放的地址,讀取之后顯示在oled屏幕上。也可以通過串口發送字庫文件到單片機,然后在寫入到flash中,方法都差不多。
微信圖片_20180306185559.jpg (135.6 KB, 下載次數: 116)
下載附件
2018-3-6 19:04 上傳
1520334438(1).jpg (32.69 KB, 下載次數: 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(); //延時函數初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設置中斷優先級分組2
uart_init(9600); //串口初始化為9600
OLED_Init(); //初始化液晶
LED_Init(); //LED初始化
KEY_Init(); //按鍵初始化
SPI_Flash_Init();
usmart_dev.init(72); //usmart初始化
mem_init(); //初始化內存池
exfuns_init(); //為fatfs相關變量申請內存
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自制開發板",16,0);
Show_Str(0,4,"51黑論壇",16,0);
OLED_ShowString(0,6,"2018/3/5",16);
while(1);
}
這里附上三個字庫文件:
GBK字庫文件.zip
(1.39 MB, 下載次數: 163)
2018-3-6 19:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|