第三篇:字符显示原理
创始人
2024-05-30 18:29:31
  1. 使用PCtolLCD2003制作字库

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

  1. 设置字体为宋体,字体大小为16*16(这里当然可以设为别的)

  1. 输入想要显示的字

  1. 点击生成字模

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};

接下里我们来分析字模如何显示:

  1. 字体大小为16*16,每一行用两个字节来表示,总共16行,也就时2*16 = 32个字节.

  1. 第一个字节为0x10,二进制位0001 0000,我们想要显示出字体,只需要判断每一个bit对应的值是0还是1,当为0是显示背景色,为1时显示字体颜色,依次类推就可以显示出完整的一个字了

  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);elseFONT_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){}
}

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...