共享自己的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 挺有意思的,谢谢分享 谢谢分享。 谢谢了啊 不错,收藏了 不错的资料 不错 不错,收藏了 楼主的字库怎么弄出来的,是用字模软件一个一个写出来的吗 mark 标记 好资料,引用了 LZ显示英文用的5*8的点阵...通常6*8的比较多,不知LZ这个字模是怎样弄出来的,难道是自己一个个拼出来的? LCDSPI_WRITE(0x00); 请问这汉代码啥意思呀! 挺好的,有机会我也试试 哈。。。直接把楼主取出来的图形全部卷走。。 留个记号 請問這字庫是如何生成的 我想要8 x 16 字庫 請告訴我方法 不错。。。。。 mark 楼主,求方法,你是怎么取模的,用的什么软件?授人以鱼不如授人以渔,多谢了! PCtoLCD2002就是个不错的取字模软件。 Gallen.Zhang 发表于 2013-9-14 16:55 static/image/common/back.gif
PCtoLCD2002就是个不错的取字模软件。
谢谢,我刚刚试了,就是这个,不错的软件 哈哈,请认为是火箭。。。 顶一个。 正在学习如何写点阵液晶!!!谢谢!!! 感谢分享! 谢谢分享,心形旁边是小JJ吗{:lol:}{:lol:}{:lol:} mark一下 后面要用
我能说我专门去看了第三图片倒数第二行右数第二个图标么。。。同去的举手 hunter_ling 发表于 2012-5-10 00:12
LZ显示英文用的5*8的点阵...通常6*8的比较多,不知LZ这个字模是怎样弄出来的,难道是自己一个个拼出来的? ...
这是5X7的点阵吧。。。。
页:
[1]