标题:
STM32F4更新W25Q16字库源程序
[打印本页]
作者:
Lynne0088
时间:
2018-4-30 12:41
标题:
STM32F4更新W25Q16字库源程序
一开始我下载了读取SD卡的程序,但液晶显示屏幕上没反应,于是我就下载了这个关于更新字库的程序,就有反应了。
本实验将实现如下功能:开机的时候先检测W25Q16中是否已经存在字库,如果存在,则按次序显示汉字(三种字体都显示)。如果没有,则检测SD卡和文件系统,并查找SYSTEM文件夹下的FONT文件夹,在该文件夹内查找UNIGBK.BIN、GBK12.FON、GBK16.FON (这几个文件的由来,我们前面已经介绍了)。在检测到这些文件之后,就开始更新字库,更新完毕才开始显示汉字。通过按按键KEY0,可以强制更新字库。同样我们也是用DS0来指示程序正在运行。
0.png
(46.55 KB, 下载次数: 32)
下载附件
2018-4-30 15:30 上传
需要拷贝到SD卡根目录文件
1,在系统(或字库)更新的时候,必须用到SYSTEM文件夹,请将该文件夹下的SYSTEM文件夹拷贝到SD卡根目录。
2,测试用文件--该文件夹是用来测试用的,里面包含一些文本/图片/音乐/视频等文件,这个文件不一定要拷贝。
3,默认我们已经将这两个文件夹拷贝到了FLASH磁盘(磁盘名:ALIENTEK,即W25Q128)里面。
注意:
1,本例程支持12*12/16*16 大小的汉字显示。
2,如果想更新字库,必须自备SD卡一个。
单片机源程序如下:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "sram.h"
#include "malloc.h"
#include "usmart.h"
#include "sdio_sdcard.h"
#include "malloc.h"
#include "w25qxx.h"
#include "ff.h"
#include "exfuns.h"
#include "fontupd.h"
#include "text.h"
//汉字显示 实验 -库函数版本
//STM32F4工程模板-库函数版本
int main(void)
{
u32 fontcnt;
u8 i,j;
u8 fontx[2];//gbk码
u8 key,t;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //初始化延时函数
uart_init(115200); //初始化串口波特率为115200
LED_Init(); //初始化LED
LCD_Init(); //LCD初始化
KEY_Init(); //按键初始化
W25QXX_Init(); //初始化W25Q128
usmart_dev.init(168); //初始化USMART
my_mem_init(SRAMIN); //初始化内部内存池
my_mem_init(SRAMCCM); //初始化CCM内存池
exfuns_init(); //为fatfs相关变量申请内存
f_mount(fs[0],"0:",1); //挂载SD卡
f_mount(fs[1],"1:",1); //挂载FLASH.
// W25QXX_Erase_Chip();//擦除
while(font_init()) //检查字库
{
UPD:
LCD_Clear(WHITE); //清屏
POINT_COLOR=RED; //设置字体为红色
LCD_ShowString(30,50,200,16,16,"Mcudev STM32F4");
while(SD_Init()) //检测SD卡
{
LCD_ShowString(30,70,200,16,16,"SD Card Failed!");
delay_ms(200);
LCD_Fill(30,70,200+30,70+16,WHITE);
delay_ms(200);
}
LCD_ShowString(30,70,200,16,16,"SD Card OK");
LCD_ShowString(30,90,200,16,16,"Font Updating...");
key=update_font(20,110,16,"0:");//更新字库
while(key)//更新失败
{
LCD_ShowString(30,110,200,16,16,"Font Update Failed!");
delay_ms(200);
LCD_Fill(20,110,200+20,110+16,WHITE);
delay_ms(200);
}
LCD_ShowString(30,110,200,16,16,"Font Update Success! ");
delay_ms(1500);
LCD_Clear(WHITE);//清屏
}
POINT_COLOR=RED;
Show_Str(30,50,200,16,"Mcudev_STM32F407开发板",16,0);
Show_Str(30,70,200,16,"GBK字库测试程序",16,0);
//Show_Str(30,90,200,16,"嵌入式开发网mcudev",16,0);
Show_Str(30,110,200,16,"2018年4月22日",16,0);
Show_Str(30,130,200,16,"按KEY0,更新字库",16,0);
POINT_COLOR=BLUE;
Show_Str(30,150,200,16,"内码高字节:",16,0);
Show_Str(30,170,200,16,"内码低字节:",16,0);
Show_Str(30,190,200,16,"汉字计数器:",16,0);
// Show_Str(30,220,200,24,"对应汉字为:",24,0); //因为FLASH W25Q16无法装下所有三种字库,暂时不提供对24点阵字库的显示
Show_Str(30,244,200,16,"对应汉字(16*16)为:",16,0);
Show_Str(30,260,200,12,"对应汉字(12*12)为:",12,0);
while(1)
{
fontcnt=0;
for(i=0x81;i<0xff;i++)
{
fontx[0]=i;
LCD_ShowNum(118,150,i,3,16); //显示内码高字节
for(j=0x40;j<0xfe;j++)
{
if(j==0x7f)continue;
fontcnt++;
LCD_ShowNum(118,170,j,3,16); //显示内码低字节
LCD_ShowNum(118,190,fontcnt,5,16);//汉字计数显示
fontx[1]=j;
// Show_Font(30+132,220,fontx,24,0);
Show_Font(30+144,244,fontx,16,0);
Show_Font(30+108,260,fontx,12,0);
t=200;
while(t--)//延时,同时扫描按键
{
delay_ms(1);
key=KEY_Scan(0);
if(key==KEY0_PRES)goto UPD;
}
LED0=!LED0;
}
}
}
}
//int main(void)
//{
// NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
//
// delay_init(168); //初始化延时函数
// uart_init(115200); //初始化串口波特率为115200
// LED_Init(); //初始化LED
// LCD_Init(); //LCD初始化
// KEY_Init(); //按键初始化
// W25QXX_Init(); //初始化W25Q128
// usmart_dev.init(168); //初始化USMART
// my_mem_init(SRAMIN); //初始化内部内存池
// my_mem_init(SRAMCCM); //初始化CCM内存池
// exfuns_init(); //为fatfs相关变量申请内存
// f_mount(fs[0],"0:",1); //挂载SD卡
// f_mount(fs[1],"1:",1); //挂载FLASH.
//// W25QXX_Erase_Chip();//擦除
//
// while(font_init()) //检查字库
// {
// LCD_Clear(WHITE); //清屏
// POINT_COLOR=RED; //设置字体为红色
// LCD_ShowString(30,50,200,16,16,"Mcudev STM32F4");
// while(SD_Init()) //检测SD卡
// {
// LCD_ShowString(30,70,200,16,16,"SD Card Failed!");
// delay_ms(200);
// LCD_Fill(30,70,200+30,70+16,WHITE);
// delay_ms(200);
// }
//
// LCD_ShowString(30,110,200,16,16,"Font Update Success! ");
// delay_ms(1500);
// LCD_Clear(WHITE);//清屏
// }
//
// POINT_COLOR=RED;
// Show_Str(30,50,200,16,"Mcudev_STM32F407开发板",16,0);
// Show_Str(30,70,200,16,"GBK字库测试程序",16,0);
// Show_Str(30,90,200,16,"嵌入式开发网mcudev",16,0);
// Show_Str(30,110,200,16,"2015年8月15日",16,0);
// Show_Str(30,130,200,16,"按KEY0,更新字库",16,0);
// POINT_COLOR=BLUE;
// Show_Str(30,150,200,16,"林本源vdfdhdfhfhfhfgh斯蒂芬归还建行开户结果就发给回复:",16,0);
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
CS_show_HZ.rar
(8.96 MB, 下载次数: 88)
2018-4-30 12:39 上传
点击文件名下载附件
用来更新字库,以便读取SD卡
下载积分: 黑币 -5
作者:
icqw1983
时间:
2019-10-14 13:48
正是需要的,谢谢!
作者:
icqw1983
时间:
2019-10-14 13:49
这个要支持一下!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1