注意,我们开始取模前一定要记得设置取模方式,这个取模方式和我们显示屏的显示方式要一致


设置字体为宋体,字体大小为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时显示字体颜色,依次类推就可以显示出完整的一个字了
由于我设置的时低位在前,因此第一个点是字节的最低位,如果选择高位在前,拿第一个点是字节的最高位.程序设计时要注意一下,否则显示的字会有乱码
#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);elseFONT_WRITE_COLOR(BACK_COLOR);temp=temp>>1;}}
}#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){}
}