- 使用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)
    {
    
    }
}
 
   


















