SSD1306 OLED驱动芯片中文手册
ssd1306双色中文

Ver:A
修正完成 20130326 20130522
i
金晨电子
Ver:A
内容
修正历史................................................................................................................................i 内容..................................................................................................................................... ii~iii 11.. 基本功能...............................................................................................................1~6
金晨电子
刘玉汉化,本人不会英文,以下翻译主要有谷歌翻译提供
金晨电子
产品名称: 产品ID:
OEL 显示模块
顾客:
批准
来自: 金晨电子
批准
金晨电子
修正历史
零件号码 UG-2864TMBEG01
修正 A B
内容
New
R 变更为 R IRE)参数 0XCF 变更为 0X66
1.1 显示规格 ................................................................................................................. 1 1.2 机械规格............................................................................................................ 1 1.3 有效面积 / 内存映射 & 像素结构...................................................................... 1 1.4 机械图纸.................................................................................................................... 2 1.5 引脚定义 ............................................................................................................................. 3 1.6 方框图............................................................................................................................ 5
OLED(SSD1306)基于STM32寄存器版驱动

基于STM32的OLED(SSD1306)寄存器版编译即可用!OLED的头文件#ifndef _OLED_H#define _OLED_H#include "sys.h"/*//////////////////////////////////////////////////////////////////////////////////////////////////// //SSD1306,当接口为SPI的驱动//功能简介:显示字符,字符串,数字,和小区域屏幕填充//作者:范桢干//时间:2016.1.6*/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////接口定义///////////#define OLED_SCLK P Cout(10)#define OLED_SDA PBout(15)#define OLED_RST PBout(13)#define OLED_DC PBout(11)//#define OLED_CS PAout(4)//////////////////////////////////////////////////////////////////////////////////////////////////////void OLED_Init(void); //OLED初始化void OLED_Clear(u8 Fill); //OLED清屏/清屏void OLED_ShowChar(u8 uPage_sta,u8 uColumn_sta,u8 uSize,u8 uChar); //在指定Page_sta,Column_sta和Size输入字符Charvoid OLED_ShowString(u8 uPage_sta,u8 uColumn_sta,u8 uSize,u8 *p); //在指定Page_sta,Column_sta处输入大小为Size的字符串*pvoid OLED_ShowNum(u8 uPage,u8 uColumn_sta,u8 uSize,u32 uNum); //在指定Page_sta,Column_sta处输入大小为Size的数字uNum,范围:(0~4294967295)void OLED_Fill(u8 uPage_sta,u8 uColumn_sta,u8 uColumn_end,u8 Fill); //在Page_sta,从uColumn_sta到uColumn_end填充或清屏#endifOLED的C文件#include "oled.h"#include "delay.h"#include "ASCII.h"//函数名称:void OLED_WriteCmd(u8 uCmd) //函数功能:OLED写一个指令//函数参数:uCmd:写入的指令void OLED_WriteCmd(u8 uCmd){u8 i;OLED_DC=0; //写指令for(i=0;i<8;i++){OLED_SCLK=0;if(uCmd&0x80) //先发送高位{ OLED_SDA=1;}else{ OLED_SDA=0;}OLED_SCLK=1;uCmd<<=1; //左移一位}OLED_SCLK=0;}//函数名称:void OLED_WriteDat(u8 uDat) //函数功能:OLED写一个数据//函数参数:uDat:写入的数据void OLED_WriteDat(u8 uDat){u8 i;OLED_DC=1; //写数据for(i=0;i<8;i++){OLED_SCLK=0;if(uDat&0x80) //先发送高位{ OLED_SDA=1;}else{ OLED_SDA=0;}OLED_SCLK=1;uDat<<=1; //左移一位}OLED_SCLK=0;}//函数名称:void OLED_Init(void)//函数功能:OLED初始化void OLED_Init(void){RCC->APB2ENR|=1<<3; //使能PORTB时钟RCC->APB2ENR|=1<<4; //使能PORTC时钟GPIOB->CRH&=0X0F0F0FFF;GPIOB->CRH|=0X30303000; //PB11,13,15推挽输出GPIOC->CRH&=0XFFFFF0FF;GPIOC->CRH|=0X00000300; //PC10推挽输出OLED_RST=0; //低电平复位delay_ms(10);OLED_RST=1; //复位完毕delay_ms(20);OLED_WriteCmd(0xAE); //关OLED显示OLED_WriteCmd(0xD5); //设置时钟OLED_WriteCmd(0x80);OLED_WriteCmd(0x20); //RAM Addressing ModeOLED_WriteCmd(0x01); //Vertical Addressing ModeOLED_WriteCmd(0xA8); //设置驱动路数(set Multiplex Ratio) OLED_WriteCmd(0x3F);OLED_WriteCmd(0xD3); //set offsetOLED_WriteCmd(0x00);OLED_WriteCmd(0x40); //Set Start LineOLED_WriteCmd(0xA1); //Set RemapOLED_WriteCmd(0xC8); //Output Scan DirectionOLED_WriteCmd(0xDA); //Pins ConfigurationOLED_WriteCmd(0x12);OLED_WriteCmd(0x81); //设置对比度(Set Contrast Ratio)OLED_WriteCmd(0xCF); //128(0-255)OLED_WriteCmd(0xD9); //Set Pre-ChagreOLED_WriteCmd(0xF1);OLED_WriteCmd(0xD8); //Set VcomhOLED_WriteCmd(0x30);OLED_WriteCmd(0xA4); //Display Accordding to GDDRAM OLED_WriteCmd(0xA6); //Set Normal DisplayOLED_WriteCmd(0x8D); //Set Charge PumpOLED_WriteCmd(0x14);OLED_WriteCmd(0xAF); //开显示delay_ms(100); //等待开启显示OLED_Clear(0); //清屏}//函数名称:void OLED_Clear(u8 Fill)//函数功能:OLED填充/清屏//函数参数:Fill,填充或者清除void OLED_Clear(u8 Fill){u8 i,j;OLED_WriteCmd(0x22); //Page AddressOLED_WriteCmd(0x00); //Page Start AddressOLED_WriteCmd(0x07); //Page End AddressOLED_WriteCmd(0x21); //Column AddressOLED_WriteCmd(0x00); //Column Start AddressOLED_WriteCmd(0x7F); //Column Start Addressfor(i=0;i<128;i++)for(j=0;j<8;j++){{ OLED_WriteDat(0xFF);}else{ OLED_WriteDat(0x00);}}}//函数名称:void OLED_ShowChar(u8 uPage_sta,u8 uColumn_sta,u8 uSize,u8 uChar)//函数功能:在指定Page_sta,Column_sta处输入大小为Size的字符Char//函数参数:uPage_sta:页数,uColumn_sta:列数,uSize:字体大小,uChar:输入的字符//注意:!!!!!!!!本字符输入函数增加了自动换行换页功能!!!!!!!!!!!!!void OLED_ShowChar(u8 uPage_sta,u8 uColumn_sta,u8 uSize,u8 uChar){#define MAX_CHAR_X 127 //Column限制#define MAX_CHAR_Y 7 //Page限制u8 uChar_Buf;u8 uCount;u8 uPage_end,uColumn_end;u8 i;if(uSize==6) //如果是8x6字体{ uPage_end=uPage_sta; //赋值Page_enduColumn_end=uColumn_sta+uSize; //赋值Cloumn_enduCount=6; //赋值uCount}else if(uSize==8) //如果是16x8字体{ uPage_end=uPage_sta+1; //赋值Page_enduColumn_end=uColumn_sta+uSize; //赋值Cloumn_enduCount=16; //赋值uCount}else{ return; //uSize错误}/////////////////////////////////自动换行换页////////////////////////////////////////////////////////////////////////////////////////////////////// if(uColumn_end>MAX_CHAR_X) //如果Cloumn>127{uColumn_sta=0; //Column_sta=0uColumn_end=uColumn_sta+uSize;{ uPage_sta=uPage_sta+1; //Page_sta+1uPage_end=uPage_sta;}else{ uPage_sta=uPage_sta+2; //Page_sta+2uPage_end=uPage_sta+1;}}if(uPage_end>MAX_CHAR_Y) //如果Page>7{uPage_sta=0; //Page_sta=0if(uSize==6){ uPage_end=uPage_sta;}else{ uPage_end=uPage_sta+1;}}/////////////////////////////////自动换行换页////////////////////////////////////////////////////////////////////////////////////////////////////// OLED_WriteCmd(0x22); //Page AddressOLED_WriteCmd(0x00+uPage_sta); //Start Page AddressOLED_WriteCmd(0x00+uPage_end); //End Page AddressOLED_WriteCmd(0x21); //Column AddressOLED_WriteCmd(0x00+uColumn_sta); //Start Column AddressOLED_WriteCmd(0x00+uColumn_end); //End Column AddressuChar=uChar-' '; //获得偏移量for(i=0;i<uCount;i++) //输入字符{if(uSize==8){ uChar_Buf=ASCII_1608[uChar][i];}else{ uChar_Buf=ASCII_0806[uChar][i];}OLED_WriteDat(uChar_Buf);}}//函数名称:void OLED_ShowString(u8 uPage_sta,u8 uColumn,u8 uSize,u8 *p)//函数功能:在指定Page_sta,Column_sta处输入大小为Size的字符串*p//函数参数:uPage_sta:页数,uColumn_sta:列数,uSize:字体大小,*p:输入的字符串指针//注意:!!!本字符串输入函数增加了自动换行换页功能!!!!!!!!!!!!!void OLED_ShowString(u8 uPage_sta,u8 uColumn_sta,u8 uSize,u8 *p){while(*p!='\0'){/////////////////////////////////自动换行换页////////////////////////////////////////////////////////////////////////////////////////////////////// if((uColumn_sta+uSize)>MAX_CHAR_X){ uColumn_sta=0;if(uSize==6){ uPage_sta=uPage_sta+1; //Page_sta+1}else{ uPage_sta=uPage_sta+2; //Page_sta+2}}if(uSize==6){ if(uPage_sta>MAX_CHAR_Y){ uPage_sta=0;}}else{ if((uPage_sta+1)>MAX_CHAR_Y){ uPage_sta=0;}}/////////////////////////////////自动换行换页//////////////////////////////////////////////////////////////////////////////////////////////////////OLED_ShowChar(uPage_sta,uColumn_sta,uSize,*p);uColumn_sta+=uSize;p++;}}//m^n函数u32 mypow(u8 m,u8 n){u32 result=1;while(n--)result*=m;return result;}//功能:计算整数长度数字0长度为1u8 LongCheck(u32 num){u8 len=0;if(num==0) //数字0长度也为1{ return 1;}while(num){ num/=10;len++;}return len;}//函数名称:void OLED_ShowNum(u8 uPage_sta,u8 uColumn_sta,u8 uSize,u32 uNum)//函数功能:在指定Page_sta,Column_sta处输入大小为Size的数字uNum,范围:(0~4294967295)//函数参数:uPage_sta:页数,uColumn_sta:列数,uSize:字体大小,uNum:输入的数字void OLED_ShowNum(u8 uPage_sta,u8 uColumn_sta,u8 uSize,u32 uNum){u8 i,temp;u8 len;len=LongCheck(uNum); //算出长度for(i=0;i<len;i++){temp=(uNum/mypow(10,len-i-1))%10;OLED_ShowChar(uPage_sta,uColumn_sta,uSize,temp+'0');uColumn_sta+=uSize;}}//函数名称:void OLED_Fill(u8 uPage_sta,u8 uColumn_sta,u8 uColumn_end,u8 Fill)//函数功能:在Page_sta,从uColumn_sta到uColumn_end填充或清屏//函数参数:uPage_sta:页数,uColumn_sta:列开始,uColumn_end:列结束,Fill:填充/清除void OLED_Fill(u8 uPage_sta,u8 uColumn_sta,u8 uColumn_end,u8 Fill){u8 i;u8 ulen;OLED_WriteCmd(0x22); //Page AddressOLED_WriteCmd(0x00+uPage_sta); //Start Page AddressOLED_WriteCmd(0x00+uPage_sta); //End Page AddressOLED_WriteCmd(0x21); //Column Address OLED_WriteCmd(0x00+uColumn_sta); //Start Column Address OLED_WriteCmd(0x00+uColumn_end); //End Column Addressulen=uColumn_end-uColumn_sta+1;for(i=0;i<=ulen;i++){if(Fill){ OLED_WriteDat(0xff); //填充}else{ OLED_WriteDat(0x00); //清除}}}ASCII码字库#ifndef _ASCII_H#define _ASCII_H//常用ASCII表//纵向取模//偏移量:32//大小:16*8const unsigned char ASCII_1608[95][16]={{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//" ",0 {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x33,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00},//"!",1 {0x00,0x00,0x10,0x00,0x0C,0x00,0x06,0x00,0x10,0x00,0x0C,0x00,0x06,0x00,0x00,0x00},//""",2 {0x40,0x04,0xC0,0x3F,0x78,0x04,0x40,0x04,0xC0,0x3F,0x78,0x04,0x40,0x04,0x00,0x00},//"#",3 {0x00,0x00,0x70,0x18,0x88,0x20,0xFC,0xFF,0x08,0x21,0x30,0x1E,0x00,0x00,0x00,0x00},//"$",4 {0xF0,0x00,0x08,0x21,0xF0,0x1C,0x00,0x03,0xE0,0x1E,0x18,0x21,0x00,0x1E,0x00,0x00},//"%",5 {0x00,0x1E,0xF0,0x21,0x08,0x23,0x88,0x24,0x70,0x19,0x00,0x27,0x00,0x21,0x00,0x10},//"&",6 {0x10,0x00,0x16,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//"'",7 {0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0x18,0x18,0x04,0x20,0x02,0x40,0x00,0x00},//"(",8 {0x00,0x00,0x02,0x40,0x04,0x20,0x18,0x18,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00},//")",9 {0x40,0x02,0x40,0x02,0x80,0x01,0xF0,0x0F,0x80,0x01,0x40,0x02,0x40,0x02,0x00,0x00},//"*",10 {0x00,0x01,0x00,0x01,0x00,0x01,0xF0,0x1F,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00},//"+",11 {0x00,0x80,0x00,0xB0,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//",",12 {0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01},//"-",13 {0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//".",14 {0x00,0x00,0x00,0x60,0x00,0x18,0x00,0x06,0x80,0x01,0x60,0x00,0x18,0x00,0x04,0x00},//"/",15 {0x00,0x00,0xE0,0x0F,0x10,0x10,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00},//"0",16 {0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00},//"1",17 {0x00,0x00,0x70,0x30,0x08,0x28,0x08,0x24,0x08,0x22,0x88,0x21,0x70,0x30,0x00,0x00},//"2",18 {0x00,0x00,0x30,0x18,0x08,0x20,0x88,0x20,0x88,0x20,0x48,0x11,0x30,0x0E,0x00,0x00},//"3",19 {0x00,0x00,0x00,0x07,0xC0,0x04,0x20,0x24,0x10,0x24,0xF8,0x3F,0x00,0x24,0x00,0x00},//"4",20 {0x00,0x00,0xF8,0x19,0x08,0x21,0x88,0x20,0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00},//"5",21 {0x00,0x00,0xE0,0x0F,0x10,0x11,0x88,0x20,0x88,0x20,0x18,0x11,0x00,0x0E,0x00,0x00},//"6",22 {0x00,0x00,0x38,0x00,0x08,0x00,0x08,0x3F,0xC8,0x00,0x38,0x00,0x08,0x00,0x00,0x00},//"7",23 {0x00,0x00,0x70,0x1C,0x88,0x22,0x08,0x21,0x08,0x21,0x88,0x22,0x70,0x1C,0x00,0x00},//"8",24 {0x00,0x00,0xE0,0x00,0x10,0x31,0x08,0x22,0x08,0x22,0x10,0x11,0xE0,0x0F,0x00,0x00},//"9",25 {0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0xC0,0x30,0x00,0x00,0x00,0x00,0x00,0x00},//":",26 {0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//";",27 {0x00,0x00,0x00,0x01,0x80,0x02,0x40,0x04,0x20,0x08,0x10,0x10,0x08,0x20,0x00,0x00},//"<",28 {0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x00,0x00},//"=",29 {0x00,0x00,0x08,0x20,0x10,0x10,0x20,0x08,0x40,0x04,0x80,0x02,0x00,0x01,0x00,0x00},//">",30 {0x00,0x00,0x70,0x00,0x48,0x00,0x08,0x30,0x08,0x36,0x08,0x01,0xF0,0x00,0x00,0x00},//"?",31 {0xC0,0x07,0x30,0x18,0xC8,0x27,0x28,0x24,0xE8,0x23,0x10,0x14,0xE0,0x0B,0x00,0x00},//"@",3 2{0x00,0x20,0x00,0x3C,0xC0,0x23,0x38,0x02,0xE0,0x02,0x00,0x27,0x00,0x38,0x00,0x20},//"A",33 {0x08,0x20,0xF8,0x3F,0x88,0x20,0x88,0x20,0x88,0x20,0x70,0x11,0x00,0x0E,0x00,0x00},//"B",34 {0xC0,0x07,0x30,0x18,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x10,0x38,0x08,0x00,0x00},//"C",35 {0x08,0x20,0xF8,0x3F,0x08,0x20,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00},//"D",36 {0x08,0x20,0xF8,0x3F,0x88,0x20,0x88,0x20,0xE8,0x23,0x08,0x20,0x10,0x18,0x00,0x00},//"E",37 {0x08,0x20,0xF8,0x3F,0x88,0x20,0x88,0x00,0xE8,0x03,0x08,0x00,0x10,0x00,0x00,0x00},//"F",38 {0xC0,0x07,0x30,0x18,0x08,0x20,0x08,0x20,0x08,0x22,0x38,0x1E,0x00,0x02,0x00,0x00},//"G",39 {0x08,0x20,0xF8,0x3F,0x08,0x21,0x00,0x01,0x00,0x01,0x08,0x21,0xF8,0x3F,0x08,0x20},//"H",40 {0x00,0x00,0x08,0x20,0x08,0x20,0xF8,0x3F,0x08,0x20,0x08,0x20,0x00,0x00,0x00,0x00},//"I",41 {0x00,0xC0,0x00,0x80,0x08,0x80,0x08,0x80,0xF8,0x7F,0x08,0x00,0x08,0x00,0x00,0x00},//"J",42 {0x08,0x20,0xF8,0x3F,0x88,0x20,0xC0,0x01,0x28,0x26,0x18,0x38,0x08,0x20,0x00,0x00},//"K",43 {0x08,0x20,0xF8,0x3F,0x08,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x30,0x00,0x00},//"L",44 {0x08,0x20,0xF8,0x3F,0xF8,0x00,0x00,0x3F,0xF8,0x00,0xF8,0x3F,0x08,0x20,0x00,0x00},//"M",45 {0x08,0x20,0xF8,0x3F,0x30,0x20,0xC0,0x00,0x00,0x07,0x08,0x18,0xF8,0x3F,0x08,0x00},//"N",46 {0xE0,0x0F,0x10,0x10,0x08,0x20,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00},//"O",47 {0x08,0x20,0xF8,0x3F,0x08,0x21,0x08,0x01,0x08,0x01,0x08,0x01,0xF0,0x00,0x00,0x00},//"P",48 {0xE0,0x0F,0x10,0x18,0x08,0x24,0x08,0x24,0x08,0x38,0x10,0x50,0xE0,0x4F,0x00,0x00},//"Q",49 {0x08,0x20,0xF8,0x3F,0x88,0x20,0x88,0x00,0x88,0x03,0x88,0x0C,0x70,0x30,0x00,0x20},//"R",50 {0x00,0x00,0x70,0x38,0x88,0x20,0x08,0x21,0x08,0x21,0x08,0x22,0x38,0x1C,0x00,0x00},//"S",51 {0x18,0x00,0x08,0x00,0x08,0x20,0xF8,0x3F,0x08,0x20,0x08,0x00,0x18,0x00,0x00,0x00},//"T",52 {0x08,0x00,0xF8,0x1F,0x08,0x20,0x00,0x20,0x00,0x20,0x08,0x20,0xF8,0x1F,0x08,0x00},//"U",53 {0x08,0x00,0x78,0x00,0x88,0x07,0x00,0x38,0x00,0x0E,0xC8,0x01,0x38,0x00,0x08,0x00},//"V",54 {0xF8,0x03,0x08,0x3C,0x00,0x07,0xF8,0x00,0x00,0x07,0x08,0x3C,0xF8,0x03,0x00,0x00},//"W",55 {0x08,0x20,0x18,0x30,0x68,0x2C,0x80,0x03,0x80,0x03,0x68,0x2C,0x18,0x30,0x08,0x20},//"X",56 {0x08,0x00,0x38,0x00,0xC8,0x20,0x00,0x3F,0xC8,0x20,0x38,0x00,0x08,0x00,0x00,0x00},//"Y",57 {0x10,0x20,0x08,0x38,0x08,0x26,0x08,0x21,0xC8,0x20,0x38,0x20,0x08,0x18,0x00,0x00},//"Z",58 {0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0x02,0x40,0x02,0x40,0x02,0x40,0x00,0x00},//"[",59 {0x00,0x00,0x0C,0x00,0x30,0x00,0xC0,0x01,0x00,0x06,0x00,0x38,0x00,0xC0,0x00,0x00},//"\",60 {0x00,0x00,0x02,0x40,0x02,0x40,0x02,0x40,0xFE,0x7F,0x00,0x00,0x00,0x00,0x00,0x00},//"]",61 {0x00,0x00,0x00,0x00,0x04,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x00,0x00},//"^",62 {0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80},//"_",63 {0x00,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//"`",64 {0x00,0x00,0x00,0x19,0x80,0x24,0x80,0x22,0x80,0x22,0x80,0x22,0x00,0x3F,0x00,0x20},//"a",65 {0x08,0x00,0xF8,0x3F,0x00,0x11,0x80,0x20,0x80,0x20,0x00,0x11,0x00,0x0E,0x00,0x00},//"b",66 {0x00,0x00,0x00,0x0E,0x00,0x11,0x80,0x20,0x80,0x20,0x80,0x20,0x00,0x11,0x00,0x00},//"c",67 {0x00,0x00,0x00,0x0E,0x00,0x11,0x80,0x20,0x80,0x20,0x88,0x10,0xF8,0x3F,0x00,0x20},//"d",68 {0x00,0x00,0x00,0x1F,0x80,0x22,0x80,0x22,0x80,0x22,0x80,0x22,0x00,0x13,0x00,0x00},//"e",69 {0x00,0x00,0x80,0x20,0x80,0x20,0xF0,0x3F,0x88,0x20,0x88,0x20,0x88,0x00,0x18,0x00},//"f",70 {0x00,0x00,0x00,0x6B,0x80,0x94,0x80,0x94,0x80,0x94,0x80,0x93,0x80,0x60,0x00,0x00},//"g",71 {0x08,0x20,0xF8,0x3F,0x00,0x21,0x80,0x00,0x80,0x00,0x80,0x20,0x00,0x3F,0x00,0x20},//"h",72 {0x00,0x00,0x80,0x20,0x98,0x20,0x98,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00},//"i",73 {0x00,0x00,0x00,0xC0,0x00,0x80,0x80,0x80,0x98,0x80,0x98,0x7F,0x00,0x00,0x00,0x00},//"j",74 {0x08,0x20,0xF8,0x3F,0x00,0x24,0x00,0x02,0x80,0x2D,0x80,0x30,0x80,0x20,0x00,0x00},//"k",75 {0x00,0x00,0x08,0x20,0x08,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00},//"l",76{0x80,0x20,0x80,0x3F,0x80,0x20,0x80,0x00,0x80,0x3F,0x80,0x20,0x80,0x00,0x00,0x3F},//"m",77 {0x80,0x20,0x80,0x3F,0x00,0x21,0x80,0x00,0x80,0x00,0x80,0x20,0x00,0x3F,0x00,0x20},//"n",78 {0x00,0x00,0x00,0x1F,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x00,0x1F,0x00,0x00},//"o",79 {0x80,0x80,0x80,0xFF,0x00,0xA1,0x80,0x20,0x80,0x20,0x00,0x11,0x00,0x0E,0x00,0x00},//"p",80 {0x00,0x00,0x00,0x0E,0x00,0x11,0x80,0x20,0x80,0x20,0x80,0xA0,0x80,0xFF,0x00,0x80},//"q",81 {0x80,0x20,0x80,0x20,0x80,0x3F,0x00,0x21,0x80,0x20,0x80,0x00,0x80,0x01,0x00,0x00},//"r",82 {0x00,0x00,0x00,0x33,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x24,0x80,0x19,0x00,0x00},//"s",83 {0x00,0x00,0x80,0x00,0x80,0x00,0xE0,0x1F,0x80,0x20,0x80,0x20,0x00,0x00,0x00,0x00},//"t",84 {0x80,0x00,0x80,0x1F,0x00,0x20,0x00,0x20,0x00,0x20,0x80,0x10,0x80,0x3F,0x00,0x20},//"u",85 {0x80,0x00,0x80,0x01,0x80,0x0E,0x00,0x30,0x00,0x08,0x80,0x06,0x80,0x01,0x80,0x00},//"v",86 {0x80,0x0F,0x80,0x30,0x00,0x0C,0x80,0x03,0x00,0x0C,0x80,0x30,0x80,0x0F,0x80,0x00},//"w",87 {0x00,0x00,0x80,0x20,0x80,0x31,0x00,0x2E,0x80,0x0E,0x80,0x31,0x80,0x20,0x00,0x00},//"x",88 {0x80,0x80,0x80,0x81,0x80,0x8E,0x00,0x70,0x00,0x18,0x80,0x06,0x80,0x01,0x80,0x00},//"y",89 {0x00,0x00,0x80,0x21,0x80,0x30,0x80,0x2C,0x80,0x22,0x80,0x21,0x80,0x30,0x00,0x00},//"z",90 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x7C,0x3F,0x02,0x40,0x02,0x40},//"{",91 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00},//"|",92 {0x00,0x00,0x02,0x40,0x02,0x40,0x7C,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//"}",93 {0x00,0x00,0x06,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x02,0x00,0x04,0x00,0x04,0x00},//"~",94 };//常用ASCII表//纵向取模//偏移量:32//大小:8*6const unsigned char ASCII_0806[95][6]={{0x00,0x00,0x00,0x00,0x00,0x00},//- - //space{0x00,0x00,0x4f,0x00,0x00,0x00},//-!-{0x00,0x07,0x00,0x07,0x00,0x00},//-"-{0x14,0x7f,0x14,0x7f,0x14,0x00},//-#-{0x24,0x2a,0x7f,0x2a,0x12,0x00},//-$-{0x23,0x13,0x08,0x64,0x62,0x00},//-%-{0x36,0x49,0x55,0x22,0x50,0x00},//-&-{0x00,0x05,0x07,0x00,0x00,0x00},//-'-{0x00,0x1c,0x22,0x41,0x00,0x00},//-(-{0x00,0x41,0x22,0x1c,0x00,0x00},//-)-{0x14,0x08,0x3e,0x08,0x14,0x00},//-*-{0x08,0x08,0x3e,0x08,0x08,0x00},//-+-{0x00,0x50,0x30,0x00,0x00,0x00},//-,-{0x08,0x08,0x08,0x08,0x08,0x00},//---{0x00,0x60,0x60,0x00,0x00,0x00},//-.-{0x20,0x10,0x08,0x04,0x02,0x00},//-/-{0x3e,0x51,0x49,0x45,0x3e,0x00},//-0-{0x00,0x42,0x7f,0x40,0x00,0x00},//-1-{0x21,0x41,0x45,0x4b,0x31,0x00},//-3- {0x18,0x14,0x12,0x7f,0x10,0x00},//-4- {0x27,0x45,0x45,0x45,0x39,0x00},//-5- {0x3c,0x4a,0x49,0x49,0x30,0x00},//-6- {0x01,0x71,0x09,0x05,0x03,0x00},//-7- {0x36,0x49,0x49,0x49,0x36,0x00},//-8- {0x06,0x49,0x49,0x29,0x1e,0x00},//-9- {0x00,0x36,0x36,0x00,0x00,0x00},//-:- {0x00,0x56,0x36,0x00,0x00,0x00},//-;- {0x08,0x14,0x22,0x41,0x00,0x00},//-<- {0x14,0x14,0x14,0x14,0x14,0x00},//-=- {0x00,0x41,0x22,0x14,0x08,0x00},//->- {0x02,0x01,0x51,0x09,0x06,0x00},//-?- {0x32,0x49,0x79,0x41,0x3e,0x00},//-@- {0x7e,0x11,0x11,0x11,0x7e,0x00},//-A- {0x7f,0x49,0x49,0x49,0x36,0x00},//-B- {0x3e,0x41,0x41,0x41,0x22,0x00},//-C- {0x7f,0x41,0x41,0x22,0x1c,0x00},//-D- {0x7f,0x49,0x49,0x49,0x41,0x00},//-E- {0x7f,0x09,0x09,0x09,0x01,0x00},//-F- {0x3e,0x41,0x49,0x49,0x7a,0x00},//-G- {0x7f,0x08,0x08,0x08,0x7f,0x00},//-H- {0x00,0x41,0x7f,0x41,0x00,0x00},//-I- {0x20,0x40,0x41,0x3f,0x01,0x00},//-J- {0x7f,0x08,0x14,0x22,0x41,0x00},//-K- {0x7f,0x40,0x40,0x40,0x40,0x00},//-L- {0x7f,0x02,0x0c,0x02,0x7f,0x00},//-M- {0x7f,0x04,0x08,0x10,0x7f,0x00},//-N- {0x3e,0x41,0x41,0x41,0x3e,0x00},//-O- {0x7f,0x09,0x09,0x09,0x06,0x00},//-P- {0x3e,0x41,0x51,0x21,0x5e,0x00},//-Q- {0x7f,0x09,0x19,0x29,0x46,0x00},//-R- {0x46,0x49,0x49,0x49,0x31,0x00},//-S- {0x01,0x01,0x7f,0x01,0x01,0x00},//-T- {0x3f,0x40,0x40,0x40,0x3f,0x00},//-U- {0x1f,0x20,0x40,0x20,0x1f,0x00},//-V- {0x3f,0x40,0x38,0x40,0x3f,0x00},//-W- {0x63,0x14,0x08,0x14,0x63,0x00},//-X- {0x07,0x08,0x70,0x08,0x07,0x00},//-Y- {0x61,0x51,0x49,0x45,0x43,0x00},//-Z- {0x00,0x7f,0x41,0x41,0x00,0x00},//-[- {0x02,0x04,0x08,0x10,0x20,0x00},//-\- {0x00,0x41,0x41,0x7f,0x00,0x00},//-]-{0x40,0x40,0x40,0x40,0x40,0x00},//-_- {0x01,0x02,0x04,0x00,0x00,0x00},//-`- {0x20,0x54,0x54,0x54,0x78,0x00},//-a- {0x7f,0x48,0x48,0x48,0x30,0x00},//-b- {0x38,0x44,0x44,0x44,0x44,0x00},//-c- {0x30,0x48,0x48,0x48,0x7f,0x00},//-d- {0x38,0x54,0x54,0x54,0x58,0x00},//-e- {0x00,0x08,0x7e,0x09,0x02,0x00},//-f- {0x48,0x54,0x54,0x54,0x3c,0x00},//-g- {0x7f,0x08,0x08,0x08,0x70,0x00},//-h- {0x00,0x00,0x7a,0x00,0x00,0x00},//-i- {0x20,0x40,0x40,0x3d,0x00,0x00},//-j- {0x7f,0x20,0x28,0x44,0x00,0x00},//-k- {0x00,0x41,0x7f,0x40,0x00,0x00},//-l- {0x7c,0x04,0x38,0x04,0x7c,0x00},//-m- {0x7c,0x08,0x04,0x04,0x78,0x00},//-n- {0x38,0x44,0x44,0x44,0x38,0x00},//-o- {0x7c,0x14,0x14,0x14,0x08,0x00},//-p- {0x08,0x14,0x14,0x14,0x7c,0x00},//-q- {0x7c,0x08,0x04,0x04,0x08,0x00},//-r- {0x48,0x54,0x54,0x54,0x24,0x00},//-s- {0x04,0x04,0x3f,0x44,0x24,0x00},//-t- {0x3c,0x40,0x40,0x40,0x3c,0x00},//-u- {0x1c,0x20,0x40,0x20,0x1c,0x00},//-v- {0x3c,0x40,0x30,0x40,0x3c,0x00},//-w- {0x44,0x28,0x10,0x28,0x44,0x00},//-x- {0x04,0x48,0x30,0x08,0x04,0x00},//-y- {0x44,0x64,0x54,0x4c,0x44,0x00},//-z- {0x08,0x36,0x41,0x41,0x00,0x00},//-{- {0x00,0x00,0x77,0x00,0x00,0x00},//-|- {0x00,0x41,0x41,0x36,0x08,0x00},//-}- {0x04,0x02,0x02,0x02,0x01,0x00},//-~- };#endif。
OLEDSSD1306与SSD1315在初始化的区别

OLEDSSD1306与SSD1315在初始化的区别在使⽤0.96⼨的OLED时,发现之前的代码不能正常通过单⽚机的IIC使⽤DMA进⾏刷新,刷新时总是错⼀位,后来查阅资料发现是现在的OLED使⽤了SSD1315替换了SSD1306控制芯⽚,贴⼀下各个初始化过程,⽅便记录:SSD1306初始化:1/**2 * @brief OLED初始化3 * @param None4 * @retval None.5*/6void OLED_Init(void)7 {8#if SENDDTA_DMA9 I2C_DMA_WriteReg( (uint8_t*)OLED_Init_CMD, OLED_ADDRESS,OLED_WriteCom_Addr,sizeof(OLED_Init_CMD)); //sizeof(OLED_Init_CMD)10#else11// DelayMs(100); //这⾥的延时很重要12 delay_ms(10);13 WriteCmd(0xAE); //display off14 WriteCmd(0x20); //Set Memory Addressing Mode15 WriteCmd(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid16 WriteCmd(0xb0); //Set Page Start Address for Page Addressing Mode,0-717 WriteCmd(0xc8); //Set COM Output Scan Direction18 WriteCmd(0x00); //---set low column address19 WriteCmd(0x10); //---set high column address20 WriteCmd(0x40); //--set start line address21 WriteCmd(0x81); //--set contrast control register22 WriteCmd(0xff); //亮度调节 0x00~0xff23 WriteCmd(0xa1); //--set segment re-map 0 to 12724 WriteCmd(0xa6); //--set normal display25 WriteCmd(0xa8); //--set multiplex ratio(1 to 64)26 WriteCmd(0x3F); //27 WriteCmd(0xa4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content28 WriteCmd(0xd3); //-set display offset29 WriteCmd(0x00); //-not offset30 WriteCmd(0xd5); //--set display clock divide ratio/oscillator frequency31 WriteCmd(0xf0); //--set divide ratio32 WriteCmd(0xd9); //--set pre-charge period33 WriteCmd(0x22); //34 WriteCmd(0xda); //--set com pins hardware configuration35 WriteCmd(0x12);36 WriteCmd(0xdb); //--set vcomh37 WriteCmd(0x20); //0x20,0.77xVcc38 WriteCmd(0x8d); //--set DC-DC enable39 WriteCmd(0x14); //40 WriteCmd(0xaf); //--turn on oled panel41#endif42 }这⾥使⽤默认是刷新⽅式,按照页写数据没有问题,使⽤DMA时需要把照寻址⽅式修改为了⽔平寻址时就出现了刷新数据不对的问题为此,我直接使⽤了⽹络上默认的⽅式对DMA发送指令进⾏初始化const uint8_t OLED_Init_CMD[] ={0xAE,0x00,0x10,0x40,0xB0,0x81,0xFF,0xA1,0xA6,0xA8,0x3F,0xC8,0xD3,0x00,0xD5,0x80,0xD8,0x05,0xD9,0xF1,0xDA,0x12,0xDB,0x30,0x8D,0x14,0xAF,0x20,0x00};发现使⽤改⽅式刷新SSD1315类型的OLED时会出问题,对其进⾏修改:const uint8_t OLED_Init_CMD[] ={ 0xae,0x00,0x10,0x40,0x81,0xcf,0xa1,0xc8,0xa6,0xa8, 0x3f,0xd3,0x00,0xd5,0x80,0xd9,0xf1,0xda,0x12,0xdb, 0x40,0x20,0x00,0x8d,0x14,0xa4,0xa6,0xaf};⽴刻正常,看来两个⽚⼦的⼯作模式还是有些区别的。
ssd1306中文手册范本

简介SSD1306是一个单片CMOS OLED/PLED驱动芯片可以驱动有机/聚合发光二极管点阵图形显示系统。
由128 segments 和64 Commons组成。
该芯片专为共阴极OLED面板设计。
SSD1306中嵌入了对比度控制器、显示RAM和晶振,并因此减少了外部器件和功耗。
有256级亮度控制。
数据/命令的发送有三种接口可选择:6800/8000串口,I2C接口或SPI接口。
适用于多数简介的应用,注入移动的屏显,MP3播放器和计算器等。
特性1.分辨率:128 * 64 点阵面板2.电源:a)VDD = 1.65V to 3.3V 用于IC逻辑b)VCC = 7V to 15V 用于面板驱动3.点阵显示a)OLED驱动输出电压,最大15Vb)Segment最大电流:100uAc)常见最大反向电流:15mAd)256级对比亮度电流控制4.嵌入式128 * 64位SRAM显示缓存5.引脚选择MCU接口a)8位6800/8000串口b)3/4线SPI接口c)I2C接口6.水平和垂直两个方向的屏幕保存连续滚动功能。
7.RAM写同步信号8.可编程的帧率和多重比率9.行重映射和列冲映射10.片上晶振11.两种封装COG和COF12.工作温度围广:-40℃to 85℃订购信息暂不翻译结构方框图功能块描述MCU接口选择SSD1306MCU接口由8个数据引脚和5个控制引脚组成。
引脚分配由不同的接口选择决定,详情如下表。
不同的MCU模块可以通过BS[2:0]引脚的硬件选择设置。
MCU 并口6800系列接口不翻译MCU 并口8080系列接口不翻译MCU串口(4-wire SPI)不翻译MCU串口(3-wire SPI)不翻译MCU I2C 接口I2C通讯接口由从机地址为SA0,I2C总线数据信号(SDAout/D2输出和SDAin/D1输入)和I2C总线时钟信号SCL(D0)组成。
数据和时钟信号线都必须接上上拉电阻。
OLED模块使用说明

7.6 系统显示设计控制系统显示常用的显示器件有数码管、LCD、OLED等。
OLED即有机发光二极管(Organic Light Emitting Diode),其同时具备自发光,不需背光源、对比度高、制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。
本节主要介绍OLED的工作原理、底层驱动代码编写以及如何通过取模软件显示任何自己想要显示的文字或者图片。
7.6.1 OLED显示原理如图4所示为0.96寸OLED显示模块,其分辨率为128*64,采用4线SPI接口方式,模块的接口定义如表1所示。
图4 0.96寸OLED显示模块种并行接口方式、3线或4线SPI接口方式、IIC接口方式。
这里介绍OLED模块4线SPI 通信方式,只需4根通信线就能实现对OLED模块的显示控制,这4根线为:D0、D1、DC、CS。
如图5所示为4线SPI写操作时序图,在4线SPI模式下,每个数据长度均为8位,也即为1个字节。
每次发送该字节数据前,如果该字节数据为指令号,则将DC管脚拉低;如果该字节数据为普通数据,则将DC管脚置高。
在SCLK上升沿,数据从SDIN移入SSD1306,并且高位在前。
SSD1306的显存总共为128*64bit大小,SSD1306将这些显存分为8页,其对应关系如表2所示。
可见OLED水平像素分为128段,即SEG0~SEG127;垂直像素平分为8页,也即垂直方向每8个像素点为1页。
从而可见,在确定显示的位置后,通过往显存中写入一个字节数据,则相应的SEG将按照数据进行显示,位数据为1时,相应像素点被点亮,位数据为0时,相应的像素点熄灭。
图5 4线SPI写操作时序图令较多,具体的可以参考相关手册,这里介绍如表3所示几个比较常用的指令。
命令,随后发送的一个字节为要设置的对比度的值。
这个值设置得越大屏幕就越亮。
第二个命令为 0XAE/0XAF。
0XAE 为关闭显示命令; 0XAF 为开启显示命令。
0.96'OLED(4Pin)模块学习手册(STM8S版)

SSD1306 背面图
模块原理图 第 3 页 共 23 页
深圳市技新电子科技有限公司 www.jixin.pro
0.96’OLED(4Pin)V1.0.0.0
3.2 SSD1306 引脚功能表
引脚号码
符号
类型
功能
电源相关引脚
9
VDD
电源
逻辑电源
这是一个供电引脚,必须连接到外部电源。
0.96’OLED(4Pin)模块采用 SSD1306 为驱动芯片,并集成在 OLED 面板中,像素为 128*64,通讯方式 IIC,地址可选(默认地址 0x78),支持软件模拟 IIC 通讯与硬件 IIC 通讯,上电自动复位,功耗低,自发光自 由视角。模块带有稳压芯片,VCC 输入范围 3.3V~5V,与单片机通讯只需两个 IO 口。
1.3 模块丝印
模块上的每一个器件都有一个相对应的丝印在上面,可以通过 BOM 表中的器件编号在板子找到器件的位 置。
第 1 页 共 23 页
深圳市技新电子科技有限公司 www.jixin.pro
0.96’OLED(4Pin)V1.0.0.0
模块正面丝印图
模块正面丝印图
在模块的正面丝印中,S1 是地址选择焊盘,作用是选择模块通讯地址(不焊为 0,焊上为 1,默认 S1 不 焊,地址为 0x78),地址选择如下表:
8
VSS
电源
逻辑地
这是一个地引脚,它作为逻辑电平的参考引脚,必
须链接到外部地。
28
VCC
电源
OEL 板供电
它必须为芯片电源电压正极引脚,在使用整流器时
要在该引脚与 VSS 之间接入一个电容;如果不使用整 流器时必须接到外部电源。
ssd1306中文手册

K = 相 1 周期 + 相 2 周期 + BANK0 脉冲宽度 = 2 + 2 + 50 = 54 在上电重启时 Number of multiplex ratio 通过 command A8h 设置。上电重启值为 63 。 Fosc 是振荡器频率,可以通过命令 D5h A[7:4]修改。值越大频率越大。
页脚内容
SQL 数据库完全操作手册
如果 D/C#引脚是高,D[7:0]就被解读为写到图像显示数据 RAM(GDDRAM)中的显示数据。 如果是低,D[7:0]的输入就被解读为一个命令。然后数据输入就会被解码并写到相关的命令 寄存器中。
晶振电路和显示时间发生器
这是一个片上低功耗 RC 震荡电路。操作时钟(CLK)可以由内部震荡器或外部 CL 引脚生成。 这个选择是通过 CLS 引脚完成的。当 CLS 引脚拉高,内部振荡器开启,CL 应该保留开启。将 CLS 拉低可以静止内部振荡器,外部时钟必须连接到 CL 引脚上。当选择了内部振荡器之后, 输出频率 Fosc 可以通过命令 D5h A[7:4]修改。 用于显示时钟发生器的显示时钟(DCLK)是源于 CLK 的。分频因子“D”可以通过命令 D5h 编程范围为 1 到 16 DCLK = Fosc/D 显示的帧率是由下面的公式决定
输出跟随 RAM A5h, X0 =1b:进入显示 开启状态,输出不管 RAM 内容 A6h, X[0]=0b:正常显示 (RESET) 在RAM中的0:在显示面板 上为关 在RAM中的1:在显示面板 上为开 A7h, X[0]=1b: 反相显示 在RAM中的0:在显示面板 上为开 在RAM中的1:在显示面板 上为关
oled中文手册

oled中文手册OLED(Organic Light Emitting Diodes,有机发光二极管)是一种基于有机材料的发光显示技术。
由于其具有自发光、高对比度、低功耗、快速响应等优点,OLED显示器在手机、电视、平板电脑等领域得到了广泛应用。
以下是OLED中文手册的一些基本概念和操作说明:1. OLED结构:OLED主要由玻璃基板、ITO(铟锡氧化物)阳极、有机发光层、阴极和封装层组成。
2. OLED工作原理:当电流通过有机发光层时,正负电荷在有机材料中复合,释放出能量,使有机材料发光。
3. OLED驱动方式:OLED采用被动矩阵(PMOLED)或主动矩阵(AMOLED)驱动方式。
PMOLED采用分立的驱动电路,每个像素由一个TFT(薄膜晶体管)控制;AMOLED采用集成的驱动电路,每个像素由多个TFT共享一个驱动电路。
4. OLED显示模式:OLED支持多种显示模式,如静态显示、动态显示、滚动显示等。
5. OLED颜色:OLED可以显示红、绿、蓝三种基本颜色,通过调节这三种颜色的亮度比例,可以实现各种颜色的组合。
6. OLED亮度调节:OLED可以通过PWM(脉宽调制)技术调节亮度,实现低功耗和高对比度的显示效果。
7. OLED电源管理:OLED需要稳定的电源电压和电流,通常采用DC-DC转换器将外部电源转换为适合OLED工作的电压和电流。
8. OLED驱动芯片:市场上有多种OLED驱动芯片可供选择,如SSD1306、SSD1327、ILI9341等。
这些驱动芯片提供了丰富的功能和接口,方便用户进行二次开发。
9. OLED编程:用户可以通过编程控制OLED的显示内容、颜色、亮度等参数,实现自定义的显示效果。
常用的编程语言有C语言、Python 等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
果就是 SDA 上的应答可能不能达到有效的逻辑 0。 SDAin 和 SDAout 绑定到了一起作为 SDA。SDAin 引脚必须连接到 SDA。SDAout 引脚可以 不连接。当 SDAout 引脚不连接,应答信号将会被 I2C 总线忽略。 c. I2C 总线时钟信号 SCL I2C 总线上的信息传输任务是随着一个时钟信号的,SCL。每个数据位的传输任务发生在 SCL 的单个的时钟周期中。
Tie LOW
NC
SDIN SCLK Tie LOW
CS# Tie
RES#
LOW
Tie LOW
NC
SDIN SCLK Tie LOW
CS# D/C# RES#
Tie LOW
SDAout SDAin SCl
Tie LOW
SA0
RES#
MCU 并口 6800 系列接口
不翻译
MCU 并口 8080 系列接口
11. 两种封装 COG 和 COF
12. 工作温度范围广:‐40℃ to 85℃
订购信息
暂不翻译
结构方框图
功能块描述
MCU 接口选择
SSD1306MCU 接口由 8 个数据引脚和 5 个控制引脚组成。引脚分配由不同的接口选择决定, 详情如下表。不同的 MCU 模块可以通过 BS[2:0]引脚的硬件选择设置。
4. 嵌入式 128 * 64 位 SRAM 显示缓存
5. 引脚选择 MCU 接口
a) 8 位 6800/8000 串口
b) 3/4 线 SPI 接口
c) I2C 接口
6. 水平和垂直两个方向的屏幕保存连续滚动功能。
7. RAM 写同步信号Βιβλιοθήκη 8. 可编程的帧率和多重比率
9. 行重映射和列冲映射
10. 片上晶振
就是命令。如果 D/C#位设为 1,下一个数据就是数据,将会存在 GDDRAM 中。 GDDRAM 列地址指针将会在每次数据写之后自动加 1.
6. 应答位将会在接收到每个控制字节或数据字节之后发生 7. 写模式会在用了停止条件之后结束。停止条件:将 SDA 从低拉高,而 SCL 保持高。
请注意数据位的传输是有限制的 1. 数据位,在每个 SCL 脉冲阶段传输,必须在时钟脉冲高周期内保持稳定状态。可以参考
特性
1. 分辨率:128 * 64 点阵面板
2. 电源:
a) VDD = 1.65V to 3.3V
用于 IC 逻辑
b) VCC = 7V to 15V
用于面板驱动
3. 点阵显示
a) OLED 驱动输出电压,最大 15V
b) Segment 最大电流:100uA
c) 常见最大反向电流:15mA
d) 256 级对比亮度电流控制
简介
SSD1306 是一个单片 CMOS OLED/PLED 驱动芯片可以驱动有机/聚合发光二极管点阵图形显 示系统。由 128 segments 和 64 Commons 组成。该芯片专为共阴极 OLED 面板设计。 SSD1306 中嵌入了对比度控制器、显示 RAM 和晶振,并因此减少了外部器件和功耗。有 256 级亮度控制。数据/命令的发送有三种接口可选择:6800/8000 串口,I2C 接口或 SPI 接口。 适用于多数简介的应用,注入移动电话的屏显,MP3 播放器和计算器等。
引脚 总线接口 8‐bit 8080 8‐bit 6800 3‐wire SPI
4‐wire Spi I2C
Data/Command 接口
控制信号
D7 D6 D5 D4 D3 D2
D1
D0
E
R/W# CS# D/C# RES#
D[7:0]
RD# WR#
CS# D/C# RES#
D[7:0]
E
R/W# CS# D/C# RES#
不翻译
MCU 串口(4‐wire SPI)
不翻译
MCU 串口(3‐wire SPI)
不翻译
MCU I2C 接口
I2C 通讯接口由从机地址为 SA0,I2C 总线数据信号(SDAout/D2 输出和 SDAin/D1 输入)和 I2C 总线时钟信号 SCL(D0)组成。数据和时钟信号线都必须接上上拉电阻。RES#用来初始化设 备。 a. 从机地址位(SA0)
下面的图示。除了开始或停止条件,数据线只能在 SCL 为 LOW 的时候转换状态。 2. SDA 和 SCL 都必须接外接上拉电阻
3. 写模式的建立是通过设置 R/W#为到逻辑 0 实现的。 4. 应答位信号将在接收到一个字节的数据后发生包括从机地址和 R/W#位。可以参考下面
的应答位信号的图示。应答位的定义是在应答位相关的时钟脉冲的高周期中把 SDA 线拉 低。 5. 传输完从机地址之后,控制字节或数据字节开始通过 SDA 传输。一个控制字节主要由 CO 和 D/C#位后面再加上六个 0 组成的。 a) 如果 Co 为设为逻辑 0,,后面传输的信息就只包含数据字节。 b) D/C 为决定了下个数据字节是作为命令还是数据。如果 D/C#位设为 0,下一个数据
I2C 总线写数据
I2C 总线接口提供了写数据和命令到设备的接口。关于 I2C 总线的写模式的时序请参考下图:
I2c 的写模式
1. 主机设备通过开始条件初始化数据通讯。开始条件的定义在下面的图中展示。开始条件 通过将 SDA 从高拉低而 SCL 保持高建立。
2. 从机地址紧跟着开始条件作为标志用。对于 SSD1306,从机地址可以是“b0111100”或 “b0111101”通过改变 SA0 到 LOW 或 HIGH(D/C 引脚作为 SA0)。
SSD1306 在发送或接受任何信息之前必须识别从机地址。设备将会响应从机地址,后面 跟随着从机地址位(SA0 位)和读写选择位(R/W#位),格式如下:
b7 b6 b5 b4 b3 b2 b1 b0 0 1 1 1 1 0 SA0 R/W# SA0 位为从机地址提供了一个位的拓展。0111100 或 0111101 都可以做为 SSD1306 的从 机地址。D/C#引脚作为 SA0 用于从机地址选择。R/W#为用来决定 I2C 总线接口的操作模式。 R/W# = 1,读模式。R/W# = 0 写模式 b. I2C 总线数据信号 SDA SDA 作为发送者和接受者之间的通讯通道。数据和应答都是通过 SDA 发送。 应该注意的是 ITO 轨道电阻和 SDA 引脚上的上拉电阻会变成一个潜在的电压分压器。结