1 说明
由于业务需要,产品的屏幕选择了OLED,型号为:VGM256064A0W03,供应商为深圳市岳邦电子科技有限公司。本文主要说明在OLED屏幕显示汉字、字母、二维码的实现。文中提到的软件可以从百度网盘下载或者从参考网址下载。
链接:https://pan.baidu.com/s/1LCfuBgCpZIg431uRr9vifA
提取码:dq3o
2 使用点阵字库显示汉字和字母
参考网址:
https://blog.twofei.com/embedded/hzk.html
http://www.qqxiuzi.cn/zh/hanzi-gb2312-bianma.php
如上述网址所述,前辈们已经做好了各种字库,字的形状由多个离散的点形成,一个字节控制8个点的亮灭,一个点相当于一个OLED显示单元,所以256*64的屏幕,每行可以显示256/16=16个汉字,可以显示64/16=4行。
字体宽高 | 说明 |
HZK 16*16 | 宋体汉字点阵,一个汉字32个字节 |
HZK 24*24 | 宋体汉字点阵,一个汉字72个字节 |
HZK 32*32 | 宋体汉字点阵,一个汉字128个字节 |
HZK 40*40 | 宋体汉字点阵,一个汉字200个字节 |
HZK 48*48 | 宋体汉字点阵,一个汉字288个字节 |
ASC 8*12 | ASCII字符,一个字符12Byte |
ASC 8*16 | ASCII字符,一个字符16Byte |
ASC 24*48 | ASCII字符,一个字符144Byte |
如果对字库有其他的要求,可以使用PCtoLCD2002自制字库文件。
2.1 显示中文字符
1:确定点阵库文件,以HZK 16*16为例,16×16点阵,一个汉字32字节
2:在代码中直接输入汉字,即源文件为GBK编码(非UTF-8编码)

3:找到改字在点阵库文件的偏移

网盘中的main3.c实现了显示“我们都是工具人!”。
也可以使用中文字库显示英文和标点符号,不过没有ASCII字库那么好看,而且需要调整输入法,比如谷歌拼音如下输入模式,

2.2 显示ASCII字符
网盘中的main4.c给出了显示8*12字库字符的关键函数。
3 通过image2lcd显示字符
该方式可以显示任意字符。缺点是必须提前知道要显示的内容。以本产品为例,在windows画图工具输入汉字或英文字符,保存为单色bmp(占用空间小,没有灰阶)或者16色bmp(占用空间大,有灰阶,支持多个灰度),再通过image2lcd将图片转换为数组,其他的操作跟点阵数据一样处理。


4 显示二维码
参考开源软件:
https://github.com/ricmoo/QRCode
可以显示数字、字母、标点符号以及包括汉字在内的任意字符,显示一个二维码基本只要几行代码。
// The structure to manage the QR codeQRCode qrcode;// Allocate a chunk of memory to store the QR codeuint8_t qrcodeBytes[qrcode_getBufferSize()];qrcode_initText(&qrcode, qrcodeBytes, 3, ECC_LOW, "HELLO WORLD");




