第一篇:先打好基础(基础篇->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库的文章
效果图:
(图拍的有点模糊,估计是焦距的问题吧)
代码:文章来源:https://www.toymoban.com/news/detail-409853.html
#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循环不断地刷新显示即可;文章来源地址https://www.toymoban.com/news/detail-409853.html
到了这里,关于Arduino+OLED基础保姆级教程(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!