找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9144|回复: 2
打印 上一主题 下一主题
收起左侧

使用stm32f103c8t6开发板的中文字库显示实验

[复制链接]
跳转到指定楼层
楼主
本人学生水平一般,没有钱购买stm32的开发板,最近使用手头有的一些元件,制作了一块主控芯片为stm32f103c8t6的开发板。
这两天研究了一下中文字库的实现,采用W25Q64存储了GBK码的中文字库,显示到oled 的屏幕上。
实现方法主要是通过fatfs文件系统读取sd卡中的字库文件,将字库文件写入到flash中,然后根据汉字的GBK码计算出汉字点阵存放的地址,读取之后显示在oled屏幕上。也可以通过串口发送字库文件到单片机,然后在写入到flash中,方法都差不多。


#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)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:143203 发表于 2018-11-11 23:31 | 只看该作者
SD卡模块怎么连接的
回复

使用道具 举报

板凳
ID:696977 发表于 2020-4-19 16:41 | 只看该作者
楼主能给一下完整的程序源码么,我的内存池初始化和SD_Initialize初始化一直有问题卡住
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表