SD卡字库和 bmp图片显示实验
E-Mail firestm32@foxmail
QQ 313303034
博客firestm32.blog.chinaunix
硬件平台野火STM32开发板
库版本ST3.0.0
实验描述:使用软件制作自定义类型的字库,然之后将字库放入SD卡中,并且在SD 卡中放入一张bmp图片作为LCD背景。并且调用截屏函数截取LCD背景
并保存为bmp图片。
硬件连接:
MicroSD卡
PC8-SDIO-D0  ----DATA0
PC9-SDIO-D1  ----DATA1
PC10-SDIO-D2  ----DATA2
PC11-SDIO-D3  ----CD/DATA3
PC12-SDIO-CLK ----CLK
PD2-SDIO-CMD  ----CMD
函数printf作用TFT 数据线
PD14-FSMC-D0  ----LCD-DB0
PD15-FSMC-D1  ----LCD-DB1
PD0-FSMC-D2  ----LCD-DB2
PD1-FSMC-D3  ----LCD-DB3
PE7-FSMC-D4  ----LCD-DB4
PE8-FSMC-D5  ----LCD-DB5
PE9-FSMC-D6  ----LCD-DB6
PE10-FSMC-D7  ----LCD-DB7
PE11-FSMC-D8  ----LCD-DB8
PE12-FSMC-D9  ----LCD-DB9
PE13-FSMC-D10 ----LCD-DB10
PE14-FSMC-D11  ----LCD-DB11
PE15-FSMC-D12 ----LCD-DB12
PD8-FSMC-D13  ----LCD-DB13
PD9-FSMC-D14  ----LCD-DB14
PD10-FSMC-D15  ----LCD-DB15      TFT 控制信号线
PD4-FSMC-NOE ----LCD-RD
PD5-FSMC-NEW ----LCD-WR
PD7-FSMC-NE1 ----LCD-CS
PD11-FSMC-A16 ----LCD-DC
PE1-FSMC-NBL1 ----LCD-RESET
PD13-FSMC-A18 ----LCD-BLACK-LIGHT
库文件:startup/start_stm32f10x_hd.c
CMSIS/core_cm3.c
CMSIS/system_stm32f10x.c
FWlib/stm32f10x_rcc.c
FWlib/misc.c
Fwlib/stm32f10x_systick.c
FWlib/stm32f10x_exti.c
FWlib/stm32f10x_gpio.c
FWlib/stm32f10x_sdio.c
FWlib/stm32f10x_dma.c
FWlib/stm32f10x_usart.c
FWlib/stm32f10x_fsmc.c
用户文件:  USER/main.c
USER/stm32f10x_it.c
USER/systick.c
USER/usart1.c
USER/lcd.c
USER/ff.c
USER/sdcard.c
USER/diskio.c
USER/sd_fs_app.c
USER/Sd_bmp.c
野火STM32开发板LCD和SD卡硬件连接图:
SD卡接口连接如下
LCD接口连接如下
字库制作详细流程
我们采用“字模III-增强版v3.91”软件来制作中文字库。
1  打开字模软件
2 点击“自动批量生成字库”按钮选项。
软件界面左下角将出现一下几个按钮选项:
3点击选择“二级汉字库”按钮。
在“输入批量字符”框里面将会列出二级汉字的所有汉字,其中共收录了6768个汉字字符,非特殊情况下都能够满足大家的要求啦,如图:
4点击“字库智能生成”按钮,弹出“字库批量参数确认”对话框。
我们在“源字体”选项里面做如下设置,需要注意的是大小问题,因为我们本次的设计目标是实现16*16的汉字,所以在此选择’小四’字体。
设置好之后如下:
5 点击“开始转换进程”按钮.就会在安装目录下或者你设置好的目录下生成.c后缀的字库文件。
6对于LCD显示来说,只要能够在指定的位置描写制定颜的点,那么就能够很好地根据汉字字模信息来描写汉字。在此,为了能够更好的清楚字模的取向和高低位的排列顺序,我们可以现先在pc测试我们刚才制作好的库文件。
在这里我们取“当”字符的数据来测试。
VC6.0测试源码如下:
1.#include <stdio.h>
2.
3.unsigned char cc[] =
4.{/*"当"字符*/
5.0x00,0x80,0x10,0x90,0x08,0x98,0x0C,0x90,0x08,0xA0,0x00,0x80,0x3F,0xFC,
0x00,0x04,
6.0x00,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x04,0x3F,0xFC,0x00,0x04,
0x00,0x00
7.};
8.
9.void main()
10.{
11.int i,j;
12.    unsigned char kk;
13.for ( i=0;  i<16; i++)
14.    {