## OLED显示
OLED - Organic Light Emitting Diode,有机电致发光二极管制成的显示屏是一种主动发光的显示器件,且视角宽(一般达170度)、响应速度快(几微妙到几十微妙的量级)、功耗低,并且可以使用低于5V的低电压驱动,小屏幕的OLED被广泛应用在各种电子产品在中,尤其是128*32、128*64的显示屏,曾在消费类的功能手机中,价格非常低廉,后被广泛应用于各种小型的设备、开发板以及创意的产品中。
采用单片机通过I2C或SPI串行总线来驱动单色的OLED几乎没有数据传输的瓶颈,即便采用8位的8051单片机来驱动128*64的显示屏,屏幕的刷新频率也可以达到很高。相对于另一种被广泛使用的、基于SPI总线的彩色LCD屏幕(一般为ST7789控制器),刷OLED要简单和流畅很多。
在教学、实验、创新项目中用得最多的是以SSD1306为驱动器的OLED屏幕,它支持如下的分辨率:
* 96 x 16
* 64 x 48
* 128 x 32
* 128 x 64
{{ :oled12864.jpg |}}基于SSD1306分辨率为128*64的OLED模块
SH1106/SH1107也是比较常用的驱动芯片,其中SH1107支持128 x 128的分辨率
{{ :oled128128.jpg |}}基于SH1107分辨率为128*128的OLED模块
### 1. 原理
### 2. 电路连接
{{ :oled_connection.jpg |}} SPI接口的OLED显示屏连接方式
### 3. MicroPython编程
- [[https://www.coderdojotc.org/micropython/oled/02-oled-setup/|OLED Setup]]
- [[https://www.coderdojotc.org/micropython/oled/11-oled-ssd1306-i2c/|OLED SSD1306 I2C]]
- [[https://www.coderdojotc.org/micropython/oled/12-oled-ssd1306-spi-v1/|OLED SSD1306 SPI V1]]
- [[https://www.coderdojotc.org/micropython/oled/11-oled-ssd1306-spi/|OLED SSD1306 SPI V2]]
- [[https://www.coderdojotc.org/micropython/oled/11-oled-sh1106-i2c/|OLED SH1106 I2C Example]]
- [[https://www.coderdojotc.org/micropython/oled/10-oled-bounce/|OLED Bounce]]
- [[https://www.coderdojotc.org/micropython/oled/12-oled-pot/|OLED Pot]]
- [[https://www.coderdojotc.org/micropython/oled/11-oled-ping/|OLED Ping]]
- [[https://www.coderdojotc.org/micropython/oled/11-pong/|OLED Pong]]
- [[https://www.coderdojotc.org/micropython/oled/13-pixel-draw/|OLED Pixel Draw]]
- [[https://www.coderdojotc.org/micropython/oled/15-oled-patterns/|OLED Patterns]]
- [[https://www.coderdojotc.org/micropython/oled/14-random-hearts/|Random Hearts]]
- [[https://www.coderdojotc.org/micropython/oled/40-oled-references/|OLED References]]
- [[mp_oled|驱动SSD1306显示屏]]
### 4. Verilog编程
- [[oled12864_ssd1315|用Verilog驱动128*32 OLED显示屏]]
- [[oled12864_verilog|用Verilog驱动128*64 OLED显示屏]]
- [[oled_spi_verilog|OLED驱动说明及Verilog代码实例]]
### 5. 参考技术资料
[[https://esphome.io/components/display/index.html|ESPhome网站上与显示相关的技术资料及参考代码]]