目录
软件介绍:本篇介绍的取模软件叫PCtoLCD2002完美版;
(一)通过本篇所达到的效果:
通过本篇我们首先会去跟取模软件接触,用OLED显示汉字;最后让OLED跟我们打招呼。
例如:
(二)汉字在OLED上的显示原理
本篇用的例子是七针0.96寸OLED;120*64像素,怎么了解像素概念呢?你可以把每一个像素想象成一个可点亮的OLED,对于0.96寸的OLED来说120是它的宽(相当于y轴),60是它的高(相当于x)那OLED就可以理解为集成了120*60个灯的灯群(我这个举例举的可能不是太恰当),但是可以这么理解它。假如你想显示个字母“A”你可以按下面的方格中标红位置的LED点亮即可显示字母‘A’。
汉字的显示原理也类似,就是把对应位置的等点亮即可,但是汉字的结构复杂,一个一个自己点亮当然是不现实的,这时候我们就需要借助取模软件来取模了。
(三)取模软件的介绍及设置
软件介绍:本篇介绍的取模软件叫PCtoLCD2002完美版;
取模软件大家可以在网上搜着下载也可以去我的主页从我提供的资源里头下载;
软件的设置:
进行软件设置之前,首先大概的去认识一下软件主界面;软件主界面包括上面功能栏的:文件,编辑,模式,选项,帮助;下面功能栏中的生产字模,保存字模,清除数据等。
下面注重讲一下几个常用的:文件按钮—>新建(新建一个空白页),打开(打开保存的bmp文件),保存图像和点阵,另存为,退出;
模式按钮—>字符模式(用于文字的取模)和图形模式(用于图片的取模);
选项按钮—>
设置:首先从模式开始设置起,点击模式按钮选择字符模式;下一步就是点击选项按钮,按上图进行配置即可。
(四)动手:
先去设置好取模软件之后,打出“你好呀,XXXX(写上你的名字)”,然后点击右下角的生成字模。
然后点击保存字模,给TXT文件起个名保存下来;
接下来我们就开始编写代码;
//引入库文件
#include "U8glib.h"//U8g2库
//引脚配置
//四针iic的引脚定义
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);//SCL-A5;SDA-A4
//七针spi通信
//U8GLIB_SSD1306_128X64 u8g(10, 9, 12, 11); // SW SPI Com: SCL = 10, SDA = 9, CS = 12, DC = 11,RES=RESET,D0=10,D1=9;
//定义一个二维数组,用于保存字模
static const unsigned char str[][32] PROGMEM ={
{0x10,0x01,0x10,0x01,0x10,0x01,0x88,0x7F,0x88,0x40,0x4C,0x20,0x2C,0x04,0x0A,0x04,
0x89,0x14,0x88,0x24,0x48,0x24,0x48,0x44,0x28,0x44,0x08,0x04,0x08,0x05,0x08,0x02},/*"你",0*/
{0x08,0x00,0x08,0x3F,0x08,0x20,0x08,0x10,0x3F,0x08,0x24,0x04,0x24,0x04,0xA4,0x7F,
0x24,0x04,0x12,0x04,0x14,0x04,0x08,0x04,0x14,0x04,0x22,0x04,0x21,0x05,0x00,0x02},/*"好",1*/
{0x00,0x00,0xC0,0x3F,0x1E,0x08,0x92,0x08,0x92,0x08,0x92,0x08,0x52,0x08,0xD2,0x7F,
0x12,0x0C,0x12,0x0A,0x1E,0x09,0x92,0x08,0x40,0x08,0x20,0x08,0x00,0x0A,0x00,0x04},/*"呀",2*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x08,0x00,0x04,0x00,0x00,0x00},/*",",3*/
{0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x88,0x08,0x88,0x10,0x88,0x20,
0x84,0x20,0x84,0x40,0x82,0x40,0x81,0x40,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,0x00},/*"小",4*/
{0x00,0x04,0x00,0x04,0x1E,0x04,0x12,0x04,0x12,0x04,0x12,0x04,0xD2,0x7F,0x12,0x04,
0x12,0x04,0x12,0x04,0x1E,0x04,0x12,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04},/*"叶",5*/
{0x00,0x00,0xFC,0x3F,0x04,0x20,0x04,0x20,0xF4,0x2F,0x04,0x20,0x04,0x20,0xE4,0x27,
0x24,0x24,0x24,0x24,0x24,0x24,0xE4,0x27,0x24,0x24,0x04,0x20,0x04,0x28,0x04,0x10},/*"同",6*/
{0x44,0x10,0x88,0x10,0x88,0x08,0x00,0x04,0xFE,0x7F,0x02,0x40,0x01,0x20,0xF8,0x07,
0x00,0x02,0x80,0x01,0xFF,0x7F,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,0x00},/*"学",7*/
};
//draw为自定义的显示有关的函数
void draw(void){
//drawXBMP图形显示函数参数(x轴的坐标,y轴的坐标,宽度,高度,显示的图形(一般为数组))
//void drawXBMP(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap)
u8g.drawXBMP(0,0,16,16,str[0]);
u8g.drawXBMP(16,0,16,16,str[1]);
u8g.drawXBMP(32,0,16,16,str[2]);
u8g.drawXBMP(48,0,16,16,str[3]);
u8g.drawXBMP(64,0,16,16,str[4]);
u8g.drawXBMP(80,0,16,16,str[5]);
u8g.drawXBMP(96,0,16,16,str[6]);
u8g.drawXBMP(112,0,16,16,str[7]);
}
//setup函数
void setup(void){
}
//loop函数
void loop(void){
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
}
注意:复制TXT文件到str数组时大多可能犯一种错
就是把每一个字的第一行最后一个大括号和第二行开头的大括号的删除;切记要删除掉不然显示出来的字模会是乱码。
最后显示出来的效果是:
五,加餐(OLED上显示图片)
要想在OLED上显示图片,那我们还得借助另一款软件用来图片的取模;我觉得可以跟PCtoLCD2002结合使用效果最好。
软件的介绍:
软件叫:imge2Lcd;可以去我主页里的资源里免费下载。
软件主界面:
动手显示自己的第一个图片:
我们就举例按键机中的信号图为例;
注意:大家避个坑哈,在找照片过程中注意第一:找jpg格式的照片,第二:要像上图一样没有背景;
把下载好的图片,点击image2Lcd的打开按钮,把图片引入进来。
注意:最大宽度和最大高度调成16,16后点击一下箭头指的按钮。
把软件按上面标红区的参数调好;点击保存bmp格式文件;打开PCtoLCD2002软件,把模式调为图形模式;
点击文件—>打开把保存好的bmp格式文件导入进来。然后点击生成字模按钮把图片取模好后的数组保存下来。
然后把上面显示汉子代码中的数组里面的字的二维数组全删掉,把图片取模后的数组放进来即可。
//引入库文件
#include "U8glib.h"//U8g2库
//引脚配置
//四针iic的引脚定义
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);//SCL-A5;SDA-A4
//七针spi通信
//U8GLIB_SSD1306_128X64 u8g(10, 9, 12, 11); // SW SPI Com: SCL = 10, SDA = 9, CS = 12, DC = 11,RES=RESET,D0=10,D1=9;
//定义一个二维数组,用于保存字模
static const unsigned char str[][32] PROGMEM ={
{0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x03,0x26,0x03,0xAC,0x11,0xA8,0x10,0x70,0x14,
0x60,0x14,0x20,0x14,0xA0,0x15,0xA0,0x15,0xA0,0x15,0xA0,0x14,0x00,0x00,0x00,0x00},/*"D:\Useres_zm\信号位图3.bmp",0*/
};
//draw为自定义的显示有关的函数
void draw(void){
//drawXBMP图形显示函数参数(x轴的坐标,y轴的坐标,宽度,高度,显示的图形(一般为数组))
//void drawXBMP(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap)
u8g.drawXBMP(0,0,16,16,str[0]);
}
//setup函数
void setup(void){
}
//loop函数
void loop(void){
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
}
最后效果图:
有关资料我全放在我的主页里面的资源里了,有需要的可以自行去下载。