Arduino 8 点阵字库

这个网站看到5*7点阵的字库,发现在Arduino显示是垂直镜像效果。
就写了一段程序把其转化成Android的格式,并转化为二进制,方便查看。

这段程序并不是在Arduino IDE运行,是在电脑上用C语言环境运行。

程序很简单,我就不多解释了。


#include <stdio.h>

void printb(int val, int n) {
    if (n == 2) {
        uint8_t v = (uint8_t)val;
        printf("B");
        for (int i = 7; i >= 0; i--) {
            int b = v >> i;
            b = b & 1;
            printf("%d", b);
        }
        printf(", ");
    } else if (n == 16) {
        uint8_t v = (uint8_t)val;
        printf("0x%02x, ", v);
    }
}


int r2(int v) {
    if (v == 1) return 2;
    if (v == 2) return 1;
    return v;
}

int r4(int v) {
    int high = v / 4;
    int low = v % 4;
    high = r2(high);
    low = r2(low);
    return low * 4 + high;
}

int reverse(int v) {
    int high = v / 16;
    int low = v % 16;
    high = r4(high);
    low = r4(low);
    return low * 16 + high;
}

int main(int argc, const char * argv[]) {
    // 数据来源 http://bbs.21ic.com/icview-142159-1-1.html
    uint8_t fonts[][5] = {
        0x00, 0x00, 0x00, 0x00, 0x00,// ' '
        0x00, 0x00, 0x5F, 0x00, 0x00,// !
        0x00, 0x07, 0x00, 0x07, 0x00,// "
        0x14, 0x7F, 0x14, 0x7F, 0x14,// #
        0x24, 0x2A, 0x07, 0x2A, 0x12,// $
        0x23, 0x13, 0x08, 0x64, 0x62,// %
        0x37, 0x49, 0x55, 0x22, 0x50,// &
        0x00, 0x05, 0x03, 0x00, 0x00,// '
        0x00, 0x1C, 0x22, 0x41, 0x00,// (
        0x00, 0x41, 0x22, 0x1C, 0x00,// )
        0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
        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,// ;
        0x00, 0x08, 0x14, 0x22, 0x41,// <
        0x14, 0x14, 0x14, 0x14, 0x14,// =
        0x41, 0x22, 0x14, 0x08, 0x00,// >
        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, 0x01, 0x01,// F
        0x3E, 0x41, 0x41, 0x51, 0x32,// 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, 0x04, 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
        0x7F, 0x20, 0x18, 0x20, 0x7F,// W
        0x63, 0x14, 0x08, 0x14, 0x63,// X
        0x03, 0x04, 0x78, 0x04, 0x03,// Y
        0x61, 0x51, 0x49, 0x45, 0x43,// Z
        0x00, 0x00, 0x7F, 0x41, 0x41,// [
        0x02, 0x04, 0x08, 0x10, 0x20,// "\"
        0x41, 0x41, 0x7F, 0x00, 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
        0x08, 0x14, 0x54, 0x54, 0x3C,// g
        0x7F, 0x08, 0x04, 0x04, 0x78,// h
        0x00, 0x44, 0x7D, 0x40, 0x00,// i
        0x20, 0x40, 0x44, 0x3D, 0x00,// j
        0x00, 0x7F, 0x10, 0x28, 0x44,// 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,// }
        0x02, 0x01, 0x02, 0x04, 0x02,// ~
        0xff, 0xff, 0xff, 0xff, 0xff //black block// �
    };
    int len = sizeof(fonts) / sizeof(int8_t) / 5;
    printf("byte chars[][6] = {\n");
    for (int i = 0; i < len ; i++) {
        printf("0, ");           // 前面增加一列0
        for (int j = 0; j < 5; j++) {
            int value = fonts[i][j];
            value = reverse(value);
            // printb(value, 16);  // 用十六进制
            printb(value, 2);      // 用二进制显示
        }
        printf("// %c\n", i + 32);
    }
    printf("}\n");
    return 0;
}

运行结果为

byte chars[][6] = {
0, B00000000, B00000000, B00000000, B00000000, B00000000, //  
0, B00000000, B00000000, B11111010, B00000000, B00000000, // !
0, B00000000, B11100000, B00000000, B11100000, B00000000, // "
0, B00101000, B11111110, B00101000, B11111110, B00101000, // #
0, B00100100, B01010100, B11100000, B01010100, B01001000, // $
0, B11000100, B11001000, B00010000, B00100110, B01000110, // %
0, B11101100, B10010010, B10101010, B01000100, B00001010, // &
0, B00000000, B10100000, B11000000, B00000000, B00000000, // '
0, B00000000, B00111000, B01000100, B10000010, B00000000, // (
0, B00000000, B10000010, B01000100, B00111000, B00000000, // )
0, B00010000, B01010100, B00111000, B01010100, B00010000, // *
0, B00010000, B00010000, B01111100, B00010000, B00010000, // +
0, B00000000, B00001010, B00001100, B00000000, B00000000, // ,
0, B00010000, B00010000, B00010000, B00010000, B00010000, // -
0, B00000000, B00000110, B00000110, B00000000, B00000000, // .
0, B00000100, B00001000, B00010000, B00100000, B01000000, // /
0, B01111100, B10001010, B10010010, B10100010, B01111100, // 0
0, B00000000, B01000010, B11111110, B00000010, B00000000, // 1
0, B01000010, B10000110, B10001010, B10010010, B01100010, // 2
0, B10000100, B10000010, B10100010, B11010010, B10001100, // 3
0, B00011000, B00101000, B01001000, B11111110, B00001000, // 4
0, B11100100, B10100010, B10100010, B10100010, B10011100, // 5
0, B00111100, B01010010, B10010010, B10010010, B00001100, // 6
0, B10000000, B10001110, B10010000, B10100000, B11000000, // 7
0, B01101100, B10010010, B10010010, B10010010, B01101100, // 8
0, B01100000, B10010010, B10010010, B10010100, B01111000, // 9
0, B00000000, B01101100, B01101100, B00000000, B00000000, // :
0, B00000000, B01101010, B01101100, B00000000, B00000000, // ;
0, B00000000, B00010000, B00101000, B01000100, B10000010, // <
0, B00101000, B00101000, B00101000, B00101000, B00101000, // =
0, B10000010, B01000100, B00101000, B00010000, B00000000, // >
0, B01000000, B10000000, B10001010, B10010000, B01100000, // ?
0, B01001100, B10010010, B10011110, B10000010, B01111100, // @
0, B01111110, B10001000, B10001000, B10001000, B01111110, // A
0, B11111110, B10010010, B10010010, B10010010, B01101100, // B
0, B01111100, B10000010, B10000010, B10000010, B01000100, // C
0, B11111110, B10000010, B10000010, B01000100, B00111000, // D
0, B11111110, B10010010, B10010010, B10010010, B10000010, // E
0, B11111110, B10010000, B10010000, B10000000, B10000000, // F
0, B01111100, B10000010, B10000010, B10001010, B01001100, // G
0, B11111110, B00010000, B00010000, B00010000, B11111110, // H
0, B00000000, B10000010, B11111110, B10000010, B00000000, // I
0, B00000100, B00000010, B10000010, B11111100, B10000000, // J
0, B11111110, B00010000, B00101000, B01000100, B10000010, // K
0, B11111110, B00000010, B00000010, B00000010, B00000010, // L
0, B11111110, B01000000, B00100000, B01000000, B11111110, // M
0, B11111110, B00100000, B00010000, B00001000, B11111110, // N
0, B01111100, B10000010, B10000010, B10000010, B01111100, // O
0, B11111110, B10010000, B10010000, B10010000, B01100000, // P
0, B01111100, B10000010, B10001010, B10000100, B01111010, // Q
0, B11111110, B10010000, B10011000, B10010100, B01100010, // R
0, B01100010, B10010010, B10010010, B10010010, B10001100, // S
0, B10000000, B10000000, B11111110, B10000000, B10000000, // T
0, B11111100, B00000010, B00000010, B00000010, B11111100, // U
0, B11111000, B00000100, B00000010, B00000100, B11111000, // V
0, B11111110, B00000100, B00011000, B00000100, B11111110, // W
0, B11000110, B00101000, B00010000, B00101000, B11000110, // X
0, B11000000, B00100000, B00011110, B00100000, B11000000, // Y
0, B10000110, B10001010, B10010010, B10100010, B11000010, // Z
0, B00000000, B00000000, B11111110, B10000010, B10000010, // [
0, B01000000, B00100000, B00010000, B00001000, B00000100, // \
0, B10000010, B10000010, B11111110, B00000000, B00000000, // ]
0, B00100000, B01000000, B10000000, B01000000, B00100000, // ^
0, B00000010, B00000010, B00000010, B00000010, B00000010, // _
0, B00000000, B10000000, B01000000, B00100000, B00000000, // `
0, B00000100, B00101010, B00101010, B00101010, B00011110, // a
0, B11111110, B00010010, B00100010, B00100010, B00011100, // b
0, B00011100, B00100010, B00100010, B00100010, B00000100, // c
0, B00011100, B00100010, B00100010, B00010010, B11111110, // d
0, B00011100, B00101010, B00101010, B00101010, B00011000, // e
0, B00010000, B01111110, B10010000, B10000000, B01000000, // f
0, B00010000, B00101000, B00101010, B00101010, B00111100, // g
0, B11111110, B00010000, B00100000, B00100000, B00011110, // h
0, B00000000, B00100010, B10111110, B00000010, B00000000, // i
0, B00000100, B00000010, B00100010, B10111100, B00000000, // j
0, B00000000, B11111110, B00001000, B00010100, B00100010, // k
0, B00000000, B10000010, B11111110, B00000010, B00000000, // l
0, B00111110, B00100000, B00011000, B00100000, B00011110, // m
0, B00111110, B00010000, B00100000, B00100000, B00011110, // n
0, B00011100, B00100010, B00100010, B00100010, B00011100, // o
0, B00111110, B00101000, B00101000, B00101000, B00010000, // p
0, B00010000, B00101000, B00101000, B00011000, B00111110, // q
0, B00111110, B00010000, B00100000, B00100000, B00010000, // r
0, B00010010, B00101010, B00101010, B00101010, B00000100, // s
0, B00100000, B11111100, B00100010, B00000010, B00000100, // t
0, B00111100, B00000010, B00000010, B00000100, B00111110, // u
0, B00111000, B00000100, B00000010, B00000100, B00111000, // v
0, B00111100, B00000010, B00001100, B00000010, B00111100, // w
0, B00100010, B00010100, B00001000, B00010100, B00100010, // x
0, B00110000, B00001010, B00001010, B00001010, B00111100, // y
0, B00100010, B00100110, B00101010, B00110010, B00100010, // z
0, B00000000, B00010000, B01101100, B10000010, B00000000, // {
0, B00000000, B00000000, B11111110, B00000000, B00000000, // |
0, B00000000, B10000010, B01101100, B00010000, B00000000, // }
0, B01000000, B10000000, B01000000, B00100000, B01000000, // ~
0, B11111111, B11111111, B11111111, B11111111, B11111111, // �
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容