之前已经学会如何接线,实现示例显示

这次就开始一些实际的应用

本示例还是使用IIC的接线方法,请参照第一篇

Arduino 驱动OLED屏幕IIC接线方式简单入门

实现文字的显示

这代码上实现在指定的坐标显示指定的中英文字

先看看效果图

相关开源代码:

程序与库与软件打包下载:https://u16460183.ctfile.com/fs/16460183-296052219

文件夹说明:

Adafruit_SSD1306-master   ——SSD1306库(OLED的主要库文件,库请复制在Arduino的库目录下)

Adafruit-GFX-Library-master  —— GFX库(是一种图形库)

字模提取V2.2   —— 可以生成中文字点阵变量的软件

LS_PrintChinese —— 主程序

//显示中英文字符程序#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);#define LOGO16_GLCD_HEIGHT 16 //定义显示高度
#define LOGO16_GLCD_WIDTH  16 //定义显示宽度//中文:凌  (这就是存储点阵变量,str_1可以修改成自己喜欢的名称,用函数display.drawBitmap()调用就可以了)
static const unsigned char PROGMEM str_1[] =
{
0x00,0x40,0x40,0x40,0x23,0xF8,0x20,0x40,0x00,0x40,0x07,0xFE,0x11,0x10,0x12,0x88,
0x24,0x84,0xE1,0xF0,0x23,0x10,0x24,0xA0,0x20,0x40,0x20,0xA0,0x23,0x10,0x0C,0x0C};//中文:顺
static const unsigned char PROGMEM str_2[] =
{
0x04,0x00,0x45,0xFE,0x54,0x20,0x54,0x40,0x55,0xFC,0x55,0x04,0x55,0x24,0x55,0x24,
0x55,0x24,0x55,0x24,0x55,0x24,0x55,0x44,0x54,0x50,0x54,0x88,0x85,0x04,0x06,0x02};//中文:实
static const unsigned char PROGMEM str_3[] =
{
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x88,0x84,0x04,0x80,0x04,0x80,0x10,0x80,
0x08,0x80,0x08,0x80,0xFF,0xFE,0x01,0x40,0x02,0x20,0x04,0x10,0x18,0x08,0x60,0x04};//中文:验
static const unsigned char PROGMEM str_4[] =
{
0x00,0x20,0xF8,0x20,0x08,0x50,0x48,0x50,0x48,0x88,0x49,0x04,0x4A,0xFA,0x7C,0x00,
0x04,0x44,0x04,0x24,0x1D,0x24,0xE4,0xA8,0x44,0x88,0x04,0x10,0x2B,0xFE,0x10,0x00};//中文:室
static const unsigned char PROGMEM str_5[] =
{
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x80,0x04,0x3F,0xF8,0x04,0x00,0x08,0x20,
0x1F,0xF0,0x01,0x10,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00};#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endifvoid setup()   {                Serial.begin(9600);// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)// init donedisplay.clearDisplay();//英文字符显示display.setTextSize(1);             //设置字体大小display.setTextColor(WHITE);        //设置字体颜色白色display.setCursor(0,0);             //设置字体的起始位置display.println("Hello, world!");   //输出字符并换行display.setTextColor(BLACK, WHITE); //设置字体黑色,字体背景白色 display.println(3.141592);          //输出数字并换行display.setTextSize(2);             //设置字体大小display.setTextColor(WHITE);        //设置字体白色display.print("0x");                //输出字符display.println(0xDEADBEEF, HEX);   //输出为ASCII编码的十六进制//display.display();                  //显示以上//中文字符显示display.drawBitmap(26, 32, str_1, 16, 16, 1); //在坐标X:26  Y:16的位置显示中文字符凌display.drawBitmap(42, 32, str_2, 16, 16, 1); //在坐标X:42  Y:16的位置显示中文字符顺display.drawBitmap(58, 32, str_3, 16, 16, 1);display.drawBitmap(74, 32, str_4, 16, 16, 1);display.drawBitmap(90, 32, str_5, 16, 16, 1);display.display();                  //把缓存的都显示
}void loop() {}display.drawBitmap()调用就可以了)
static const unsigned char PROGMEM str_1[] =
{
0x00,0x40,0x40,0x40,0x23,0xF8,0x20,0x40,0x00,0x40,0x07,0xFE,0x11,0x10,0x12,0x88,
0x24,0x84,0xE1,0xF0,0x23,0x10,0x24,0xA0,0x20,0x40,0x20,0xA0,0x23,0x10,0x0C,0x0C};//中文:顺
static const unsigned char PROGMEM str_2[] =
{
0x04,0x00,0x45,0xFE,0x54,0x20,0x54,0x40,0x55,0xFC,0x55,0x04,0x55,0x24,0x55,0x24,
0x55,0x24,0x55,0x24,0x55,0x24,0x55,0x44,0x54,0x50,0x54,0x88,0x85,0x04,0x06,0x02};//中文:实
static const unsigned char PROGMEM str_3[] =
{
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x88,0x84,0x04,0x80,0x04,0x80,0x10,0x80,
0x08,0x80,0x08,0x80,0xFF,0xFE,0x01,0x40,0x02,0x20,0x04,0x10,0x18,0x08,0x60,0x04};//中文:验
static const unsigned char PROGMEM str_4[] =
{
0x00,0x20,0xF8,0x20,0x08,0x50,0x48,0x50,0x48,0x88,0x49,0x04,0x4A,0xFA,0x7C,0x00,
0x04,0x44,0x04,0x24,0x1D,0x24,0xE4,0xA8,0x44,0x88,0x04,0x10,0x2B,0xFE,0x10,0x00};//中文:室
static const unsigned char PROGMEM str_5[] =
{
0x02,0x00,0x01,0x00,0x7F,0xFE,0x40,0x02,0x80,0x04,0x3F,0xF8,0x04,0x00,0x08,0x20,
0x1F,0xF0,0x01,0x10,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00};#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endifvoid setup()   {                Serial.begin(9600);// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)// init donedisplay.clearDisplay();//英文字符显示display.setTextSize(1);             //设置字体大小display.setTextColor(WHITE);        //设置字体颜色白色display.setCursor(0,0);             //设置字体的起始位置display.println("Hello, world!");   //输出字符并换行display.setTextColor(BLACK, WHITE); //设置字体黑色,字体背景白色 display.println(3.141592);          //输出数字并换行display.setTextSize(2);             //设置字体大小display.setTextColor(WHITE);        //设置字体白色display.print("0x");                //输出字符display.println(0xDEADBEEF, HEX);   //输出为ASCII编码的十六进制//display.display();                  //显示以上//中文字符显示display.drawBitmap(26, 32, str_1, 16, 16, 1); //在坐标X:26  Y:16的位置显示中文字符凌display.drawBitmap(42, 32, str_2, 16, 16, 1); //在坐标X:42  Y:16的位置显示中文字符顺display.drawBitmap(58, 32, str_3, 16, 16, 1);display.drawBitmap(74, 32, str_4, 16, 16, 1);display.drawBitmap(90, 32, str_5, 16, 16, 1);display.display();                  //把缓存的都显示
}void loop() {}

可能有人好奇这些乱七八糟的怎么来的?↓

这其实就用到  字模提取V2.2  的软件了

分享地址:http://pan.baidu.com/s/1i50UmxB

打开软件,具体操作如下:

把点阵生成的数组,套入程序的相关变量,调用相关的函数就可以实现显示中文。

其实取模软件,就是把中文字转换成点阵,实现在没有中文字库程序中显示中文。

我想有字库的也是这样的点阵库,如有理解错误请指出。

Arduino Uno 驱动OLED进阶 显示中英文字相关推荐

  1. Arduino Uno 驱动OLED进阶 显示几何动画

    这篇文章主要翻译国外某大神的作品 本示例可以学会如何画线条 先看看效果 YOUTUBE视频 https://www.youtube.com/watch?v=_t_lfcGV_YM GITHUB  原代 ...

  2. esp32使用MicroPython驱动oled屏显示中文和英文

    文章目录 esp32使用MicroPython驱动oled屏显示中文和英文 介绍 安装 特点 开源 硬件连接 API 示例 显示英文字符 显示汉字 参考链接 esp32使用MicroPython驱动o ...

  3. Arduino Nano 驱动OLED滚动显示

    尽管Uno R3开发板是Arduino家族中入门级别的首选,但无奈它的体积实在有些大,我们实际中很多设计都需要考虑外形结构,小巧便捷而又功能齐全的Arduino Nano开发板就脱颖而出了.本篇我们使 ...

  4. Arduino UNO驱动TM1637四位时钟数码管显示时间

    Arduino UNO驱动TM1637四位时钟数码管显示时间 一.TM1637简介 二.引脚定义 三.Arduino UNO与数码管模块接线 四.测试代码 五.实验结果 一.TM1637简介 TM16 ...

  5. Arduino UNO驱动合宙1.8‘TFT SPI屏幕示例演示(含资料包)

    Arduino UNO驱动合宙1.8"TFT SPI屏幕示例演示 效果展示 驱动参考资料包 来源于:http://www.lcdwiki.com/zh/1.8inch_Arduino_SPI ...

  6. esp32 spi 驱动 oled 屏显示来自 PC 的画面

    esp32 spi 驱动 oled 屏显示来自 PC 的画面 实验代码 gayhub 实验源码 设备及运行环境 装有python的电脑 Python 3.8.2 (tags/v3.8.2:7b3ab5 ...

  7. Arduino uno 驱动安装问题解决(win10)

    Arduino uno 驱动安装问题解决(win10) 今天安装uno的驱动怎么也安装不上,从网上找了各种帖子,终于解决了问题 首先说一下遇到的问题: 1.插入uno板在arduino中无法设置端口, ...

  8. Arduino UNO驱动土壤湿度传感器检测

    Arduino UNO驱动土壤湿度传感器检测 简介 运行要求 Arduino UNO与传感器接线 程序展示 实践效果 总结 简介 本次使用到是这个新款土壤湿度传感器! 这款电容式土壤湿度传感器区别于市 ...

  9. Arduino UNO驱动MCP9808高精度数字温度传感器

    Arduino UNO驱动MCP9808高精度数字温度传感器 MCP9808简介 引脚定义 Arduino UNO与MCP9808模块接线 程序与实验结果 MCP9808简介 MCP9808 数字温度 ...

最新文章

  1. mysql定时任务如何每天0点跑_mysql定时任务,每天的零点执行一个存储过程
  2. 使用repeater,遍历数据,不规则排序,不同的样式之间切换
  3. 数据中心机房蓄电池培训
  4. 软件测试部分习题答案
  5. 到无限(溪流)和超越!
  6. Visual Studio 2008 安装失败(“Web 创作组件”无法安装)解决方法
  7. oracle tns和sid,oracle – TNS-12505:TNS:侦听器当前不知道连接描述符中给出的SID
  8. php推送系统,php 如何加入即时推送的功能
  9. linux下添加新硬盘的方法
  10. Cover V2将启用两条产品线 本周开始进行V2 UI开发
  11. 用tqdm可视化loop过程
  12. java 分卷 zip
  13. 047ssm在线视频教育网站源码
  14. Linux随笔15-Ubuntu20.04允许root用户图形界面登录、chrony局域网时间同步服务、ipxe实现系统自动化安装
  15. CAD 卸载工具,完美彻底卸载清除干净cad各种残留注册表和文件
  16. [转载] 过 DNF TP 驱动保护
  17. 共享LPT口打印机打印时,注意事项
  18. 费解的开关 Java
  19. 学习Unity需要学习哪些编程语言
  20. 【搜索】搜刷刷题整理

热门文章

  1. 2022年全球与中国光通信芯片市场现状及未来发展趋势
  2. 什么是 Web 服务器(server)
  3. 山科大离散数学期末考试_离散数学期末考试及答案
  4. 云师大计算机调剂,云南师范大学最新调剂名额-昆明考研必看
  5. Ubuntu虚拟机中VCS安装和启动过程中遇到的问题总结
  6. 网络编程-HttpURLConnection
  7. 【观察】打造中国“酷公司”新标杆,联想陪伴中小企业共同成长
  8. shell 十三问:
  9. KKT条件(Karush-Kuhn-Tucker)及二阶充分条件(The second-order sufficiency condition)
  10. 纳什均衡 (Nash Equilibrium)