一、简介
OLED 屏幕作为一种新型的显示技术,其自身可以发光,亮度,对比度高,功耗低,在当下备受追捧。而在我们正常的显示调整参数过程中,我们越来越多的使用这种屏幕。我们使用的一般是分辨率为 128×64 ,屏幕尺寸为 0.96 寸。由于其较小的尺寸和比较高的分辨率,让它有着很好的显示效果和便携性。
![](https://img-blog.csdnimg.cn/20200425021315741.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5nb2Vz,size_16,color_FFFFFF,t_70)
目前我们经常使用的 OLED 屏幕一般有两种接口,IIC 或者 SPI ,两者使用的通信协议稍有不同,这里以 SPI 协议的 OLED 屏幕为例,带来它的使用方法。
![](https://img-blog.csdnimg.cn/20200425021340943.png)
模块接口定义
![](https://imgconvert.csdnimg.cn/aHR0cDovL3d3dy5hbGxjaGlwZGF0YS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDQvd29yZC1pbWFnZS0zNS5wbmc?x-oss-process=image/format,png)
二、原理
如何控制每个像素的显示
这个屏幕的像素矩阵的划分是比较特殊的, 整个屏幕水平方向划分为8个page, 垂直方向则是按像素划分为128 column. 每个page-column包含8个像素, 通过一个十六进制数(其实就是一个字节, 8个bit)来控制, 每个bit控制一个像素。
即储存寄存器每个存储点的0/1控制(映射)一个像素点的亮/灭。
![](https://img-blog.csdnimg.cn/20200425021410711.png)
如果我们要在左上角显示一个亮点, 需要发送0x01(16进制的1)到数据地址, 例如:
Wire.beginTransmission(0x3C); // 控制指令
Wire.write(0x40); // 写地址
Wire.write(0x01); // 写数据
Wire.endTransmission(); // 结束
三、设计方案
原理图:
![](https://img-blog.csdnimg.cn/20200425021440511.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5nb2Vz,size_16,color_FFFFFF,t_70)
PCB:
![](https://img-blog.csdnimg.cn/20200425021455860.png)
![](https://img-blog.csdnimg.cn/2020042502153369.png)
![](https://img-blog.csdnimg.cn/20200425021518212.png)
程序:
51单片机程序
![](https://imgconvert.csdnimg.cn/aHR0cDovL3d3dy5hbGxjaGlwZGF0YS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDQvd29yZC1pbWFnZS00MS5wbmc?x-oss-process=image/format,png)
STM32程序
![](https://img-blog.csdnimg.cn/20200425021930823.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5nb2Vz,size_16,color_FFFFFF,t_70)
原创文章,首发于硬件之家 , 电路和程序资源免费下载见:
微信公众号 硬件之家 后台回复 oled12864 获取下载链接
硬件之家,技术向前。
![](https://img-blog.csdnimg.cn/ff2ed30591394f408df598fb67f78f64.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56Gs5Lu25LmL5a62,size_20,color_FFFFFF,t_70,g_se,x_16)