微信公众号【物联网思考】

整理东西的时候,翻出了一个OLED,驱动起来玩一玩。先上一张图,显示了字符串、汉字,当然也是我们的公众号,欢迎关注。

在淘宝上找了一些资料,但是要想彻底理解如何驱动,还是要看驱动芯片的手册。

这个模块默认是使用SPI通讯的,如果要使用I2C通讯,需要把R3电阻取下来,焊接到R1的位置,如上图。

首先,需要说明的一点,显示屏都需要控制器;所谓显示,其实就是操作控制芯片,包括入门级别的LCD1602、LCD12864都是集成了控制芯片的,不同厂家用的控制芯片可能不同,像LCD1602、LCD12864这些的控制芯片基本上驱动都是一样的,这也是我们在驱动这些的时候,没有去研究所用的控制芯片的原因。

图中的0.96寸OLED,所用的控制芯片正是SSD1306,不同厂家可以用不同的驱动芯片,要让OLED显示,其实就是要驱动SSD1306。

SSD1306支持多种控制方式,I2C、6800、8080、4线SPI、3线SPI,通过BS0、BS1、BS2引脚接不同的电平来选择控制方式,此次我们使用I2C来控制,那么需要BS0接GND、BS1接VCC、BS2接GND,如下datasheet中描述的:

针对本模块我们还需用到的其他引脚:

复位信号引脚,在显示的时候保持高电平。

1、I2C通讯

(1)通过D/C#(datasheet中的SA0)这个引脚来扩展I2C地址,这个引脚接VCC或者GND,对应不同的地址;

(2)需要将D1和D2接在一起作为SDA;

(3)D0为SCL;

(4)SCL和SDA需接外部上拉,这也是I2C通讯最基本的要求;

(5)RES#引脚用于初始化,需要在硬件设计上注意。

2、写I2C

(1)发送地址之后,发送控制数据或者命令数据字节;这个字节由Co位和D/C#位以及6各0组成;

(2)如果Co位为0,那么后续的信息都是数据;

(3)D/C#位决定了下一个数据是命令还是数据,如果D/C#位是0,那么后面的数据是命令,如果D/C#位是1,那么后面的数据是数据将被存储在GDDRAM中。

(4)基本控制规律就是,发送I2C地址,发送命令或者数据控制字节、发送数据或者命令。

3、原理设计

模块带的原理图,可以看出来,通过R8将D1和D2连在了一起,这也符合手册中的要求,但是我们主要是向SSD1306写数据,所以这个R8也可以不接。如果需要读数据的话,就需要接上。

4、显存

显存大小128*64,分8个页,PAGE0~PAGE7,128列。

一次写8个像素点,即同一个page内的同一列8个点。一个字节的8个bit刚好对应D0到D7(根据这个特性,我们取模的时候,首先要按列取模)。

5、寻址模式

三种寻址模式:页寻址、水平寻址、垂直寻址。

寻址模式设置命令:

5.1、页寻址(默认的寻址方式,我们用这种寻址,综合上面的列式取模,因此我们用列行式的取模方式)

(1)列地址指针每次自动加1,如果列地址指针到达最后一个地址,将会自动复位到开始的地址,页地址指针不变;

(2)为了访问下一个页面RAM内容,用户必须设置新的页面和列地址;

(3)页地址的范围0-7,对应的命令是B0-B7;

(4)低列地址的设置命令是00-0FH,高列地址的设置命令是10h-1Fh。

页寻址模式设置命令:

5.2、水平寻址模式

列地址指针每次自动加1,如果列地址指针到达最后一个地址,将会自动复位到开始的地址,页地址指针也加1。

5.3、垂直寻址模式

页地址指针每次自动加1,如果页地址指针到达最后一个地址,将会自动复位到开始的地址,列地址指针也加1。

水平或者垂直寻址模式设置命令:

6、代码实现

6.1、I2C写

void SSD1306_WriteCmd(uint8 cmd)
{I2C_Start();I2C_SendByte(SSD1306_I2C_ADDR | 0x00);        I2C_Ack();I2C_SendByte(0x00);   //cmdI2C_Ack();I2C_SendByte(cmd);   I2C_Ack();I2C_Stop();
}void SSD1306_WriteData(uint8 data)
{I2C_Start();I2C_SendByte(SSD1306_I2C_ADDR | 0x00);        I2C_Ack();I2C_SendByte(0x40);   //dataI2C_Ack();I2C_SendByte(data);   I2C_Ack();I2C_Stop();
}

6.2、OLED驱动

//SSD1306初始化
void OLED_Init(void)
{_delay_ms(1000);//SSD1306复位之后,默认的是页寻址方式SSD1306_WriteCmd(0xAE);//--display offSSD1306_WriteCmd(0x00);//--set low column addressSSD1306_WriteCmd(0x10);//--set high column addressSSD1306_WriteCmd(0x40);//--set start line address  SSD1306_WriteCmd(0xB0);//--set page addressSSD1306_WriteCmd(0x81);// contract controlSSD1306_WriteCmd(0xFF);//--128   SSD1306_WriteCmd(0xA1);//set segment re-map  0 to 127 SSD1306_WriteCmd(0xA6);//set normal  display  SSD1306_WriteCmd(0xA8);//set multiplex ratio(1 to 64)SSD1306_WriteCmd(0x3F);//--1/32 dutySSD1306_WriteCmd(0xC8);//Com scan directionSSD1306_WriteCmd(0xD3);//set display offsetSSD1306_WriteCmd(0x00);//no offsetSSD1306_WriteCmd(0xD5);//set display clock divide ratio/oscillator frequency  SSD1306_WriteCmd(0x80);//SSD1306_WriteCmd(0xD8);//set area color mode offSSD1306_WriteCmd(0x05);//SSD1306_WriteCmd(0xD9);//Set Pre-Charge PeriodSSD1306_WriteCmd(0xF1);//SSD1306_WriteCmd(0xDA);//set com pin  hardware configuartionSSD1306_WriteCmd(0x12);//SSD1306_WriteCmd(0xDB);//set VcomhSSD1306_WriteCmd(0x30);//0x20,0.77xVccSSD1306_WriteCmd(0x8D);//set charge pump enableSSD1306_WriteCmd(0x14);//SSD1306_WriteCmd(0xAF);//--turn on oled panel
}//坐标设置:也就是在哪里显示
void OLED_SetPos(uint8 x, uint8 y)
{ //以下3个寄存器只在页寻址的模式下有效  SSD1306_WriteCmd(0xb0+y);             //页地址设置     0xb0~0xb7SSD1306_WriteCmd(((x&0xf0)>>4)|0x10); //列高位地址设置SSD1306_WriteCmd((x&0x0f));           //列低位地址设置
} //开启OLED显示
void OLED_DisplayOn(void)
{SSD1306_WriteCmd(0X8D);  //SET DCDC命令SSD1306_WriteCmd(0X14);  //DCDC ONSSD1306_WriteCmd(0XAF);  //DISPLAY ON
}//关闭OLED显示
void OLED_DisplayOff(void)
{SSD1306_WriteCmd(0X8D);  //SET DCDC命令SSD1306_WriteCmd(0X10);  //DCDC OFFSSD1306_WriteCmd(0XAE);  //DISPLAY OFF
}//清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样
void OLED_Clear(void)
{  uint8 i,n;   for(i=0;i<8;i++)  {  SSD1306_WriteCmd (0xb0+i);    //设置页地址(0~7)SSD1306_WriteCmd (0x00);      //设置显示位置—列低地址SSD1306_WriteCmd (0x10);      //设置显示位置—列高地址   for(n=0;n<128;n++)SSD1306_WriteData(0); } //更新显示
}//在指定位置显示一个字符,包括部分字符
//x:0~127,y:0~7
//Char_Size:选择字体 16/12
void OLED_ShowChar(uint8 x,uint8 y,uint8 chr,uint8 Char_Size)
{       uint8 c=0,i=0;    c=chr-' ';//得到偏移后的值          if(x>MAX_COLUMN-1){x=0;y=y+2;}if(Char_Size ==16){OLED_SetPos(x,y);  for(i=0;i<8;i++){SSD1306_WriteData(F8X16[c*16+i]);//先写上半部分}OLED_SetPos(x,y+1);for(i=0;i<8;i++){SSD1306_WriteData(F8X16[c*16+i+8]);//后写下半部分}}else{   OLED_SetPos(x,y);for(i=0;i<6;i++){SSD1306_WriteData(F6x8[c][i]);}}
}//显示一个字符串
void OLED_ShowString(uint8 x,uint8 y,char *str,uint8 Char_Size)
{unsigned char j=0;while (str[j]!='\0'){OLED_ShowChar(x,y,str[j],Char_Size);x+=8;if(x>120){x=0;y+=2;}j++;//移动一次就是一个page,取值0-7}
}//显示汉字
//由于汉字是16*16大小的,所以最多显示4行汉字
//index:在汉字取模中的索引
void OLED_ShowCN(uint8 x,uint8 y,uint8 index)
{                   uint8 t;OLED_SetPos(x,y);   for(t=0;t<16;t++){SSD1306_WriteData(Hzk[index][t]);}  OLED_SetPos(x,y+1);    for(t=0;t<16;t++){    SSD1306_WriteData(Hzk[index][t+16]);}
}

6.3、测试代码

也就是我们在开头看到的图片。

void OLED_DisplayTest(void)
{OLED_Clear(); OLED_ShowCN(40,0,0);OLED_ShowCN(56,0,1);OLED_ShowCN(72,0,2);OLED_ShowCN(24,2,3);OLED_ShowCN(40,2,4);OLED_ShowCN(56,2,5);OLED_ShowCN(72,2,6);OLED_ShowCN(88,2,7);OLED_ShowString(0,4,(char *)("LoRa stm32 gd32 "),16);OLED_ShowString(0,6,(char *)("esp32...IoT."),16);
}

6.4、宏定义以及字库定义

#define         SSD1306_I2C_ADDR  0x78#define         MAX_COLUMN   128
#define         MAX_ROW       64
//取模方式:阴码、逆向、列行式//6*8的点阵
const unsigned char F6x8[][6] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp
0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,// !
0x00, 0x00, 0x07, 0x00, 0x07, 0x00,// "
0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,// #
0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,// $
0x00, 0x62, 0x64, 0x08, 0x13, 0x23,// %
0x00, 0x36, 0x49, 0x55, 0x22, 0x50,// &
0x00, 0x00, 0x05, 0x03, 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, 0x00, 0xA0, 0x60, 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,// 0
0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
0x00, 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, 0x59, 0x51, 0x3E,// @
0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [
0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55
0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ]
0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^
0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _
0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// '
0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
};//8*16的点阵
const unsigned char F8X16[]=
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~
};//汉字点阵
const char Hzk[][32]=
{{0x00,0x80,0x40,0x20,0x18,0x06,0x80,0x00,0x07,0x18,0x20,0x40,0x80,0x00,0x00,0x00,0x01,0x00,0x20,0x70,0x28,0x26,0x21,0x20,0x20,0x24,0x38,0x60,0x00,0x01,0x01,0x00},/*"公",0*/{0x80,0x80,0x40,0x20,0xD0,0x08,0x04,0x03,0x04,0x08,0xD0,0x20,0x40,0x80,0x80,0x00,0x80,0x40,0x20,0x18,0x07,0x08,0xB0,0x40,0x20,0x18,0x07,0x18,0x20,0x40,0x80,0x00},/*"众",1*/{0x80,0x80,0x80,0xBE,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xBE,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x06,0x05,0x04,0x04,0x04,0x44,0x84,0x44,0x3C,0x00,0x00,0x00,0x00},/*"号",2*/{0x40,0x3C,0x10,0xFF,0x10,0x10,0x20,0x10,0x8F,0x78,0x08,0xF8,0x08,0xF8,0x00,0x00,0x02,0x06,0x02,0xFF,0x01,0x01,0x04,0x42,0x21,0x18,0x46,0x81,0x40,0x3F,0x00,0x00},/*"物",0*/{0x02,0xFE,0x92,0x92,0xFE,0x02,0x00,0x10,0x11,0x16,0xF0,0x14,0x13,0x10,0x00,0x00,0x10,0x1F,0x08,0x08,0xFF,0x04,0x81,0x41,0x31,0x0D,0x03,0x0D,0x31,0x41,0x81,0x00},/*"联",1*/{0x00,0xFE,0x02,0x22,0x42,0x82,0x72,0x02,0x22,0x42,0x82,0x72,0x02,0xFE,0x00,0x00,0x00,0xFF,0x10,0x08,0x06,0x01,0x0E,0x10,0x08,0x06,0x01,0x4E,0x80,0x7F,0x00,0x00},/*"网",2*/{0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x40,0x38,0x01,0x00,0x3C,0x40,0x40,0x42,0x4C,0x40,0x40,0x70,0x05,0x08,0x30,0x00},/*"思",0*/{0x20,0x20,0x24,0x24,0x24,0x24,0xBF,0x64,0x24,0x34,0x28,0x24,0x22,0x20,0x20,0x00,0x10,0x08,0x04,0x02,0x01,0x0D,0x0B,0x09,0x49,0x89,0x49,0x39,0x01,0x00,0x00,0x00},/*"考",1*/};

一文彻底了解SSD1306驱动0.96寸OLED相关推荐

  1. STC15W408AS单片机IIC驱动0.96寸OLED显示

    STC15W408AS单片机IIC驱动0.96寸OLED显示 不同页的滚动效果() 全页的滚动效果 STC15W408AS最新系统板 注意图片上的0欧姆电阻贴错了位置,应该是与GND相连的,图片上是P ...

  2. STM8驱动0.96寸OLED(12864液晶屏)

    由于中景园电子给出的例程不够全面,因此特地花时间重新整理了一下代码,并加上了其他的功能.本文记录了使用模拟四线 SPI 协议驱动 OLED 的代码. 文章目录 1 oled.h 2 oled.c 2. ...

  3. STM32(基于HAL库)驱动0.96寸OLED屏幕(六脚)

    STM32驱动0.96寸OLED屏幕(六脚) 1 序言 2 如何利用STM32单片机驱动12864液晶屏 2.1*基本配置* 2.2 *0.96寸OLED端口含义* 2.3 *0.96寸OLED液晶屏 ...

  4. STM32(基于HAL库)驱动0.96寸OLED屏幕(四脚且中英文皆可显示)

    STM32驱动0.96寸OLED屏幕(四脚) 1 注意事项 2 如何利用STM32单片机驱动12864液晶屏 2.1*基本配置* 2.2 *0.96寸OLED端口含义* 2.3 *0.96寸OLED液 ...

  5. FPGA驱动0.96寸OLED(SSD1306)

    目录 一.七针0.96寸OLED驱动原理 二.SSD1306驱动时序 1.GDDRAM内部结构: (1)页寻址 (2)水平寻址 (3)垂直寻址 2.初始化 3.清屏 4.发送数据 三.子模块源码 1. ...

  6. 用esp8266驱动0.96寸OLED屏幕 太空人动画

    昨天闲来没事玩了一下OLED屏幕 之前只是做过显示图片 还没弄过动画的 (其实差不多–) 用esp8266驱动0.96寸LED屏幕 太空人动画 入门esp8266 看这篇文章 参考https://bl ...

  7. STM32F103移植STEMWIN并驱动0.96寸OLED实现弹球界面效果

    现在很多带显示屏的电子产品,在待机状态下都有一个待机界面,最为经典的当属弹球界面了,当弹球碰到屏幕边界之后则反弹,先上效果图: 由于是移植了STEMWIN,所以只有STM系列单片机才可以正常跑该程序. ...

  8. STM32系列——驱动0.96寸oled显示屏

    一OLED介绍 使用了0.96寸的oled显示屏(SSD1306驱动),128*64像素,查阅店主给的相关资料后知道,这种屏幕有串行通信和并行通信方式,串行通信可以选择IIC(只需要2个管脚SCL.S ...

  9. STM32配合cubeMX硬件I2C驱动0.96寸OLED

    目录 一.简单介绍 1.1   OLED 1.2   I2C协议 二.实战 2.1 工程配置 2.2 测试工程 2.3 波形分析 三.驱动OLED 3.1 初始化代码 3.2 清屏函数 3.3 设置坐 ...

最新文章

  1. RISC-V生态未来的三种可能~
  2. 《你的灯亮着吗》阅读笔记1
  3. 【编译原理】关于克林闭包与正闭包的讨论
  4. 在计算机桌面怎么找打印机,win10系统电脑打印机图标找回来的教程
  5. struct的成员对齐
  6. 联想微型计算机 m4350q,比超极本便携 评联想M4350q小型台式机
  7. VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)
  8. JavaScript操作select标签详解
  9. 一个监测IIS,并定时重新启动的程序。
  10. DEDEv5.6跳转网址修改成直链地址而非动态跳转
  11. iOS 做一个圆形渐变圆环
  12. 28--仅仅反转字母
  13. 第3章 Linux内核调试手段之三
  14. linux 第三章红帽子,红帽子 Linux_命令全解
  15. c# out关键字 vb_c# 关键字:ref 和 out
  16. c语言写贪吃蛇什么水平_关于C语言写贪吃蛇
  17. Python装饰器(二)
  18. wamp xampp mysql端口冲突_解决xampp端口冲突
  19. 实体和电商哪个更能赚到?
  20. 基于前后端分离的模版探索

热门文章

  1. 计算机教案在幻灯片中插入影片,小学六年级上册《在作品中插入“电影”片段》信息技术教案...
  2. 如何把 Node.js 嵌入自己的项目中
  3. 最新最火的十大网络流行语排行榜火热出炉,幽默搞笑网络段子来袭!
  4. Python中的True和False详解
  5. 入门学术研究和学术论文
  6. python前n项和存为一个数组_python-将数组或DataFrame与其他信息一起保存在文件中...
  7. 运动手环SRRC认证办理
  8. Android 使用shape实现虚线或者虚线框
  9. Widget原理分析
  10. python画旺仔代码_python基础1