使用PCtolLCD2003制作字库
注意,我们开始取模前一定要记得设置取模方式,这个取模方式和我们显示屏的显示方式要一致


设置字体为宋体,字体大小为16*16(这里当然可以设为别的)
输入想要显示的字
点击生成字模
u8 shuai[] = {0x10,0x04,0x10,0x04,0x12,0x04,0x12,0x04,0x92,0x3F,0x92,0x24,0x92,0x24,0x92,0x24,
0x92,0x24,0x92,0x24,0x92,0x24,0x90,0x2C,0x88,0x14,0x08,0x04,0x04,0x04,0x02,0x04};
接下里我们来分析字模如何显示:
字体大小为16*16,每一行用两个字节来表示,总共16行,也就时2*16 = 32个字节.
第一个字节为0x10,二进制位0001 0000,我们想要显示出字体,只需要判断每一个bit对应的值是0还是1,当为0是显示背景色,为1时显示字体颜色,依次类推就可以显示出完整的一个字了
由于我设置的时低位在前,因此第一个点是字节的最低位,如果选择高位在前,拿第一个点是字节的最高位.程序设计时要注意一下,否则显示的字会有乱码
2.显示16*16的字体
#ifndef MID_FONT_H
#define MID_FONT_H
#include "dev_lcd.h"
/*****************************宏替换屏蔽硬件接口*************************/
#define FONT_SET_WINDOWS(x, y, x1, y1) LCD_SetWindows(x, y, x1, y1)
#define FONT_WRITE_COLOR(data) Lcd_WriteData_16Bit(data)
/************************************************************************/
void FONT_Show16(unsigned int x, unsigned int y, unsigned char* zifu, u16 color);
#endif
#include "mid_font.h"
#define BACK_COLOR 0xFFFF//设置字体的背景色为白色
/*******************************************************************
函数功能:
显示16*16大小的字体
参数:
返回值:
说明:
*******************************************************************/
void FONT_Show16(unsigned int x, unsigned int y, unsigned char* zifu, u16 color)
{
unsigned int i,j;
unsigned char temp;
FONT_SET_WINDOWS(x, y, x + 15, y + 15 );
for(i=0;i<32;i++)
{
temp = *(zifu + i);
for(j=0;j<8;j++)
{
if(temp&0x01)
FONT_WRITE_COLOR(color);
else
FONT_WRITE_COLOR(BACK_COLOR);
temp=temp>>1;
}
}
}
3.效果展示
#include "stm32f10x.h"
#include "bsp_lcd.h"
#include "dev_lcd.h"
#include "mid_ui.h"
#include "mid_font.h"
u8 wan[] ={0x00,0x00,0x00,0x00,0xBF,0x3F,0x08,0x00,0x08,0x00,0x08,0x00,0xC8,0x7F,0x3E,0x09,
0x08,0x09,0x08,0x09,0x08,0x09,0x08,0x09,0xB8,0x48,0x87,0x48,0x42,0x70,0x20,0x00};
u8 qian[] = {0x80,0x00,0x84,0x10,0x84,0x10,0xFC,0x1F,0x00,0x04,0x44,0x04,0x44,0x7C,0xFF,0x42,
0x44,0x29,0x44,0x08,0x7C,0x08,0x44,0x08,0x44,0x14,0x7C,0x14,0x44,0x22,0x00,0x41};/*"嵌",0*/
u8 ru[] = {0x20,0x00,0x40,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x40,0x01,0x40,0x01,0x40,0x01,
0x20,0x02,0x20,0x02,0x10,0x04,0x10,0x04,0x08,0x08,0x04,0x08,0x02,0x10,0x01,0x60};/*"入",0*/
u8 shi[] = {0x00,0x12,0x00,0x22,0x00,0x22,0x00,0x02,0xFF,0x7F,0x00,0x02,0x00,0x02,0x7C,0x02,
0x10,0x02,0x10,0x02,0x10,0x04,0x10,0x44,0xF0,0x48,0x1E,0x50,0x04,0x60,0x00,0x40};/*"式",0*/
u8 de[] = {0x08,0x02,0x08,0x02,0x04,0x02,0x7E,0x3E,0x42,0x21,0x42,0x21,0xC2,0x20,0x42,0x22,
0x7E,0x24,0x42,0x24,0x42,0x20,0x42,0x20,0x42,0x20,0x7E,0x20,0x42,0x14,0x00,0x08};/*"的",0*/
u8 cai[] = {0x10,0x04,0x10,0x04,0xFF,0x7F,0x10,0x04,0x00,0x08,0x00,0x1F,0xFC,0x00,0x88,0x08,
0x10,0x04,0x80,0x00,0xFE,0x3F,0xA0,0x02,0x90,0x04,0x8C,0x18,0x83,0x60,0x80,0x00};/*"菜",0*/
u8 ji[] = {0x00,0x04,0x00,0x02,0x00,0x3F,0x3F,0x21,0x20,0x25,0x20,0x21,0x12,0x29,0x14,0x11,
0x08,0x01,0x08,0x7F,0x14,0x40,0x24,0x40,0xA2,0x5F,0x01,0x40,0x00,0x28,0x00,0x10};/*"鸡",0*/
int main(void)
{
unsigned int x = 50, y = 100;;
bsp_spi_init();
bsp_gpio_init();
dev_lcd_init();
FONT_Show16(x,y,wan, RED);
x = x+16; y = y+16;
FONT_Show16(x,y,qian, RED);
x = x+16; y = y+16;
FONT_Show16(x,y,ru, RED);
x = x+16; y = y+16;
FONT_Show16(x,y,shi, RED);
x = x+16; y = y+16;
FONT_Show16(x,y,de, RED);
x = x+16; y = y+16;
FONT_Show16(x,y,cai, RED);
x = x+16; y = y+16;
FONT_Show16(x,y,ji, RED);
x = x+16; y = y+16;
while(1)
{
}
}
