|
先上代码库
这个库里边有一段代码,是把标准5*8的英文字库放大显示
首先,我们看一下标准大小的显示代码 - void OLED::ssd1306_str_small(uint8_t x, uint8_t y, const char ch[], boolean invert)
- {
- uint8_t c,i,j=0,pa;
- while(ch[j] != '\0')
- {
- c = ch[j] - 32;
- if(x>123)
- {
- x=0;
- y++;
- }
- ssd1306_setpos(x,y);
- for(i=0;i<5;i++)
- {
- pa = pgm_read_byte(&font5_8[c][i]) & 0x7f;
- ssd1306_data(invert?(pa^0xff):pa);
- }
- ssd1306_data(invert?0xff:0); //6th column
- x += 6;
- j++;
- }
- }
复制代码
上面是函数原型,下面是调用代码 - display.ssd1306_str_small(62,3,"Digistump");
复制代码
--------------------------------------------我是Maxims哥哥的分割线----------------------------------------------------
再看放大显示的函数原型 - void OLED::ssd1306_str_big(uint8_t x, uint8_t y,const char ch[], boolean invert)
- {
- uint8_t c,i,j=0,pa,spa;
- while (ch[j]!='\0')
- {
- c = ch[j] - 32;
- if (x>118)
- {
- x=0;
- y++;
- }
- ssd1306_setpos(x,y+1);
- for(i=0;i<5;i++)
- {
- pa = pgm_read_byte(&font5_8[c][i]);
- spa = ((pa & 0x40)?0x30:0) | ((pa & 0x20)?0x0c:0) | ((pa & 0x10)?0x03:0);
- ssd1306_data(invert?(spa^0xff):spa);
- ssd1306_data(invert?(spa^0xff):spa);
- }
- ssd1306_data(invert?0xff:0);
- ssd1306_data(invert?0xff:0);
- ssd1306_setpos(x,y);
- for(i=0;i<5;i++)
- {
- pa = pgm_read_byte(&font5_8[c][i]);
- spa = ((pa & 0x08)?0xc0:0) | ((pa & 0x04)?0x30:0) | ((pa & 0x02)?0x0c:0) | ((pa & 0x01)?0x03:0);
- ssd1306_data(invert?(spa^0xff):spa);
- ssd1306_data(invert?(spa^0xff):spa);
-
- }
- ssd1306_data(invert?0xff:0);
- ssd1306_data(invert?0xff:0);
- x += 12;
- j++;
- }
- }
复制代码
上面是放大显示的函数原型,下面是调用代码 - display.ssd1306_str_big(42, 1, "DEMO");
复制代码
--------------------------------------------分割线又飘过了----------------------------------------------------
这是字库部分内容0~9 - {0x3e, 0x51, 0x49, 0x45, 0x3e}, // 30 0
- {0x80, 0x42, 0x7f, 0x40, 0x80}, // 31 1
- {0x42, 0x61, 0x51, 0x49, 0x46}, // 32 2
- {0x21, 0x41, 0x45, 0x4b, 0x31}, // 33 3
- {0x18, 0x14, 0x12, 0x7f, 0x10}, // 34 4
- {0x27, 0x45, 0x45, 0x45, 0x39}, // 35 5
- {0x3c, 0x4a, 0x49, 0x49, 0x30}, // 36 6
- {0x01, 0x71, 0x09, 0x05, 0x03}, // 37 7
- {0x36, 0x49, 0x49, 0x49, 0x36}, // 38 8
- {0x06, 0x49, 0x49, 0x29, 0x1e}, // 39 9
复制代码
--------------------------------------------分割线我又飘过了----------------------------------------------------
那么,它放大5*8字库到大概2~4倍显示的原理是什么呢?
求分析,谢谢 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|