“Arduino OLED入门教程(1):易懂保姆级指南”

第一篇:先打好基础(基础篇->1)

(一)先说两句

这个教程从0到1让你入门OLED;教程是系列课程包括:OLED上显示第一行字,显示数字,显示汉字到写个简单的OLED显示界面再到最后写个炫酷的菜单功能的实现。

通过本系列教程大家能达到的效果:

视频效果演示

如果你有基础可以点击下面蓝色链接跳转到实现过程!

这篇是保姆级的实现过程哟!

(二)关于OLED的必懂知识

市面上 的OLED有很多种,多式多样;我选择用简单的两种分类方式去分类:第一种是根据通信协议分为:iic通信协议下的OLED(栗子:图一是常见的四针 iic通信协议的OLED)和SPI通信协议下的OLED(栗子:图二是常见的七针支持SPI协议的OLED);

 图一:常见支持iic协议的四针OLED                                           图二:常见支持SPI协议的七针OLED

本套系列教程举例使用七针SPI协议下的0.96寸OLED;当然适合四针0.96寸OLED,只需要改个引脚定义函数和引脚的接线;

基于什么是iic通信,什么是spi通信可以去参考小光学嵌入式的下面这条博文:

小光学嵌入式iic和spi通信的讲解博文

(三)OLED的显示原理

简单讲解一下引脚功能吧(栗子用的是OLED8080)

CS:为OLED的片选信号;

WR:向OLED 写入数据;

RD:从OLED读取数据;

D[7-0]:8位双向数据线;

RST(RES):硬件复位OLED;

DC(RS):命令/数据标志(0,读写命令;1,读写数据);

OLED8080并口读写过程:

模块的8080并口读/写的过程为:

①将数据放到数据口;
②根据要写入/读取的数据的类型,设置DC(RS)为高(数据)/低(命令);
③拉低片选,选中SSD1306;
④接着我们根据是读数据,还是要写数据置RD/WR为低;
⑤读数据过程:在RD的上升沿, 使数据锁存到数据线(D[7:0])上;
⑥写数据过程:在WR的上升沿,使数据写入到SSD1306里面;
⑦拉高CS和DC(RS)。
更详细的可以去看看博主yngz_Miao的下面这篇博文;

关于OLED显示原理的详细博文

(四)0.96寸七针OLED与arduino接线

SCL=D0=10;                                        RES=RESET;

SDA=D1=9;                                            GND=GND;

CS=12;                                                 VCC=VCC/5V;

DC=11;

 (五)显示万能词 hello world

首先对U8g2库有个了解吧;U8g2库是嵌入式设备单色图形库,支持非常多的嵌入式设备平台,比如arduino,stm32,esp8266等等。。。

关于U8g2库在CSDN上其实好文章很多,我在这引用一个,我就不去一一去讲了

文章来自于单片机菜鸟哥关于U8g2库的文章     

效果图:                               

 (图拍的有点模糊,估计是焦距的问题吧)

代码:

#include "U8glib.h"//U8g2库
void draw(void);
//四针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 =D0= 10, SDA = D1=9, CS = 12, DC = 11,RES=RESET,D0=10,D1=9;
void setup() {


}
void draw(){
 u8g.setFont(u8g_font_fub14);//设置字体和字号
 u8g.setPrintPos(18,32); //显示的位置
 u8g.print("hello world");//显示时间字样
}
void loop() {
   u8g.firstPage();  
  do {
     draw();
  } while( u8g.nextPage() );

}

简单解释一下:首先就是U8g库的引入(注意:引入使用前记得去查一下库安装是否成功);下一步就是引脚的定义,关于引脚我在上面的关于 硬件那一块去讲过。然后就是自己写一个函数叫draw;把显示的内容,字号和显示位置用draw函数封装进去;setup函数里面是空的;loop函数是相当于函数运行的主函数,程序运行过程中它会不断地刷新,屏幕也是它得不断地刷新自己要显示的内容。所以把封装好的draw函数用一个do-while循环不断地刷新显示即可;

物联沃分享整理
物联沃-IOTWORD物联网 » “Arduino OLED入门教程(1):易懂保姆级指南”

发表评论