Arduino开发(一)——0.96寸OLED显示屏_0.96寸oled显示屏 arduino_hhy_csdn的博客-程序员秘密

技术标签: 物联网  Arduino  

Arduino开发——0.96寸OLED显示屏显示中英文字符

最近的工程设计做了一个基于Arduino的无线温湿度检测器,顺便把Arduino编程和几个模块学了一下。首先是OLED液晶屏的使用,在这里做简要笔记。

开发环境配置

我们需要从这里下载Arduino IDE。
在这里插入图片描述
然后我们需要导入几个必要的库文件。
从这里下载一个OLED.zip的压缩包,里面有Adafruit_GFXAdafruit_SSD1306两个文件夹,将其拷贝到Arduino的安装路径下的libraries文件夹下。
https://pan.baidu.com/s/1XulEM3pJ8m4BpACVFFkZVg

上机调试

板子和OLED的接线。我的Arduino UNO引出来了SCL和SDA的针脚,就直接用排针相连了。

  • OLED --> Arduino
  • VCC --> 3.3v or 5v
  • GND --> GND
  • SCL --> SCL
  • SDA --> SDA
    打开Print.inoCtrl+U烧录程序,应该就可以显示在液晶屏上了。
//显示中英文字符程序

#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 //定义显示宽度

//中文:中  (存储点阵变量,用函数display.drawBitmap()调用即可)
static const unsigned char PROGMEM str_1[] =
{ 
0x00,0x00,0x0F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x0F,0x00,0x00,0x00,
0x00,0x00,0xF0,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x20,0x20,0xF0,0x00,0x00,0x00
};

//中文:国
static const unsigned char PROGMEM str_2[] =
{ 
0x00,0x7F,0x40,0x48,0x49,0x49,0x49,0x4F,0x49,0x49,0x49,0x48,0x40,0x7F,0x00,0x00,
0x00,0xFF,0x02,0x12,0x12,0x12,0x12,0xF2,0x12,0x52,0x32,0x12,0x02,0xFF,0x00,0x00
};

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

void 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 done
  
  display.clearDisplay(); //清屏

  //英文字符显示,直接用display.println或print显示字符串就行
  //println换行,print不换行
  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.display();                  //把缓存的都显示
}

void loop() {

}

字模软件

用压缩包里的zimo221.exe可以生成任意符号的字模点阵数据,将其替换到程序中就可以显示任意字符了。
在文字输入区输入字符,并按CTRL+ENTER结束,此时生成了字符的点阵像素。
在这里插入图片描述
点击左侧的取模方式,选择C51格式,即可生成每个字符的点阵信息。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hhy_csdn/article/details/84327755

智能推荐

Cesium 模型(model)添加,平移,缩放,透明度,旋转_cesium model scale_poor人的博客-程序员秘密

const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);添加model handler.setInputAction((movement) =&gt; {//鼠标左键事件,点击地图,在点击位置添加模型 var cartesian = viewer.scene.globe.pick(...

使用 AppFuse 的七个理由_weixin_34137799的博客-程序员秘密

mvn -e  archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts-archetype -DarchetypeVersion=3.5.0 -DgroupId=net.novogrodsky -DartifactId=myproject...

Python爬虫之Scrapy框架系列(11)——scrapy.spider类源码剖析及scrapy中使用日志三种方法_孤寒者的博客-程序员秘密

Python爬虫之Scrapy框架系列(11)——scrapy.spider类源码剖析及scrapy中使用日志三种方法

DIY一个VR小钢炮_xoyojank的博客-程序员秘密

背景去年做了一个VR Demo后, 总是有各种参观啊, 演示啊, 讲座啊等, 然后很少有合格的电脑跑得动…有时又想现场演示下, 就只能把工作站抬过去了. 来回折腾几次就下定决心要装一台VR专用的演示机, 要求很明确: 小. 品牌主机如果想要GTX980级别显卡配置的, 几乎要么体积巨大, 要么价格巨贵, 排除. 那就自己DIY小机箱的PC吧, 只能选ITX规格了, 要求满足以下条件: *

Swing线程的最后讨论 -- 利用异步模型_swing jtree 异步加载_leole的博客-程序员秘密

原文来自java.sun.com作者:Joseph Bowbeer本文并不属于任何系列,但它是The Swing Connection中发表的第三篇关于在Swing中使用线程的文章。第一篇文章《线程与Swing》,解释了Swing的单线程规则。这篇文章现在可以在The Swing Connection Archive找到。第二篇文章《使用Swing Worker线程》,演示了如何使用SwingWo

CSS 文字超出部分显示省略号_听胡说的博客-程序员秘密

一:title {overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}以上 CSS 适用于单行文字超出部分,显示「省略号」。如图:二:title {display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp...

随便推点

DFB-GTK移植到MINI2440笔记_星之河的博客-程序员秘密

一、     开发环境主机:debian5.0 主机gcc版本:gcc (Debian 4.3.2-1.1)4.3.2交叉编译器:arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2交叉编译器下载地址:http://www.codesourcery.com/sgpp/lite/arm/portal/rel

markdown最全基本语法(初学者必备)_markdown 阴影_Fiee Dust Heart的博客-程序员秘密

markdown基本语法&gt; (区块,有阴影+有竖线)tab(代码区块,有阴影+无竖线)\ (取消转义,无阴影+无竖线)空格&amp;nbsp;  不换行空格它是按下space键产生的空格,在HTML中,如果你用空格键产生此空格,空格是不会累加的(只算1个)&amp;ensp;  半角空格en其占据的宽度正好是1/2个中文宽度,1个英文字母,基本不受字体影响&amp;em...

Qt绘制倒计时控件_浮生卍流年的博客-程序员秘密

效果图头文件#ifndef QWHTIMIMG_H#define QWHTIMIMG_H/* * 可设置倒计时秒数 * 可设置文本颜色 * 可设置背景填充 */ #include &lt;QWidget&gt;#include &lt;QPropertyAnimation&gt;#include &lt;QTimer&gt;#include &lt;QPaintEve...

推荐文章

热门文章

相关标签