jk36125 发表于 2011-11-3 17:41:05

共享自己的LCD5110点阵字库:常用ASCII码以及原创图标,附带LCD5110驱动模板

入手了几个LCD5110,自己整理了一些5*8的ASCII码点阵。心血来潮又画了一些原创图标。共享给有需要的人使用。

字库文件中的字符已经按照ASCII码表顺序排列,可以直接使用字符串索引显示:

LCD_draw_string("ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`");
LCD_draw_string("abcdefghijklmnopqrstuvwxyz{|}~");

LCD_draw_string函数在帖末的LCD5110驱动模板中。


无图无真相:
http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_691396JET8J5.jpg
(原文件名:1.jpg)

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_691397NQTN7Q.jpg
(原文件名:2.jpg)

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_691398LSZLZ1.jpg
(原文件名:3.jpg)


//-----------------------------font.c

#include <types.h>

const uint8 font_5_8[] = {

/*
* delta = SPCACE(0x20)
*/
0x00, 0x00, 0x00, 0x00, 0x00, // SPACE
0x00, 0x00, 0x4f, 0x00, 0x00, // !
0x00, 0x07, 0x00, 0x07, 0x00, // "
0x14, 0x7f, 0x14, 0x7f, 0x14, // #
0x24, 0x2a, 0x7f, 0x2a, 0x12, // $
0x23, 0x13, 0x08, 0x64, 0x62, // %
0x36, 0x49, 0x55, 0x22, 0x50, // &
0x00, 0x05, 0x03, 0x00, 0x00, // '
0x00, 0x1c, 0x22, 0x41, 0x00, // (
0x00, 0x41, 0x22, 0x1c, 0x00, // )
0x14, 0x08, 0x3e, 0x08, 0x14, // *
0x08, 0x08, 0x3e, 0x08, 0x08, // +
0x00, 0x50, 0x30, 0x00, 0x00, // ,
0x08, 0x08, 0x08, 0x08, 0x08, // -
0x00, 0x60, 0x60, 0x00, 0x00, // .
0x20, 0x10, 0x08, 0x04, 0x02, // /
0x3e, 0x51, 0x49, 0x45, 0x3e, // 0
0x00, 0x42, 0x7f, 0x40, 0x00, // 1
0x42, 0x61, 0x51, 0x49, 0x46, // 2
0x21, 0x41, 0x45, 0x4b, 0x31, // 3
0x18, 0x14, 0x12, 0x7f, 0x10, // 4
0x27, 0x45, 0x45, 0x45, 0x39, // 5
0x3c, 0x4a, 0x49, 0x49, 0x30, // 6
0x01, 0x71, 0x09, 0x05, 0x03, // 7
0x36, 0x49, 0x49, 0x49, 0x36, // 8
0x06, 0x49, 0x49, 0x29, 0x1e, // 9
0x00, 0x36, 0x36, 0x00, 0x00, // :
0x00, 0x56, 0x36, 0x00, 0x00, // ;
0x08, 0x14, 0x22, 0x41, 0x00, // <
0x14, 0x14, 0x14, 0x14, 0x14, // =
0x00, 0x41, 0x22, 0x14, 0x08, // >
0x02, 0x01, 0x51, 0x09, 0x06, // ?
0x32, 0x49, 0x79, 0x41, 0x3e, // @
0x7e, 0x11, 0x11, 0x11, 0x7e, // A
0x7f, 0x49, 0x49, 0x49, 0x36, // B
0x3e, 0x41, 0x41, 0x41, 0x22, // C
0x7f, 0x41, 0x41, 0x22, 0x1c, // D
0x7f, 0x49, 0x49, 0x49, 0x41, // E
0x7f, 0x09, 0x09, 0x09, 0x01, // F
0x3e, 0x41, 0x49, 0x49, 0x7a, // G
0x7f, 0x08, 0x08, 0x08, 0x7f, // H
0x00, 0x41, 0x7f, 0x41, 0x00, // I
0x20, 0x40, 0x41, 0x3f, 0x01, // J
0x7f, 0x08, 0x14, 0x22, 0x41, // K
0x7f, 0x40, 0x40, 0x40, 0x40, // L
0x7f, 0x02, 0x0c, 0x02, 0x7f, // M
0x7f, 0x04, 0x08, 0x10, 0x7f, // N
0x3e, 0x41, 0x41, 0x41, 0x3e, // O
0x7f, 0x09, 0x09, 0x09, 0x06, // P
0x3e, 0x41, 0x51, 0x21, 0x5e, // Q
0x7f, 0x09, 0x19, 0x29, 0x46, // R
0x46, 0x49, 0x49, 0x49, 0x31, // S
0x01, 0x01, 0x7f, 0x01, 0x01, // T
0x3f, 0x40, 0x40, 0x40, 0x3f, // U
0x1f, 0x20, 0x40, 0x20, 0x1f, // V
0x3f, 0x40, 0x38, 0x40, 0x3f, // W
0x63, 0x14, 0x08, 0x14, 0x63, // X
0x07, 0x08, 0x70, 0x08, 0x07, // Y
0x61, 0x51, 0x49, 0x45, 0x43, // Z
0x00, 0x7f, 0x41, 0x41, 0x00, // [
0x02, 0x04, 0x08, 0x10, 0x20, //
0x00, 0x41, 0x41, 0x7f, 0x00, // ]
0x04, 0x02, 0x01, 0x02, 0x04, // ^
0x40, 0x40, 0x40, 0x40, 0x40, // _
0x00, 0x01, 0x02, 0x04, 0x00, // `
0x20, 0x54, 0x54, 0x54, 0x78, // a
0x7f, 0x48, 0x44, 0x44, 0x38, // b
0x38, 0x44, 0x44, 0x44, 0x20, // c
0x38, 0x44, 0x44, 0x48, 0x7f, // d
0x38, 0x54, 0x54, 0x54, 0x18, // e
0x08, 0x7e, 0x09, 0x01, 0x02, // f
0x0c, 0x52, 0x52, 0x52, 0x3e, // g
0x7f, 0x08, 0x04, 0x04, 0x78, // h
0x00, 0x44, 0x7d, 0x40, 0x00, // i
0x20, 0x40, 0x44, 0x3d, 0x00, // j
0x7f, 0x10, 0x28, 0x44, 0x00, // k
0x00, 0x41, 0x7f, 0x40, 0x00, // l
0x7c, 0x04, 0x18, 0x04, 0x78, // m
0x7c, 0x08, 0x04, 0x04, 0x78, // n
0x38, 0x44, 0x44, 0x44, 0x38, // o
0x7c, 0x14, 0x14, 0x14, 0x08, // p
0x08, 0x14, 0x14, 0x18, 0x7c, // q
0x7c, 0x08, 0x04, 0x04, 0x08, // r
0x48, 0x54, 0x54, 0x54, 0x20, // s
0x04, 0x3f, 0x44, 0x40, 0x20, // t
0x3c, 0x40, 0x40, 0x20, 0x7c, // u
0x1c, 0x20, 0x40, 0x20, 0x1c, // v
0x3c, 0x40, 0x30, 0x40, 0x3c, // w
0x44, 0x28, 0x10, 0x28, 0x44, // x
0x0c, 0x50, 0x50, 0x50, 0x3c, // y
0x44, 0x64, 0x54, 0x4c, 0x44, // z
0x00, 0x08, 0x36, 0x41, 0x00, // {
0x00, 0x00, 0x7f, 0x00, 0x00, // |
0x00, 0x41, 0x36, 0x08, 0x00, // }
0x08, 0x04, 0x08, 0x10, 0x08, // ~

/*
* Index = 0x5f
*/
0x08, 0x08, 0x2a, 0x1c, 0x08, // ->               
0x08, 0x1c, 0x2a, 0x08, 0x08, // <-               
0x04, 0x02, 0x7f, 0x02, 0x04, // ↑               
0x10, 0x20, 0x7f, 0x20, 0x10, // ↓               
0x15, 0x16, 0x7c, 0x16, 0x15, // ¥               
0x03, 0x3b, 0x44, 0x44, 0x44, // ℃               
0x03, 0x03, 0x7c, 0x14, 0x14, // ℉               
0x44, 0x28, 0x10, 0x28, 0x44, // ×               
0x08, 0x08, 0x2a, 0x08, 0x08, // ÷               
0x38, 0x44, 0x48, 0x30, 0x2c, // α        
0xf8, 0x54, 0x54, 0x54, 0x28, // β               
0x28, 0x54, 0x54, 0x44, 0x20, // ε               
0x3e, 0x49, 0x09, 0x09, 0x06, // ρ               
0x38, 0x44, 0x4c, 0x54, 0x24, // σ               
0x40, 0x3f, 0x08, 0x08, 0x1f, // μ               
0x1f, 0x08, 0x08, 0x3f, 0x40, // η               
0x3c, 0x4a, 0x4a, 0x4a, 0x3c, // θ               
0x58, 0x64, 0x04, 0x64, 0x58, // Ω               
0x44, 0x3c, 0x04, 0x7c, 0x44, // π               
0x30, 0x28, 0x10, 0x28, 0x18, // ∞               
0x30, 0x28, 0x24, 0x28, 0x30, // △               
0x08, 0x1c, 0x08, 0x08, 0x0e, // Enter<-
};


//------------------ icon.c

#include <types.h>

const uint8 icon[] = {

// battery
0x1c, 0x3e, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x3e, // battery level 0
0x1c, 0x3e, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x3e, 0x3e, // battery level 1
0x1c, 0x3e, 0x22, 0x22, 0x22, 0x22, 0x22, 0x3e, 0x3e, 0x3e, // battery level 2
0x1c, 0x3e, 0x22, 0x22, 0x22, 0x22, 0x3e, 0x3e, 0x3e, 0x3e, // battery level 3
0x1c, 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, // battery level 4
0x1c, 0x3e, 0x22, 0x22, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, // battery level 5
0x1c, 0x3e, 0x22, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, // battery level 6
0x1c, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, // battery level 7

// resistance
0x08, 0x08, 0x3e, 0x22, 0x22, 0x22, 0x3e, 0x08, 0x08, 0x00,

// capacity A
0x08, 0x08, 0x08, 0x3e, 0x00, 0x1c, 0x2a, 0x08, 0x08, 0x00,

// capacity B
0x08, 0x08, 0x08, 0x3e, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x00,

// transistor
0x00, 0x08, 0x08, 0x3e, 0x08, 0x14, 0x63, 0x00, 0x00, 0x00,

// inductance
0x08, 0x08, 0x08, 0x00, 0x3e, 0x20, 0x20, 0x08, 0x08, 0x08,

// diode
0x08, 0x08, 0x3e, 0x14, 0x08, 0x3e, 0x08, 0x08, 0x00, 0x00,

// GND
0x00, 0x00, 0x08, 0x18, 0x28, 0x4e, 0x28, 0x18, 0x08, 0x00,

// wave
0x08, 0x08, 0x0e, 0x02, 0x3e, 0x20, 0x38, 0x08, 0x08, 0x00,

// music A
0x00, 0x00, 0x60, 0x7e, 0x02, 0x02, 0x62, 0x7e, 0x00, 0x00,

// music B
0x00, 0x00, 0x20, 0x50, 0x50, 0x3f, 0x06, 0x0c, 0x00, 0x00,

// heart
0x00, 0x0c, 0x12, 0x22, 0x44, 0x22, 0x12, 0x0c, 0x00, 0x00,

// rocket or dick
0x00, 0x00, 0xe0, 0xbe, 0x41, 0xbe, 0xe0, 0x00, 0x00, 0x00,

// satellite
0x00, 0x32, 0x34, 0x48, 0x4f, 0x48, 0x34, 0x32, 0x00, 0x00,

// speaker
0x00, 0x00, 0x3c, 0x3c, 0x24, 0x42, 0xff, 0x00, 0x00, 0x00,

// play
0x00, 0x00, 0x00, 0x7f, 0x3e, 0x1c, 0x08, 0x00, 0x00, 0x00,

// pause
0x00, 0x00, 0x3e, 0x3e, 0x00, 0x3e, 0x3e, 0x3e, 0x00, 0x00,

// stop
0x00, 0x00, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x00, 0x00, 0x00,

// forward
0x00, 0x3e, 0x1c, 0x08, 0x00, 0x3e, 0x1c, 0x08, 0x00, 0x00,

// backward
0x00, 0x08, 0x1c, 0x3e, 0x00, 0x08, 0x1c, 0x3e, 0x00, 0x00,
};


最后上传一个LCD5110驱动模板:
extern const uint8 font_5_8;
extern const uint8 icon[];

// SPI write byte
#define LCDSPI_WRITE(dat)         while(0){}
// clear the D/C line
#define LCD_SPICMD()                while(0){}
// set the D/C line
#define LCD_SPIDAT()                while(0){}
// clear the RESET line                                               
#define LCD_RSTL()                        while(0){}
// set the RESET line       
#define LCD_RSTH()                        while(0){}

// dummy delay
void delay_ms(int time) {
        while(time --);
}

/* @ horizontal addressing (V = 0)
*/
void LCD_draw_bytes(const uint8 *buffer, int nbytes) {
        while(nbytes --) {
                LCDSPI_WRITE(*(buffer ++));
        }
}

/* @ x:
* @ y:
*/
void LCD_set_xy(uint8 x, uint8 y) {
        LCD_SPICMD();
        LCDSPI_WRITE(0x40 | y);
        LCDSPI_WRITE(0x80 | x);       
        LCD_SPIDAT();       
}

/*
* @ clear the LCD
*/
void LCD_clear() {
        int i;
        uint8 buffer = 0x00;
       
        LCD_set_xy(0, 0);
        for(i = 0; i < 504; i ++) {
                LCD_draw_bytes(&buffer, sizeof(buffer));
        }
        LCD_set_xy(0, 0);
}

/*
* @ write char by ascii code
*/
void LCD_draw_string(uint8 *str) {
        int index;
        uint8 c;
       
        while(*str != 0) {
                c = *str;
                index = c - ' ';
                str ++;
                LCD_draw_bytes(font_5_8, 5);
                LCDSPI_WRITE(0x00);
        }
}

/*
* @ write symble by id
* @ id =
*/
void LCD_draw_symble(uint8 id) {
        if(id > 21) {
                id = 0;
        }
        LCD_draw_bytes(font_5_8, 5);
        LCDSPI_WRITE(0x00);
}

/*
* @ LCD draw icon
* @ id =
*/
void LCD_draw_icon(uint8 id) {
        LCD_draw_bytes(icon, 10);
        LCDSPI_WRITE(0x00);
        LCDSPI_WRITE(0x00);
}

/* Init LCD and IOs
*/
void LCD_init(){
        // init spi and ios here
        LCD_RSTL();
        delay_ms(1000000);
        LCD_RSTH();
        delay_ms(1000000);
        LCD_SPICMD();
        // config the LCD at 3.3V
        LCDSPI_WRITE(0x21); // ext cmd
        LCDSPI_WRITE(0xBF); // VLCD
        LCDSPI_WRITE(0x13); // BIAS = 1:48
        LCDSPI_WRITE(0x20); // basic cmd
        LCDSPI_WRITE(0x0c); // normal display
        // clear screen       
        LCD_SPIDAT();
        LCD_clear();
}

#if (0)
// test only
void LCD_test() {
        int i;
       
        TRACE_DEBUG("LCD TEST");
        LCD_init();
        LCD_draw_string("!\"#$%&'()*+,-./");
        LCD_draw_string("0123456789:;<=>?@");
        for(i = 0; i < 22; i ++) {
                LCD_draw_symble(i);
        }
        LCD_clear();
        LCD_draw_string("ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`");
        LCD_draw_string("abcdefghijklmnopqrstuvwxyz{|}~");
        LCD_clear();
        for(i = 0; i < 27; i ++) {
                LCD_draw_icon(i);
        }
}
#endif




PS: 所有图标均是人肉手工原创,转载请注明来自ourdev。
PSS: 第三章图片倒数第二行右数第二个图标请认为是火箭。./emotion/em030.gif

stanley.zhao 发表于 2011-11-3 17:57:13

挺有意思的,谢谢分享

411412 发表于 2011-11-3 17:58:38

谢谢分享。

yijiuchaoxi 发表于 2011-11-3 18:19:01

谢谢了啊

sonna 发表于 2011-11-3 18:49:04

不错,收藏了

amity 发表于 2011-11-3 21:05:21

不错的资料

lsy5110 发表于 2011-11-3 21:37:32

不错

airfex 发表于 2011-11-3 21:54:04

不错,收藏了

tianyaxtujxlg 发表于 2011-11-15 08:58:31

楼主的字库怎么弄出来的,是用字模软件一个一个写出来的吗

davidd 发表于 2012-1-18 10:56:10

mark

qingyin2009 发表于 2012-1-18 12:14:06

标记

ming1006 发表于 2012-2-5 14:40:25

好资料,引用了

hunter_ling 发表于 2012-5-10 00:12:47

LZ显示英文用的5*8的点阵...通常6*8的比较多,不知LZ这个字模是怎样弄出来的,难道是自己一个个拼出来的?

yuxuefly 发表于 2012-9-2 15:24:44

LCDSPI_WRITE(0x00); 请问这汉代码啥意思呀!

hyghyg1234 发表于 2012-9-13 19:31:08

挺好的,有机会我也试试

sco518 发表于 2012-9-13 20:03:48

哈。。。直接把楼主取出来的图形全部卷走。。

shiyingyifan 发表于 2012-9-15 00:41:09

留个记号

choi 发表于 2013-5-24 17:45:40

請問這字庫是如何生成的   我想要8 x 16 字庫   請告訴我方法

Making 发表于 2013-7-16 22:13:59

不错。。。。。

龙的世界aiq 发表于 2013-8-1 18:24:02

mark                        

tcpln 发表于 2013-9-14 16:49:21

楼主,求方法,你是怎么取模的,用的什么软件?授人以鱼不如授人以渔,多谢了!

Gallen.Zhang 发表于 2013-9-14 16:55:15

PCtoLCD2002就是个不错的取字模软件。

tcpln 发表于 2013-9-14 18:04:02

Gallen.Zhang 发表于 2013-9-14 16:55 static/image/common/back.gif
PCtoLCD2002就是个不错的取字模软件。

谢谢,我刚刚试了,就是这个,不错的软件

PIC16F54 发表于 2013-9-14 22:44:39

哈哈,请认为是火箭。。。

liuzs09 发表于 2014-11-21 20:45:32

顶一个。   

Zenmvol 发表于 2014-11-28 13:19:25

正在学习如何写点阵液晶!!!谢谢!!!

丙寅电子 发表于 2014-11-28 13:22:38

感谢分享!

dexidz 发表于 2015-1-14 21:39:18

谢谢分享,心形旁边是小JJ吗{:lol:}{:lol:}{:lol:}

122402902 发表于 2017-5-15 14:11:06

mark一下 后面要用

bg6agf 发表于 2017-5-15 14:31:02

我能说我专门去看了第三图片倒数第二行右数第二个图标么。。。同去的举手

bg6agf 发表于 2017-5-15 14:31:57

hunter_ling 发表于 2012-5-10 00:12
LZ显示英文用的5*8的点阵...通常6*8的比较多,不知LZ这个字模是怎样弄出来的,难道是自己一个个拼出来的? ...

这是5X7的点阵吧。。。。
页: [1]
查看完整版本: 共享自己的LCD5110点阵字库:常用ASCII码以及原创图标,附带LCD5110驱动模板