OLED,0.91使用学习过程
oled相比lcd屏两者理解方式差不多。oled有多种驱动方式常见的有iic,spi的对应的oled种类有4pin,6pin,7pin,我常用的4pin(省引脚)。
oled具体的工作方式可以去看手册,在此只介绍我的学习和使用过程以我的程序为例
void han_zi(void)
{
//显示一个汉字
uint8 i;
Oled_Init();
Oled_Screen_Clear();
Oled_Write_Cmd(0xb0); //page 0 业数 oled是每8行是一业,一业是长128的灯宽是8个灯
,扫描的是一行一行扫的,汉字一般都是上16*8下16*8分两部分构成,所以汉字显示分两行显示
Oled_Write_Cmd(0x00); //low //设置显示位置—列低地址
Oled_Write_Cmd(0x10); //high //设置显示位置—列高地址。
for(i=0;i<64;i++){
Oled_Write_Data(oledTable3[ i]);//写数据oledTable3
}
Oled_Write_Cmd(0xb1); //page 1
Oled_Write_Cmd(0x00); //low
Oled_Write_Cmd(0x10); //high
for(i=0;i<80;i++){
Oled_Write_Data(oledTable4[ i]);//写数据oledTable4
}
}
// 定义显示汉字
/******************************************************************************/
uint8 code oledTable3[64] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //注意数字是两半组成,还有就是数组含有空格和点的编码
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x20,0xA8,0x6C,0x2A,0x39,0x28,0x28,0x2A,0x6C,0xA8,0x20,0x20,0x00,0x00,
0x20,0x20,0x24,0xA4,0xAC,0xB4,0xA5,0xA6,0xA4,0xB4,0xAC,0xA4,0x24,0x20,0x20,0x00};
uint8 code oledTable4[80] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x02,0x02,0x41,0x40,0x48,0x49,0x49,0x49,0x49,0x49,0x48,0x40,0x41,0x02,0x02,0x00,
0x20,0x20,0x20,0x2F,0x2A,0x2A,0x2A,0xFA,0x2A,0x2A,0x2A,0x2F,0x20,0x20,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00};
上面程序显示了汉字的显示的方在此不多说,其他的也差不多。要注意的是数组生成方式,要和读取方式要相同,
2.常用的指令
第一个命令为0X81,用于设置对比度的,这个命令包含了两个字节,第一个0X81为命令,随后发送的一个字节为要设置的对比度的值。这个值设置得越大屏幕就越亮。 第二个命令为0XAE/0XAF。0XAE为关闭显示命令;0XAF为开启显示命令。 第三个命令为0X8D,该指令也包含2个字节,第一个为命令字,第二个为设置值,第二个字节的BIT2表示电荷泵的开关状态,该位为1,则开启电荷泵,为0则关闭。在模块初始化的时候,这个必须要开启,否则是看不到屏幕显示的。 第四个命令为0XB0~B7,该命令用于设置页地址,其低三位的值对应着GRAM的页地址。发送一个字节,高5位固定。位0-位2, X[2:0]共3位, 值范围0-7对应页0-7地址(共8页) 第五个指令为0X00~0X0F,该指令用于设置显示时的起始列地址低四位。高四位固定,低四位设置列地址起始低四位。 第六个指令为0X10~0X1F,该指令用于设置显示时的起始列地址高四位。高四位固定,低四位设置列地址起始高四位。 其他命令,我就不在这里一一介绍了,大家可以参考SSD1306 datasheet的第28页。从这页开始,对SSD1306的指令有详细的介绍。
后面有时间在补
|