OLED顯示屏驅動簡介
OLED,即有機發光二極管( Organic Light Emitting Diode)。 OLED 由于同時具備自發光,不需背 光源、對比度高、厚度薄、視角廣、反應速度快、可用于撓曲性面板、使用溫度范圍廣、構造及制程較簡單等優異之特性,被認為是下一代的平面顯示器新興應用技術。
LCD 都需要背光,而 OLED 不需要,因為它是自發光的。這樣同樣的顯示OLED效果要來得好一 些。以目前的技術,OLED的尺寸還難以大型化,但是分辨率確可以做到很高。在此我們使用的是0.96寸OLED顯示屏,該屏有以下特點:
1)屏上 1/4 部分為黃光,下3/4 為藍;而且是固定區域顯示固定顏色,顏色和顯示區域均不能修改。
2)分辨率為128*64
3)IIC 接口方式,只需要 2 根線就可以控制 OLED 了。
本屏所用的驅動IC為SSD1306;其具有內部升壓功能;所以在設計的時候不需要再專一設計 升壓電路;當然了本屏也可以選用外部升壓,具體的請詳查數據手冊。SSD1306的每頁包含了 128 個字節,總共 8 頁,這樣剛好是 128*64 的點陣大小。
IIC 接口:
GND: 電源地
VCC: 2.2V~5.5V SCL:
CLK: 時鐘 (高電平 2.2V~5.5V)
SDA: MOSI 數據 (高電平 2.2V~5.5V)
STM32CubeMX配置
我們的OLED使用的是I2C2,需要對其初始化配置
其它默認配置即可
OLED初始化
void OLED_Init(void)
{
HAL_Delay(100);
WriteCmd(0xAE); //display off
WriteCmd(0x20); //Set Memory Addressing Mode
WriteCmd(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
WriteCmd(0xb0); //Set Page Start Address for Page Addressing Mode,0-7
WriteCmd(0xc8); //Set COM Output Scan Direction
WriteCmd(0x00); //---set low column address
WriteCmd(0x10); //---set high column address
WriteCmd(0x40); //--set start line address
WriteCmd(0x81); //--set contrast control register
WriteCmd(0xff); //亮度 0x00~0xff
WriteCmd(0xa1); //--set segment re-map 0 to 127
WriteCmd(0xa6); //--set normal display
WriteCmd(0xa8); //--set multiplex ratio(1 to 64)
WriteCmd(0x3F); //
WriteCmd(0xa4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
WriteCmd(0xd3); //-set display offset
WriteCmd(0x00); //-not offset
WriteCmd(0xd5); //--set display clock divide ratio/oscillator frequency
WriteCmd(0xf0); //--set divide ratio
WriteCmd(0xd9); //--set pre-charge period
WriteCmd(0x22); //
WriteCmd(0xda); //--set com pins hardware configuration
WriteCmd(0x12);
WriteCmd(0xdb); //--set vcomh
WriteCmd(0x20); //0x20,0.77xVcc
WriteCmd(0x8d); //--set DC-DC enable
WriteCmd(0x14); //
WriteCmd(0xaf); //--turn on oled panel
}