课程目标
取模软件的使用oled中文字符的显示相关知识
**字模显示原理:**我们使用的oled屏是由方形的发光点阵列组成的,分辨率为128x64。英文和数字最小可用8x8像素,汉字最小显示像素为16x16,通常为了显示效果,英文和数字通常使用8x16像素表示,称为1608字体。
在oled显示屏上显示字符,和在点阵上显示图像是一样的都是通过区域内的像素点的亮暗来呈现图案。
**1608字体:**1608代表着字符显示的区域大小,即高度16位*宽度8位
**pctolcd取模软件:**我们可以通过取模软件来自动生成想要显示的文字编码。这里重点讲一下pctolcd软件的应用。
取模软件的使用:
1、启动软件,点击「模式」,选择「字符模式」。
2、点击「选项」进行字模配置。通常字模配置要根据程序驱动方式来选择,我们选择阴码、逐行式、顺向,其他选项如下图所示。
3、输入汉字。点击生成字模或者保存字模,就会得到对应的点阵数据。
电路搭建
所需材料
arduinouno * 1
oled显示屏 * 1
杜邦线若干
电路连接
oled屏的vcc和gnd分别连接开发板的5v和gnd,oled屏的sda和scl分别连接开发板a4和a5。
程序编写
练习一:oled显示中文字符
通过取模软件,将需要显示的中文进行转换。然后编写程序,让oled能够显示出来。图形化方式这里不做赘述,主要通过代码的方式来实现。
代码方式:
/* 项目名称:oled显示中文 项目时间:2022.03.17 项目作者:mrx*/#include #include #include #define oled_reset 4adafruit_ssd1306 display(128, 64, &wire, oled_reset);//取16x16汉字字模 逐行式 顺向高位在前static const unsigned char progmem str1[] ={ 0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0xfd,0xfe,0x24,0x20,0x24,0x20,0x24,0x20, 0x25,0xfc,0x49,0x04,0x29,0x04,0x11,0x04,0x29,0x04,0x45,0x04,0x85,0xfc,0x01,0x04};/*姑,0*/static const unsigned char progmem str2[] ={ 0x08,0x20,0x08,0x20,0xff,0xfe,0x08,0x20,0x0a,0x20,0x02,0x00,0x7f,0xf0,0x02,0x10, 0x02,0x14,0x22,0x12,0x22,0x12,0x24,0x12,0x44,0x10,0x08,0x10,0x10,0xa0,0x20,0x40};/*苏,1*/static const unsigned char progmem str3[] ={ 0x20,0x28,0x20,0x24,0x20,0x20,0x27,0xfe,0x24,0x20,0xfc,0x20,0x24,0x24,0x27,0xa4, 0x24,0xa4,0x24,0xa8,0x24,0xa8,0x3c,0x90,0xe6,0x92,0x49,0x2a,0x08,0x46,0x10,0x82};/*城,2*/static const unsigned char progmem str4[] ={ 0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x3e,0x40,0x22,0x60,0x42,0x50,0x42,0x48, 0xa4,0x44,0x14,0x44,0x08,0x40,0x08,0x40,0x10,0x40,0x20,0x40,0x40,0x40,0x80,0x40};/*外,3*/static const unsigned char progmem str5[] ={ 0x02,0x00,0x01,0x00,0x7f,0xfe,0x44,0x42,0x9f,0xf4,0x04,0x40,0x3f,0xf8,0x04,0x40, 0xff,0xfe,0x08,0x20,0x13,0x10,0x20,0x88,0xc0,0x46,0x06,0x00,0x01,0x80,0x00,0x40};/*寒,4*/static const unsigned char progmem str6[] ={ 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08, 0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x3f,0xf8,0x00,0x08,0x00,0x00};/*山,5*/static const unsigned char progmem str7[] ={ 0x01,0x00,0x01,0x00,0x01,0x00,0x3f,0xf8,0x01,0x00,0x01,0x00,0xff,0xfe,0x00,0x20, 0x00,0x20,0x7f,0xfc,0x08,0x20,0x04,0x20,0x04,0x20,0x00,0x20,0x00,0xa0,0x00,0x40};/*寺,6*/void setup() { display.begin(ssd1306_switchcapvcc, 0x3c); display.settextcolor(white);//开像素点发光 display.cleardisplay();//清屏 display.settextsize(1); //设置字体大小 display.setcursor(35, 5);//设置显示位置 display.println(-mrxclass-);//输出字符 display.drawbitmap(10, 32, str1, 16, 16, 1); //画出字符对应点阵数据 display.drawbitmap(26, 32, str2, 16, 16, 1); //画出字符对应点阵数据 display.drawbitmap(42, 32, str3, 16, 16, 1); //画出字符对应点阵数据 display.drawbitmap(58, 32, str4, 16, 16, 1); //画出字符对应点阵数据 display.drawbitmap(74, 32, str5, 16, 16, 1); //画出字符对应点阵数据 display.drawbitmap(90, 32, str6, 16, 16, 1); //画出字符对应点阵数据 display.drawbitmap(106, 32, str7, 16, 16, 1); //画出字符对应点阵数据 display.display();//开显示 }void loop() {}演示图片:
代码分析:
程序中我们使用了图像库「adafruit_gfx」中的drawbitmap()函数进行位图绘制,函数参数分别输入了要显示的坐标,字符数据源,字符的宽高,最后参数由于我们的oled是单色的,默认为1**。**
void drawbitmap(int16_t x, int16_t y, uint8_t *bitmap, int16_t w, int16_t h, uint16_t color);这会在一部分显示区域中发出连续的位信息。这里1代表是像素被设置成规定的颜色,0就是不设置像素的颜色。x,y是位图左上角,w和h是宽度和高度。
解读120W 超快闪充 为了15分钟满电 vivo 做了这些事
FAN7554高压输出反激电源,FAN7554 FLYBACK POWER SUPPLY
受芯片业务推动,三星电子一季度将获超预期利润
ROHM(罗姆)参展“第十六届中国国际高新技术成果交易会”
自动驾驶潜力释放,电子信息产业受益
Arduino篇—OLED显示进阶
自制Hi3861开发板(附原理图和电路图)
iOS10.3.1六大亮点告诉你:这次终于有理由升级了!
关于BP9736B-全压输入E14灯丝灯解决方案分析和应用
如何减少铁芯的磁滞
NVIDIA初创加速成员快速增长
关于时间继电器的作用及功能原理分析以及应用介绍
S参数应用技巧-正确分配端口号
HMI是什么,HMI的未来发展趋势是怎样的
全球首款物联网生态区块链模组推出,解决物联网链数据真实性痛点
英国允许华为参与5G建设的决定并非“一成不变”
元器件100%国产化的隔离收发器,你了解多少?
Zoom:不会把微软当作是“最大的竞争对手”
智能制造已成为当今制造业转型的重要抓手
MACOM公布2022财年第四财季和全年财务业绩